@geminixiang/mikan 1.0.0-beta.8 → 1.0.0-beta.80

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 (900) hide show
  1. package/CHANGELOG.md +1149 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +12 -9
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +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/{commands → adapters/commands}/sandbox.d.ts +0 -1
  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/{commands → adapters/commands}/session-view.js +21 -16
  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/{commands → adapters/commands}/utils.js +15 -1
  42. package/dist/adapters/commands/utils.js.map +1 -0
  43. package/dist/adapters/discord/bot.d.ts +10 -17
  44. package/dist/adapters/discord/bot.d.ts.map +1 -1
  45. package/dist/adapters/discord/bot.js +232 -297
  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 +55 -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 +90 -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/bot.d.ts +25 -9
  63. package/dist/adapters/github/bot.d.ts.map +1 -1
  64. package/dist/adapters/github/bot.js +326 -154
  65. package/dist/adapters/github/bot.js.map +1 -1
  66. package/dist/adapters/github/client.d.ts +35 -23
  67. package/dist/adapters/github/client.d.ts.map +1 -1
  68. package/dist/adapters/github/client.js +121 -28
  69. package/dist/adapters/github/client.js.map +1 -1
  70. package/dist/adapters/github/context.d.ts +3 -8
  71. package/dist/adapters/github/context.d.ts.map +1 -1
  72. package/dist/adapters/github/context.js +64 -131
  73. package/dist/adapters/github/context.js.map +1 -1
  74. package/dist/adapters/github/github-ops.d.ts +22 -0
  75. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  76. package/dist/adapters/github/github-ops.js +277 -0
  77. package/dist/adapters/github/github-ops.js.map +1 -0
  78. package/dist/adapters/github/ids.d.ts +2 -23
  79. package/dist/adapters/github/ids.d.ts.map +1 -1
  80. package/dist/adapters/github/ids.js +6 -36
  81. package/dist/adapters/github/ids.js.map +1 -1
  82. package/dist/adapters/github/repo.d.ts +8 -0
  83. package/dist/adapters/github/repo.d.ts.map +1 -0
  84. package/dist/adapters/github/repo.js +92 -0
  85. package/dist/adapters/github/repo.js.map +1 -0
  86. package/dist/adapters/github/tool-pack.d.ts +4 -0
  87. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  88. package/dist/adapters/github/tool-pack.js +45 -0
  89. package/dist/adapters/github/tool-pack.js.map +1 -0
  90. package/dist/adapters/github/tools/checks.d.ts +14 -0
  91. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  92. package/dist/adapters/github/tools/checks.js +80 -0
  93. package/dist/adapters/github/tools/checks.js.map +1 -0
  94. package/dist/adapters/github/tools/issue.d.ts +18 -0
  95. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  96. package/dist/adapters/github/tools/issue.js +44 -0
  97. package/dist/adapters/github/tools/issue.js.map +1 -0
  98. package/dist/adapters/github/tools/pr.d.ts +17 -0
  99. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  100. package/dist/adapters/github/tools/pr.js +42 -0
  101. package/dist/adapters/github/tools/pr.js.map +1 -0
  102. package/dist/adapters/github/tools/read.d.ts +17 -0
  103. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  104. package/dist/adapters/github/tools/read.js +134 -0
  105. package/dist/adapters/github/tools/read.js.map +1 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts +14 -0
  107. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  108. package/dist/adapters/github/tools/review-reply.js +34 -0
  109. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  110. package/dist/adapters/github/tools/sync.d.ts +13 -0
  111. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  112. package/dist/adapters/github/tools/sync.js +29 -0
  113. package/dist/adapters/github/tools/sync.js.map +1 -0
  114. package/dist/adapters/github/types.d.ts +197 -18
  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 +6 -0
  118. package/dist/adapters/github/webhook.d.ts.map +1 -0
  119. package/dist/adapters/github/webhook.js +62 -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 +74 -31
  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/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  130. package/dist/adapters/messages.d.ts.map +1 -0
  131. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  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 +423 -0
  136. package/dist/adapters/progressive-renderer.js.map +1 -0
  137. package/dist/adapters/shared.d.ts +24 -53
  138. package/dist/adapters/shared.d.ts.map +1 -1
  139. package/dist/adapters/shared.js +140 -91
  140. package/dist/adapters/shared.js.map +1 -1
  141. package/dist/adapters/slack/assistant.d.ts +23 -0
  142. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  143. package/dist/adapters/slack/assistant.js +109 -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 +84 -148
  152. package/dist/adapters/slack/blocks.js.map +1 -1
  153. package/dist/adapters/slack/bot.d.ts +51 -39
  154. package/dist/adapters/slack/bot.d.ts.map +1 -1
  155. package/dist/adapters/slack/bot.js +892 -567
  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 +221 -347
  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 +6 -0
  190. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  191. package/dist/adapters/slack/task-status.js +100 -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 +8 -18
  209. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  210. package/dist/adapters/telegram/bot.js +114 -232
  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 +47 -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 +89 -16
  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 +27 -0
  227. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  228. package/dist/adapters/web/admin/portal.js +1506 -0
  229. package/dist/adapters/web/admin/portal.js.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  231. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  232. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  233. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  234. package/dist/adapters/web/admin/types.d.ts +56 -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/{web → adapters/web}/login/oauth.js +61 -100
  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/{web → adapters/web}/login/portal.js +169 -159
  244. package/dist/adapters/web/login/portal.js.map +1 -0
  245. package/dist/{web → adapters/web}/login/types.d.ts +1 -17
  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/{portal-shell.js → adapters/web/portal-shell.js} +73 -11
  251. package/dist/adapters/web/portal-shell.js.map +1 -0
  252. package/dist/adapters/web/server.d.ts +33 -0
  253. package/dist/adapters/web/server.d.ts.map +1 -0
  254. package/dist/{web → adapters/web}/server.js +15 -9
  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/{web → adapters/web}/session-view/portal.js +641 -181
  259. package/dist/adapters/web/session-view/portal.js.map +1 -0
  260. package/dist/{web → adapters/web}/session-view/types.d.ts +1 -6
  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/{web → adapters/web}/token-store.d.ts +0 -3
  264. package/dist/adapters/web/token-store.d.ts.map +1 -0
  265. package/dist/{web → adapters/web}/token-store.js +1 -3
  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 +81 -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/office.d.ts +2 -0
  281. package/dist/cli/office.d.ts.map +1 -0
  282. package/dist/cli/office.js +151 -0
  283. package/dist/cli/office.js.map +1 -0
  284. package/dist/cli/onboard.d.ts +8 -0
  285. package/dist/cli/onboard.d.ts.map +1 -0
  286. package/dist/cli/onboard.js +195 -0
  287. package/dist/cli/onboard.js.map +1 -0
  288. package/dist/cli/process-lifecycle.d.ts +14 -0
  289. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  290. package/dist/cli/process-lifecycle.js +61 -0
  291. package/dist/cli/process-lifecycle.js.map +1 -0
  292. package/dist/cli/sandbox.d.ts +3 -0
  293. package/dist/cli/sandbox.d.ts.map +1 -0
  294. package/dist/cli/sandbox.js +80 -0
  295. package/dist/cli/sandbox.js.map +1 -0
  296. package/dist/cli/sessions.d.ts +2 -0
  297. package/dist/cli/sessions.d.ts.map +1 -0
  298. package/dist/cli/sessions.js +78 -0
  299. package/dist/cli/sessions.js.map +1 -0
  300. package/dist/cli/types.d.ts +21 -0
  301. package/dist/cli/types.d.ts.map +1 -0
  302. package/dist/cli/types.js.map +1 -0
  303. package/dist/env-manifest.d.ts +17 -0
  304. package/dist/env-manifest.d.ts.map +1 -0
  305. package/dist/env-manifest.js +249 -0
  306. package/dist/env-manifest.js.map +1 -0
  307. package/dist/events/index.d.ts +122 -0
  308. package/dist/events/index.d.ts.map +1 -0
  309. package/dist/events/index.js +299 -0
  310. package/dist/events/index.js.map +1 -0
  311. package/dist/events/scheduler.d.ts +25 -0
  312. package/dist/events/scheduler.d.ts.map +1 -0
  313. package/dist/events/scheduler.js +223 -0
  314. package/dist/events/scheduler.js.map +1 -0
  315. package/dist/file-guards.d.ts +13 -0
  316. package/dist/file-guards.d.ts.map +1 -0
  317. package/dist/file-guards.js +104 -0
  318. package/dist/file-guards.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 +156 -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 +19 -17
  332. package/dist/harness/index.d.ts.map +1 -1
  333. package/dist/harness/index.js +12 -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/mcp-result.d.ts +20 -0
  340. package/dist/harness/mcp-result.d.ts.map +1 -0
  341. package/dist/harness/mcp-result.js +179 -0
  342. package/dist/harness/mcp-result.js.map +1 -0
  343. package/dist/harness/mcp.d.ts +17 -0
  344. package/dist/harness/mcp.d.ts.map +1 -0
  345. package/dist/harness/mcp.js +243 -0
  346. package/dist/harness/mcp.js.map +1 -0
  347. package/dist/harness/models.d.ts +2 -19
  348. package/dist/harness/models.d.ts.map +1 -1
  349. package/dist/harness/models.js +42 -94
  350. package/dist/harness/models.js.map +1 -1
  351. package/dist/harness/open-connector.d.ts +12 -0
  352. package/dist/harness/open-connector.d.ts.map +1 -0
  353. package/dist/harness/open-connector.js +160 -0
  354. package/dist/harness/open-connector.js.map +1 -0
  355. package/dist/harness/presenter.d.ts +11 -0
  356. package/dist/harness/presenter.d.ts.map +1 -0
  357. package/dist/harness/presenter.js +824 -0
  358. package/dist/harness/presenter.js.map +1 -0
  359. package/dist/harness/prompt.d.ts +18 -0
  360. package/dist/harness/prompt.d.ts.map +1 -0
  361. package/dist/harness/prompt.js +403 -0
  362. package/dist/harness/prompt.js.map +1 -0
  363. package/dist/harness/runner.d.ts +2 -123
  364. package/dist/harness/runner.d.ts.map +1 -1
  365. package/dist/harness/runner.js +547 -415
  366. package/dist/harness/runner.js.map +1 -1
  367. package/dist/harness/session.d.ts +98 -0
  368. package/dist/harness/session.d.ts.map +1 -0
  369. package/dist/harness/session.js +645 -0
  370. package/dist/harness/session.js.map +1 -0
  371. package/dist/harness/skills.d.ts +7 -41
  372. package/dist/harness/skills.d.ts.map +1 -1
  373. package/dist/harness/skills.js +101 -55
  374. package/dist/harness/skills.js.map +1 -1
  375. package/dist/harness/subagent-profiles.d.ts +3 -0
  376. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  377. package/dist/harness/subagent-profiles.js +260 -0
  378. package/dist/harness/subagent-profiles.js.map +1 -0
  379. package/dist/harness/subagent.d.ts +39 -0
  380. package/dist/harness/subagent.d.ts.map +1 -0
  381. package/dist/harness/subagent.js +618 -0
  382. package/dist/harness/subagent.js.map +1 -0
  383. package/dist/harness/tool-args.d.ts +2 -0
  384. package/dist/harness/tool-args.d.ts.map +1 -0
  385. package/dist/harness/tool-args.js +20 -0
  386. package/dist/harness/tool-args.js.map +1 -0
  387. package/dist/harness/tools/attach.d.ts +13 -0
  388. package/dist/harness/tools/attach.d.ts.map +1 -0
  389. package/dist/{adapters/slack → harness}/tools/attach.js +2 -2
  390. package/dist/harness/tools/attach.js.map +1 -0
  391. package/dist/harness/tools/event.d.ts +28 -0
  392. package/dist/harness/tools/event.d.ts.map +1 -0
  393. package/dist/harness/tools/event.js +166 -0
  394. package/dist/harness/tools/event.js.map +1 -0
  395. package/dist/harness/tools/generate-image.d.ts +20 -0
  396. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  397. package/dist/harness/tools/generate-image.js +68 -0
  398. package/dist/harness/tools/generate-image.js.map +1 -0
  399. package/dist/harness/tools/host-fn-tool.d.ts +14 -0
  400. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  401. package/dist/harness/tools/host-fn-tool.js +39 -0
  402. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  403. package/dist/harness/tools/index.d.ts +34 -0
  404. package/dist/harness/tools/index.d.ts.map +1 -0
  405. package/dist/harness/tools/index.js +49 -0
  406. package/dist/harness/tools/index.js.map +1 -0
  407. package/dist/harness/tools/jev-browser.d.ts +42 -0
  408. package/dist/harness/tools/jev-browser.d.ts.map +1 -0
  409. package/dist/harness/tools/jev-browser.js +547 -0
  410. package/dist/harness/tools/jev-browser.js.map +1 -0
  411. package/dist/harness/tools/jev.d.ts +15 -0
  412. package/dist/harness/tools/jev.d.ts.map +1 -0
  413. package/dist/harness/tools/jev.js +98 -0
  414. package/dist/harness/tools/jev.js.map +1 -0
  415. package/dist/harness/tools/pi-tools.d.ts +8 -0
  416. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  417. package/dist/harness/tools/pi-tools.js +55 -0
  418. package/dist/harness/tools/pi-tools.js.map +1 -0
  419. package/dist/harness/tools/react.d.ts +11 -0
  420. package/dist/harness/tools/react.d.ts.map +1 -0
  421. package/dist/harness/tools/react.js +24 -0
  422. package/dist/harness/tools/react.js.map +1 -0
  423. package/dist/harness/tools/sandbox.d.ts +24 -0
  424. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  425. package/dist/{tools → harness/tools}/sandbox.js +15 -9
  426. package/dist/harness/tools/sandbox.js.map +1 -0
  427. package/dist/harness/tools/secret-redaction.d.ts +9 -0
  428. package/dist/harness/tools/secret-redaction.d.ts.map +1 -0
  429. package/dist/harness/tools/secret-redaction.js +44 -0
  430. package/dist/harness/tools/secret-redaction.js.map +1 -0
  431. package/dist/harness/tools/subagent.d.ts +51 -0
  432. package/dist/harness/tools/subagent.d.ts.map +1 -0
  433. package/dist/harness/tools/subagent.js +581 -0
  434. package/dist/harness/tools/subagent.js.map +1 -0
  435. package/dist/harness/tools/task.d.ts +22 -0
  436. package/dist/harness/tools/task.d.ts.map +1 -0
  437. package/dist/harness/tools/task.js +80 -0
  438. package/dist/harness/tools/task.js.map +1 -0
  439. package/dist/harness/tools/types.d.ts +14 -0
  440. package/dist/harness/tools/types.d.ts.map +1 -0
  441. package/dist/harness/tools/types.js.map +1 -0
  442. package/dist/harness/types.d.ts +345 -29
  443. package/dist/harness/types.d.ts.map +1 -1
  444. package/dist/harness/types.js +1 -1
  445. package/dist/harness/types.js.map +1 -1
  446. package/dist/index.d.ts +36 -9
  447. package/dist/index.d.ts.map +1 -1
  448. package/dist/index.js +19 -7
  449. package/dist/index.js.map +1 -1
  450. package/dist/log.d.ts +0 -1
  451. package/dist/log.d.ts.map +1 -1
  452. package/dist/log.js +3 -13
  453. package/dist/log.js.map +1 -1
  454. package/dist/main.js +300 -217
  455. package/dist/main.js.map +1 -1
  456. package/dist/memory-capture/index.d.ts +15 -0
  457. package/dist/memory-capture/index.d.ts.map +1 -0
  458. package/dist/memory-capture/index.js +199 -0
  459. package/dist/memory-capture/index.js.map +1 -0
  460. package/dist/memory-capture/types.d.ts +27 -0
  461. package/dist/memory-capture/types.d.ts.map +1 -0
  462. package/dist/memory-capture/types.js +2 -0
  463. package/dist/memory-capture/types.js.map +1 -0
  464. package/dist/observability/index.d.ts +30 -0
  465. package/dist/observability/index.d.ts.map +1 -0
  466. package/dist/observability/index.js +273 -0
  467. package/dist/observability/index.js.map +1 -0
  468. package/dist/observability/instrument.js +9 -6
  469. package/dist/observability/instrument.js.map +1 -1
  470. package/dist/observability/otel.d.ts +10 -0
  471. package/dist/observability/otel.d.ts.map +1 -0
  472. package/dist/observability/otel.js +182 -0
  473. package/dist/observability/otel.js.map +1 -0
  474. package/dist/observability/sentry.d.ts +32 -13
  475. package/dist/observability/sentry.d.ts.map +1 -1
  476. package/dist/observability/sentry.js +85 -58
  477. package/dist/observability/sentry.js.map +1 -1
  478. package/dist/observability/types.d.ts +30 -3
  479. package/dist/observability/types.d.ts.map +1 -1
  480. package/dist/observability/types.js.map +1 -1
  481. package/dist/office/index.d.ts +74 -0
  482. package/dist/office/index.d.ts.map +1 -0
  483. package/dist/office/index.js +971 -0
  484. package/dist/office/index.js.map +1 -0
  485. package/dist/office/projection.d.ts +11 -0
  486. package/dist/office/projection.d.ts.map +1 -0
  487. package/dist/office/projection.js +146 -0
  488. package/dist/office/projection.js.map +1 -0
  489. package/dist/office/types.d.ts +55 -0
  490. package/dist/office/types.d.ts.map +1 -0
  491. package/dist/office/types.js +2 -0
  492. package/dist/office/types.js.map +1 -0
  493. package/dist/runtime/conversation-runtime.d.ts +0 -1
  494. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  495. package/dist/runtime/conversation-runtime.js +375 -152
  496. package/dist/runtime/conversation-runtime.js.map +1 -1
  497. package/dist/runtime/session-lifecycle.d.ts +66 -0
  498. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  499. package/dist/runtime/session-lifecycle.js +393 -0
  500. package/dist/runtime/session-lifecycle.js.map +1 -0
  501. package/dist/runtime/types.d.ts +41 -17
  502. package/dist/runtime/types.d.ts.map +1 -1
  503. package/dist/runtime/types.js.map +1 -1
  504. package/dist/sandbox/cloudflare.d.ts +4 -0
  505. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  506. package/dist/sandbox/cloudflare.js +59 -55
  507. package/dist/sandbox/cloudflare.js.map +1 -1
  508. package/dist/sandbox/container.d.ts +3 -0
  509. package/dist/sandbox/container.d.ts.map +1 -1
  510. package/dist/sandbox/container.js +39 -20
  511. package/dist/sandbox/container.js.map +1 -1
  512. package/dist/sandbox/host.d.ts +3 -0
  513. package/dist/sandbox/host.d.ts.map +1 -1
  514. package/dist/sandbox/host.js +42 -35
  515. package/dist/sandbox/host.js.map +1 -1
  516. package/dist/sandbox/identity.d.ts +13 -0
  517. package/dist/sandbox/identity.d.ts.map +1 -0
  518. package/dist/sandbox/identity.js +49 -0
  519. package/dist/sandbox/identity.js.map +1 -0
  520. package/dist/sandbox/index.d.ts +5 -15
  521. package/dist/sandbox/index.d.ts.map +1 -1
  522. package/dist/sandbox/index.js +5 -51
  523. package/dist/sandbox/index.js.map +1 -1
  524. package/dist/sandbox/layout.d.ts +7 -0
  525. package/dist/sandbox/layout.d.ts.map +1 -0
  526. package/dist/sandbox/layout.js +13 -0
  527. package/dist/sandbox/layout.js.map +1 -0
  528. package/dist/{provisioner.d.ts → sandbox/provisioner.d.ts} +41 -4
  529. package/dist/sandbox/provisioner.d.ts.map +1 -0
  530. package/dist/sandbox/provisioner.js +971 -0
  531. package/dist/sandbox/provisioner.js.map +1 -0
  532. package/dist/sandbox/registry.d.ts +12 -0
  533. package/dist/sandbox/registry.d.ts.map +1 -0
  534. package/dist/sandbox/registry.js +93 -0
  535. package/dist/sandbox/registry.js.map +1 -0
  536. package/dist/sandbox/types.d.ts +23 -25
  537. package/dist/sandbox/types.d.ts.map +1 -1
  538. package/dist/sandbox/types.js.map +1 -1
  539. package/dist/sandbox/utils.d.ts +21 -0
  540. package/dist/sandbox/utils.d.ts.map +1 -1
  541. package/dist/sandbox/utils.js +100 -8
  542. package/dist/sandbox/utils.js.map +1 -1
  543. package/dist/sessions/chat-history-sync.d.ts +17 -0
  544. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  545. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +224 -183
  546. package/dist/sessions/chat-history-sync.js.map +1 -0
  547. package/dist/sessions/history-line.d.ts +9 -0
  548. package/dist/sessions/history-line.d.ts.map +1 -0
  549. package/dist/sessions/history-line.js +25 -0
  550. package/dist/sessions/history-line.js.map +1 -0
  551. package/dist/sessions/migrate-common.d.ts +28 -0
  552. package/dist/sessions/migrate-common.d.ts.map +1 -0
  553. package/dist/sessions/migrate-common.js +80 -0
  554. package/dist/sessions/migrate-common.js.map +1 -0
  555. package/dist/sessions/migrate-pi-084.d.ts +7 -0
  556. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  557. package/dist/sessions/migrate-pi-084.js +293 -0
  558. package/dist/sessions/migrate-pi-084.js.map +1 -0
  559. package/dist/sessions/migrate-v3.d.ts +7 -0
  560. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  561. package/dist/sessions/migrate-v3.js +351 -0
  562. package/dist/sessions/migrate-v3.js.map +1 -0
  563. package/dist/sessions/session-key.d.ts +18 -0
  564. package/dist/sessions/session-key.d.ts.map +1 -0
  565. package/dist/sessions/session-key.js +88 -0
  566. package/dist/sessions/session-key.js.map +1 -0
  567. package/dist/sessions/session-store.d.ts +55 -0
  568. package/dist/sessions/session-store.d.ts.map +1 -0
  569. package/dist/sessions/session-store.js +635 -0
  570. package/dist/sessions/session-store.js.map +1 -0
  571. package/dist/sessions/store.d.ts +7 -61
  572. package/dist/sessions/store.d.ts.map +1 -1
  573. package/dist/sessions/store.js +126 -102
  574. package/dist/sessions/store.js.map +1 -1
  575. package/dist/sessions/types.d.ts +59 -8
  576. package/dist/sessions/types.d.ts.map +1 -1
  577. package/dist/sessions/types.js +2 -1
  578. package/dist/sessions/types.js.map +1 -1
  579. package/dist/settings/apply.d.ts +9 -0
  580. package/dist/settings/apply.d.ts.map +1 -0
  581. package/dist/settings/apply.js +31 -0
  582. package/dist/settings/apply.js.map +1 -0
  583. package/dist/settings/index.d.ts +76 -0
  584. package/dist/settings/index.d.ts.map +1 -0
  585. package/dist/settings/index.js +351 -0
  586. package/dist/settings/index.js.map +1 -0
  587. package/dist/settings/migrate.d.ts +16 -0
  588. package/dist/settings/migrate.d.ts.map +1 -0
  589. package/dist/settings/migrate.js +70 -0
  590. package/dist/settings/migrate.js.map +1 -0
  591. package/dist/types.d.ts +231 -173
  592. package/dist/types.d.ts.map +1 -1
  593. package/dist/types.js +1 -3
  594. package/dist/types.js.map +1 -1
  595. package/dist/unknown-values.d.ts +3 -0
  596. package/dist/unknown-values.d.ts.map +1 -0
  597. package/dist/unknown-values.js +7 -0
  598. package/dist/unknown-values.js.map +1 -0
  599. package/dist/vault/index.d.ts +35 -11
  600. package/dist/vault/index.d.ts.map +1 -1
  601. package/dist/vault/index.js +326 -115
  602. package/dist/vault/index.js.map +1 -1
  603. package/dist/vault/types.d.ts +5 -16
  604. package/dist/vault/types.d.ts.map +1 -1
  605. package/dist/vault/types.js.map +1 -1
  606. package/package.json +82 -41
  607. package/dist/adapter.d.ts +0 -2
  608. package/dist/adapter.d.ts.map +0 -1
  609. package/dist/adapter.js +0 -2
  610. package/dist/adapter.js.map +0 -1
  611. package/dist/adapters/slack/tools/attach.d.ts +0 -12
  612. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  613. package/dist/adapters/slack/tools/attach.js.map +0 -1
  614. package/dist/adapters/streaming.d.ts +0 -18
  615. package/dist/adapters/streaming.d.ts.map +0 -1
  616. package/dist/adapters/streaming.js +0 -44
  617. package/dist/adapters/streaming.js.map +0 -1
  618. package/dist/adapters/telegram/html.d.ts +0 -3
  619. package/dist/adapters/telegram/html.d.ts.map +0 -1
  620. package/dist/adapters/telegram/html.js +0 -98
  621. package/dist/adapters/telegram/html.js.map +0 -1
  622. package/dist/agent-events.d.ts +0 -5
  623. package/dist/agent-events.d.ts.map +0 -1
  624. package/dist/agent-events.js +0 -26
  625. package/dist/agent-events.js.map +0 -1
  626. package/dist/agent.d.ts +0 -39
  627. package/dist/agent.d.ts.map +0 -1
  628. package/dist/agent.js +0 -1291
  629. package/dist/agent.js.map +0 -1
  630. package/dist/cli/ext-git.d.ts +0 -22
  631. package/dist/cli/ext-git.d.ts.map +0 -1
  632. package/dist/cli/ext-git.js +0 -76
  633. package/dist/cli/ext-git.js.map +0 -1
  634. package/dist/cli/ext.d.ts +0 -2
  635. package/dist/cli/ext.d.ts.map +0 -1
  636. package/dist/cli/ext.js +0 -217
  637. package/dist/cli/ext.js.map +0 -1
  638. package/dist/commands/admin.d.ts.map +0 -1
  639. package/dist/commands/admin.js.map +0 -1
  640. package/dist/commands/auto-reply.d.ts.map +0 -1
  641. package/dist/commands/auto-reply.js +0 -76
  642. package/dist/commands/auto-reply.js.map +0 -1
  643. package/dist/commands/extensions.d.ts +0 -14
  644. package/dist/commands/extensions.d.ts.map +0 -1
  645. package/dist/commands/extensions.js +0 -55
  646. package/dist/commands/extensions.js.map +0 -1
  647. package/dist/commands/login.d.ts +0 -5
  648. package/dist/commands/login.d.ts.map +0 -1
  649. package/dist/commands/login.js +0 -115
  650. package/dist/commands/login.js.map +0 -1
  651. package/dist/commands/model.d.ts +0 -10
  652. package/dist/commands/model.d.ts.map +0 -1
  653. package/dist/commands/model.js +0 -102
  654. package/dist/commands/model.js.map +0 -1
  655. package/dist/commands/new.d.ts.map +0 -1
  656. package/dist/commands/new.js +0 -25
  657. package/dist/commands/new.js.map +0 -1
  658. package/dist/commands/parse.d.ts +0 -7
  659. package/dist/commands/parse.d.ts.map +0 -1
  660. package/dist/commands/parse.js +0 -14
  661. package/dist/commands/parse.js.map +0 -1
  662. package/dist/commands/registry.d.ts +0 -5
  663. package/dist/commands/registry.d.ts.map +0 -1
  664. package/dist/commands/registry.js +0 -31
  665. package/dist/commands/registry.js.map +0 -1
  666. package/dist/commands/sandbox.d.ts.map +0 -1
  667. package/dist/commands/sandbox.js +0 -78
  668. package/dist/commands/sandbox.js.map +0 -1
  669. package/dist/commands/session-view.d.ts.map +0 -1
  670. package/dist/commands/session-view.js.map +0 -1
  671. package/dist/commands/types.d.ts +0 -66
  672. package/dist/commands/types.d.ts.map +0 -1
  673. package/dist/commands/types.js.map +0 -1
  674. package/dist/commands/utils.d.ts +0 -11
  675. package/dist/commands/utils.d.ts.map +0 -1
  676. package/dist/commands/utils.js.map +0 -1
  677. package/dist/config.d.ts +0 -78
  678. package/dist/config.d.ts.map +0 -1
  679. package/dist/config.js +0 -450
  680. package/dist/config.js.map +0 -1
  681. package/dist/download.d.ts.map +0 -1
  682. package/dist/download.js +0 -89
  683. package/dist/download.js.map +0 -1
  684. package/dist/events.d.ts +0 -43
  685. package/dist/events.d.ts.map +0 -1
  686. package/dist/events.js +0 -456
  687. package/dist/events.js.map +0 -1
  688. package/dist/execution-resolver.d.ts +0 -21
  689. package/dist/execution-resolver.d.ts.map +0 -1
  690. package/dist/execution-resolver.js +0 -170
  691. package/dist/execution-resolver.js.map +0 -1
  692. package/dist/harness/auth.d.ts +0 -16
  693. package/dist/harness/auth.d.ts.map +0 -1
  694. package/dist/harness/auth.js +0 -86
  695. package/dist/harness/auth.js.map +0 -1
  696. package/dist/harness/extensions/loader.d.ts +0 -86
  697. package/dist/harness/extensions/loader.d.ts.map +0 -1
  698. package/dist/harness/extensions/loader.js +0 -525
  699. package/dist/harness/extensions/loader.js.map +0 -1
  700. package/dist/harness/extensions/registry.d.ts +0 -23
  701. package/dist/harness/extensions/registry.d.ts.map +0 -1
  702. package/dist/harness/extensions/registry.js +0 -45
  703. package/dist/harness/extensions/registry.js.map +0 -1
  704. package/dist/harness/extensions/types.d.ts +0 -248
  705. package/dist/harness/extensions/types.d.ts.map +0 -1
  706. package/dist/harness/extensions/types.js.map +0 -1
  707. package/dist/harness/session-store.d.ts +0 -77
  708. package/dist/harness/session-store.d.ts.map +0 -1
  709. package/dist/harness/session-store.js +0 -248
  710. package/dist/harness/session-store.js.map +0 -1
  711. package/dist/harness/settings.d.ts +0 -47
  712. package/dist/harness/settings.d.ts.map +0 -1
  713. package/dist/harness/settings.js +0 -29
  714. package/dist/harness/settings.js.map +0 -1
  715. package/dist/model-registry.d.ts +0 -4
  716. package/dist/model-registry.d.ts.map +0 -1
  717. package/dist/model-registry.js +0 -7
  718. package/dist/model-registry.js.map +0 -1
  719. package/dist/platform-messages.d.ts.map +0 -1
  720. package/dist/platform-messages.js.map +0 -1
  721. package/dist/portal-shell.d.ts +0 -4
  722. package/dist/portal-shell.d.ts.map +0 -1
  723. package/dist/portal-shell.js.map +0 -1
  724. package/dist/provisioner.d.ts.map +0 -1
  725. package/dist/provisioner.js +0 -517
  726. package/dist/provisioner.js.map +0 -1
  727. package/dist/runtime/agent-run-controller.d.ts +0 -31
  728. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  729. package/dist/runtime/agent-run-controller.js +0 -195
  730. package/dist/runtime/agent-run-controller.js.map +0 -1
  731. package/dist/sandbox/errors.d.ts +0 -6
  732. package/dist/sandbox/errors.d.ts.map +0 -1
  733. package/dist/sandbox/errors.js +0 -11
  734. package/dist/sandbox/errors.js.map +0 -1
  735. package/dist/sandbox/firecracker.d.ts +0 -15
  736. package/dist/sandbox/firecracker.d.ts.map +0 -1
  737. package/dist/sandbox/firecracker.js +0 -212
  738. package/dist/sandbox/firecracker.js.map +0 -1
  739. package/dist/sandbox/image.d.ts +0 -3
  740. package/dist/sandbox/image.d.ts.map +0 -1
  741. package/dist/sandbox/image.js +0 -27
  742. package/dist/sandbox/image.js.map +0 -1
  743. package/dist/sandbox/path-context.d.ts +0 -3
  744. package/dist/sandbox/path-context.d.ts.map +0 -1
  745. package/dist/sandbox/path-context.js +0 -20
  746. package/dist/sandbox/path-context.js.map +0 -1
  747. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  748. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  749. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  750. package/dist/sessions/metadata.d.ts +0 -3
  751. package/dist/sessions/metadata.d.ts.map +0 -1
  752. package/dist/sessions/metadata.js +0 -11
  753. package/dist/sessions/metadata.js.map +0 -1
  754. package/dist/sessions/policy.d.ts +0 -6
  755. package/dist/sessions/policy.d.ts.map +0 -1
  756. package/dist/sessions/policy.js +0 -24
  757. package/dist/sessions/policy.js.map +0 -1
  758. package/dist/store.d.ts +0 -46
  759. package/dist/store.d.ts.map +0 -1
  760. package/dist/store.js +0 -177
  761. package/dist/store.js.map +0 -1
  762. package/dist/tools/bash.d.ts +0 -10
  763. package/dist/tools/bash.d.ts.map +0 -1
  764. package/dist/tools/bash.js +0 -80
  765. package/dist/tools/bash.js.map +0 -1
  766. package/dist/tools/edit.d.ts +0 -11
  767. package/dist/tools/edit.d.ts.map +0 -1
  768. package/dist/tools/edit.js +0 -131
  769. package/dist/tools/edit.js.map +0 -1
  770. package/dist/tools/event.d.ts +0 -56
  771. package/dist/tools/event.d.ts.map +0 -1
  772. package/dist/tools/event.js +0 -252
  773. package/dist/tools/event.js.map +0 -1
  774. package/dist/tools/index.d.ts +0 -24
  775. package/dist/tools/index.d.ts.map +0 -1
  776. package/dist/tools/index.js +0 -31
  777. package/dist/tools/index.js.map +0 -1
  778. package/dist/tools/react.d.ts +0 -15
  779. package/dist/tools/react.d.ts.map +0 -1
  780. package/dist/tools/react.js +0 -40
  781. package/dist/tools/react.js.map +0 -1
  782. package/dist/tools/read.d.ts +0 -11
  783. package/dist/tools/read.d.ts.map +0 -1
  784. package/dist/tools/read.js +0 -134
  785. package/dist/tools/read.js.map +0 -1
  786. package/dist/tools/sandbox.d.ts +0 -22
  787. package/dist/tools/sandbox.d.ts.map +0 -1
  788. package/dist/tools/sandbox.js.map +0 -1
  789. package/dist/tools/truncate.d.ts +0 -33
  790. package/dist/tools/truncate.d.ts.map +0 -1
  791. package/dist/tools/truncate.js +0 -184
  792. package/dist/tools/truncate.js.map +0 -1
  793. package/dist/tools/types.d.ts +0 -54
  794. package/dist/tools/types.d.ts.map +0 -1
  795. package/dist/tools/types.js.map +0 -1
  796. package/dist/tools/write.d.ts +0 -10
  797. package/dist/tools/write.d.ts.map +0 -1
  798. package/dist/tools/write.js +0 -29
  799. package/dist/tools/write.js.map +0 -1
  800. package/dist/trigger.d.ts +0 -22
  801. package/dist/trigger.d.ts.map +0 -1
  802. package/dist/trigger.js +0 -100
  803. package/dist/trigger.js.map +0 -1
  804. package/dist/utils/date.d.ts +0 -10
  805. package/dist/utils/date.d.ts.map +0 -1
  806. package/dist/utils/date.js +0 -23
  807. package/dist/utils/date.js.map +0 -1
  808. package/dist/utils/env.d.ts +0 -3
  809. package/dist/utils/env.d.ts.map +0 -1
  810. package/dist/utils/env.js +0 -12
  811. package/dist/utils/env.js.map +0 -1
  812. package/dist/utils/file-guards.d.ts +0 -9
  813. package/dist/utils/file-guards.d.ts.map +0 -1
  814. package/dist/utils/file-guards.js +0 -59
  815. package/dist/utils/file-guards.js.map +0 -1
  816. package/dist/utils/fs-atomic.d.ts +0 -10
  817. package/dist/utils/fs-atomic.d.ts.map +0 -1
  818. package/dist/utils/fs-atomic.js +0 -45
  819. package/dist/utils/fs-atomic.js.map +0 -1
  820. package/dist/utils/html.d.ts +0 -2
  821. package/dist/utils/html.d.ts.map +0 -1
  822. package/dist/utils/html.js +0 -4
  823. package/dist/utils/html.js.map +0 -1
  824. package/dist/utils/http-body.d.ts +0 -10
  825. package/dist/utils/http-body.d.ts.map +0 -1
  826. package/dist/utils/http-body.js +0 -34
  827. package/dist/utils/http-body.js.map +0 -1
  828. package/dist/vault/routing.d.ts +0 -3
  829. package/dist/vault/routing.d.ts.map +0 -1
  830. package/dist/vault/routing.js +0 -13
  831. package/dist/vault/routing.js.map +0 -1
  832. package/dist/web/admin/portal.d.ts +0 -5
  833. package/dist/web/admin/portal.d.ts.map +0 -1
  834. package/dist/web/admin/portal.js +0 -2572
  835. package/dist/web/admin/portal.js.map +0 -1
  836. package/dist/web/admin/provider-models.d.ts.map +0 -1
  837. package/dist/web/admin/provider-models.js.map +0 -1
  838. package/dist/web/admin/store.d.ts +0 -13
  839. package/dist/web/admin/store.d.ts.map +0 -1
  840. package/dist/web/admin/store.js +0 -14
  841. package/dist/web/admin/store.js.map +0 -1
  842. package/dist/web/admin/types.d.ts +0 -30
  843. package/dist/web/admin/types.d.ts.map +0 -1
  844. package/dist/web/admin/types.js.map +0 -1
  845. package/dist/web/agent-events/portal.d.ts +0 -3
  846. package/dist/web/agent-events/portal.d.ts.map +0 -1
  847. package/dist/web/agent-events/portal.js +0 -18
  848. package/dist/web/agent-events/portal.js.map +0 -1
  849. package/dist/web/login/oauth.d.ts +0 -6
  850. package/dist/web/login/oauth.d.ts.map +0 -1
  851. package/dist/web/login/oauth.js.map +0 -1
  852. package/dist/web/login/portal.d.ts +0 -17
  853. package/dist/web/login/portal.d.ts.map +0 -1
  854. package/dist/web/login/portal.js.map +0 -1
  855. package/dist/web/login/store.d.ts +0 -8
  856. package/dist/web/login/store.d.ts.map +0 -1
  857. package/dist/web/login/store.js +0 -15
  858. package/dist/web/login/store.js.map +0 -1
  859. package/dist/web/login/types.d.ts.map +0 -1
  860. package/dist/web/login/types.js.map +0 -1
  861. package/dist/web/request.d.ts +0 -3
  862. package/dist/web/request.d.ts.map +0 -1
  863. package/dist/web/request.js +0 -13
  864. package/dist/web/request.js.map +0 -1
  865. package/dist/web/server.d.ts +0 -28
  866. package/dist/web/server.d.ts.map +0 -1
  867. package/dist/web/server.js.map +0 -1
  868. package/dist/web/session-view/command.d.ts +0 -4
  869. package/dist/web/session-view/command.d.ts.map +0 -1
  870. package/dist/web/session-view/command.js +0 -7
  871. package/dist/web/session-view/command.js.map +0 -1
  872. package/dist/web/session-view/portal.d.ts +0 -13
  873. package/dist/web/session-view/portal.d.ts.map +0 -1
  874. package/dist/web/session-view/portal.js.map +0 -1
  875. package/dist/web/session-view/service.d.ts +0 -6
  876. package/dist/web/session-view/service.d.ts.map +0 -1
  877. package/dist/web/session-view/service.js +0 -498
  878. package/dist/web/session-view/service.js.map +0 -1
  879. package/dist/web/session-view/store.d.ts +0 -8
  880. package/dist/web/session-view/store.d.ts.map +0 -1
  881. package/dist/web/session-view/store.js +0 -15
  882. package/dist/web/session-view/store.js.map +0 -1
  883. package/dist/web/session-view/types.d.ts.map +0 -1
  884. package/dist/web/session-view/types.js.map +0 -1
  885. package/dist/web/token-store.d.ts.map +0 -1
  886. package/dist/web/token-store.js.map +0 -1
  887. package/dist/web/types.d.ts.map +0 -1
  888. package/dist/web/types.js.map +0 -1
  889. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  890. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  891. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  892. /package/dist/{commands → adapters/commands}/types.js +0 -0
  893. /package/dist/{harness/extensions → adapters/web/admin}/types.js +0 -0
  894. /package/dist/{tools → adapters/web/login}/types.js +0 -0
  895. /package/dist/{web/admin → adapters/web/session-view}/types.js +0 -0
  896. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  897. /package/dist/{web/login → adapters/web}/types.js +0 -0
  898. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  899. /package/dist/{web/session-view → cli}/types.js +0 -0
  900. /package/dist/{web → harness/tools}/types.js +0 -0
@@ -1,440 +1,572 @@
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 { CONTROL_INPUT_CUSTOM_TYPE } from "../sessions/types.js";
3
+ import { MikanAgentSession, DEFAULT_EVENT_BUDGET } from "./session.js";
4
+ import { runSubagent, DEFAULT_GLOBAL_SUBAGENT_SLOTS, SubagentSlotPool } from "./subagent.js";
5
+ import { loadSubagentProfiles } from "./subagent-profiles.js";
6
+ import { createMikanTools } from "./tools/index.js";
7
+ import { createSubagentTool } from "./tools/subagent.js";
8
+ import { adaptAgentTool } from "./tools/pi-tools.js";
9
+ import { withSecretRedaction } from "./tools/secret-redaction.js";
10
+ import { createSandboxExecutionEnv } from "./execution-env.js";
11
+ import { mkdir } from "node:fs/promises";
12
+ import { join } from "node:path";
13
+ import { ActorExecutionResolver } from "./execution-resolver.js";
14
+ import { assertSandboxSupportsWorkspacePolicy, createExecutor, getUnresolvedSandboxPathContext, } from "../sandbox/registry.js";
15
+ import { resolveWorkspaceProjection } from "../office/projection.js";
16
+ import { createHash } from "node:crypto";
17
+ import { resolveConversationSettings } from "../settings/index.js";
18
+ import { ensureDefaultOpenConnector } from "./open-connector.js";
19
+ import { OfficeEventStore } from "../events/index.js";
20
+ import { addLifecycleEvent, updateActiveSpanAttribution } from "../observability/index.js";
21
+ import { conversationIdOf, isThreadSessionKey } from "../sessions/session-key.js";
22
+ import { extractSessionUuid, openManagedSession } from "../sessions/store.js";
23
+ import { START_TASK_TOOL, TASK_STATUS_TOOL } from "./tools/task.js";
24
+ import { loadMikanSkills } from "./skills.js";
25
+ import { normalizeAttachRuntimePath, withStagedRuntimeFile, buildPromptPayload, buildSystemPrompt, buildTurnInstructions, getMemory, resolveTriggerAttribution, } from "./prompt.js";
26
+ import { attachSessionEventHandlers, activateRunPresentation, createRunState, finalizeRunResponse, getFinalAssistantText, isEventTriggerAttribution, reportUsageSummary, } from "./presenter.js";
19
27
  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 });
28
+ import { errorMessage } from "../unknown-values.js";
29
+ const globalSubagentSlots = new SubagentSlotPool(DEFAULT_GLOBAL_SUBAGENT_SLOTS);
30
+ async function createConfiguredAgentSession(params) {
31
+ const { workspaceDir, systemPrompt, model, thinkingLevel, tools, toolContext, sessionStore, models, } = params;
32
+ const loadedProfiles = loadSubagentProfiles(workspaceDir);
33
+ for (const diagnostic of loadedProfiles.diagnostics) {
34
+ log.logWarning(`Subagent profile ignored: ${diagnostic.path}`, diagnostic.message);
35
+ }
36
+ const availableToolNames = new Set(tools.map((tool) => tool.name));
37
+ const runnableProfiles = new Map([...loadedProfiles.profiles].filter(([, profile]) => profile.tools.every((tool) => availableToolNames.has(tool))));
38
+ let session;
39
+ const subagentTool = createSubagentTool((request, hooks) => runSubagent({
40
+ request,
41
+ onActivity: hooks?.onActivity,
42
+ defaultModel: model,
43
+ thinkingLevel,
44
+ models,
45
+ workspaceDir,
46
+ availableTools: tools.filter((tool) => ![START_TASK_TOOL, TASK_STATUS_TOOL].includes(tool.name)),
47
+ profiles: runnableProfiles,
48
+ slots: globalSubagentSlots,
49
+ toolContext,
50
+ parentMessages: [...session.messages],
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
+ const reloaded = await session.reloadFromSession();
63
+ if (reloaded > 0)
64
+ log.logInfo(`Reloaded ${reloaded} messages from session context`);
65
+ return session;
40
66
  }
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);
67
+ function createRunnerExecutionContext(sandboxConfig, vaultManager, provisioner, workspace) {
68
+ const executionResolver = vaultManager && sandboxConfig.type !== "host"
69
+ ? new ActorExecutionResolver(sandboxConfig, vaultManager, provisioner, workspace)
70
+ : undefined;
71
+ let activeExecutor = executionResolver !== undefined
72
+ ? createExecutor({ type: "host" })
73
+ : createExecutor(sandboxConfig);
74
+ const executor = {
75
+ exec(command, options) {
76
+ return activeExecutor.exec(command, options);
77
+ },
78
+ readFile(path, options) {
79
+ return activeExecutor.readFile(path, options);
80
+ },
81
+ readFileBase64(path, options) {
82
+ return activeExecutor.readFileBase64(path, options);
83
+ },
84
+ writeFile(path, content, options) {
85
+ return activeExecutor.writeFile(path, content, options);
86
+ },
87
+ getWorkspacePath(hostPath) {
88
+ return activeExecutor.getWorkspacePath(hostPath);
89
+ },
90
+ getSandboxConfig() {
91
+ return activeExecutor.getSandboxConfig();
92
+ },
93
+ getPathContext(hostWorkspaceRoot) {
94
+ return activeExecutor.getPathContext(hostWorkspaceRoot);
95
+ },
96
+ };
97
+ return {
98
+ executor,
99
+ async resolveForRun(context) {
100
+ if (executionResolver) {
101
+ const decision = await executionResolver.resolve(context);
102
+ activeExecutor = decision.executor;
103
+ return {
104
+ pathContext: decision.pathContext,
105
+ projection: decision.projection,
106
+ };
107
+ }
108
+ const office = workspace.office(context.address);
109
+ const projection = resolveWorkspaceProjection(office);
110
+ assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);
111
+ return {
112
+ pathContext: executor.getPathContext(workspace.root),
113
+ projection,
114
+ };
115
+ },
116
+ };
117
+ }
118
+ function buildThreadSessionName(message) {
119
+ const text = message?.text?.trim();
120
+ if (!text)
121
+ return undefined;
122
+ const userLabel = message?.userName || message?.user || "unknown";
123
+ return `[${userLabel}]: ${text}`;
124
+ }
125
+ async function ensureDefaultMcpServers(options) {
126
+ if (options.trustModel === "open-trigger")
127
+ return;
128
+ try {
129
+ await ensureDefaultOpenConnector({
130
+ office: options.office,
131
+ platformWorkspaceId: options.platformWorkspaceId,
132
+ defaultServer: options.openConnector,
133
+ signal: options.signal,
87
134
  });
88
135
  }
89
- /** Conversation transcript currently held by the agent. */
90
- get messages() {
91
- return this.agent.state.messages;
92
- }
93
- get model() {
94
- return this.agent.state.model;
95
- }
96
- subscribe(listener) {
97
- this.listeners.add(listener);
98
- return () => this.listeners.delete(listener);
99
- }
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;
136
+ catch (error) {
137
+ options.signal?.throwIfAborted();
138
+ log.logWarning(`[${options.office.address.conversationId}] OpenConnector default provisioning failed`, errorMessage(error));
107
139
  }
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 });
161
- }
162
- }
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();
140
+ }
141
+ async function preparePromptContext(params) {
142
+ const { message, platform, office, executor, resolveForRun, session } = params;
143
+ const conversationId = office.address.conversationId;
144
+ const decision = await resolveForRun({
145
+ address: message.address,
146
+ userId: message.userId,
147
+ trustModel: platform.trustModel,
148
+ });
149
+ const { pathContext, projection } = decision;
150
+ const reloaded = await session.reloadFromSession();
151
+ if (reloaded > 0) {
152
+ log.logInfo(`[${conversationId}] Reloaded ${reloaded} messages from context`);
168
153
  }
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
- }
154
+ const memory = await getMemory(projection);
155
+ const conversationSkillLoad = loadMikanSkills(office, pathContext.runtimeWorkspaceRoot, projection);
156
+ const triggerAttribution = resolveTriggerAttribution(message);
157
+ const systemPrompt = buildSystemPrompt({
158
+ workspacePath: pathContext.runtimeWorkspaceRoot,
159
+ office,
160
+ memory,
161
+ sandboxConfig: executor.getSandboxConfig(),
162
+ platform,
163
+ skills: conversationSkillLoad.skills,
164
+ projection,
165
+ skippedSkillLinks: conversationSkillLoad.skippedSkillLinks,
166
+ });
167
+ session.setSystemPrompt(systemPrompt);
168
+ const promptHash = createHash("sha256").update(systemPrompt).digest("hex").slice(0, 8);
169
+ log.logInfo(`[${conversationId}] System prompt (base): ${systemPrompt.length} chars, sha ${promptHash}`);
170
+ return { pathContext, memory, systemPrompt, triggerAttribution };
171
+ }
172
+ function bindRunCapabilities(params, pathContext) {
173
+ const { message, responder, platform, office, executor, setEventContext, setSandboxContext, setUploadFunction, setImageUploadFunction, setReactFunction, bindTasks, bindPlatformToolPacks, } = params;
174
+ setEventContext({
175
+ platform: platform.name,
176
+ conversationId: office.address.conversationId,
177
+ conversationKind: message.conversationKind,
178
+ userId: message.userId,
179
+ });
180
+ setSandboxContext({ address: message.address, userId: message.userId });
181
+ setUploadFunction(async (filePath, title) => {
182
+ const runtimePath = normalizeAttachRuntimePath(filePath, pathContext.runtimeWorkspaceRoot);
183
+ await withStagedRuntimeFile(executor, runtimePath, (stagedPath) => responder.uploadFile(stagedPath, title));
184
+ });
185
+ setImageUploadFunction(async (hostPath, title) => {
186
+ await responder.uploadFile(hostPath, title);
187
+ });
188
+ bindTasks(responder);
189
+ setReactFunction(responder.react ? async (emoji) => responder.react(emoji) : null);
190
+ bindPlatformToolPacks({
191
+ conversationId: office.address.conversationId,
192
+ platformName: platform.name,
193
+ threadTs: message.threadTs,
194
+ });
195
+ }
196
+ async function prepareRunContext(params) {
197
+ const { message, platform, office, executor } = params;
198
+ const sessionConversation = conversationIdOf(message.sessionKey);
199
+ await mkdir(join(office.dir, "scratch"), { recursive: true });
200
+ const { pathContext, memory, systemPrompt, triggerAttribution } = await preparePromptContext(params);
201
+ bindRunCapabilities(params, pathContext);
202
+ log.logInfo(`Context sizes - system: ${systemPrompt.length} chars, memory: ${memory.length} chars`);
203
+ log.logInfo(`Channels: ${platform.channels.length}, Users: ${platform.users.length}`);
204
+ const { userMessage, imageAttachments } = await buildPromptPayload(message, pathContext.runtimeWorkspaceRoot, pathContext, (runtimePath) => executor.readFileBase64(runtimePath));
205
+ const turnInstructions = buildTurnInstructions(message.id.startsWith("event:"), triggerAttribution, platform.name);
206
+ const finalUserMessage = turnInstructions ? `${turnInstructions}\n\n${userMessage}` : userMessage;
207
+ return {
208
+ sessionConversation,
209
+ userMessage: finalUserMessage,
210
+ imageAttachments,
211
+ triggerAttribution,
212
+ };
213
+ }
214
+ async function buildInitialSystemPrompt(params) {
215
+ const { office, pathContext, projection, sandboxConfig } = params;
216
+ const memory = await getMemory(projection);
217
+ const { skills, skippedSkillLinks } = loadMikanSkills(office, pathContext.runtimeWorkspaceRoot, projection);
218
+ return buildSystemPrompt({
219
+ workspacePath: pathContext.runtimeWorkspaceRoot,
220
+ office,
221
+ memory,
222
+ sandboxConfig,
223
+ platform: {
224
+ name: "chat",
225
+ formattingGuide: "",
226
+ channels: [],
227
+ users: [],
228
+ trustModel: "membership",
229
+ },
230
+ skills,
231
+ projection,
232
+ skippedSkillLinks,
233
+ });
234
+ }
235
+ async function rollbackRunnerResource(label, cleanup) {
236
+ try {
237
+ await cleanup();
174
238
  }
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
- }
239
+ catch (error) {
240
+ log.logWarning(`Runner rollback failed to ${label}`, String(error));
184
241
  }
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
- }
209
- }
242
+ }
243
+ async function openRunnerSessionManager(params) {
244
+ const { contextFile, runtimeWorkspaceRoot, sessionKey, threadRootMessage } = params;
245
+ const sessionManager = await openManagedSession(contextFile, runtimeWorkspaceRoot);
246
+ try {
247
+ const threadSessionName = buildThreadSessionName(threadRootMessage);
248
+ if (isThreadSessionKey(sessionKey) &&
249
+ threadSessionName &&
250
+ (await sessionManager.getSessionName()) !== threadSessionName) {
251
+ await sessionManager.setSessionName(threadSessionName);
210
252
  }
253
+ return sessionManager;
211
254
  }
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
+ catch (error) {
256
+ await rollbackRunnerResource("close the session writer", () => sessionManager.close());
257
+ throw error;
255
258
  }
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;
259
+ }
260
+ async function createRunnerAgentSession(params) {
261
+ const { workspaceDir, systemPrompt, model, agentConfig, tools, toolContext, sessionManager, modelRegistry, signal, } = params;
262
+ const mcpTools = await sessionManager.connectMcp(agentConfig.mcpServers ?? {}, signal);
263
+ return createConfiguredAgentSession({
264
+ workspaceDir,
265
+ systemPrompt,
266
+ model,
267
+ thinkingLevel: agentConfig.thinkingLevel,
268
+ tools: [...tools, ...mcpTools.map(withSecretRedaction)],
269
+ toolContext,
270
+ sessionStore: sessionManager,
271
+ models: modelRegistry,
272
+ });
273
+ }
274
+ async function runPreparedTurn(params) {
275
+ const { prepared, presentation, message, responder, platform, runState, session, model, agentConfig, sessionUuid, conversationId, contextFile, sessionView, } = params;
276
+ if (runState.logCtx) {
277
+ log.logAgentRunStart(runState.logCtx, model.provider, model.id, model.name);
264
278
  }
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);
279
+ updateActiveSpanAttribution({
280
+ provider: model.provider,
281
+ model: model.id,
282
+ channel_id: prepared.sessionConversation,
283
+ session_id: sessionUuid,
284
+ "mikan.input.message_count": 1,
285
+ "mikan.input.characters": prepared.userMessage.length,
286
+ "mikan.input.attachment_count": message.attachments?.length ?? 0,
287
+ "mikan.input.image_count": prepared.imageAttachments.length,
288
+ "mikan.input.has_text": prepared.userMessage.length > 0,
289
+ });
290
+ addLifecycleEvent("agent.prompt.sent", {
291
+ provider: model.provider,
292
+ model: agentConfig.model,
293
+ channel_id: prepared.sessionConversation,
294
+ session_id: sessionUuid,
295
+ attachment_count: message.attachments?.length ?? 0,
296
+ image_attachment_count: prepared.imageAttachments.length,
297
+ });
298
+ const isEventRun = message.id.startsWith("event:");
299
+ await session.prompt(prepared.userMessage, {
300
+ allowTaskHandoff: responder.startTask !== undefined,
301
+ allowTaskStatus: responder.getTaskStatus !== undefined,
302
+ images: prepared.imageAttachments.length > 0 ? prepared.imageAttachments : undefined,
303
+ budget: isEventRun ? DEFAULT_EVENT_BUDGET : undefined,
304
+ });
305
+ await presentation.wait();
306
+ const sessionViewTokenStore = sessionView?.tokenStore;
307
+ const sessionViewPortalBaseUrl = sessionView?.portalBaseUrl;
308
+ let sessionViewLink;
309
+ const createSessionViewLink = sessionViewTokenStore && sessionViewPortalBaseUrl
310
+ ? () => {
311
+ if (!sessionViewLink) {
312
+ const token = sessionViewTokenStore.create({
313
+ platform: platform.name,
314
+ platformUserId: message.userId,
315
+ conversationId,
316
+ sessionKey: message.sessionKey,
317
+ sessionFile: contextFile,
318
+ platformUserName: message.userName,
319
+ });
320
+ sessionViewLink = `${sessionViewPortalBaseUrl}/session?token=${token.token}`;
281
321
  }
282
- return false;
322
+ return sessionViewLink;
283
323
  }
284
- return this.checkThresholdCompaction(lastAssistant);
285
- }
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.",
293
- });
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);
324
+ : undefined;
325
+ await finalizeRunResponse(responder, session, runState, {
326
+ initialTask: message.id.startsWith("task:"),
327
+ triggerSessionLink: isEventTriggerAttribution(prepared.triggerAttribution)
328
+ ? createSessionViewLink?.()
329
+ : undefined,
330
+ createOverflowLink: createSessionViewLink,
331
+ platform: platform.name,
332
+ model,
333
+ sessionConversation: prepared.sessionConversation,
334
+ sessionUuid,
335
+ });
336
+ await reportUsageSummary({
337
+ session,
338
+ runState,
339
+ responder,
340
+ platform,
341
+ model,
342
+ agentConfig,
343
+ sessionConversation: prepared.sessionConversation,
344
+ sessionUuid,
345
+ waitForQueue: presentation.wait,
346
+ });
347
+ return {
348
+ stopReason: runState.stopReason,
349
+ errorMessage: runState.errorMessage,
350
+ finalText: getFinalAssistantText(session),
351
+ };
352
+ }
353
+ async function steerRun(session, activeMessage, message) {
354
+ if (!activeMessage)
355
+ return false;
356
+ await session.sessionStore.appendCustomEntry(CONTROL_INPUT_CUSTOM_TYPE, {
357
+ messageId: message.id,
358
+ });
359
+ if (!session.isActiveRun)
360
+ throw new Error("Task is preparing or settling. Please retry this update shortly.");
361
+ if (message.userId !== activeMessage.userId)
362
+ throw new Error("Only the task's current actor can guide this run.");
363
+ if (message.attachments?.length)
364
+ throw new Error("Stop the task before continuing with new attachments.");
365
+ if (!(await session.steer(`[${message.userName ?? message.userId}]: ${message.text}`))) {
366
+ throw new Error("Task settled while receiving this update. Please send it again to continue.");
317
367
  }
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,
343
- });
344
- }
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,
368
+ return true;
369
+ }
370
+ function createRunnerInterface(params) {
371
+ const { conversationId, conversationDir, sessionKey, office, sessionUuid, contextFile, sessionView, runState, executor, resolveForRun, session, model, agentConfig, sessionManager, chatSessionManager, toolBindings, } = params;
372
+ let activeMessage;
373
+ let stopped = false;
374
+ return {
375
+ steer: (message) => steerRun(session, activeMessage, message),
376
+ async syncChatHistory(currentMessageId) {
377
+ await chatSessionManager.syncSessionManager({
378
+ conversationDir,
379
+ sessionKey,
380
+ sessionManager,
381
+ currentMessageId,
355
382
  });
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}`,
383
+ },
384
+ async run(message, responder, platform) {
385
+ activeMessage = message;
386
+ stopped = false;
387
+ let presentation;
388
+ try {
389
+ const prepared = await prepareRunContext({
390
+ message,
391
+ responder,
392
+ platform,
393
+ office,
394
+ executor,
395
+ resolveForRun,
396
+ session,
397
+ setEventContext: toolBindings.setEventContext,
398
+ setSandboxContext: toolBindings.setSandboxContext,
399
+ setUploadFunction: toolBindings.setUploadFunction,
400
+ setImageUploadFunction: toolBindings.setImageUploadFunction,
401
+ setReactFunction: toolBindings.setReactFunction,
402
+ bindTasks: toolBindings.bindTasks,
403
+ bindPlatformToolPacks: toolBindings.bindPlatformToolPacks,
404
+ });
405
+ if (stopped)
406
+ return { stopReason: "aborted" };
407
+ presentation = activateRunPresentation(runState, {
408
+ responder,
409
+ sessionConversation: prepared.sessionConversation,
410
+ userName: message.userName,
411
+ sessionUuid,
412
+ triggerAttribution: prepared.triggerAttribution,
413
+ });
414
+ return await runPreparedTurn({
415
+ prepared,
416
+ presentation,
417
+ message,
418
+ responder,
419
+ platform,
420
+ runState,
421
+ session,
422
+ model,
423
+ agentConfig,
424
+ sessionUuid,
425
+ conversationId,
426
+ contextFile,
427
+ sessionView,
372
428
  });
373
429
  }
374
- else {
375
- log.logWarning("Compaction preparation failed", errorMessage);
430
+ finally {
431
+ activeMessage = undefined;
432
+ presentation?.dispose();
376
433
  }
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,
400
- });
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",
434
+ },
435
+ abort() {
436
+ stopped = true;
437
+ session.abort();
438
+ },
439
+ async dispose() {
440
+ await sessionManager.close();
441
+ },
442
+ getCurrentStep() {
443
+ const first = runState.pendingTools.values().next().value;
444
+ if (!first)
445
+ return undefined;
446
+ return {
447
+ toolName: first.toolName,
448
+ label: first.args?.label,
449
+ };
450
+ },
451
+ };
452
+ }
453
+ async function finishRunnerCreation(params) {
454
+ const { options, conversationId, conversationDir, workspaceDir, executor, resolveForRun, model, modelRegistry, agentConfig, systemPrompt, sessionManager, toolBindings, platformToolRoles, toolContext, } = params;
455
+ const { sessionKey, office, sessionScope, sessionView, chatHistory } = options;
456
+ const { contextFile } = sessionScope;
457
+ try {
458
+ const sessionUuid = extractSessionUuid(contextFile);
459
+ const session = await createRunnerAgentSession({
460
+ workspaceDir,
461
+ systemPrompt,
462
+ model,
463
+ agentConfig,
464
+ tools: toolBindings.tools,
465
+ toolContext,
466
+ sessionManager,
467
+ modelRegistry,
468
+ conversationId,
469
+ signal: options.signal,
470
+ });
471
+ options.signal?.throwIfAborted();
472
+ const runState = createRunState();
473
+ attachSessionEventHandlers({ session, runState, model, agentConfig, platformToolRoles });
474
+ return createRunnerInterface({
475
+ conversationId,
476
+ conversationDir,
477
+ sessionKey,
478
+ office,
479
+ sessionUuid,
480
+ contextFile,
481
+ sessionView,
482
+ runState,
483
+ executor,
484
+ resolveForRun,
485
+ session,
486
+ model,
487
+ agentConfig,
488
+ sessionManager,
489
+ chatSessionManager: chatHistory,
490
+ toolBindings,
411
491
  });
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
492
  }
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
- }
493
+ catch (error) {
494
+ await rollbackRunnerResource("close the session writer", () => sessionManager.close());
495
+ throw error;
496
+ }
497
+ }
498
+ export async function createRunner(options) {
499
+ options.signal?.throwIfAborted();
500
+ const { sandboxConfig, sessionKey, office, trustModel, sessionScope, vaultManager, provisioner, resourceController, platformToolPackFactories, } = options;
501
+ const conversationId = office.address.conversationId;
502
+ const conversationDir = office.dir;
503
+ const workspaceDir = office.workspace.root;
504
+ await ensureDefaultMcpServers({
505
+ office,
506
+ trustModel,
507
+ platformWorkspaceId: options.platformWorkspaceId,
508
+ openConnector: options.openConnector,
509
+ signal: options.signal,
510
+ });
511
+ options.signal?.throwIfAborted();
512
+ const resolvedAgentConfig = resolveConversationSettings(office);
513
+ const agentConfig = {
514
+ ...resolvedAgentConfig,
515
+ mcpServers: trustModel === "open-trigger" ? {} : (resolvedAgentConfig.mcpServers ?? {}),
516
+ };
517
+ const projection = resolveWorkspaceProjection(office);
518
+ assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);
519
+ const { executor, resolveForRun } = createRunnerExecutionContext(sandboxConfig, vaultManager, provisioner, office.workspace);
520
+ const pathContext = getUnresolvedSandboxPathContext(sandboxConfig, workspaceDir);
521
+ const toolContext = {
522
+ env: createSandboxExecutionEnv(executor, sandboxConfig.type, pathContext.runtimeWorkspaceRoot),
523
+ };
524
+ const modelRegistry = options.models ?? MikanModels.create();
525
+ if (modelRegistry.getError()) {
526
+ log.logWarning("models.json load error", modelRegistry.getError());
438
527
  }
528
+ const model = modelRegistry.resolve(agentConfig.provider, agentConfig.model);
529
+ const platformToolPacks = (platformToolPackFactories ?? []).map((createPack) => createPack());
530
+ const toolBindings = createMikanTools(executor, new OfficeEventStore(office, options.eventScheduler), { sandbox: sandboxConfig, resourceController: resourceController ?? provisioner }, platformToolPacks, {
531
+ model,
532
+ getApiKey: () => modelRegistry.getApiKeyForProvider(model.provider),
533
+ outputDir: conversationDir,
534
+ });
535
+ const systemPrompt = await buildInitialSystemPrompt({
536
+ office,
537
+ pathContext,
538
+ projection,
539
+ sandboxConfig,
540
+ });
541
+ options.signal?.throwIfAborted();
542
+ const { contextFile, threadRootMessage } = sessionScope;
543
+ const sessionManager = await openRunnerSessionManager({
544
+ contextFile,
545
+ runtimeWorkspaceRoot: pathContext.runtimeWorkspaceRoot,
546
+ sessionKey,
547
+ threadRootMessage,
548
+ });
549
+ return finishRunnerCreation({
550
+ options,
551
+ conversationId,
552
+ conversationDir,
553
+ workspaceDir,
554
+ executor,
555
+ resolveForRun,
556
+ model,
557
+ modelRegistry,
558
+ agentConfig,
559
+ systemPrompt,
560
+ sessionManager,
561
+ toolBindings,
562
+ platformToolRoles: collectPlatformToolRoles(platformToolPacks),
563
+ toolContext,
564
+ });
565
+ }
566
+ function collectPlatformToolRoles(packs) {
567
+ return {
568
+ platformTools: new Set(packs.flatMap((pack) => pack.tools.map((tool) => tool.name))),
569
+ finalResponseTools: new Set(packs.flatMap((pack) => pack.finalResponseTools ?? [])),
570
+ };
439
571
  }
440
572
  //# sourceMappingURL=runner.js.map