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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) hide show
  1. package/CHANGELOG.md +1052 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +11 -8
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +166 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +37 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +155 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +15 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +153 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +41 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +5 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +43 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  30. package/dist/adapters/commands/sandbox.js +125 -0
  31. package/dist/adapters/commands/sandbox.js.map +1 -0
  32. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  33. package/dist/{commands → adapters/commands}/session-view.js +23 -16
  34. package/dist/adapters/commands/session-view.js.map +1 -0
  35. package/dist/adapters/commands/types.d.ts +145 -0
  36. package/dist/adapters/commands/types.d.ts.map +1 -0
  37. package/dist/adapters/commands/types.js.map +1 -0
  38. package/dist/adapters/commands/utils.d.ts +14 -0
  39. package/dist/adapters/commands/utils.d.ts.map +1 -0
  40. package/dist/{commands → adapters/commands}/utils.js +18 -1
  41. package/dist/adapters/commands/utils.js.map +1 -0
  42. package/dist/adapters/discord/bot.d.ts +11 -8
  43. package/dist/adapters/discord/bot.d.ts.map +1 -1
  44. package/dist/adapters/discord/bot.js +223 -256
  45. package/dist/adapters/discord/bot.js.map +1 -1
  46. package/dist/adapters/discord/components.d.ts +28 -0
  47. package/dist/adapters/discord/components.d.ts.map +1 -0
  48. package/dist/adapters/discord/components.js +32 -0
  49. package/dist/adapters/discord/components.js.map +1 -0
  50. package/dist/adapters/discord/context.d.ts +2 -6
  51. package/dist/adapters/discord/context.d.ts.map +1 -1
  52. package/dist/adapters/discord/context.js +64 -218
  53. package/dist/adapters/discord/context.js.map +1 -1
  54. package/dist/adapters/discord/format.d.ts +3 -0
  55. package/dist/adapters/discord/format.d.ts.map +1 -0
  56. package/dist/adapters/discord/format.js +84 -0
  57. package/dist/adapters/discord/format.js.map +1 -0
  58. package/dist/adapters/discord/types.d.ts +8 -1
  59. package/dist/adapters/discord/types.d.ts.map +1 -1
  60. package/dist/adapters/discord/types.js.map +1 -1
  61. package/dist/adapters/github/bot.d.ts +102 -0
  62. package/dist/adapters/github/bot.d.ts.map +1 -0
  63. package/dist/adapters/github/bot.js +720 -0
  64. package/dist/adapters/github/bot.js.map +1 -0
  65. package/dist/adapters/github/client.d.ts +122 -0
  66. package/dist/adapters/github/client.d.ts.map +1 -0
  67. package/dist/adapters/github/client.js +301 -0
  68. package/dist/adapters/github/client.js.map +1 -0
  69. package/dist/adapters/github/context.d.ts +5 -0
  70. package/dist/adapters/github/context.d.ts.map +1 -0
  71. package/dist/adapters/github/context.js +101 -0
  72. package/dist/adapters/github/context.js.map +1 -0
  73. package/dist/adapters/github/github-ops.d.ts +78 -0
  74. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  75. package/dist/adapters/github/github-ops.js +337 -0
  76. package/dist/adapters/github/github-ops.js.map +1 -0
  77. package/dist/adapters/github/ids.d.ts +34 -0
  78. package/dist/adapters/github/ids.d.ts.map +1 -0
  79. package/dist/adapters/github/ids.js +57 -0
  80. package/dist/adapters/github/ids.js.map +1 -0
  81. package/dist/adapters/github/repo.d.ts +33 -0
  82. package/dist/adapters/github/repo.d.ts.map +1 -0
  83. package/dist/adapters/github/repo.js +141 -0
  84. package/dist/adapters/github/repo.js.map +1 -0
  85. package/dist/adapters/github/tool-pack.d.ts +14 -0
  86. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  87. package/dist/adapters/github/tool-pack.js +55 -0
  88. package/dist/adapters/github/tool-pack.js.map +1 -0
  89. package/dist/adapters/github/tools/checks.d.ts +18 -0
  90. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  91. package/dist/adapters/github/tools/checks.js +86 -0
  92. package/dist/adapters/github/tools/checks.js.map +1 -0
  93. package/dist/adapters/github/tools/issue.d.ts +21 -0
  94. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  95. package/dist/adapters/github/tools/issue.js +48 -0
  96. package/dist/adapters/github/tools/issue.js.map +1 -0
  97. package/dist/adapters/github/tools/pr.d.ts +22 -0
  98. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  99. package/dist/adapters/github/tools/pr.js +48 -0
  100. package/dist/adapters/github/tools/pr.js.map +1 -0
  101. package/dist/adapters/github/tools/read.d.ts +21 -0
  102. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  103. package/dist/adapters/github/tools/read.js +141 -0
  104. package/dist/adapters/github/tools/read.js.map +1 -0
  105. package/dist/adapters/github/tools/review-reply.d.ts +17 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  107. package/dist/adapters/github/tools/review-reply.js +38 -0
  108. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  109. package/dist/adapters/github/tools/sync.d.ts +17 -0
  110. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  111. package/dist/adapters/github/tools/sync.js +34 -0
  112. package/dist/adapters/github/tools/sync.js.map +1 -0
  113. package/dist/adapters/github/types.d.ts +345 -0
  114. package/dist/adapters/github/types.d.ts.map +1 -0
  115. package/dist/adapters/github/types.js.map +1 -0
  116. package/dist/adapters/github/webhook.d.ts +20 -0
  117. package/dist/adapters/github/webhook.d.ts.map +1 -0
  118. package/dist/adapters/github/webhook.js +78 -0
  119. package/dist/adapters/github/webhook.js.map +1 -0
  120. package/dist/adapters/index.d.ts +12 -0
  121. package/dist/adapters/index.d.ts.map +1 -0
  122. package/dist/adapters/index.js +19 -0
  123. package/dist/adapters/index.js.map +1 -0
  124. package/dist/adapters/intake.d.ts +17 -6
  125. package/dist/adapters/intake.d.ts.map +1 -1
  126. package/dist/adapters/intake.js +96 -27
  127. package/dist/adapters/intake.js.map +1 -1
  128. package/dist/adapters/markdown-tables.d.ts +19 -0
  129. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  130. package/dist/adapters/markdown-tables.js +152 -0
  131. package/dist/adapters/markdown-tables.js.map +1 -0
  132. package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  133. package/dist/adapters/messages.d.ts.map +1 -0
  134. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  135. package/dist/adapters/messages.js.map +1 -0
  136. package/dist/adapters/progressive-renderer.d.ts +7 -0
  137. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  138. package/dist/adapters/progressive-renderer.js +443 -0
  139. package/dist/adapters/progressive-renderer.js.map +1 -0
  140. package/dist/adapters/shared.d.ts +37 -11
  141. package/dist/adapters/shared.d.ts.map +1 -1
  142. package/dist/adapters/shared.js +130 -24
  143. package/dist/adapters/shared.js.map +1 -1
  144. package/dist/adapters/slack/assistant.d.ts +73 -0
  145. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  146. package/dist/adapters/slack/assistant.js +205 -0
  147. package/dist/adapters/slack/assistant.js.map +1 -0
  148. package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
  149. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  150. package/dist/adapters/slack/auto-reply-context.js +28 -0
  151. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  152. package/dist/adapters/slack/blocks.d.ts +14 -0
  153. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  154. package/dist/adapters/slack/blocks.js +104 -148
  155. package/dist/adapters/slack/blocks.js.map +1 -1
  156. package/dist/adapters/slack/bot.d.ts +154 -21
  157. package/dist/adapters/slack/bot.d.ts.map +1 -1
  158. package/dist/adapters/slack/bot.js +1037 -484
  159. package/dist/adapters/slack/bot.js.map +1 -1
  160. package/dist/adapters/slack/context.d.ts +2 -6
  161. package/dist/adapters/slack/context.d.ts.map +1 -1
  162. package/dist/adapters/slack/context.js +11 -17
  163. package/dist/adapters/slack/context.js.map +1 -1
  164. package/dist/adapters/slack/jev-context.d.ts +30 -0
  165. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  166. package/dist/adapters/slack/jev-context.js +67 -0
  167. package/dist/adapters/slack/jev-context.js.map +1 -0
  168. package/dist/adapters/slack/markdown.d.ts +3 -0
  169. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  170. package/dist/adapters/slack/markdown.js +48 -0
  171. package/dist/adapters/slack/markdown.js.map +1 -0
  172. package/dist/adapters/slack/persona.d.ts +15 -0
  173. package/dist/adapters/slack/persona.d.ts.map +1 -0
  174. package/dist/adapters/slack/persona.js +22 -0
  175. package/dist/adapters/slack/persona.js.map +1 -0
  176. package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
  177. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  178. package/dist/adapters/slack/response-lifecycle.js +261 -345
  179. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  180. package/dist/adapters/slack/session.d.ts.map +1 -1
  181. package/dist/adapters/slack/session.js +7 -11
  182. package/dist/adapters/slack/session.js.map +1 -1
  183. package/dist/adapters/slack/stream-limits.d.ts +35 -0
  184. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  185. package/dist/adapters/slack/stream-limits.js +56 -0
  186. package/dist/adapters/slack/stream-limits.js.map +1 -0
  187. package/dist/adapters/slack/task-intent.d.ts +32 -0
  188. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  189. package/dist/adapters/slack/task-intent.js +72 -0
  190. package/dist/adapters/slack/task-intent.js.map +1 -0
  191. package/dist/adapters/slack/task-status.d.ts +7 -0
  192. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  193. package/dist/adapters/slack/task-status.js +107 -0
  194. package/dist/adapters/slack/task-status.js.map +1 -0
  195. package/dist/adapters/slack/tool-pack.d.ts +11 -0
  196. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  197. package/dist/adapters/slack/tool-pack.js +45 -0
  198. package/dist/adapters/slack/tool-pack.js.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
  200. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  201. package/dist/adapters/slack/tools/blockkit.js +106 -0
  202. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  203. package/dist/adapters/slack/types.d.ts +73 -2
  204. package/dist/adapters/slack/types.d.ts.map +1 -1
  205. package/dist/adapters/slack/types.js.map +1 -1
  206. package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
  207. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  208. package/dist/adapters/slack/update-diagnostics.js +134 -0
  209. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  210. package/dist/adapters/telegram/bot.d.ts +10 -9
  211. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  212. package/dist/adapters/telegram/bot.js +133 -202
  213. package/dist/adapters/telegram/bot.js.map +1 -1
  214. package/dist/adapters/telegram/context.d.ts +2 -6
  215. package/dist/adapters/telegram/context.d.ts.map +1 -1
  216. package/dist/adapters/telegram/context.js +53 -190
  217. package/dist/adapters/telegram/context.js.map +1 -1
  218. package/dist/adapters/telegram/types.d.ts +1 -1
  219. package/dist/adapters/telegram/types.d.ts.map +1 -1
  220. package/dist/adapters/telegram/types.js.map +1 -1
  221. package/dist/adapters/types.d.ts +144 -13
  222. package/dist/adapters/types.d.ts.map +1 -1
  223. package/dist/adapters/types.js.map +1 -1
  224. package/dist/adapters/web/admin/portal.d.ts +44 -0
  225. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  226. package/dist/adapters/web/admin/portal.js +3207 -0
  227. package/dist/adapters/web/admin/portal.js.map +1 -0
  228. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  229. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  231. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  232. package/dist/adapters/web/admin/types.d.ts +53 -0
  233. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  234. package/dist/adapters/web/admin/types.js.map +1 -0
  235. package/dist/adapters/web/login/oauth.d.ts +5 -0
  236. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  237. package/dist/{web → adapters/web}/login/oauth.js +50 -85
  238. package/dist/adapters/web/login/oauth.js.map +1 -0
  239. package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
  240. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  241. package/dist/{web → adapters/web}/login/portal.js +161 -119
  242. package/dist/adapters/web/login/portal.js.map +1 -0
  243. package/dist/{web → adapters/web}/login/types.d.ts +1 -12
  244. package/dist/adapters/web/login/types.d.ts.map +1 -0
  245. package/dist/adapters/web/login/types.js.map +1 -0
  246. package/dist/adapters/web/portal-shell.d.ts +22 -0
  247. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  248. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
  249. package/dist/adapters/web/portal-shell.js.map +1 -0
  250. package/dist/{web → adapters/web}/server.d.ts +14 -8
  251. package/dist/adapters/web/server.d.ts.map +1 -0
  252. package/dist/{web → adapters/web}/server.js +14 -7
  253. package/dist/adapters/web/server.js.map +1 -0
  254. package/dist/adapters/web/session-view/portal.d.ts +20 -0
  255. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  256. package/dist/{web → adapters/web}/session-view/portal.js +633 -162
  257. package/dist/adapters/web/session-view/portal.js.map +1 -0
  258. package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
  259. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  260. package/dist/adapters/web/session-view/types.js.map +1 -0
  261. package/dist/adapters/web/token-store.d.ts.map +1 -0
  262. package/dist/{web → adapters/web}/token-store.js +1 -1
  263. package/dist/adapters/web/token-store.js.map +1 -0
  264. package/dist/adapters/web/types.d.ts.map +1 -0
  265. package/dist/adapters/web/types.js.map +1 -0
  266. package/dist/cli/arg-grammar.d.ts +11 -0
  267. package/dist/cli/arg-grammar.d.ts.map +1 -0
  268. package/dist/cli/arg-grammar.js +50 -0
  269. package/dist/cli/arg-grammar.js.map +1 -0
  270. package/dist/cli/boot.d.ts +5 -0
  271. package/dist/cli/boot.d.ts.map +1 -0
  272. package/dist/cli/boot.js +90 -0
  273. package/dist/cli/boot.js.map +1 -0
  274. package/dist/cli/download.d.ts.map +1 -0
  275. package/dist/cli/download.js +88 -0
  276. package/dist/cli/download.js.map +1 -0
  277. package/dist/cli/office.d.ts +2 -0
  278. package/dist/cli/office.d.ts.map +1 -0
  279. package/dist/cli/office.js +181 -0
  280. package/dist/cli/office.js.map +1 -0
  281. package/dist/cli/onboard.d.ts +10 -0
  282. package/dist/cli/onboard.d.ts.map +1 -0
  283. package/dist/cli/onboard.js +225 -0
  284. package/dist/cli/onboard.js.map +1 -0
  285. package/dist/cli/process-lifecycle.d.ts +19 -0
  286. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  287. package/dist/cli/process-lifecycle.js +67 -0
  288. package/dist/cli/process-lifecycle.js.map +1 -0
  289. package/dist/cli/sessions.d.ts +2 -0
  290. package/dist/cli/sessions.d.ts.map +1 -0
  291. package/dist/cli/sessions.js +88 -0
  292. package/dist/cli/sessions.js.map +1 -0
  293. package/dist/cli/types.d.ts +25 -0
  294. package/dist/cli/types.d.ts.map +1 -0
  295. package/dist/cli/types.js.map +1 -0
  296. package/dist/dream/index.d.ts +20 -0
  297. package/dist/dream/index.d.ts.map +1 -0
  298. package/dist/dream/index.js +264 -0
  299. package/dist/dream/index.js.map +1 -0
  300. package/dist/dream/types.d.ts +30 -0
  301. package/dist/dream/types.d.ts.map +1 -0
  302. package/dist/dream/types.js +2 -0
  303. package/dist/dream/types.js.map +1 -0
  304. package/dist/env-manifest.d.ts +38 -0
  305. package/dist/env-manifest.d.ts.map +1 -0
  306. package/dist/env-manifest.js +260 -0
  307. package/dist/env-manifest.js.map +1 -0
  308. package/dist/events/index.d.ts +172 -0
  309. package/dist/events/index.d.ts.map +1 -0
  310. package/dist/events/index.js +340 -0
  311. package/dist/events/index.js.map +1 -0
  312. package/dist/events/scheduler.d.ts +34 -0
  313. package/dist/events/scheduler.d.ts.map +1 -0
  314. package/dist/events/scheduler.js +231 -0
  315. package/dist/events/scheduler.js.map +1 -0
  316. package/dist/file-guards.d.ts +26 -0
  317. package/dist/file-guards.d.ts.map +1 -0
  318. package/dist/file-guards.js +133 -0
  319. package/dist/file-guards.js.map +1 -0
  320. package/dist/harness/execution-env.d.ts +19 -0
  321. package/dist/harness/execution-env.d.ts.map +1 -0
  322. package/dist/harness/execution-env.js +262 -0
  323. package/dist/harness/execution-env.js.map +1 -0
  324. package/dist/harness/execution-resolver.d.ts +25 -0
  325. package/dist/harness/execution-resolver.d.ts.map +1 -0
  326. package/dist/harness/execution-resolver.js +156 -0
  327. package/dist/harness/execution-resolver.js.map +1 -0
  328. package/dist/harness/index.d.ts +18 -13
  329. package/dist/harness/index.d.ts.map +1 -1
  330. package/dist/harness/index.js +11 -11
  331. package/dist/harness/index.js.map +1 -1
  332. package/dist/harness/jev.d.ts +86 -0
  333. package/dist/harness/jev.d.ts.map +1 -0
  334. package/dist/harness/jev.js +167 -0
  335. package/dist/harness/jev.js.map +1 -0
  336. package/dist/harness/mcp.d.ts +38 -0
  337. package/dist/harness/mcp.d.ts.map +1 -0
  338. package/dist/harness/mcp.js +304 -0
  339. package/dist/harness/mcp.js.map +1 -0
  340. package/dist/harness/models.d.ts +7 -4
  341. package/dist/harness/models.d.ts.map +1 -1
  342. package/dist/harness/models.js +54 -55
  343. package/dist/harness/models.js.map +1 -1
  344. package/dist/harness/open-connector.d.ts +25 -0
  345. package/dist/harness/open-connector.d.ts.map +1 -0
  346. package/dist/harness/open-connector.js +178 -0
  347. package/dist/harness/open-connector.js.map +1 -0
  348. package/dist/harness/presenter.d.ts +31 -0
  349. package/dist/harness/presenter.d.ts.map +1 -0
  350. package/dist/harness/presenter.js +859 -0
  351. package/dist/harness/presenter.js.map +1 -0
  352. package/dist/harness/prompt.d.ts +30 -0
  353. package/dist/harness/prompt.d.ts.map +1 -0
  354. package/dist/harness/prompt.js +420 -0
  355. package/dist/harness/prompt.js.map +1 -0
  356. package/dist/harness/runner.d.ts +2 -123
  357. package/dist/harness/runner.d.ts.map +1 -1
  358. package/dist/harness/runner.js +551 -416
  359. package/dist/harness/runner.js.map +1 -1
  360. package/dist/harness/session.d.ts +122 -0
  361. package/dist/harness/session.d.ts.map +1 -0
  362. package/dist/harness/session.js +581 -0
  363. package/dist/harness/session.js.map +1 -0
  364. package/dist/harness/skills.d.ts +17 -28
  365. package/dist/harness/skills.d.ts.map +1 -1
  366. package/dist/harness/skills.js +104 -39
  367. package/dist/harness/skills.js.map +1 -1
  368. package/dist/harness/subagent-profiles.d.ts +8 -0
  369. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  370. package/dist/harness/subagent-profiles.js +293 -0
  371. package/dist/harness/subagent-profiles.js.map +1 -0
  372. package/dist/harness/subagent.d.ts +64 -0
  373. package/dist/harness/subagent.d.ts.map +1 -0
  374. package/dist/harness/subagent.js +687 -0
  375. package/dist/harness/subagent.js.map +1 -0
  376. package/dist/harness/tools/attach.d.ts.map +1 -0
  377. package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
  378. package/dist/harness/tools/attach.js.map +1 -0
  379. package/dist/{tools → harness/tools}/event.d.ts +4 -33
  380. package/dist/harness/tools/event.d.ts.map +1 -0
  381. package/dist/harness/tools/event.js +175 -0
  382. package/dist/harness/tools/event.js.map +1 -0
  383. package/dist/harness/tools/generate-image.d.ts +23 -0
  384. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  385. package/dist/harness/tools/generate-image.js +65 -0
  386. package/dist/harness/tools/generate-image.js.map +1 -0
  387. package/dist/harness/tools/host-fn-tool.d.ts +21 -0
  388. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  389. package/dist/harness/tools/host-fn-tool.js +32 -0
  390. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  391. package/dist/harness/tools/index.d.ts +41 -0
  392. package/dist/harness/tools/index.d.ts.map +1 -0
  393. package/dist/harness/tools/index.js +51 -0
  394. package/dist/harness/tools/index.js.map +1 -0
  395. package/dist/harness/tools/jev.d.ts +21 -0
  396. package/dist/harness/tools/jev.d.ts.map +1 -0
  397. package/dist/harness/tools/jev.js +109 -0
  398. package/dist/harness/tools/jev.js.map +1 -0
  399. package/dist/harness/tools/pi-tools.d.ts +18 -0
  400. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  401. package/dist/harness/tools/pi-tools.js +84 -0
  402. package/dist/harness/tools/pi-tools.js.map +1 -0
  403. package/dist/harness/tools/react.d.ts.map +1 -0
  404. package/dist/{tools → harness/tools}/react.js +6 -17
  405. package/dist/harness/tools/react.js.map +1 -0
  406. package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
  407. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  408. package/dist/{tools → harness/tools}/sandbox.js +12 -8
  409. package/dist/harness/tools/sandbox.js.map +1 -0
  410. package/dist/harness/tools/subagent.d.ts +85 -0
  411. package/dist/harness/tools/subagent.d.ts.map +1 -0
  412. package/dist/harness/tools/subagent.js +677 -0
  413. package/dist/harness/tools/subagent.js.map +1 -0
  414. package/dist/harness/tools/task.d.ts +20 -0
  415. package/dist/harness/tools/task.d.ts.map +1 -0
  416. package/dist/harness/tools/task.js +79 -0
  417. package/dist/harness/tools/task.js.map +1 -0
  418. package/dist/harness/tools/types.d.ts +29 -0
  419. package/dist/harness/tools/types.d.ts.map +1 -0
  420. package/dist/harness/tools/types.js +2 -0
  421. package/dist/harness/tools/types.js.map +1 -0
  422. package/dist/harness/types.d.ts +384 -25
  423. package/dist/harness/types.d.ts.map +1 -1
  424. package/dist/harness/types.js +1 -1
  425. package/dist/harness/types.js.map +1 -1
  426. package/dist/index.d.ts +33 -9
  427. package/dist/index.d.ts.map +1 -1
  428. package/dist/index.js +19 -6
  429. package/dist/index.js.map +1 -1
  430. package/dist/log.d.ts.map +1 -1
  431. package/dist/log.js +4 -1
  432. package/dist/log.js.map +1 -1
  433. package/dist/main.js +357 -198
  434. package/dist/main.js.map +1 -1
  435. package/dist/observability/index.d.ts +33 -0
  436. package/dist/observability/index.d.ts.map +1 -0
  437. package/dist/observability/index.js +257 -0
  438. package/dist/observability/index.js.map +1 -0
  439. package/dist/observability/instrument.js +14 -6
  440. package/dist/observability/instrument.js.map +1 -1
  441. package/dist/observability/otel.d.ts +10 -0
  442. package/dist/observability/otel.d.ts.map +1 -0
  443. package/dist/observability/otel.js +183 -0
  444. package/dist/observability/otel.js.map +1 -0
  445. package/dist/observability/sentry.d.ts +40 -7
  446. package/dist/observability/sentry.d.ts.map +1 -1
  447. package/dist/observability/sentry.js +176 -32
  448. package/dist/observability/sentry.js.map +1 -1
  449. package/dist/observability/types.d.ts +24 -3
  450. package/dist/observability/types.d.ts.map +1 -1
  451. package/dist/observability/types.js.map +1 -1
  452. package/dist/office/index.d.ts +139 -0
  453. package/dist/office/index.d.ts.map +1 -0
  454. package/dist/office/index.js +1084 -0
  455. package/dist/office/index.js.map +1 -0
  456. package/dist/office/projection.d.ts +42 -0
  457. package/dist/office/projection.d.ts.map +1 -0
  458. package/dist/office/projection.js +182 -0
  459. package/dist/office/projection.js.map +1 -0
  460. package/dist/office/types.d.ts +116 -0
  461. package/dist/office/types.d.ts.map +1 -0
  462. package/dist/office/types.js +2 -0
  463. package/dist/office/types.js.map +1 -0
  464. package/dist/runtime/conversation-runtime.d.ts +1 -1
  465. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  466. package/dist/runtime/conversation-runtime.js +423 -152
  467. package/dist/runtime/conversation-runtime.js.map +1 -1
  468. package/dist/runtime/session-lifecycle.d.ts +76 -0
  469. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  470. package/dist/runtime/session-lifecycle.js +404 -0
  471. package/dist/runtime/session-lifecycle.js.map +1 -0
  472. package/dist/runtime/types.d.ts +63 -15
  473. package/dist/runtime/types.d.ts.map +1 -1
  474. package/dist/runtime/types.js.map +1 -1
  475. package/dist/sandbox/cloudflare.d.ts +4 -0
  476. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  477. package/dist/sandbox/cloudflare.js +54 -52
  478. package/dist/sandbox/cloudflare.js.map +1 -1
  479. package/dist/sandbox/container.d.ts +3 -0
  480. package/dist/sandbox/container.d.ts.map +1 -1
  481. package/dist/sandbox/container.js +19 -7
  482. package/dist/sandbox/container.js.map +1 -1
  483. package/dist/sandbox/host.d.ts +3 -0
  484. package/dist/sandbox/host.d.ts.map +1 -1
  485. package/dist/sandbox/host.js +44 -35
  486. package/dist/sandbox/host.js.map +1 -1
  487. package/dist/sandbox/identity.d.ts +42 -0
  488. package/dist/sandbox/identity.d.ts.map +1 -0
  489. package/dist/sandbox/identity.js +77 -0
  490. package/dist/sandbox/identity.js.map +1 -0
  491. package/dist/sandbox/index.d.ts +24 -6
  492. package/dist/sandbox/index.d.ts.map +1 -1
  493. package/dist/sandbox/index.js +77 -17
  494. package/dist/sandbox/index.js.map +1 -1
  495. package/dist/sandbox/provisioner.d.ts +139 -0
  496. package/dist/sandbox/provisioner.d.ts.map +1 -0
  497. package/dist/{provisioner.js → sandbox/provisioner.js} +378 -24
  498. package/dist/sandbox/provisioner.js.map +1 -0
  499. package/dist/sandbox/types.d.ts +43 -9
  500. package/dist/sandbox/types.d.ts.map +1 -1
  501. package/dist/sandbox/types.js.map +1 -1
  502. package/dist/sandbox/utils.d.ts +24 -0
  503. package/dist/sandbox/utils.d.ts.map +1 -1
  504. package/dist/sandbox/utils.js +92 -1
  505. package/dist/sandbox/utils.js.map +1 -1
  506. package/dist/sessions/chat-history-sync.d.ts +23 -0
  507. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  508. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
  509. package/dist/sessions/chat-history-sync.js.map +1 -0
  510. package/dist/sessions/history-line.d.ts +29 -0
  511. package/dist/sessions/history-line.d.ts.map +1 -0
  512. package/dist/sessions/history-line.js +45 -0
  513. package/dist/sessions/history-line.js.map +1 -0
  514. package/dist/sessions/migrate-common.d.ts +43 -0
  515. package/dist/sessions/migrate-common.d.ts.map +1 -0
  516. package/dist/sessions/migrate-common.js +99 -0
  517. package/dist/sessions/migrate-common.js.map +1 -0
  518. package/dist/sessions/migrate-pi-084.d.ts +8 -0
  519. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  520. package/dist/sessions/migrate-pi-084.js +302 -0
  521. package/dist/sessions/migrate-pi-084.js.map +1 -0
  522. package/dist/sessions/migrate-v3.d.ts +15 -0
  523. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  524. package/dist/sessions/migrate-v3.js +419 -0
  525. package/dist/sessions/migrate-v3.js.map +1 -0
  526. package/dist/sessions/session-key.d.ts +33 -0
  527. package/dist/sessions/session-key.d.ts.map +1 -0
  528. package/dist/sessions/session-key.js +115 -0
  529. package/dist/sessions/session-key.js.map +1 -0
  530. package/dist/sessions/session-store.d.ts +61 -0
  531. package/dist/sessions/session-store.d.ts.map +1 -0
  532. package/dist/sessions/session-store.js +684 -0
  533. package/dist/sessions/session-store.js.map +1 -0
  534. package/dist/sessions/store.d.ts +17 -10
  535. package/dist/sessions/store.d.ts.map +1 -1
  536. package/dist/sessions/store.js +182 -47
  537. package/dist/sessions/store.js.map +1 -1
  538. package/dist/sessions/types.d.ts +74 -8
  539. package/dist/sessions/types.d.ts.map +1 -1
  540. package/dist/sessions/types.js +1 -1
  541. package/dist/sessions/types.js.map +1 -1
  542. package/dist/settings/apply.d.ts +16 -0
  543. package/dist/settings/apply.d.ts.map +1 -0
  544. package/dist/settings/apply.js +60 -0
  545. package/dist/settings/apply.js.map +1 -0
  546. package/dist/settings/index.d.ts +126 -0
  547. package/dist/settings/index.d.ts.map +1 -0
  548. package/dist/settings/index.js +422 -0
  549. package/dist/settings/index.js.map +1 -0
  550. package/dist/settings/migrate.d.ts +21 -0
  551. package/dist/settings/migrate.d.ts.map +1 -0
  552. package/dist/settings/migrate.js +86 -0
  553. package/dist/settings/migrate.js.map +1 -0
  554. package/dist/types.d.ts +330 -141
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +2 -2
  557. package/dist/types.js.map +1 -1
  558. package/dist/vault/index.d.ts +52 -2
  559. package/dist/vault/index.d.ts.map +1 -1
  560. package/dist/vault/index.js +218 -86
  561. package/dist/vault/index.js.map +1 -1
  562. package/dist/vault/types.d.ts +6 -2
  563. package/dist/vault/types.d.ts.map +1 -1
  564. package/dist/vault/types.js.map +1 -1
  565. package/package.json +79 -40
  566. package/dist/adapter.d.ts +0 -2
  567. package/dist/adapter.d.ts.map +0 -1
  568. package/dist/adapter.js +0 -2
  569. package/dist/adapter.js.map +0 -1
  570. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  571. package/dist/adapters/slack/tools/attach.js.map +0 -1
  572. package/dist/adapters/streaming.d.ts +0 -18
  573. package/dist/adapters/streaming.d.ts.map +0 -1
  574. package/dist/adapters/streaming.js +0 -44
  575. package/dist/adapters/streaming.js.map +0 -1
  576. package/dist/adapters/telegram/html.d.ts +0 -3
  577. package/dist/adapters/telegram/html.d.ts.map +0 -1
  578. package/dist/adapters/telegram/html.js +0 -98
  579. package/dist/adapters/telegram/html.js.map +0 -1
  580. package/dist/agent-events.d.ts +0 -5
  581. package/dist/agent-events.d.ts.map +0 -1
  582. package/dist/agent-events.js +0 -26
  583. package/dist/agent-events.js.map +0 -1
  584. package/dist/agent.d.ts +0 -39
  585. package/dist/agent.d.ts.map +0 -1
  586. package/dist/agent.js +0 -1291
  587. package/dist/agent.js.map +0 -1
  588. package/dist/cli/ext-git.d.ts +0 -22
  589. package/dist/cli/ext-git.d.ts.map +0 -1
  590. package/dist/cli/ext-git.js +0 -76
  591. package/dist/cli/ext-git.js.map +0 -1
  592. package/dist/cli/ext.d.ts +0 -2
  593. package/dist/cli/ext.d.ts.map +0 -1
  594. package/dist/cli/ext.js +0 -217
  595. package/dist/cli/ext.js.map +0 -1
  596. package/dist/commands/admin.d.ts.map +0 -1
  597. package/dist/commands/admin.js.map +0 -1
  598. package/dist/commands/auto-reply.d.ts.map +0 -1
  599. package/dist/commands/auto-reply.js +0 -76
  600. package/dist/commands/auto-reply.js.map +0 -1
  601. package/dist/commands/extensions.d.ts +0 -14
  602. package/dist/commands/extensions.d.ts.map +0 -1
  603. package/dist/commands/extensions.js +0 -55
  604. package/dist/commands/extensions.js.map +0 -1
  605. package/dist/commands/login.d.ts +0 -5
  606. package/dist/commands/login.d.ts.map +0 -1
  607. package/dist/commands/login.js +0 -115
  608. package/dist/commands/login.js.map +0 -1
  609. package/dist/commands/model.d.ts +0 -10
  610. package/dist/commands/model.d.ts.map +0 -1
  611. package/dist/commands/model.js +0 -102
  612. package/dist/commands/model.js.map +0 -1
  613. package/dist/commands/new.d.ts.map +0 -1
  614. package/dist/commands/new.js +0 -25
  615. package/dist/commands/new.js.map +0 -1
  616. package/dist/commands/parse.d.ts +0 -7
  617. package/dist/commands/parse.d.ts.map +0 -1
  618. package/dist/commands/parse.js +0 -14
  619. package/dist/commands/parse.js.map +0 -1
  620. package/dist/commands/registry.d.ts +0 -5
  621. package/dist/commands/registry.d.ts.map +0 -1
  622. package/dist/commands/registry.js +0 -31
  623. package/dist/commands/registry.js.map +0 -1
  624. package/dist/commands/sandbox.d.ts.map +0 -1
  625. package/dist/commands/sandbox.js +0 -78
  626. package/dist/commands/sandbox.js.map +0 -1
  627. package/dist/commands/session-view.d.ts.map +0 -1
  628. package/dist/commands/session-view.js.map +0 -1
  629. package/dist/commands/types.d.ts +0 -66
  630. package/dist/commands/types.d.ts.map +0 -1
  631. package/dist/commands/types.js.map +0 -1
  632. package/dist/commands/utils.d.ts +0 -11
  633. package/dist/commands/utils.d.ts.map +0 -1
  634. package/dist/commands/utils.js.map +0 -1
  635. package/dist/config.d.ts +0 -78
  636. package/dist/config.d.ts.map +0 -1
  637. package/dist/config.js +0 -450
  638. package/dist/config.js.map +0 -1
  639. package/dist/download.d.ts.map +0 -1
  640. package/dist/download.js +0 -89
  641. package/dist/download.js.map +0 -1
  642. package/dist/events.d.ts +0 -43
  643. package/dist/events.d.ts.map +0 -1
  644. package/dist/events.js +0 -456
  645. package/dist/events.js.map +0 -1
  646. package/dist/execution-resolver.d.ts +0 -21
  647. package/dist/execution-resolver.d.ts.map +0 -1
  648. package/dist/execution-resolver.js +0 -170
  649. package/dist/execution-resolver.js.map +0 -1
  650. package/dist/harness/auth.d.ts +0 -16
  651. package/dist/harness/auth.d.ts.map +0 -1
  652. package/dist/harness/auth.js +0 -86
  653. package/dist/harness/auth.js.map +0 -1
  654. package/dist/harness/extensions/loader.d.ts +0 -86
  655. package/dist/harness/extensions/loader.d.ts.map +0 -1
  656. package/dist/harness/extensions/loader.js +0 -525
  657. package/dist/harness/extensions/loader.js.map +0 -1
  658. package/dist/harness/extensions/registry.d.ts +0 -23
  659. package/dist/harness/extensions/registry.d.ts.map +0 -1
  660. package/dist/harness/extensions/registry.js +0 -45
  661. package/dist/harness/extensions/registry.js.map +0 -1
  662. package/dist/harness/extensions/types.d.ts +0 -248
  663. package/dist/harness/extensions/types.d.ts.map +0 -1
  664. package/dist/harness/extensions/types.js.map +0 -1
  665. package/dist/harness/session-store.d.ts +0 -77
  666. package/dist/harness/session-store.d.ts.map +0 -1
  667. package/dist/harness/session-store.js +0 -248
  668. package/dist/harness/session-store.js.map +0 -1
  669. package/dist/harness/settings.d.ts +0 -47
  670. package/dist/harness/settings.d.ts.map +0 -1
  671. package/dist/harness/settings.js +0 -29
  672. package/dist/harness/settings.js.map +0 -1
  673. package/dist/model-registry.d.ts +0 -4
  674. package/dist/model-registry.d.ts.map +0 -1
  675. package/dist/model-registry.js +0 -7
  676. package/dist/model-registry.js.map +0 -1
  677. package/dist/platform-messages.d.ts.map +0 -1
  678. package/dist/platform-messages.js.map +0 -1
  679. package/dist/portal-shell.d.ts +0 -4
  680. package/dist/portal-shell.d.ts.map +0 -1
  681. package/dist/portal-shell.js.map +0 -1
  682. package/dist/provisioner.d.ts +0 -61
  683. package/dist/provisioner.d.ts.map +0 -1
  684. package/dist/provisioner.js.map +0 -1
  685. package/dist/runtime/agent-run-controller.d.ts +0 -31
  686. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  687. package/dist/runtime/agent-run-controller.js +0 -195
  688. package/dist/runtime/agent-run-controller.js.map +0 -1
  689. package/dist/sandbox/errors.d.ts +0 -6
  690. package/dist/sandbox/errors.d.ts.map +0 -1
  691. package/dist/sandbox/errors.js +0 -11
  692. package/dist/sandbox/errors.js.map +0 -1
  693. package/dist/sandbox/firecracker.d.ts +0 -15
  694. package/dist/sandbox/firecracker.d.ts.map +0 -1
  695. package/dist/sandbox/firecracker.js +0 -212
  696. package/dist/sandbox/firecracker.js.map +0 -1
  697. package/dist/sandbox/image.d.ts +0 -3
  698. package/dist/sandbox/image.d.ts.map +0 -1
  699. package/dist/sandbox/image.js +0 -27
  700. package/dist/sandbox/image.js.map +0 -1
  701. package/dist/sandbox/path-context.d.ts +0 -3
  702. package/dist/sandbox/path-context.d.ts.map +0 -1
  703. package/dist/sandbox/path-context.js +0 -20
  704. package/dist/sandbox/path-context.js.map +0 -1
  705. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  706. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  707. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  708. package/dist/sessions/metadata.d.ts +0 -3
  709. package/dist/sessions/metadata.d.ts.map +0 -1
  710. package/dist/sessions/metadata.js +0 -11
  711. package/dist/sessions/metadata.js.map +0 -1
  712. package/dist/sessions/policy.d.ts +0 -6
  713. package/dist/sessions/policy.d.ts.map +0 -1
  714. package/dist/sessions/policy.js +0 -23
  715. package/dist/sessions/policy.js.map +0 -1
  716. package/dist/store.d.ts +0 -46
  717. package/dist/store.d.ts.map +0 -1
  718. package/dist/store.js +0 -177
  719. package/dist/store.js.map +0 -1
  720. package/dist/tools/bash.d.ts +0 -10
  721. package/dist/tools/bash.d.ts.map +0 -1
  722. package/dist/tools/bash.js +0 -80
  723. package/dist/tools/bash.js.map +0 -1
  724. package/dist/tools/edit.d.ts +0 -11
  725. package/dist/tools/edit.d.ts.map +0 -1
  726. package/dist/tools/edit.js +0 -131
  727. package/dist/tools/edit.js.map +0 -1
  728. package/dist/tools/event.d.ts.map +0 -1
  729. package/dist/tools/event.js +0 -252
  730. package/dist/tools/event.js.map +0 -1
  731. package/dist/tools/index.d.ts +0 -24
  732. package/dist/tools/index.d.ts.map +0 -1
  733. package/dist/tools/index.js +0 -31
  734. package/dist/tools/index.js.map +0 -1
  735. package/dist/tools/react.d.ts.map +0 -1
  736. package/dist/tools/react.js.map +0 -1
  737. package/dist/tools/read.d.ts +0 -11
  738. package/dist/tools/read.d.ts.map +0 -1
  739. package/dist/tools/read.js +0 -134
  740. package/dist/tools/read.js.map +0 -1
  741. package/dist/tools/sandbox.d.ts.map +0 -1
  742. package/dist/tools/sandbox.js.map +0 -1
  743. package/dist/tools/truncate.d.ts +0 -33
  744. package/dist/tools/truncate.d.ts.map +0 -1
  745. package/dist/tools/truncate.js +0 -184
  746. package/dist/tools/truncate.js.map +0 -1
  747. package/dist/tools/types.d.ts +0 -54
  748. package/dist/tools/types.d.ts.map +0 -1
  749. package/dist/tools/types.js.map +0 -1
  750. package/dist/tools/write.d.ts +0 -10
  751. package/dist/tools/write.d.ts.map +0 -1
  752. package/dist/tools/write.js +0 -29
  753. package/dist/tools/write.js.map +0 -1
  754. package/dist/trigger.d.ts +0 -22
  755. package/dist/trigger.d.ts.map +0 -1
  756. package/dist/trigger.js +0 -100
  757. package/dist/trigger.js.map +0 -1
  758. package/dist/utils/date.d.ts +0 -10
  759. package/dist/utils/date.d.ts.map +0 -1
  760. package/dist/utils/date.js +0 -23
  761. package/dist/utils/date.js.map +0 -1
  762. package/dist/utils/env.d.ts +0 -3
  763. package/dist/utils/env.d.ts.map +0 -1
  764. package/dist/utils/env.js +0 -12
  765. package/dist/utils/env.js.map +0 -1
  766. package/dist/utils/file-guards.d.ts +0 -9
  767. package/dist/utils/file-guards.d.ts.map +0 -1
  768. package/dist/utils/file-guards.js +0 -59
  769. package/dist/utils/file-guards.js.map +0 -1
  770. package/dist/utils/fs-atomic.d.ts +0 -10
  771. package/dist/utils/fs-atomic.d.ts.map +0 -1
  772. package/dist/utils/fs-atomic.js +0 -45
  773. package/dist/utils/fs-atomic.js.map +0 -1
  774. package/dist/utils/html.d.ts +0 -2
  775. package/dist/utils/html.d.ts.map +0 -1
  776. package/dist/utils/html.js +0 -4
  777. package/dist/utils/html.js.map +0 -1
  778. package/dist/utils/http-body.d.ts +0 -10
  779. package/dist/utils/http-body.d.ts.map +0 -1
  780. package/dist/utils/http-body.js +0 -34
  781. package/dist/utils/http-body.js.map +0 -1
  782. package/dist/vault/routing.d.ts +0 -3
  783. package/dist/vault/routing.d.ts.map +0 -1
  784. package/dist/vault/routing.js +0 -13
  785. package/dist/vault/routing.js.map +0 -1
  786. package/dist/web/admin/portal.d.ts +0 -5
  787. package/dist/web/admin/portal.d.ts.map +0 -1
  788. package/dist/web/admin/portal.js +0 -2572
  789. package/dist/web/admin/portal.js.map +0 -1
  790. package/dist/web/admin/provider-models.d.ts.map +0 -1
  791. package/dist/web/admin/provider-models.js.map +0 -1
  792. package/dist/web/admin/store.d.ts +0 -13
  793. package/dist/web/admin/store.d.ts.map +0 -1
  794. package/dist/web/admin/store.js +0 -14
  795. package/dist/web/admin/store.js.map +0 -1
  796. package/dist/web/admin/types.d.ts +0 -30
  797. package/dist/web/admin/types.d.ts.map +0 -1
  798. package/dist/web/admin/types.js.map +0 -1
  799. package/dist/web/agent-events/portal.d.ts +0 -3
  800. package/dist/web/agent-events/portal.d.ts.map +0 -1
  801. package/dist/web/agent-events/portal.js +0 -18
  802. package/dist/web/agent-events/portal.js.map +0 -1
  803. package/dist/web/login/oauth.d.ts +0 -6
  804. package/dist/web/login/oauth.d.ts.map +0 -1
  805. package/dist/web/login/oauth.js.map +0 -1
  806. package/dist/web/login/portal.d.ts.map +0 -1
  807. package/dist/web/login/portal.js.map +0 -1
  808. package/dist/web/login/store.d.ts +0 -8
  809. package/dist/web/login/store.d.ts.map +0 -1
  810. package/dist/web/login/store.js +0 -15
  811. package/dist/web/login/store.js.map +0 -1
  812. package/dist/web/login/types.d.ts.map +0 -1
  813. package/dist/web/login/types.js.map +0 -1
  814. package/dist/web/request.d.ts +0 -3
  815. package/dist/web/request.d.ts.map +0 -1
  816. package/dist/web/request.js +0 -13
  817. package/dist/web/request.js.map +0 -1
  818. package/dist/web/server.d.ts.map +0 -1
  819. package/dist/web/server.js.map +0 -1
  820. package/dist/web/session-view/command.d.ts +0 -4
  821. package/dist/web/session-view/command.d.ts.map +0 -1
  822. package/dist/web/session-view/command.js +0 -7
  823. package/dist/web/session-view/command.js.map +0 -1
  824. package/dist/web/session-view/portal.d.ts +0 -13
  825. package/dist/web/session-view/portal.d.ts.map +0 -1
  826. package/dist/web/session-view/portal.js.map +0 -1
  827. package/dist/web/session-view/service.d.ts +0 -6
  828. package/dist/web/session-view/service.d.ts.map +0 -1
  829. package/dist/web/session-view/service.js +0 -498
  830. package/dist/web/session-view/service.js.map +0 -1
  831. package/dist/web/session-view/store.d.ts +0 -8
  832. package/dist/web/session-view/store.d.ts.map +0 -1
  833. package/dist/web/session-view/store.js +0 -15
  834. package/dist/web/session-view/store.js.map +0 -1
  835. package/dist/web/session-view/types.d.ts.map +0 -1
  836. package/dist/web/session-view/types.js.map +0 -1
  837. package/dist/web/token-store.d.ts.map +0 -1
  838. package/dist/web/token-store.js.map +0 -1
  839. package/dist/web/types.d.ts.map +0 -1
  840. package/dist/web/types.js.map +0 -1
  841. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  842. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  843. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  844. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  845. /package/dist/{commands → adapters/commands}/types.js +0 -0
  846. /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
  847. /package/dist/{tools → adapters/web/admin}/types.js +0 -0
  848. /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
  849. /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
  850. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  851. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  852. /package/dist/{web/session-view → adapters/web}/types.js +0 -0
  853. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  854. /package/dist/{web → cli}/types.js +0 -0
  855. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  856. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/harness/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,KAAK,EACL,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,aAAa,GAMd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,GAKlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,sBAAsB,EAA6C,MAAM,eAAe,CAAC;AAkDlG,6EAA6E;AAC7E,kDAAkD;AAClD,MAAM,uBAAuB,GAC3B,wcAAwc,CAAC;AAE3c,SAAS,KAAK,CAAC,EAAU,EAAE,MAAmB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,OAAO,iBAAiB;IAe5B,YAAY,OAAiC;QATrC,cAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC5C,iBAAY,GAAG,CAAC,CAAC;QACjB,8BAAyB,GAAG,KAAK,CAAC;QAGlC,UAAK,GAAa,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvE,cAAS,GAAmB,EAAE,CAAC;QAIrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,YAAY,EAAE;gBACZ,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,KAAK;aACN;YACD,YAAY;YACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC;YAChE,cAAc,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrD,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,IAAI;iBACL,CAAC,CAAC;gBACH,OAAO,MAAM,IAAI,SAAS,CAAC;YAC7B,CAAC;YACD,aAAa,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC3D,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE;wBACxC,UAAU,EAAE,QAAQ,CAAC,EAAE;wBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;wBACvB,IAAI;wBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,QAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,oEAAoE;IACpE,iBAAiB;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,OAA8D;QAE9D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAE3E,0EAA0E;QAC1E,oDAAoD;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtD,IAAI,aAAa,IAAI,aAAa,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAC1D,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;QACjD,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9D,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,YAAY;aACb,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBACjE,oEAAoE;gBACpE,sEAAsE;gBACtE,yDAAyD;gBACzD,GAAG,CAAC,OAAO,CACT,oCAAoC,YAAY,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,CAChG,CAAC;gBACF,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAiB;YAChC,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;YAC7D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK;QACH,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAiB;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,gCAAgC,KAAK,CAAC,QAAQ,0EAA0E,CACzH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,KAAmB;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,UAAU,CACZ,+BAA+B,EAC/B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAiB;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC7F,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,OAAwB,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACxC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;gBACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACvF,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sEAAsE;IAC9D,WAAW,CAAC,OAAyB;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,sFAAsF;IAC9E,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,iBAAiB;YACvB,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;SAC9C,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,gBAAgB;QACtB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7E,IAAI,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;YACpE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,iBAAiB,WAAW,QAAQ,CAAC;QACpE,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAC9D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,cAAc,SAAS,QAAQ,CAAC;QAC7D,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;YACjE,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,UAAU,YAAY,CAAC;QAChF,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;YACtF,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,SAAS,aAAa,UAAU,CAAC;QAC9E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,wBAAwB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,OAAO,CAAC;QACnD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0FAA0F;IAClF,KAAK,CAAC,aAAa;QACzB,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAEjC,IAAI,aAAa,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YAChE,IAAI,iBAAiB,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,KAAK;gBACd,YAAY,EACV,2GAA2G;aAC9G,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,aAA+B;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAChE,IAAI,aAAa,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAErC,IAAI,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACnD,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAwB,EAAE,SAAkB;QACtE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;YAE/B,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,eAAe,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;YAErD,MAAM,MAAM,GAAG,UAAU,CACvB,MAAM,OAAO,CACX,WAAW,EACX,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EACtB,SAAS,EACT,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAC/B,CACF,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAChD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,OAAO,CACf,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAE7C,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE;wBAC5C,KAAK,EAAE,KAAwB;wBAC/B,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,MAAM;gBACN,MAAM,EAAE;oBACN,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC;gBACD,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAClF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,gBAAgB;oBACtB,MAAM;oBACN,OAAO,EAAE,KAAK;oBACd,YAAY,EACV,MAAM,KAAK,UAAU;wBACnB,CAAC,CAAC,qCAAqC,YAAY,EAAE;wBACrD,CAAC,CAAC,2BAA2B,YAAY,EAAE;iBAChD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,UAAU,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAyB;QAChD,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QAC1E,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAyB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAEpC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,UAAU,EAAE,OAAO,CAAC,YAAY;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,WAAW,EAAE,QAAQ,CAAC,UAAU;YAChC,OAAO;YACP,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,eAAe;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,oBAAoB,GAAG,IAAI,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,KAAK;gBACd,OAAO;gBACP,UAAU,EAAE,iBAAiB;aAC9B,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,wBAAwB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\n * MikanAgentSession — mikan's agent run loop.\n *\n * Owns a pi-agent-core `Agent` and layers on the behaviors mikan needs for\n * long-lived chat conversations:\n *\n * - message persistence into the conversation's {@link SessionStore}\n * - automatic context compaction (threshold and overflow recovery), using\n * pi-agent-core's compaction pipeline over the session tree\n * - automatic retry with exponential backoff on transient provider errors\n * - extension hook dispatch ({@link ExtensionRegistry})\n *\n * Events mirror the agent's lifecycle events plus `compaction_start/_end`\n * and `auto_retry_start/_end`, preserving the event surface mikan's\n * platform adapters already render.\n */\nimport {\n Agent,\n calculateContextTokens,\n compact,\n convertToLlm,\n estimateContextTokens,\n getOrThrow,\n prepareCompaction,\n shouldCompact,\n type AgentEvent,\n type AgentMessage,\n type AgentTool,\n type CustomMessage,\n type ThinkingLevel,\n} from \"@earendil-works/pi-agent-core\";\nimport {\n isContextOverflow,\n type Api,\n type AssistantMessage,\n type ImageContent,\n type Model,\n} from \"@earendil-works/pi-ai\";\nimport * as log from \"../log.js\";\nimport type { ExtensionRegistry } from \"./extensions/registry.js\";\nimport type { MikanModels } from \"./models.js\";\nimport { resolveHarnessSettings, type BudgetSettings, type HarnessSettings } from \"./settings.js\";\nimport type { SessionStore } from \"./session-store.js\";\nimport type { CompactionEntry } from \"./types.js\";\n\nexport type CompactionReason = \"threshold\" | \"overflow\" | \"manual\";\n\n/** Running resource tally for the current `prompt()` call, matched against the budget. */\ninterface RunTally {\n tokens: number;\n costUsd: number;\n llmCalls: number;\n startedAt: number;\n}\n\ninterface CompactionResultSummary {\n summary: string;\n firstKeptEntryId: string;\n tokensBefore: number;\n}\n\nexport type HarnessEvent =\n | AgentEvent\n | { type: \"compaction_start\"; reason: CompactionReason }\n | {\n type: \"compaction_end\";\n reason: CompactionReason;\n result?: CompactionResultSummary;\n aborted: boolean;\n errorMessage?: string;\n }\n | {\n type: \"auto_retry_start\";\n attempt: number;\n maxAttempts: number;\n delayMs: number;\n errorMessage: string;\n }\n | { type: \"auto_retry_end\"; success: boolean; attempt: number; finalError?: string }\n | {\n type: \"budget_exceeded\";\n /** Which cap was hit, e.g. \"cost 2.01 USD > 2 USD limit\". */\n reason: string;\n tokens: number;\n costUsd: number;\n llmCalls: number;\n durationMs: number;\n };\n\nexport type HarnessEventListener = (event: HarnessEvent) => void | Promise<void>;\n\n// Transient provider failures worth retrying: overload/rate-limit responses,\n// 5xx statuses, and network/stream interruptions.\nconst RETRYABLE_ERROR_PATTERN =\n /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;\n\nfunction sleep(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(new Error(\"aborted\"));\n return;\n }\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timer);\n reject(new Error(\"aborted\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nexport interface MikanAgentSessionOptions {\n systemPrompt: string;\n model: Model<Api>;\n thinkingLevel: ThinkingLevel;\n tools: AgentTool[];\n models: MikanModels;\n sessionStore: SessionStore;\n settings?: Parameters<typeof resolveHarnessSettings>[0];\n extensions?: ExtensionRegistry;\n}\n\nexport class MikanAgentSession {\n readonly agent: Agent;\n readonly sessionStore: SessionStore;\n private readonly models: MikanModels;\n private readonly settings: HarnessSettings;\n private readonly extensions: ExtensionRegistry | undefined;\n private listeners = new Set<HarnessEventListener>();\n private retryAttempt = 0;\n private overflowRecoveryAttempted = false;\n private retryAbortController: AbortController | undefined;\n private compactionAbortController: AbortController | undefined;\n private tally: RunTally = { tokens: 0, costUsd: 0, llmCalls: 0, startedAt: 0 };\n private runBudget: BudgetSettings = {};\n private budgetExceededReason: string | undefined;\n\n constructor(options: MikanAgentSessionOptions) {\n this.models = options.models;\n this.sessionStore = options.sessionStore;\n this.settings = resolveHarnessSettings(options.settings);\n this.extensions = options.extensions;\n\n const tools = [...options.tools, ...(options.extensions?.getContributedTools() ?? [])];\n this.agent = new Agent({\n initialState: {\n systemPrompt: options.systemPrompt,\n model: options.model,\n thinkingLevel: options.thinkingLevel,\n tools,\n },\n convertToLlm,\n streamFn: (model, context, streamOptions) =>\n this.models.models.streamSimple(model, context, streamOptions),\n beforeToolCall: async ({ toolCall, args }) => {\n if (!this.extensions?.hasHandlers(\"tool_call\")) return undefined;\n const result = await this.extensions.emit(\"tool_call\", {\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n args,\n });\n return result ?? undefined;\n },\n afterToolCall: async ({ toolCall, args, result, isError }) => {\n if (this.extensions?.hasHandlers(\"tool_result\")) {\n await this.extensions.emit(\"tool_result\", {\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n args,\n content: result.content,\n isError,\n });\n }\n return undefined;\n },\n });\n\n this.agent.subscribe(async (event) => {\n await this.handleAgentEvent(event);\n });\n }\n\n /** Conversation transcript currently held by the agent. */\n get messages(): AgentMessage[] {\n return this.agent.state.messages;\n }\n\n get model(): Model<Api> {\n return this.agent.state.model;\n }\n\n subscribe(listener: HarnessEventListener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n /** Replace the agent transcript from the persisted session tree. */\n reloadFromSession(): number {\n const context = this.sessionStore.buildSessionContext();\n if (context.messages.length > 0) {\n this.agent.state.messages = context.messages;\n }\n return context.messages.length;\n }\n\n /**\n * Send a user prompt and run the agent loop to completion, including\n * automatic retries and compaction. Resolves when the turn (and any\n * recovery continuations) settles.\n *\n * @param options.budget Per-run resource ceilings that override the session\n * defaults. Autonomous (event / trigger) runs should pass a budget so a\n * runaway loop is stopped even with no human watching.\n */\n async prompt(\n text: string,\n options?: { images?: ImageContent[]; budget?: BudgetSettings },\n ): Promise<void> {\n if (this.agent.state.isStreaming) {\n throw new Error(\"Agent is already processing a prompt\");\n }\n\n const model = this.agent.state.model;\n await this.ensureAuthConfigured(model);\n\n this.retryAttempt = 0;\n this.overflowRecoveryAttempted = false;\n this.runBudget = { ...this.settings.budget, ...options?.budget };\n this.budgetExceededReason = undefined;\n this.tally = { tokens: 0, costUsd: 0, llmCalls: 0, startedAt: Date.now() };\n\n // A previous turn may have ended over the threshold (for example after an\n // abort); compact before adding new context on top.\n const lastAssistant = this.findLastAssistantMessage();\n if (lastAssistant && lastAssistant.stopReason !== \"error\") {\n await this.checkThresholdCompaction(lastAssistant);\n }\n\n let systemPrompt = this.agent.state.systemPrompt;\n if (this.extensions?.hasHandlers(\"before_agent_start\")) {\n const result = await this.extensions.emit(\"before_agent_start\", {\n prompt: text,\n images: options?.images,\n systemPrompt,\n });\n if (result?.systemPrompt && result.systemPrompt !== systemPrompt) {\n // An extension rewrote the system prompt for this turn. Log the new\n // size so the diagnostic in agent.ts (which logs the pre-hook prompt)\n // isn't mistaken for the final prompt sent to the model.\n log.logInfo(\n `Extension rewrote system prompt: ${systemPrompt.length} → ${result.systemPrompt.length} chars`,\n );\n systemPrompt = result.systemPrompt;\n this.agent.state.systemPrompt = systemPrompt;\n }\n }\n\n const userMessage: AgentMessage = {\n role: \"user\",\n content: [{ type: \"text\", text }, ...(options?.images ?? [])],\n timestamp: Date.now(),\n };\n\n await this.agent.prompt([userMessage]);\n while (await this.handlePostRun()) {\n await this.agent.continue();\n }\n\n if (this.extensions?.hasHandlers(\"turn_end\")) {\n await this.extensions.emit(\"turn_end\", { messages: this.agent.state.messages });\n }\n }\n\n /** Abort the active run, pending retry backoff, and in-flight compaction. */\n abort(): void {\n this.retryAbortController?.abort();\n this.compactionAbortController?.abort();\n this.agent.abort();\n }\n\n private async ensureAuthConfigured(model: Model<Api>): Promise<void> {\n const auth = await this.models.getAuth(model);\n if (!auth) {\n throw new Error(\n `No credentials for provider \"${model.provider}\". Set the provider API key environment variable or add it to auth.json.`,\n );\n }\n }\n\n private async emit(event: HarnessEvent): Promise<void> {\n for (const listener of this.listeners) {\n try {\n await listener(event);\n } catch (err) {\n log.logWarning(\n \"Harness event listener failed\",\n err instanceof Error ? err.message : String(err),\n );\n }\n }\n }\n\n private async handleAgentEvent(event: AgentEvent): Promise<void> {\n await this.emit(event);\n\n if (event.type !== \"message_end\") return;\n const message = event.message;\n\n if (message.role === \"user\" || message.role === \"assistant\" || message.role === \"toolResult\") {\n this.sessionStore.appendMessage(message);\n } else if (message.role === \"custom\") {\n const custom = message as CustomMessage;\n this.sessionStore.appendCustomMessageEntry(\n custom.customType,\n custom.content,\n custom.display,\n custom.details,\n );\n }\n\n if (this.extensions?.hasHandlers(\"message_end\")) {\n await this.extensions.emit(\"message_end\", { message });\n }\n\n if (message.role === \"assistant\") {\n this.recordUsage(message);\n await this.enforceBudget();\n if (message.stopReason !== \"error\") {\n this.overflowRecoveryAttempted = false;\n if (this.retryAttempt > 0) {\n await this.emit({ type: \"auto_retry_end\", success: true, attempt: this.retryAttempt });\n this.retryAttempt = 0;\n }\n }\n }\n }\n\n /** Fold one assistant turn's usage into the running per-run tally. */\n private recordUsage(message: AssistantMessage): void {\n this.tally.llmCalls += 1;\n const usage = message.usage;\n if (!usage) return;\n this.tally.tokens += usage.input + usage.output + usage.cacheRead + usage.cacheWrite;\n this.tally.costUsd += usage.cost?.total ?? 0;\n }\n\n /** Compare the tally against the run budget; abort the run when a cap is exceeded. */\n private async enforceBudget(): Promise<void> {\n if (this.budgetExceededReason) return;\n const reason = this.overBudgetReason();\n if (!reason) return;\n\n this.budgetExceededReason = reason;\n await this.emit({\n type: \"budget_exceeded\",\n reason,\n tokens: this.tally.tokens,\n costUsd: this.tally.costUsd,\n llmCalls: this.tally.llmCalls,\n durationMs: Date.now() - this.tally.startedAt,\n });\n log.logWarning(\"Run budget exceeded — aborting\", reason);\n this.agent.abort();\n }\n\n private overBudgetReason(): string | undefined {\n const { maxTokens, maxCostUsd, maxDurationMs, maxLlmCalls } = this.runBudget;\n if (maxLlmCalls !== undefined && this.tally.llmCalls >= maxLlmCalls) {\n return `${this.tally.llmCalls} LLM calls >= ${maxLlmCalls} limit`;\n }\n if (maxTokens !== undefined && this.tally.tokens >= maxTokens) {\n return `${this.tally.tokens} tokens >= ${maxTokens} limit`;\n }\n if (maxCostUsd !== undefined && this.tally.costUsd >= maxCostUsd) {\n return `cost ${this.tally.costUsd.toFixed(2)} USD >= ${maxCostUsd} USD limit`;\n }\n if (maxDurationMs !== undefined && Date.now() - this.tally.startedAt >= maxDurationMs) {\n return `${Date.now() - this.tally.startedAt}ms >= ${maxDurationMs}ms limit`;\n }\n return undefined;\n }\n\n private findLastAssistantMessage(): AssistantMessage | undefined {\n const messages = this.agent.state.messages;\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.role === \"assistant\") return message;\n }\n return undefined;\n }\n\n /** Decide what to do after a run settles. Returns true when the agent should continue. */\n private async handlePostRun(): Promise<boolean> {\n // A run stopped for going over budget must not be retried or compacted back\n // into another continuation — that would defeat the circuit breaker.\n if (this.budgetExceededReason) return false;\n\n const lastAssistant = this.findLastAssistantMessage();\n if (!lastAssistant) return false;\n\n if (lastAssistant.stopReason === \"error\") {\n const contextWindow = this.agent.state.model.contextWindow || 0;\n if (isContextOverflow(lastAssistant, contextWindow)) {\n return this.handleOverflow();\n }\n if (this.isRetryableError(lastAssistant)) {\n return this.prepareRetry(lastAssistant);\n }\n return false;\n }\n\n return this.checkThresholdCompaction(lastAssistant);\n }\n\n private async handleOverflow(): Promise<boolean> {\n if (this.overflowRecoveryAttempted) {\n await this.emit({\n type: \"compaction_end\",\n reason: \"overflow\",\n aborted: false,\n errorMessage:\n \"Context overflow recovery failed after one compact-and-retry attempt. Try /new or a larger-context model.\",\n });\n return false;\n }\n this.overflowRecoveryAttempted = true;\n this.dropTrailingErrorMessage();\n return this.runCompaction(\"overflow\", true);\n }\n\n private async checkThresholdCompaction(lastAssistant: AssistantMessage): Promise<boolean> {\n const settings = this.settings.compaction;\n if (!settings.enabled) return false;\n const contextWindow = this.agent.state.model.contextWindow || 0;\n if (contextWindow <= 0) return false;\n\n let contextTokens = lastAssistant.usage ? calculateContextTokens(lastAssistant.usage) : 0;\n if (contextTokens === 0) {\n const estimate = estimateContextTokens(this.agent.state.messages);\n if (estimate.lastUsageIndex === null) return false;\n contextTokens = estimate.tokens;\n }\n\n if (!shouldCompact(contextTokens, contextWindow, settings)) return false;\n return this.runCompaction(\"threshold\", false);\n }\n\n private async runCompaction(reason: CompactionReason, willRetry: boolean): Promise<boolean> {\n let started = false;\n try {\n const pathEntries = this.sessionStore.getBranch();\n const preparation = getOrThrow(prepareCompaction(pathEntries, this.settings.compaction));\n if (!preparation) return false;\n\n await this.emit({ type: \"compaction_start\", reason });\n started = true;\n this.compactionAbortController = new AbortController();\n const signal = this.compactionAbortController.signal;\n\n const result = getOrThrow(\n await compact(\n preparation,\n this.models.models,\n this.agent.state.model,\n undefined,\n signal,\n this.agent.state.thinkingLevel,\n ),\n );\n if (signal.aborted) {\n await this.emit({ type: \"compaction_end\", reason, aborted: true });\n return false;\n }\n\n const entryId = this.sessionStore.appendCompaction(\n result.summary,\n result.firstKeptEntryId,\n result.tokensBefore,\n result.details,\n );\n const context = this.sessionStore.buildSessionContext();\n this.agent.state.messages = context.messages;\n\n if (this.extensions?.hasHandlers(\"session_compact\")) {\n const entry = this.sessionStore.getEntry(entryId);\n if (entry?.type === \"compaction\") {\n await this.extensions.emit(\"session_compact\", {\n entry: entry as CompactionEntry,\n reason,\n });\n }\n }\n\n await this.emit({\n type: \"compaction_end\",\n reason,\n result: {\n summary: result.summary,\n firstKeptEntryId: result.firstKeptEntryId,\n tokensBefore: result.tokensBefore,\n },\n aborted: false,\n });\n\n if (willRetry) {\n this.dropTrailingErrorMessage();\n return true;\n }\n return this.agent.hasQueuedMessages();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"compaction failed\";\n if (started) {\n await this.emit({\n type: \"compaction_end\",\n reason,\n aborted: false,\n errorMessage:\n reason === \"overflow\"\n ? `Context overflow recovery failed: ${errorMessage}`\n : `Auto-compaction failed: ${errorMessage}`,\n });\n } else {\n log.logWarning(\"Compaction preparation failed\", errorMessage);\n }\n return false;\n } finally {\n this.compactionAbortController = undefined;\n }\n }\n\n private isRetryableError(message: AssistantMessage): boolean {\n if (message.stopReason !== \"error\" || !message.errorMessage) return false;\n return RETRYABLE_ERROR_PATTERN.test(message.errorMessage);\n }\n\n private async prepareRetry(message: AssistantMessage): Promise<boolean> {\n const settings = this.settings.retry;\n if (!settings.enabled) return false;\n\n this.retryAttempt++;\n if (this.retryAttempt > settings.maxRetries) {\n this.retryAttempt--;\n await this.emit({\n type: \"auto_retry_end\",\n success: false,\n attempt: this.retryAttempt,\n finalError: message.errorMessage,\n });\n this.retryAttempt = 0;\n return false;\n }\n\n const delayMs = settings.baseDelayMs * 2 ** (this.retryAttempt - 1);\n await this.emit({\n type: \"auto_retry_start\",\n attempt: this.retryAttempt,\n maxAttempts: settings.maxRetries,\n delayMs,\n errorMessage: message.errorMessage || \"Unknown error\",\n });\n\n this.dropTrailingErrorMessage();\n\n this.retryAbortController = new AbortController();\n try {\n await sleep(delayMs, this.retryAbortController.signal);\n } catch {\n const attempt = this.retryAttempt;\n this.retryAttempt = 0;\n await this.emit({\n type: \"auto_retry_end\",\n success: false,\n attempt,\n finalError: \"Retry cancelled\",\n });\n return false;\n } finally {\n this.retryAbortController = undefined;\n }\n return true;\n }\n\n private dropTrailingErrorMessage(): void {\n const messages = this.agent.state.messages;\n if (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n this.agent.state.messages = messages.slice(0, -1);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/harness/runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACL,oCAAoC,EACpC,cAAc,EAId,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAQrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAEjC,4EAA4E;AAC5E,uEAAuE;AACvE,qEAAqE;AACrE,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAEhF,KAAK,UAAU,4BAA4B,CAAC,MAS3C;IACC,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,aAAa,EACb,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,GACP,GAAG,MAAM,CAAC;IACX,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC1D,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;QACpD,GAAG,CAAC,UAAU,CAAC,6BAA6B,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAC5D,CACF,CAAC;IACF,IAAI,OAAsC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CACrC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,WAAW,CAAC;QACV,OAAO;QACP,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,YAAY,EAAE,KAAK;QACnB,aAAa;QACb,MAAM;QACN,YAAY;QACZ,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,mBAAmB;QAC1B,WAAW;QACX,cAAc,EAAE,CAAC,GAAG,OAAQ,CAAC,QAAQ,CAAC;QACtC,OAAO,EAAE,OAAQ,CAAC,wBAAwB,EAAE;KAC7C,CAAC,EACJ,gBAAgB,CACjB,CAAC;IAEF,OAAO,GAAG,IAAI,iBAAiB,CAAC;QAC9B,YAAY;QACZ,KAAK;QACL,aAAa;QACb,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/C,WAAW;QACX,MAAM;QACN,YAAY;KACb,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACnD,IAAI,QAAQ,GAAG,CAAC;QAAE,GAAG,CAAC,OAAO,CAAC,YAAY,QAAQ,gCAAgC,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,4BAA4B,CACnC,aAA4B,EAC5B,YAAsC,EACtC,WAA+C,EAC/C,SAAoB;IAEpB,MAAM,iBAAiB,GACrB,YAAY,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;QAC3C,CAAC,CAAC,IAAI,sBAAsB,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;QACjF,CAAC,CAAC,SAAS,CAAC;IAEhB,oFAAoF;IACpF,8FAA8F;IAC9F,IAAI,cAAc,GAChB,iBAAiB,KAAK,SAAS;QAC7B,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAa;QACzB,IAAI,CAAC,OAAO,EAAE,OAAO;YACnB,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ,CAAC,IAAI,EAAE,OAAO;YACpB,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,cAAc,CAAC,IAAI,EAAE,OAAO;YAC1B,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO;YAC9B,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,gBAAgB,CAAC,QAAQ;YACvB,OAAO,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,gBAAgB;YACd,OAAO,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC;QACD,cAAc,CAAC,iBAAiB;YAC9B,OAAO,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,KAAK,CAAC,aAAa,CAAC,OAAO;YACzB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1D,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACnC,OAAO;oBACL,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACtD,oCAAoC,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACvF,OAAO;gBACL,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;gBACpD,UAAU;aACX,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAiC;IAC/D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC;IAClE,OAAO,IAAI,SAAS,MAAM,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,uBAAuB,CAAC,OAMtC;IACC,IAAI,OAAO,CAAC,UAAU,KAAK,cAAc;QAAE,OAAO;IAClD,IAAI,CAAC;QACH,MAAM,0BAA0B,CAC9B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,GAAG,CAAC,UAAU,CACZ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,6CAA6C,EACtF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACJ,CAAC;AACH,CAAC;AA+BD,KAAK,UAAU,oBAAoB,CAAC,MAAwB;IAC1D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC/E,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;IACH,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACnD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,OAAO,CAAC,IAAI,cAAc,cAAc,QAAQ,wBAAwB,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,qBAAqB,GAAG,eAAe,CAC3C,MAAM,EACN,WAAW,CAAC,oBAAoB,EAChC,UAAU,CACX,CAAC;IACF,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,aAAa,EAAE,WAAW,CAAC,oBAAoB;QAC/C,MAAM;QACN,MAAM;QACN,aAAa,EAAE,QAAQ,CAAC,gBAAgB,EAAE;QAC1C,QAAQ;QACR,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,UAAU;QACV,iBAAiB,EAAE,qBAAqB,CAAC,iBAAiB;KAC3D,CAAC,CAAC;IACH,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACtC,2EAA2E;IAC3E,6CAA6C;IAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,GAAG,CAAC,OAAO,CACT,IAAI,cAAc,2BAA2B,YAAY,CAAC,MAAM,eAAe,UAAU,EAAE,CAC5F,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB,EAAE,WAA+B;IACpF,MAAM,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,qBAAqB,GACtB,GAAG,MAAM,CAAC;IACX,eAAe,CAAC;QACd,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc;QAC7C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,iBAAiB,CAAC,KAAK,EAAE,QAAgB,EAAE,KAAc,EAAE,EAAE;QAC3D,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC3F,MAAM,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE,CAChE,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,oFAAoF;IACpF,sBAAsB,CAAC,KAAK,EAAE,QAAgB,EAAE,KAAc,EAAE,EAAE;QAChE,MAAM,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,iEAAiE;IACjE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,qBAAqB,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc;QAC7C,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAwB;IACvD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACvD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAC7D,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEzC,GAAG,CAAC,OAAO,CACT,2BAA2B,YAAY,CAAC,MAAM,mBAAmB,MAAM,CAAC,MAAM,QAAQ,CACvF,CAAC;IACF,GAAG,CAAC,OAAO,CAAC,aAAa,QAAQ,CAAC,QAAQ,CAAC,MAAM,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtF,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAkB,CAChE,OAAO,EACP,WAAW,CAAC,oBAAoB,EAChC,WAAW,EACX,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CACtD,CAAC;IACF,MAAM,gBAAgB,GAAG,qBAAqB,CAC5C,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC/B,kBAAkB,EAClB,QAAQ,CAAC,IAAI,CACd,CAAC;IACF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAClG,OAAO;QACL,mBAAmB;QACnB,WAAW,EAAE,gBAAgB;QAC7B,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,MAKvC;IACC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,eAAe,CACnD,MAAM,EACN,WAAW,CAAC,oBAAoB,EAChC,UAAU,CACX,CAAC;IACF,OAAO,iBAAiB,CAAC;QACvB,aAAa,EAAE,WAAW,CAAC,oBAAoB;QAC/C,MAAM;QACN,MAAM;QACN,aAAa;QACb,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,YAAY;SACzB;QACD,MAAM;QACN,UAAU;QACV,iBAAiB;KAClB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,KAAa,EAAE,OAA4B;IAC/E,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,UAAU,CAAC,6BAA6B,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,MAKvC;IACC,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IACpF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACpE,IACE,kBAAkB,CAAC,UAAU,CAAC;YAC9B,iBAAiB;YACjB,CAAC,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC,KAAK,iBAAiB,EAC7D,CAAC;YACD,MAAM,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,sBAAsB,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,MAWvC;IACC,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,KAAK,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,MAAM,GACP,GAAG,MAAM,CAAC;IACX,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO,4BAA4B,CAAC;QAClC,YAAY;QACZ,YAAY;QACZ,KAAK;QACL,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAClD,WAAW;QACX,YAAY,EAAE,cAAc;QAC5B,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC;AACL,CAAC;AAkBD,KAAK,UAAU,eAAe,CAAC,MAA0B;IAIvD,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,GACZ,GAAG,MAAM,CAAC;IACX,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,2BAA2B,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,UAAU,EAAE,QAAQ,CAAC,mBAAmB;QACxC,UAAU,EAAE,WAAW;QACvB,2BAA2B,EAAE,CAAC;QAC9B,wBAAwB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM;QACrD,8BAA8B,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;QAChE,yBAAyB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;QAC3D,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;KACxD,CAAC,CAAC;IACH,iBAAiB,CAAC,mBAAmB,EAAE;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,UAAU,EAAE,QAAQ,CAAC,mBAAmB;QACxC,UAAU,EAAE,WAAW;QACvB,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;QAClD,sBAAsB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;KACzD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;QACzC,gBAAgB,EAAE,SAAS,CAAC,SAAS,KAAK,SAAS;QACnD,eAAe,EAAE,SAAS,CAAC,aAAa,KAAK,SAAS;QACtD,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC,CAAC;IACH,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IAE1B,MAAM,qBAAqB,GAAG,WAAW,EAAE,UAAU,CAAC;IACtD,MAAM,wBAAwB,GAAG,WAAW,EAAE,aAAa,CAAC;IAC5D,IAAI,eAAmC,CAAC;IACxC,MAAM,qBAAqB,GACzB,qBAAqB,IAAI,wBAAwB;QAC/C,CAAC,CAAC,GAAG,EAAE;YACH,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC;oBACzC,QAAQ,EAAE,QAAQ,CAAC,IAAoB;oBACvC,cAAc,EAAE,OAAO,CAAC,MAAM;oBAC9B,cAAc;oBACd,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,WAAW,EAAE,WAAW;oBACxB,gBAAgB,EAAE,OAAO,CAAC,QAAQ;iBACnC,CAAC,CAAC;gBACH,eAAe,GAAG,GAAG,wBAAwB,kBAAkB,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/E,CAAC;YACD,OAAO,eAAe,CAAC;QACzB,CAAC;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;QACtD,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAC3C,kBAAkB,EAAE,yBAAyB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACxE,CAAC,CAAC,qBAAqB,EAAE,EAAE;YAC3B,CAAC,CAAC,SAAS;QACb,kBAAkB,EAAE,qBAAqB;QACzC,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,KAAK;QACL,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,kBAAkB,CAAC;QACvB,OAAO;QACP,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,KAAK;QACL,WAAW;QACX,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,WAAW;QACX,YAAY,EAAE,YAAY,CAAC,IAAI;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;AAClF,CAAC;AAuBD,KAAK,UAAU,QAAQ,CACrB,OAA0B,EAC1B,aAA8C,EAC9C,OAA4B;IAE5B,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACjC,iFAAiF;IACjF,2EAA2E;IAC3E,MAAM,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO,CAAC,WAAW;QACtB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QACzC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM;QAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA6B;IAC1D,MAAM,EACJ,cAAc,EACd,eAAe,EACf,UAAU,EACV,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,OAAO,EACP,KAAK,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,YAAY,GACb,GAAG,MAAM,CAAC;IACX,IAAI,aAA8C,CAAC;IACnD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC;QAC7D,KAAK,CAAC,eAAe,CAAC,gBAAyB;YAC7C,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;gBAC1C,eAAe;gBACf,UAAU;gBACV,cAAc;gBACd,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ;YACpC,aAAa,GAAG,OAAO,CAAC;YACxB,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,YAAyC,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;oBACvC,OAAO;oBACP,SAAS;oBACT,QAAQ;oBACR,MAAM;oBACN,QAAQ;oBACR,aAAa;oBACb,OAAO;oBACP,eAAe,EAAE,YAAY,CAAC,eAAe;oBAC7C,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;oBACjD,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;oBACjD,sBAAsB,EAAE,YAAY,CAAC,sBAAsB;oBAC3D,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;oBAC/C,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,qBAAqB,EAAE,YAAY,CAAC,qBAAqB;iBAC1D,CAAC,CAAC;gBACH,IAAI,OAAO;oBAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;gBAC9C,YAAY,GAAG,uBAAuB,CAAC,QAAQ,EAAE;oBAC/C,SAAS;oBACT,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;oBACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW;oBACX,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;iBAChD,CAAC,CAAC;gBACH,OAAO,MAAM,eAAe,CAAC;oBAC3B,QAAQ;oBACR,YAAY;oBACZ,OAAO;oBACP,SAAS;oBACT,QAAQ;oBACR,QAAQ;oBACR,OAAO;oBACP,KAAK;oBACL,WAAW;oBACX,WAAW;oBACX,cAAc;oBACd,WAAW;oBACX,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,aAAa,GAAG,SAAS,CAAC;gBAC1B,YAAY,EAAE,OAAO,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,KAAK;YACH,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QAED,cAAc;YACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC1D,IAAI,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC7B,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAG,KAAK,CAAC,IAA2B,EAAE,KAAK;aACjD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAcnC;IACC,MAAM,EACJ,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,KAAK,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,GAAG,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC;YAC7C,YAAY;YACZ,YAAY;YACZ,KAAK;YACL,WAAW;YACX,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,WAAW;YACX,cAAc;YACd,aAAa;YACb,cAAc;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,0BAA0B,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtE,OAAO,qBAAqB,CAAC;YAC3B,cAAc;YACd,eAAe;YACf,UAAU;YACV,MAAM;YACN,WAAW;YACX,WAAW;YACX,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,OAAO;YACP,KAAK;YACL,WAAW;YACX,cAAc;YACd,kBAAkB;YAClB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,sBAAsB,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,EACJ,aAAa,EACb,UAAU,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAC1B,GAAG,OAAO,CAAC;IACZ,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACrD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;IAC3C,MAAM,uBAAuB,CAAC;QAC5B,MAAM;QACN,UAAU;QACV,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAChE,4EAA4E;IAC5E,MAAM,WAAW,GAAG;QAClB,GAAG,mBAAmB;QACtB,UAAU,EAAE,UAAU,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;KACxF,CAAC;IAEF,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACtD,0EAA0E;IAC1E,0EAA0E;IAC1E,oCAAoC,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvF,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,4BAA4B,CAC9D,aAAa,EACb,YAAY,EACZ,WAAW,EACX,MAAM,CAAC,SAAS,CACjB,CAAC;IACF,MAAM,WAAW,GAAG,+BAA+B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACjF,oEAAoE;IACpE,iEAAiE;IACjE,MAAM,WAAW,GAAyB;QACxC,GAAG,EAAE,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC;KAC/F,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IAC7D,IAAI,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC7B,GAAG,CAAC,UAAU,CAAC,wBAAwB,EAAE,aAAa,CAAC,QAAQ,EAAG,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAE7E,oEAAoE;IACpE,MAAM,YAAY,GAAG,gBAAgB,CACnC,QAAQ,EACR,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EACpD,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,IAAI,WAAW,EAAE,EACjF,yBAAyB,IAAI,EAAE,EAC/B;QACE,KAAK;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnE,sEAAsE;QACtE,sEAAsE;QACtE,sCAAsC;QACtC,SAAS,EAAE,eAAe;KAC3B,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC;QAClD,MAAM;QACN,WAAW;QACX,UAAU;QACV,aAAa;KACd,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;IACxD,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC;QACpD,WAAW;QACX,oBAAoB,EAAE,WAAW,CAAC,oBAAoB;QACtD,UAAU;QACV,iBAAiB;KAClB,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;QAC1B,OAAO;QACP,cAAc;QACd,eAAe;QACf,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,KAAK;QACL,aAAa;QACb,WAAW;QACX,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Office, Workspace } from \"../office/index.js\";\nimport type { ExecutionToolContext, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai\";\nimport { MikanModels } from \"./models.js\";\nimport type { SessionStore } from \"../sessions/session-store.js\";\nimport { MikanAgentSession, DEFAULT_EVENT_BUDGET } from \"./session.js\";\nimport { runSubagent, DEFAULT_GLOBAL_SUBAGENT_SLOTS, SubagentSlotPool } from \"./subagent.js\";\nimport { loadSubagentProfiles } from \"./subagent-profiles.js\";\nimport { createMikanTools, createSubagentTool } from \"./tools/index.js\";\nimport { adaptAgentTool } from \"./tools/pi-tools.js\";\nimport { createSandboxExecutionEnv } from \"./execution-env.js\";\nimport { mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type {\n ConversationMessage,\n ConversationKind,\n ConversationResponder,\n MessagingInfo,\n PlatformName,\n} from \"../types.js\";\nimport { ActorExecutionResolver } from \"./execution-resolver.js\";\nimport type { DockerContainerManager } from \"../sandbox/provisioner.js\";\nimport {\n assertSandboxSupportsWorkspacePolicy,\n createExecutor,\n type Executor,\n type RuntimePathContext,\n type SandboxConfig,\n getUnresolvedSandboxPathContext,\n} from \"../sandbox/index.js\";\nimport type { VaultManager } from \"../vault/index.js\";\nimport { resolveWorkspaceProjection } from \"../office/projection.js\";\nimport type {\n RunnerExecutionContext,\n PreparedRunContext,\n RunPresentation,\n RunnerSessionState,\n} from \"./types.js\";\nimport type { CreateRunnerOptions, OfficeAddress, PiAgentWrapper } from \"../types.js\";\nimport { createHash } from \"node:crypto\";\nimport { resolveConversationSettings } from \"../settings/index.js\";\nimport { ensureDefaultOpenConnector } from \"./open-connector.js\";\nimport { OfficeEventStore } from \"../events/index.js\";\nimport { addLifecycleEvent, updateActiveSpanAttribution } from \"../observability/index.js\";\nimport { ChatHistorySync } from \"../sessions/chat-history-sync.js\";\nimport { conversationIdOf, isThreadSessionKey } from \"../sessions/session-key.js\";\nimport {\n extractSessionUuid,\n openManagedSession,\n type ThreadRootMessage,\n} from \"../sessions/store.js\";\nimport type { PlatformToolRunContext } from \"./tools/types.js\";\nimport { loadMikanSkills } from \"./skills.js\";\nimport {\n normalizeAttachRuntimePath,\n withStagedRuntimeFile,\n buildPromptPayload,\n buildSystemPrompt,\n buildTurnInstructions,\n getMemory,\n resolveTriggerAttribution,\n} from \"./prompt.js\";\nimport {\n attachSessionEventHandlers,\n activateRunPresentation,\n createRunState,\n finalizeRunResponse,\n isEventTriggerAttribution,\n reportUsageSummary,\n} from \"./presenter.js\";\n\nimport * as log from \"../log.js\";\n\n// One process-wide fan-out account: per-conversation queues serialize runs,\n// but each run can fan out up to the per-run cap — without this shared\n// ceiling, N busy conversations hold N × cap live subagent sessions.\nconst globalSubagentSlots = new SubagentSlotPool(DEFAULT_GLOBAL_SUBAGENT_SLOTS);\n\nasync function createConfiguredAgentSession(params: {\n workspaceDir: string;\n systemPrompt: string;\n model: Model<Api>;\n thinkingLevel: ThinkingLevel;\n tools: Awaited<ReturnType<typeof createMikanTools>>[\"tools\"];\n toolContext: ExecutionToolContext;\n sessionStore: SessionStore;\n models: MikanModels;\n}): Promise<MikanAgentSession> {\n const {\n workspaceDir,\n systemPrompt,\n model,\n thinkingLevel,\n tools,\n toolContext,\n sessionStore,\n models,\n } = params;\n const loadedProfiles = loadSubagentProfiles(workspaceDir);\n for (const diagnostic of loadedProfiles.diagnostics) {\n log.logWarning(`Subagent profile ignored: ${diagnostic.path}`, diagnostic.message);\n }\n\n const availableToolNames = new Set(tools.map((tool) => tool.name));\n const runnableProfiles = new Map(\n [...loadedProfiles.profiles].filter(([, profile]) =>\n profile.tools.every((tool) => availableToolNames.has(tool)),\n ),\n );\n let session: MikanAgentSession | undefined;\n const subagentTool = createSubagentTool(\n (request, hooks) =>\n runSubagent({\n request,\n ...(hooks?.onActivity ? { onActivity: hooks.onActivity } : {}),\n defaultModel: model,\n thinkingLevel,\n models,\n workspaceDir,\n availableTools: tools.filter((tool) => ![\"start_task\", \"task_status\"].includes(tool.name)),\n profiles: runnableProfiles,\n slots: globalSubagentSlots,\n toolContext,\n parentMessages: [...session!.messages],\n onUsage: session!.captureExternalUsageSink(),\n }),\n runnableProfiles,\n );\n\n session = new MikanAgentSession({\n systemPrompt,\n model,\n thinkingLevel,\n tools: [...tools, adaptAgentTool(subagentTool)],\n toolContext,\n models,\n sessionStore,\n });\n const reloaded = await session.reloadFromSession();\n if (reloaded > 0) log.logInfo(`Reloaded ${reloaded} messages from session context`);\n return session;\n}\n\nfunction createRunnerExecutionContext(\n sandboxConfig: SandboxConfig,\n vaultManager: VaultManager | undefined,\n provisioner: DockerContainerManager | undefined,\n workspace: Workspace,\n): RunnerExecutionContext {\n const executionResolver =\n vaultManager && sandboxConfig.type !== \"host\"\n ? new ActorExecutionResolver(sandboxConfig, vaultManager, provisioner, workspace)\n : undefined;\n\n // activeExecutor is replaced at the start of each run() call when executionResolver\n // is present, so the stable `executor` wrapper always delegates to the latest resolved value.\n let activeExecutor: Executor =\n executionResolver !== undefined\n ? createExecutor({ type: \"host\" })\n : createExecutor(sandboxConfig);\n const executor: Executor = {\n exec(command, options) {\n return activeExecutor.exec(command, options);\n },\n readFile(path, options) {\n return activeExecutor.readFile(path, options);\n },\n readFileBase64(path, options) {\n return activeExecutor.readFileBase64(path, options);\n },\n writeFile(path, content, options) {\n return activeExecutor.writeFile(path, content, options);\n },\n getWorkspacePath(hostPath) {\n return activeExecutor.getWorkspacePath(hostPath);\n },\n getSandboxConfig() {\n return activeExecutor.getSandboxConfig();\n },\n getPathContext(hostWorkspaceRoot) {\n return activeExecutor.getPathContext(hostWorkspaceRoot);\n },\n };\n\n return {\n executor,\n async resolveForRun(context) {\n if (executionResolver) {\n const decision = await executionResolver.resolve(context);\n activeExecutor = decision.executor;\n return {\n pathContext: decision.pathContext,\n projection: decision.projection,\n };\n }\n\n const office = workspace.office(context.address);\n const projection = resolveWorkspaceProjection(office);\n assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);\n return {\n pathContext: executor.getPathContext(workspace.root),\n projection,\n };\n },\n };\n}\n\nfunction buildThreadSessionName(message: ThreadRootMessage | null): string | undefined {\n const text = message?.text?.trim();\n if (!text) return undefined;\n const userLabel = message?.userName || message?.user || \"unknown\";\n return `[${userLabel}]: ${text}`;\n}\n\n/**\n * Fill in the deployment's default OpenConnector entry before settings are\n * read, so the runner then sees only ordinary MCP configuration. A failed\n * default is reported and skipped; the office keeps its other servers.\n */\nasync function ensureDefaultMcpServers(options: {\n office: Office;\n trustModel: CreateRunnerOptions[\"trustModel\"];\n platformWorkspaceId?: string;\n openConnector?: CreateRunnerOptions[\"openConnector\"];\n signal?: AbortSignal;\n}): Promise<void> {\n if (options.trustModel === \"open-trigger\") return;\n try {\n await ensureDefaultOpenConnector(\n options.office,\n options.platformWorkspaceId,\n options.openConnector,\n options.signal,\n );\n } catch (error) {\n options.signal?.throwIfAborted();\n log.logWarning(\n `[${options.office.address.conversationId}] OpenConnector default provisioning failed`,\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n\ntype PrepareRunParams = {\n message: ConversationMessage;\n responder: ConversationResponder;\n platform: MessagingInfo;\n office: Office;\n executor: Executor;\n resolveForRun: RunnerExecutionContext[\"resolveForRun\"];\n session: MikanAgentSession;\n setEventContext: (context: {\n platform: string;\n conversationId: string;\n conversationKind: ConversationKind;\n userId: string;\n }) => void;\n setSandboxContext: (context: { address: OfficeAddress; userId: string }) => void;\n setUploadFunction: (fn: (filePath: string, title?: string) => Promise<void>) => void;\n setImageUploadFunction: (fn: (hostPath: string, title?: string) => Promise<void>) => void;\n bindTasks: ReturnType<typeof createMikanTools>[\"bindTasks\"];\n setReactFunction: (fn: ((emoji: string) => Promise<void>) | null) => void;\n bindPlatformToolPacks: (ctx: PlatformToolRunContext) => void;\n};\n\ntype RunPromptContext = {\n pathContext: RuntimePathContext;\n memory: string;\n systemPrompt: string;\n triggerAttribution: string | undefined;\n};\n\nasync function preparePromptContext(params: PrepareRunParams): Promise<RunPromptContext> {\n const { message, platform, office, executor, resolveForRun, session } = params;\n const conversationId = office.address.conversationId;\n const decision = await resolveForRun({\n address: message.address,\n userId: message.userId,\n trustModel: platform.trustModel,\n });\n const { pathContext, projection } = decision;\n const reloaded = await session.reloadFromSession();\n if (reloaded > 0) {\n log.logInfo(`[${conversationId}] Reloaded ${reloaded} messages from context`);\n }\n\n const memory = await getMemory(projection);\n const conversationSkillLoad = loadMikanSkills(\n office,\n pathContext.runtimeWorkspaceRoot,\n projection,\n );\n const triggerAttribution = resolveTriggerAttribution(message);\n const systemPrompt = buildSystemPrompt({\n workspacePath: pathContext.runtimeWorkspaceRoot,\n office,\n memory,\n sandboxConfig: executor.getSandboxConfig(),\n platform,\n skills: conversationSkillLoad.skills,\n projection,\n skippedSkillLinks: conversationSkillLoad.skippedSkillLinks,\n });\n session.setSystemPrompt(systemPrompt);\n // A stable hash across turns verifies that turn-specific data did not leak\n // into the provider-cacheable system prompt.\n const promptHash = createHash(\"sha256\").update(systemPrompt).digest(\"hex\").slice(0, 8);\n log.logInfo(\n `[${conversationId}] System prompt (base): ${systemPrompt.length} chars, sha ${promptHash}`,\n );\n return { pathContext, memory, systemPrompt, triggerAttribution };\n}\n\nfunction bindRunCapabilities(params: PrepareRunParams, pathContext: RuntimePathContext): void {\n const {\n message,\n responder,\n platform,\n office,\n executor,\n setEventContext,\n setSandboxContext,\n setUploadFunction,\n setImageUploadFunction,\n setReactFunction,\n bindTasks,\n bindPlatformToolPacks,\n } = params;\n setEventContext({\n platform: platform.name,\n conversationId: office.address.conversationId,\n conversationKind: message.conversationKind,\n userId: message.userId,\n });\n setSandboxContext({ address: message.address, userId: message.userId });\n setUploadFunction(async (filePath: string, title?: string) => {\n const runtimePath = normalizeAttachRuntimePath(filePath, pathContext.runtimeWorkspaceRoot);\n await withStagedRuntimeFile(executor, runtimePath, (stagedPath) =>\n responder.uploadFile(stagedPath, title),\n );\n });\n // Generated images already live host-side and must not be staged through a sandbox.\n setImageUploadFunction(async (hostPath: string, title?: string) => {\n await responder.uploadFile(hostPath, title);\n });\n // Unset reaction support when the active responder cannot react.\n bindTasks(responder);\n setReactFunction(responder.react ? async (emoji: string) => responder.react!(emoji) : null);\n bindPlatformToolPacks({\n conversationId: office.address.conversationId,\n platformName: platform.name,\n threadTs: message.threadTs,\n });\n}\n\nasync function prepareRunContext(params: PrepareRunParams): Promise<PreparedRunContext> {\n const { message, platform, office, executor } = params;\n const sessionConversation = conversationIdOf(message.sessionKey);\n await mkdir(join(office.dir, \"scratch\"), { recursive: true });\n const { pathContext, memory, systemPrompt, triggerAttribution } =\n await preparePromptContext(params);\n bindRunCapabilities(params, pathContext);\n\n log.logInfo(\n `Context sizes - system: ${systemPrompt.length} chars, memory: ${memory.length} chars`,\n );\n log.logInfo(`Channels: ${platform.channels.length}, Users: ${platform.users.length}`);\n\n const { userMessage, imageAttachments } = await buildPromptPayload(\n message,\n pathContext.runtimeWorkspaceRoot,\n pathContext,\n (runtimePath) => executor.readFileBase64(runtimePath),\n );\n const turnInstructions = buildTurnInstructions(\n message.id.startsWith(\"event:\"),\n triggerAttribution,\n platform.name,\n );\n const finalUserMessage = turnInstructions ? `${turnInstructions}\\n\\n${userMessage}` : userMessage;\n return {\n sessionConversation,\n userMessage: finalUserMessage,\n imageAttachments,\n triggerAttribution,\n };\n}\n\nasync function buildInitialSystemPrompt(params: {\n office: Office;\n pathContext: RuntimePathContext;\n projection: ReturnType<typeof resolveWorkspaceProjection>;\n sandboxConfig: CreateRunnerOptions[\"sandboxConfig\"];\n}): Promise<string> {\n const { office, pathContext, projection, sandboxConfig } = params;\n const memory = await getMemory(projection);\n const { skills, skippedSkillLinks } = loadMikanSkills(\n office,\n pathContext.runtimeWorkspaceRoot,\n projection,\n );\n return buildSystemPrompt({\n workspacePath: pathContext.runtimeWorkspaceRoot,\n office,\n memory,\n sandboxConfig,\n platform: {\n name: \"chat\",\n formattingGuide: \"\",\n channels: [],\n users: [],\n trustModel: \"membership\",\n },\n skills,\n projection,\n skippedSkillLinks,\n });\n}\n\nasync function rollbackRunnerResource(label: string, cleanup: () => Promise<void>): Promise<void> {\n try {\n await cleanup();\n } catch (error) {\n log.logWarning(`Runner rollback failed to ${label}`, String(error));\n }\n}\n\nasync function openRunnerSessionManager(params: {\n contextFile: string;\n runtimeWorkspaceRoot: string;\n sessionKey: string;\n threadRootMessage: ThreadRootMessage | null;\n}) {\n const { contextFile, runtimeWorkspaceRoot, sessionKey, threadRootMessage } = params;\n const sessionManager = await openManagedSession(contextFile, runtimeWorkspaceRoot);\n try {\n const threadSessionName = buildThreadSessionName(threadRootMessage);\n if (\n isThreadSessionKey(sessionKey) &&\n threadSessionName &&\n (await sessionManager.getSessionName()) !== threadSessionName\n ) {\n await sessionManager.setSessionName(threadSessionName);\n }\n return sessionManager;\n } catch (error) {\n await rollbackRunnerResource(\"close the session writer\", () => sessionManager.close());\n throw error;\n }\n}\n\nasync function createRunnerAgentSession(params: {\n workspaceDir: string;\n systemPrompt: string;\n model: Model<Api>;\n agentConfig: ReturnType<typeof resolveConversationSettings>;\n tools: ReturnType<typeof createMikanTools>[\"tools\"];\n toolContext: ExecutionToolContext;\n sessionManager: Awaited<ReturnType<typeof openManagedSession>>;\n modelRegistry: MikanModels;\n conversationId: string;\n signal?: AbortSignal;\n}) {\n const {\n workspaceDir,\n systemPrompt,\n model,\n agentConfig,\n tools,\n toolContext,\n sessionManager,\n modelRegistry,\n signal,\n } = params;\n const mcpTools = await sessionManager.connectMcp(agentConfig.mcpServers ?? {}, signal);\n return createConfiguredAgentSession({\n workspaceDir,\n systemPrompt,\n model,\n thinkingLevel: agentConfig.thinkingLevel,\n tools: [...tools, ...mcpTools.map(adaptAgentTool)],\n toolContext,\n sessionStore: sessionManager,\n models: modelRegistry,\n });\n}\n\ntype PreparedTurnParams = {\n prepared: PreparedRunContext;\n presentation: RunPresentation;\n message: ConversationMessage;\n responder: ConversationResponder;\n platform: MessagingInfo;\n runState: RunnerSessionState;\n session: MikanAgentSession;\n model: Model<Api>;\n agentConfig: ReturnType<typeof resolveConversationSettings>;\n sessionUuid: string;\n conversationId: string;\n contextFile: string;\n sessionView: CreateRunnerOptions[\"sessionView\"];\n};\n\nasync function runPreparedTurn(params: PreparedTurnParams): Promise<{\n stopReason: string;\n errorMessage?: string;\n}> {\n const {\n prepared,\n presentation,\n message,\n responder,\n platform,\n runState,\n session,\n model,\n agentConfig,\n sessionUuid,\n conversationId,\n contextFile,\n sessionView,\n } = params;\n if (runState.logCtx) {\n log.logAgentRunStart(runState.logCtx, model.provider, model.id, model.name);\n }\n\n updateActiveSpanAttribution({\n provider: model.provider,\n model: model.id,\n channel_id: prepared.sessionConversation,\n session_id: sessionUuid,\n \"mikan.input.message_count\": 1,\n \"mikan.input.characters\": prepared.userMessage.length,\n \"mikan.input.attachment_count\": message.attachments?.length ?? 0,\n \"mikan.input.image_count\": prepared.imageAttachments.length,\n \"mikan.input.has_text\": prepared.userMessage.length > 0,\n });\n addLifecycleEvent(\"agent.prompt.sent\", {\n provider: model.provider,\n model: agentConfig.model,\n channel_id: prepared.sessionConversation,\n session_id: sessionUuid,\n attachment_count: message.attachments?.length ?? 0,\n image_attachment_count: prepared.imageAttachments.length,\n });\n\n const isEventRun = message.id.startsWith(\"event:\");\n await session.prompt(prepared.userMessage, {\n allowTaskHandoff: responder.startTask !== undefined,\n allowTaskStatus: responder.getTaskStatus !== undefined,\n ...(prepared.imageAttachments.length > 0 ? { images: prepared.imageAttachments } : {}),\n ...(isEventRun ? { budget: DEFAULT_EVENT_BUDGET } : {}),\n });\n await presentation.wait();\n\n const sessionViewTokenStore = sessionView?.tokenStore;\n const sessionViewPortalBaseUrl = sessionView?.portalBaseUrl;\n let sessionViewLink: string | undefined;\n const createSessionViewLink =\n sessionViewTokenStore && sessionViewPortalBaseUrl\n ? () => {\n if (!sessionViewLink) {\n const token = sessionViewTokenStore.create({\n platform: platform.name as PlatformName,\n platformUserId: message.userId,\n conversationId,\n sessionKey: message.sessionKey,\n sessionFile: contextFile,\n platformUserName: message.userName,\n });\n sessionViewLink = `${sessionViewPortalBaseUrl}/session?token=${token.token}`;\n }\n return sessionViewLink;\n }\n : undefined;\n\n await finalizeRunResponse(responder, session, runState, {\n initialTask: message.id.startsWith(\"task:\"),\n triggerSessionLink: isEventTriggerAttribution(prepared.triggerAttribution)\n ? createSessionViewLink?.()\n : undefined,\n createOverflowLink: createSessionViewLink,\n platform: platform.name,\n model,\n sessionConversation: prepared.sessionConversation,\n sessionUuid,\n });\n await reportUsageSummary({\n session,\n runState,\n responder,\n platform,\n model,\n agentConfig,\n sessionConversation: prepared.sessionConversation,\n sessionUuid,\n waitForQueue: presentation.wait,\n });\n return { stopReason: runState.stopReason, errorMessage: runState.errorMessage };\n}\n\ntype MikanToolBindings = ReturnType<typeof createMikanTools>;\n\ntype RunnerInterfaceParams = {\n conversationId: string;\n conversationDir: string;\n sessionKey: string;\n office: Office;\n sessionUuid: string;\n contextFile: string;\n sessionView: CreateRunnerOptions[\"sessionView\"];\n runState: RunnerSessionState;\n executor: Executor;\n resolveForRun: RunnerExecutionContext[\"resolveForRun\"];\n session: MikanAgentSession;\n model: Model<Api>;\n agentConfig: ReturnType<typeof resolveConversationSettings>;\n sessionManager: Awaited<ReturnType<typeof openManagedSession>>;\n chatSessionManager: ChatHistorySync;\n toolBindings: MikanToolBindings;\n};\n\nasync function steerRun(\n session: MikanAgentSession,\n activeMessage: ConversationMessage | undefined,\n message: ConversationMessage,\n): Promise<boolean> {\n if (!activeMessage) return false;\n // Claimed by the control path, including rejected/cancelled inputs: history sync\n // must not turn a rejected control into a new instruction on the next run.\n await session.sessionStore.appendCustomEntry(\"mikan.control_input\", { messageId: message.id });\n if (!session.isActiveRun)\n throw new Error(\"Task is preparing or settling. Please retry this update shortly.\");\n if (message.userId !== activeMessage.userId)\n throw new Error(\"Only the task's current actor can guide this run.\");\n if (message.attachments?.length)\n throw new Error(\"Stop the task before continuing with new attachments.\");\n if (!(await session.steer(`[${message.userName ?? message.userId}]: ${message.text}`))) {\n throw new Error(\"Task settled while receiving this update. Please send it again to continue.\");\n }\n return true;\n}\n\nfunction createRunnerInterface(params: RunnerInterfaceParams): PiAgentWrapper {\n const {\n conversationId,\n conversationDir,\n sessionKey,\n office,\n sessionUuid,\n contextFile,\n sessionView,\n runState,\n executor,\n resolveForRun,\n session,\n model,\n agentConfig,\n sessionManager,\n chatSessionManager,\n toolBindings,\n } = params;\n let activeMessage: ConversationMessage | undefined;\n let stopped = false;\n return {\n steer: (message) => steerRun(session, activeMessage, message),\n async syncChatHistory(currentMessageId?: string): Promise<void> {\n await chatSessionManager.syncSessionManager({\n conversationDir,\n sessionKey,\n sessionManager,\n currentMessageId,\n });\n },\n\n async run(message, responder, platform) {\n activeMessage = message;\n stopped = false;\n let presentation: RunPresentation | undefined;\n try {\n const prepared = await prepareRunContext({\n message,\n responder,\n platform,\n office,\n executor,\n resolveForRun,\n session,\n setEventContext: toolBindings.setEventContext,\n setSandboxContext: toolBindings.setSandboxContext,\n setUploadFunction: toolBindings.setUploadFunction,\n setImageUploadFunction: toolBindings.setImageUploadFunction,\n setReactFunction: toolBindings.setReactFunction,\n bindTasks: toolBindings.bindTasks,\n bindPlatformToolPacks: toolBindings.bindPlatformToolPacks,\n });\n if (stopped) return { stopReason: \"aborted\" };\n presentation = activateRunPresentation(runState, {\n responder,\n sessionConversation: prepared.sessionConversation,\n userName: message.userName,\n sessionUuid,\n triggerAttribution: prepared.triggerAttribution,\n });\n return await runPreparedTurn({\n prepared,\n presentation,\n message,\n responder,\n platform,\n runState,\n session,\n model,\n agentConfig,\n sessionUuid,\n conversationId,\n contextFile,\n sessionView,\n });\n } finally {\n activeMessage = undefined;\n presentation?.dispose();\n }\n },\n\n abort(): void {\n stopped = true;\n session.abort();\n },\n\n async dispose(): Promise<void> {\n await sessionManager.close();\n },\n\n getCurrentStep(): { toolName?: string; label?: string } | undefined {\n const first = runState.pendingTools.values().next().value;\n if (!first) return undefined;\n return {\n toolName: first.toolName,\n label: (first.args as { label?: string })?.label,\n };\n },\n };\n}\n\nasync function finishRunnerCreation(params: {\n options: CreateRunnerOptions;\n conversationId: string;\n conversationDir: string;\n workspaceDir: string;\n executor: Executor;\n resolveForRun: RunnerExecutionContext[\"resolveForRun\"];\n model: Model<Api>;\n modelRegistry: MikanModels;\n agentConfig: ReturnType<typeof resolveConversationSettings>;\n systemPrompt: string;\n sessionManager: Awaited<ReturnType<typeof openManagedSession>>;\n toolBindings: MikanToolBindings;\n toolContext: ExecutionToolContext;\n}): Promise<PiAgentWrapper> {\n const {\n options,\n conversationId,\n conversationDir,\n workspaceDir,\n executor,\n resolveForRun,\n model,\n modelRegistry,\n agentConfig,\n systemPrompt,\n sessionManager,\n toolBindings,\n toolContext,\n } = params;\n const { sessionKey, office, sessionScope, sessionView } = options;\n const { contextFile } = sessionScope;\n try {\n const sessionUuid = extractSessionUuid(contextFile);\n const chatSessionManager = new ChatHistorySync();\n const session = await createRunnerAgentSession({\n workspaceDir,\n systemPrompt,\n model,\n agentConfig,\n tools: toolBindings.tools,\n toolContext,\n sessionManager,\n modelRegistry,\n conversationId,\n signal: options.signal,\n });\n options.signal?.throwIfAborted();\n\n const runState = createRunState();\n attachSessionEventHandlers({ session, runState, model, agentConfig });\n\n return createRunnerInterface({\n conversationId,\n conversationDir,\n sessionKey,\n office,\n sessionUuid,\n contextFile,\n sessionView,\n runState,\n executor,\n resolveForRun,\n session,\n model,\n agentConfig,\n sessionManager,\n chatSessionManager,\n toolBindings,\n });\n } catch (error) {\n await rollbackRunnerResource(\"close the session writer\", () => sessionManager.close());\n throw error;\n }\n}\n\nexport async function createRunner(options: CreateRunnerOptions): Promise<PiAgentWrapper> {\n options.signal?.throwIfAborted();\n const {\n sandboxConfig,\n sessionKey,\n office,\n trustModel,\n sessionScope,\n vaultManager,\n provisioner,\n resourceController,\n platformToolPackFactories,\n } = options;\n const conversationId = office.address.conversationId;\n const conversationDir = office.dir;\n const workspaceDir = office.workspace.root;\n await ensureDefaultMcpServers({\n office,\n trustModel,\n platformWorkspaceId: options.platformWorkspaceId,\n openConnector: options.openConnector,\n signal: options.signal,\n });\n options.signal?.throwIfAborted();\n const resolvedAgentConfig = resolveConversationSettings(office);\n // open-trigger conversations get no MCP tools at all (see ARCHITECTURE.md).\n const agentConfig = {\n ...resolvedAgentConfig,\n mcpServers: trustModel === \"open-trigger\" ? {} : (resolvedAgentConfig.mcpServers ?? {}),\n };\n\n const projection = resolveWorkspaceProjection(office);\n // Bootstrap validation fails runner creation early. resolveForRun repeats\n // the check against the actor-specific decision before any provider call.\n assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);\n const { executor, resolveForRun } = createRunnerExecutionContext(\n sandboxConfig,\n vaultManager,\n provisioner,\n office.workspace,\n );\n const pathContext = getUnresolvedSandboxPathContext(sandboxConfig, workspaceDir);\n // The env wraps the stable executor wrapper, which delegates to the\n // actor-resolved executor per call, so one env serves every run.\n const toolContext: ExecutionToolContext = {\n env: createSandboxExecutionEnv(executor, sandboxConfig.type, pathContext.runtimeWorkspaceRoot),\n };\n\n const modelRegistry = options.models ?? MikanModels.create();\n if (modelRegistry.getError()) {\n log.logWarning(\"models.json load error\", modelRegistry.getError()!);\n }\n const model = modelRegistry.resolve(agentConfig.provider, agentConfig.model);\n\n // Create tools (per-runner, with per-runner upload function setter)\n const toolBindings = createMikanTools(\n executor,\n new OfficeEventStore(office, options.eventScheduler),\n { sandbox: sandboxConfig, resourceController: resourceController ?? provisioner },\n platformToolPackFactories ?? [],\n {\n model,\n getApiKey: () => modelRegistry.getApiKeyForProvider(model.provider),\n // The conversation's own office dir: mounted into the sandbox, unlike\n // the workspace base — generated images must land somewhere the agent\n // (and a future run) can still reach.\n outputDir: conversationDir,\n },\n );\n\n const systemPrompt = await buildInitialSystemPrompt({\n office,\n pathContext,\n projection,\n sandboxConfig,\n });\n options.signal?.throwIfAborted();\n const { contextFile, threadRootMessage } = sessionScope;\n const sessionManager = await openRunnerSessionManager({\n contextFile,\n runtimeWorkspaceRoot: pathContext.runtimeWorkspaceRoot,\n sessionKey,\n threadRootMessage,\n });\n return finishRunnerCreation({\n options,\n conversationId,\n conversationDir,\n workspaceDir,\n executor,\n resolveForRun,\n model,\n modelRegistry,\n agentConfig,\n systemPrompt,\n sessionManager,\n toolBindings,\n toolContext,\n });\n}\n"]}
@@ -0,0 +1,122 @@
1
+ import { type AgentMessage, type CompactionSettings } from "@earendil-works/pi-agent-core";
2
+ import type { ImageContent, Model, Api, Usage } from "@earendil-works/pi-ai";
3
+ import type { SessionStore } from "../sessions/session-store.js";
4
+ import type { BudgetSettings, HarnessEventListener, HarnessSettings, MikanAgentSessionOptions, MikanToolInput, SubagentUsage, SubagentUsageSink, RetrySettings } from "./types.js";
5
+ export type { CompactionReason } from "./types.js";
6
+ export type { HarnessEvent } from "./types.js";
7
+ export type { HarnessEventListener } from "./types.js";
8
+ export type { MikanAgentSessionOptions } from "./types.js";
9
+ export declare class MikanAgentSession {
10
+ private readonly options;
11
+ readonly sessionStore: SessionStore;
12
+ readonly model: Model<Api>;
13
+ private readonly settings;
14
+ private readonly listeners;
15
+ private systemPrompt;
16
+ private transcript;
17
+ private harness;
18
+ private lane;
19
+ private runActive;
20
+ private runAborted;
21
+ private operationId;
22
+ private cancellation;
23
+ private cancellationError;
24
+ private deadlineTimer;
25
+ private deadlineNotification;
26
+ private runBudget;
27
+ private budgetExceededReason;
28
+ private retryAttempt;
29
+ private latestAssistantNeedsCall;
30
+ private latestAssistantErrored;
31
+ private runMessages;
32
+ private readonly toolArgs;
33
+ private tally;
34
+ constructor(options: MikanAgentSessionOptions);
35
+ get messages(): AgentMessage[];
36
+ get isActiveRun(): boolean;
37
+ setSystemPrompt(prompt: string): void;
38
+ getLastRunStats(): Readonly<{
39
+ usage: SubagentUsage;
40
+ tokens: number;
41
+ costUsd: number;
42
+ llmCalls: number;
43
+ toolCalls: number;
44
+ toolCallCounts: Record<string, number>;
45
+ durationMs: number;
46
+ budgetExceededReason?: string;
47
+ }>;
48
+ /** Bind delegated spend to its owning prompt, even when cleanup finishes late. */
49
+ captureExternalUsageSink(): SubagentUsageSink;
50
+ foldExternalUsage(usage: SubagentUsage): Promise<void>;
51
+ subscribe(listener: HarnessEventListener): () => void;
52
+ reloadFromSession(): Promise<number>;
53
+ prompt(text: string, options?: {
54
+ images?: ImageContent[];
55
+ budget?: BudgetSettings;
56
+ tools?: MikanToolInput[];
57
+ allowTaskHandoff?: boolean;
58
+ allowTaskStatus?: boolean;
59
+ }): Promise<void>;
60
+ steer(text: string): Promise<boolean>;
61
+ /** Resume an operation left open by a previous process using Pi's recovery rules. */
62
+ resume(options?: {
63
+ budget?: BudgetSettings;
64
+ tools?: MikanToolInput[];
65
+ }): Promise<void>;
66
+ private run;
67
+ private driveOperation;
68
+ private cleanupRun;
69
+ /** Pi's durable cancellation gate stops providers, tools, retries, and summaries. */
70
+ abort(): void;
71
+ private requestCancellation;
72
+ /** Upgrade mikan's own `AgentTool`s; harness-native tools pass through. */
73
+ private toHarnessTools;
74
+ private initialize;
75
+ private emit;
76
+ private handlePiEvent;
77
+ private recordUsage;
78
+ private handlePiToolEvent;
79
+ private handlePiLifecycleEvent;
80
+ private exceedBudget;
81
+ private checkCallBudget;
82
+ private callOverBudgetReason;
83
+ private resourceOverBudgetReason;
84
+ private armDeadline;
85
+ }
86
+ export type { CompactionSettings };
87
+ export type { BudgetSettings } from "./types.js";
88
+ export type { HarnessSettings } from "./types.js";
89
+ export type { RetrySettings } from "./types.js";
90
+ export declare const DEFAULT_RETRY_SETTINGS: RetrySettings;
91
+ /**
92
+ * Per-run resource ceilings — the harness's external circuit breakers.
93
+ *
94
+ * An LLM cannot reliably decide on its own when to stop (the halting problem),
95
+ * so a runaway run has to be stopped from the outside. When any populated cap
96
+ * is exceeded, the run is aborted and a `budget_exceeded` event is emitted.
97
+ * Every field is a cap on a single `prompt()` call; an undefined field means
98
+ * "no cap on that axis". Interactive runs are gated turn-by-turn by a human,
99
+ * so they default to uncapped; autonomous runs (scheduled events, triggers)
100
+ * pass {@link DEFAULT_EVENT_BUDGET}, where nobody is watching the loop.
101
+ */
102
+ /** Interactive runs are human-gated per turn — no automatic ceiling by default. */
103
+ export declare const DEFAULT_BUDGET_SETTINGS: BudgetSettings;
104
+ /**
105
+ * Ceiling for autonomous (event / trigger) runs, where no human is watching
106
+ * the loop. Deliberately generous — it is a stop-loss, not a target.
107
+ */
108
+ export declare const DEFAULT_EVENT_BUDGET: BudgetSettings;
109
+ export declare function resolveHarnessSettings(overrides?: {
110
+ compaction?: Partial<CompactionSettings>;
111
+ retry?: Partial<RetrySettings>;
112
+ budget?: Partial<BudgetSettings>;
113
+ }): HarnessSettings;
114
+ /**
115
+ * Harness-wide usage accounting: parent-session assistant turns, compaction
116
+ * completions, and subagent folds all accumulate through these helpers.
117
+ * `SubagentUsage` (public surface) is an alias of pi-ai's `Usage`; the
118
+ * aggregation rules here are not subagent-specific.
119
+ */
120
+ export declare function createEmptyUsage(): Usage;
121
+ export declare function copyUsage(usage: Usage): Usage;
122
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/harness/session.ts"],"names":[],"mappings":"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"}