@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
@@ -0,0 +1,859 @@
1
+ import { contentText } from "@earendil-works/pi-ai";
2
+ import { mergeSubagentProgress, parseSubagentProgressSnapshot, renderSubagentDashboard, settleSubagentProgress, } from "./tools/subagent.js";
3
+ import { addLifecycleEvent, metricAttributes, recordCounter, recordDistribution, recordGauge, reportUserFacingError, startOperationSpan, updateActiveSpanAttribution, } from "../observability/index.js";
4
+ import { appendTriggerAttribution } from "./prompt.js";
5
+ import * as log from "../log.js";
6
+ const operationSpans = new WeakMap();
7
+ function spansFor(runState) {
8
+ let spans = operationSpans.get(runState);
9
+ if (!spans) {
10
+ spans = { llm: [], tools: new Map() };
11
+ operationSpans.set(runState, spans);
12
+ }
13
+ return spans;
14
+ }
15
+ function operationError(name) {
16
+ const error = new Error();
17
+ error.name = name;
18
+ return error;
19
+ }
20
+ function endOutstandingOperationSpans(runState) {
21
+ const spans = operationSpans.get(runState);
22
+ if (!spans)
23
+ return;
24
+ const aborted = operationError("AbortError");
25
+ for (const entry of spans.llm)
26
+ entry.span.end({ error: aborted });
27
+ for (const span of spans.tools.values())
28
+ span.end({ error: aborted });
29
+ operationSpans.delete(runState);
30
+ }
31
+ function createEmptyUsageTotals() {
32
+ return {
33
+ input: 0,
34
+ output: 0,
35
+ cacheRead: 0,
36
+ cacheWrite: 0,
37
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
38
+ };
39
+ }
40
+ export function createRunState() {
41
+ return {
42
+ responder: null,
43
+ logCtx: null,
44
+ queue: null,
45
+ pendingTools: new Map(),
46
+ toolProgress: new Map(),
47
+ subagentProgress: new Map(),
48
+ completedSubagentProgress: [],
49
+ subagentToolCalls: new Set(),
50
+ subagentProgressShown: false,
51
+ suppressResponseDeltas: false,
52
+ lastSubagentProgressAt: 0,
53
+ toolProgressTimer: undefined,
54
+ totalUsage: createEmptyUsageTotals(),
55
+ llmCallCount: 0,
56
+ toolCallCount: 0,
57
+ toolErrorCount: 0,
58
+ toolInputCharacters: 0,
59
+ toolOutputCharacters: 0,
60
+ assistantMessageCount: 0,
61
+ outputCharacters: 0,
62
+ reasoningTokens: 0,
63
+ retryCount: 0,
64
+ compactionCount: 0,
65
+ budgetExceeded: false,
66
+ firstTokenLatencyMs: undefined,
67
+ responseModel: undefined,
68
+ stopReason: "stop",
69
+ errorMessage: undefined,
70
+ reportedLlmError: false,
71
+ finalResponseHandledByTool: false,
72
+ triggerAttribution: undefined,
73
+ };
74
+ }
75
+ export function activateRunPresentation(runState, context) {
76
+ endOutstandingOperationSpans(runState);
77
+ runState.responder = context.responder;
78
+ runState.logCtx = {
79
+ conversationId: context.sessionConversation,
80
+ userName: context.userName,
81
+ conversationName: undefined,
82
+ sessionId: context.sessionUuid,
83
+ };
84
+ runState.pendingTools.clear();
85
+ runState.toolProgress.clear();
86
+ runState.subagentProgress.clear();
87
+ runState.completedSubagentProgress = [];
88
+ runState.subagentToolCalls.clear();
89
+ runState.subagentProgressShown = false;
90
+ runState.suppressResponseDeltas = false;
91
+ runState.lastSubagentProgressAt = 0;
92
+ if (runState.toolProgressTimer)
93
+ clearTimeout(runState.toolProgressTimer);
94
+ runState.toolProgressTimer = undefined;
95
+ runState.totalUsage = createEmptyUsageTotals();
96
+ runState.llmCallCount = 0;
97
+ runState.toolCallCount = 0;
98
+ runState.toolErrorCount = 0;
99
+ runState.toolInputCharacters = 0;
100
+ runState.toolOutputCharacters = 0;
101
+ runState.assistantMessageCount = 0;
102
+ runState.outputCharacters = 0;
103
+ runState.reasoningTokens = 0;
104
+ runState.retryCount = 0;
105
+ runState.compactionCount = 0;
106
+ runState.budgetExceeded = false;
107
+ runState.firstTokenLatencyMs = undefined;
108
+ runState.responseModel = undefined;
109
+ runState.stopReason = "stop";
110
+ runState.errorMessage = undefined;
111
+ runState.reportedLlmError = false;
112
+ runState.finalResponseHandledByTool = false;
113
+ runState.triggerAttribution = context.triggerAttribution;
114
+ const { responder } = context;
115
+ let queueChain = Promise.resolve();
116
+ runState.queue = {
117
+ enqueue(fn, errorContext) {
118
+ queueChain = queueChain.then(async () => {
119
+ if (runState.finalResponseHandledByTool)
120
+ return;
121
+ try {
122
+ await fn();
123
+ }
124
+ catch (err) {
125
+ const errMsg = err instanceof Error ? err.message : String(err);
126
+ log.logWarning(`API error (${errorContext})`, errMsg);
127
+ try {
128
+ await responder.respondDiagnostic(`Error: ${errMsg}`, { style: "error" });
129
+ }
130
+ catch {
131
+ // Ignore
132
+ }
133
+ }
134
+ });
135
+ },
136
+ };
137
+ return {
138
+ wait: () => queueChain,
139
+ dispose() {
140
+ endOutstandingOperationSpans(runState);
141
+ if (runState.toolProgressTimer)
142
+ clearTimeout(runState.toolProgressTimer);
143
+ runState.toolProgressTimer = undefined;
144
+ runState.responder = null;
145
+ runState.logCtx = null;
146
+ runState.queue = null;
147
+ },
148
+ };
149
+ }
150
+ function getFinalAssistantText(session) {
151
+ const lastAssistant = session.messages.findLast((message) => message.role === "assistant");
152
+ return contentText(lastAssistant?.content ?? []);
153
+ }
154
+ export function isEventTriggerAttribution(triggerAttribution) {
155
+ return triggerAttribution?.startsWith("[event:") === true;
156
+ }
157
+ function extractToolLabel(toolName, args) {
158
+ const label = args?.label;
159
+ const text = typeof label === "string" ? label.trim() || toolName : toolName;
160
+ // Jev judgments are calibrated probabilities, not the model's own guess;
161
+ // name the tool so the user can tell which steps came from it.
162
+ return toolName === "jev" ? `jev · ${text}` : text;
163
+ }
164
+ /** Non-subagent tool activity lines; subagent calls render as the dashboard. */
165
+ function formatToolProgress(runState) {
166
+ const lines = Array.from(runState.toolProgress.entries()).flatMap(([toolCallId, item]) => {
167
+ if (runState.subagentToolCalls.has(toolCallId))
168
+ return [];
169
+ const marker = item.status === "running" ? "•" : item.status === "error" ? "✗" : "✓";
170
+ return [`${marker} ${item.label}`];
171
+ });
172
+ return lines.join("\n");
173
+ }
174
+ function formatResponseWithToolProgress(text, runState) {
175
+ const progress = formatToolProgress(runState);
176
+ return [progress, text].filter(Boolean).join("\n\n");
177
+ }
178
+ /**
179
+ * The one dashboard render path. A responder that overrides
180
+ * `replaceSubagentProgress` converts the snapshot for a pipeline that is not
181
+ * response-source Markdown (Telegram HTML); every other platform receives the
182
+ * Markdown dashboard — "dashboard, blank line, answer" — through
183
+ * `replaceResponse`, the same conversion as any response.
184
+ */
185
+ async function replaceWithSubagentDashboard(responder, snapshot, finalText, options) {
186
+ if (responder.replaceSubagentProgress) {
187
+ await responder.replaceSubagentProgress(snapshot, finalText);
188
+ return;
189
+ }
190
+ const dashboard = renderSubagentDashboard(snapshot);
191
+ await responder.replaceResponse(finalText ? `${dashboard}\n\n${finalText}` : dashboard, options);
192
+ }
193
+ async function replaceResponseWithToolProgress(responder, runState, subagentProgress = mergeSubagentProgress([...runState.subagentProgress.values()])) {
194
+ if (subagentProgress) {
195
+ await replaceWithSubagentDashboard(responder, subagentProgress);
196
+ return;
197
+ }
198
+ const progress = formatToolProgress(runState);
199
+ if (progress)
200
+ await responder.replaceResponse(progress);
201
+ }
202
+ const TOOL_PROGRESS_DEBOUNCE_MS = 500;
203
+ const SUBAGENT_PROGRESS_THROTTLE_MS = 2000;
204
+ function subagentProgressDelay(runState) {
205
+ if (!runState.subagentProgressShown)
206
+ return 0;
207
+ return Math.max(0, runState.lastSubagentProgressAt + SUBAGENT_PROGRESS_THROTTLE_MS - Date.now());
208
+ }
209
+ /** Record that a subagent dashboard reached the channel, for throttling the next one. */
210
+ function markSubagentProgressShown(runState, snapshot) {
211
+ if (!snapshot)
212
+ return;
213
+ runState.subagentProgressShown = true;
214
+ runState.lastSubagentProgressAt = Date.now();
215
+ }
216
+ function scheduleToolProgressUpdate(responder, runState) {
217
+ if (runState.toolProgressTimer)
218
+ return;
219
+ const subagentProgress = mergeSubagentProgress([...runState.subagentProgress.values()]);
220
+ const delay = subagentProgress ? subagentProgressDelay(runState) : TOOL_PROGRESS_DEBOUNCE_MS;
221
+ runState.toolProgressTimer = setTimeout(() => {
222
+ runState.toolProgressTimer = undefined;
223
+ const snapshot = mergeSubagentProgress([...runState.subagentProgress.values()]);
224
+ markSubagentProgressShown(runState, snapshot);
225
+ runState.queue?.enqueue(() => replaceResponseWithToolProgress(responder, runState, snapshot), "tool progress update");
226
+ }, delay);
227
+ runState.toolProgressTimer.unref();
228
+ }
229
+ function flushToolProgressUpdate(responder, runState) {
230
+ if (runState.toolProgressTimer)
231
+ clearTimeout(runState.toolProgressTimer);
232
+ runState.toolProgressTimer = undefined;
233
+ const subagentProgress = mergeSubagentProgress([...runState.subagentProgress.values()]);
234
+ markSubagentProgressShown(runState, subagentProgress);
235
+ runState.queue?.enqueue(() => replaceResponseWithToolProgress(responder, runState, subagentProgress), "tool progress update");
236
+ }
237
+ function extractSubagentProgress(partialResult) {
238
+ if (!partialResult || typeof partialResult !== "object")
239
+ return undefined;
240
+ const details = partialResult.details;
241
+ if (!details || typeof details !== "object")
242
+ return undefined;
243
+ return parseSubagentProgressSnapshot(details.progress);
244
+ }
245
+ async function finalizeErrorResponse(responder, runState, options) {
246
+ if (!runState.reportedLlmError) {
247
+ runState.reportedLlmError = true;
248
+ reportUserFacingError(new Error("LLM run completed with error stop reason"), {
249
+ domain: "llm",
250
+ surface: "assistant_response",
251
+ operation: "llm_turn",
252
+ severity: "error",
253
+ platform: options?.platform,
254
+ provider: options?.model?.provider,
255
+ model: options?.model?.name,
256
+ stopReason: runState.stopReason,
257
+ context: {
258
+ sessionConversation: options?.sessionConversation,
259
+ sessionUuid: options?.sessionUuid,
260
+ hasErrorMessage: true,
261
+ llmCallCount: runState.llmCallCount,
262
+ },
263
+ });
264
+ }
265
+ try {
266
+ await responder.replaceResponse("_Sorry, something went wrong_");
267
+ await responder.respondDiagnostic(`Error: ${runState.errorMessage}`, { style: "error" });
268
+ }
269
+ catch (err) {
270
+ const errMsg = err instanceof Error ? err.message : String(err);
271
+ log.logWarning("Failed to post error message", errMsg);
272
+ reportUserFacingError(err, {
273
+ domain: "chat_platform",
274
+ surface: "final_response",
275
+ operation: "finalize_error_response",
276
+ severity: "error",
277
+ platform: options?.platform,
278
+ context: {
279
+ sessionConversation: options?.sessionConversation,
280
+ sessionUuid: options?.sessionUuid,
281
+ stopReason: runState.stopReason,
282
+ },
283
+ });
284
+ }
285
+ }
286
+ export async function finalizeRunResponse(responder, session, runState, options) {
287
+ if (runState.stopReason === "error" && runState.errorMessage) {
288
+ await finalizeErrorResponse(responder, runState, options);
289
+ return;
290
+ }
291
+ const finalText = getFinalAssistantText(session);
292
+ if (runState.finalResponseHandledByTool) {
293
+ log.logInfo("Final response already handled by tool - skipping final replacement");
294
+ return;
295
+ }
296
+ if (finalText.trim().startsWith("[SILENT]")) {
297
+ await deleteForSilentResponse(responder);
298
+ return;
299
+ }
300
+ if (!finalText.trim())
301
+ return;
302
+ const published = await publishFinalResponse(responder, runState, finalText, options);
303
+ const didWork = Object.keys(session.getLastRunStats().toolCallCounts).some((name) => !["task_status", "start_task", "react"].includes(name));
304
+ if (published && runState.stopReason === "stop" && (didWork || options?.initialTask))
305
+ await responder.notifyCompletion?.();
306
+ }
307
+ /** `[SILENT]` means the run leaves no message behind. */
308
+ async function deleteForSilentResponse(responder) {
309
+ try {
310
+ await responder.deleteResponse();
311
+ log.logInfo("Silent response - deleted message and thread");
312
+ }
313
+ catch (err) {
314
+ const errMsg = err instanceof Error ? err.message : String(err);
315
+ log.logWarning("Failed to delete message for silent response", errMsg);
316
+ }
317
+ }
318
+ /**
319
+ * The profile every completed subagent node ran under, when the run resolved
320
+ * to exactly one. A fan-out across different profiles (or any node that did
321
+ * not complete) has no single "who answered this" identity, so callers keep
322
+ * the manager's own identity rather than guessing.
323
+ */
324
+ function resolveSingleCompletedProfile(runState) {
325
+ const nodes = runState.completedSubagentProgress.flatMap((snapshot) => snapshot.nodes);
326
+ if (nodes.length === 0)
327
+ return undefined;
328
+ const profiles = new Set(nodes.map((node) => node.profile));
329
+ if (profiles.size !== 1)
330
+ return undefined;
331
+ const [profile] = profiles;
332
+ if (!profile)
333
+ return undefined;
334
+ return nodes.every((node) => node.status === "completed") ? profile : undefined;
335
+ }
336
+ /** Replace the in-progress message with the run's answer, or a subagent dashboard plus it. */
337
+ async function publishFinalResponse(responder, runState, finalText, options) {
338
+ try {
339
+ const finalResponse = appendTriggerAttribution(finalText, runState.triggerAttribution, options?.triggerSessionLink);
340
+ const finalDashboard = mergeSubagentProgress(runState.completedSubagentProgress);
341
+ if (finalDashboard) {
342
+ const resolvedProfile = resolveSingleCompletedProfile(runState);
343
+ if (resolvedProfile && responder.respondAsRole) {
344
+ await replaceWithSubagentDashboard(responder, finalDashboard, undefined, {
345
+ createOverflowLink: options?.createOverflowLink,
346
+ });
347
+ await responder.respondAsRole(resolvedProfile, finalResponse);
348
+ return true;
349
+ }
350
+ await replaceWithSubagentDashboard(responder, finalDashboard, finalResponse, {
351
+ createOverflowLink: options?.createOverflowLink,
352
+ });
353
+ return true;
354
+ }
355
+ await responder.replaceResponse(formatResponseWithToolProgress(finalResponse, runState), {
356
+ createOverflowLink: options?.createOverflowLink,
357
+ });
358
+ return true;
359
+ }
360
+ catch (err) {
361
+ const errMsg = err instanceof Error ? err.message : String(err);
362
+ log.logWarning("Failed to replace message with final text", errMsg);
363
+ reportUserFacingError(err, {
364
+ domain: "chat_platform",
365
+ surface: "final_response",
366
+ operation: "replace_final_response",
367
+ severity: "error",
368
+ platform: options?.platform,
369
+ context: {
370
+ sessionConversation: options?.sessionConversation,
371
+ sessionUuid: options?.sessionUuid,
372
+ finalTextLength: finalText.length,
373
+ },
374
+ });
375
+ return false;
376
+ }
377
+ }
378
+ export async function reportUsageSummary(ctx) {
379
+ const { session, runState, responder, platform, model, sessionConversation, sessionUuid, waitForQueue, } = ctx;
380
+ const lastAssistantMessage = session.messages.findLast((message) => message.role === "assistant" && message.stopReason !== "aborted");
381
+ const contextTokens = lastAssistantMessage
382
+ ? lastAssistantMessage.usage.input +
383
+ lastAssistantMessage.usage.output +
384
+ lastAssistantMessage.usage.cacheRead +
385
+ lastAssistantMessage.usage.cacheWrite
386
+ : 0;
387
+ const contextWindow = model.contextWindow || 200000;
388
+ const { totalUsage } = runState;
389
+ const runMetricAttributes = metricAttributes({
390
+ provider: model.provider,
391
+ model: model.id,
392
+ channel_id: sessionConversation,
393
+ session_id: sessionUuid,
394
+ stop_reason: runState.stopReason,
395
+ llm_calls: runState.llmCallCount,
396
+ });
397
+ recordDistribution("agent.run.tokens_in", totalUsage.input, {
398
+ attributes: runMetricAttributes,
399
+ });
400
+ recordDistribution("agent.run.tokens_out", totalUsage.output, {
401
+ attributes: runMetricAttributes,
402
+ });
403
+ recordDistribution("agent.run.cache_read", totalUsage.cacheRead, {
404
+ attributes: runMetricAttributes,
405
+ });
406
+ recordDistribution("agent.run.cache_write", totalUsage.cacheWrite, {
407
+ attributes: runMetricAttributes,
408
+ });
409
+ recordDistribution("agent.run.cost", totalUsage.cost.total, {
410
+ attributes: runMetricAttributes,
411
+ });
412
+ const contextUtilization = contextTokens / contextWindow;
413
+ recordGauge("agent.context.utilization", contextUtilization, {
414
+ unit: "ratio",
415
+ attributes: runMetricAttributes,
416
+ });
417
+ updateActiveSpanAttribution({
418
+ "gen_ai.request.model": model.id,
419
+ "gen_ai.response.model": runState.responseModel ?? model.id,
420
+ "gen_ai.usage.input_tokens": totalUsage.input + totalUsage.cacheRead + totalUsage.cacheWrite,
421
+ "gen_ai.usage.input_tokens.cached": totalUsage.cacheRead,
422
+ "gen_ai.usage.input_tokens.cache_write": totalUsage.cacheWrite,
423
+ "gen_ai.usage.output_tokens": totalUsage.output,
424
+ "gen_ai.usage.output_tokens.reasoning": runState.reasoningTokens,
425
+ "mikan.usage.cost_usd": totalUsage.cost.total,
426
+ "mikan.context.utilization": contextUtilization,
427
+ "mikan.llm.call_count": runState.llmCallCount,
428
+ "mikan.tool.call_count": runState.toolCallCount,
429
+ "mikan.tool.error_count": runState.toolErrorCount,
430
+ "mikan.tool.input.characters": runState.toolInputCharacters,
431
+ "mikan.tool.output.characters": runState.toolOutputCharacters,
432
+ "mikan.output.message_count": runState.assistantMessageCount,
433
+ "mikan.output.characters": runState.outputCharacters,
434
+ "mikan.retry.count": runState.retryCount,
435
+ "mikan.compaction.count": runState.compactionCount,
436
+ "mikan.budget.exceeded": runState.budgetExceeded,
437
+ ...(runState.firstTokenLatencyMs === undefined
438
+ ? {}
439
+ : { "mikan.response.first_token_ms": runState.firstTokenLatencyMs }),
440
+ });
441
+ const summary = log.logUsageSummary(runState.logCtx, runState.totalUsage, contextTokens, contextWindow);
442
+ const toolNames = Object.keys(session.getLastRunStats().toolCallCounts);
443
+ const statusOnly = toolNames.length > 0 && toolNames.every((name) => name === "task_status");
444
+ if (platform.diagnostics?.showUsageSummary === true &&
445
+ !runState.finalResponseHandledByTool &&
446
+ !statusOnly) {
447
+ runState.queue.enqueue(() => responder.respondDiagnostic(summary, { style: "muted" }), "usage summary");
448
+ await waitForQueue();
449
+ }
450
+ }
451
+ /** The joined text parts of a structured tool result, when it carries any. */
452
+ function toolResultContentText(result) {
453
+ if (!result || typeof result !== "object" || !("content" in result))
454
+ return undefined;
455
+ const content = result.content;
456
+ if (!Array.isArray(content))
457
+ return undefined;
458
+ const textParts = content
459
+ .filter((part) => part.type === "text" && part.text)
460
+ .map((part) => part.text);
461
+ return textParts.length > 0 ? textParts.join("\n") : undefined;
462
+ }
463
+ function extractToolResultText(result) {
464
+ if (typeof result === "string")
465
+ return result;
466
+ return toolResultContentText(result) ?? JSON.stringify(result);
467
+ }
468
+ function serializedLength(value) {
469
+ if (typeof value === "string")
470
+ return value.length;
471
+ try {
472
+ return JSON.stringify(value)?.length ?? 0;
473
+ }
474
+ catch {
475
+ return 0;
476
+ }
477
+ }
478
+ function toolCategory(name) {
479
+ if (["read", "write", "edit", "bash"].includes(name))
480
+ return "sandbox";
481
+ if (name === "subagent")
482
+ return "agent";
483
+ if (name.startsWith("mcp__"))
484
+ return "mcp";
485
+ if (name.startsWith("github_"))
486
+ return "github";
487
+ if (name === "slack_blockkit")
488
+ return "platform";
489
+ return "function";
490
+ }
491
+ function handleToolStart(event, context) {
492
+ const { runState, responder, logCtx, queue, baseAttrs } = context;
493
+ const args = (event.args ?? {});
494
+ const label = args.label || event.toolName;
495
+ runState.toolCallCount += 1;
496
+ runState.toolInputCharacters += serializedLength(event.args);
497
+ runState.pendingTools.set(event.toolCallId, {
498
+ toolName: event.toolName,
499
+ args: event.args,
500
+ startTime: Date.now(),
501
+ });
502
+ if (event.toolName === "start_task")
503
+ return;
504
+ if (event.toolName !== "task_status") {
505
+ runState.toolProgress.set(event.toolCallId, {
506
+ label: extractToolLabel(event.toolName, event.args),
507
+ status: "running",
508
+ });
509
+ }
510
+ if (event.toolName === "subagent") {
511
+ runState.subagentToolCalls.add(event.toolCallId);
512
+ }
513
+ else if (event.toolName !== "task_status") {
514
+ queue.enqueue(() => replaceResponseWithToolProgress(responder, runState), "tool progress update");
515
+ }
516
+ spansFor(runState).tools.set(event.toolCallId, startOperationSpan(`execute_tool ${event.toolName}`, metricAttributes({
517
+ "gen_ai.operation.name": "execute_tool",
518
+ "gen_ai.tool.name": event.toolName,
519
+ "gen_ai.tool.type": "function",
520
+ "mikan.tool.category": toolCategory(event.toolName),
521
+ "mikan.tool.input.characters": serializedLength(event.args),
522
+ "openinference.span.kind": "TOOL",
523
+ ...baseAttrs,
524
+ })));
525
+ addLifecycleEvent("agent.tool.started", { tool: event.toolName, ...baseAttrs });
526
+ log.logToolStart(logCtx, event.toolName, label, event.args);
527
+ }
528
+ function handleToolUpdate(event, context) {
529
+ const subagentProgress = extractSubagentProgress(event.partialResult);
530
+ if (!subagentProgress)
531
+ return;
532
+ context.runState.subagentProgress.set(event.toolCallId, subagentProgress);
533
+ context.runState.subagentToolCalls.add(event.toolCallId);
534
+ context.runState.suppressResponseDeltas = true;
535
+ scheduleToolProgressUpdate(context.responder, context.runState);
536
+ }
537
+ function recordToolMetrics(event, durationMs, context) {
538
+ recordCounter("agent.tool.calls", 1, metricAttributes({
539
+ tool: event.toolName,
540
+ error: String(event.isError),
541
+ ...context.baseAttrs,
542
+ }));
543
+ recordDistribution("agent.tool.duration", durationMs, {
544
+ unit: "millisecond",
545
+ attributes: metricAttributes({ tool: event.toolName, ...context.baseAttrs }),
546
+ });
547
+ addLifecycleEvent("agent.tool.completed", {
548
+ tool: event.toolName,
549
+ error: event.isError,
550
+ duration_ms: durationMs,
551
+ ...context.baseAttrs,
552
+ });
553
+ }
554
+ function handleToolEnd(event, context) {
555
+ const { runState, responder, logCtx } = context;
556
+ const resultStr = extractToolResultText(event.result);
557
+ const outputCharacters = serializedLength(event.result);
558
+ runState.toolOutputCharacters += outputCharacters;
559
+ if (event.isError)
560
+ runState.toolErrorCount += 1;
561
+ const pending = runState.pendingTools.get(event.toolCallId);
562
+ if (event.toolName === "start_task") {
563
+ runState.pendingTools.delete(event.toolCallId);
564
+ if (!event.isError)
565
+ runState.finalResponseHandledByTool = true;
566
+ else
567
+ reportUserFacingError(new Error("Task admission failed"), {
568
+ domain: "mikan",
569
+ surface: "task_handoff",
570
+ operation: "admit_task",
571
+ severity: "error",
572
+ context: { sessionId: logCtx.sessionId, toolCallId: event.toolCallId },
573
+ });
574
+ return;
575
+ }
576
+ const progress = runState.toolProgress.get(event.toolCallId);
577
+ if (progress)
578
+ progress.status = event.isError ? "error" : "done";
579
+ const subagentProgress = runState.subagentProgress.get(event.toolCallId);
580
+ if (subagentProgress) {
581
+ runState.subagentProgress.set(event.toolCallId, settleSubagentProgress(subagentProgress, event.isError));
582
+ }
583
+ if (event.toolName !== "task_status")
584
+ flushToolProgressUpdate(responder, runState);
585
+ const completedProgress = runState.subagentProgress.get(event.toolCallId);
586
+ if (completedProgress)
587
+ runState.completedSubagentProgress.push(completedProgress);
588
+ runState.subagentProgress.delete(event.toolCallId);
589
+ runState.pendingTools.delete(event.toolCallId);
590
+ const durationMs = pending ? Date.now() - pending.startTime : 0;
591
+ const toolSpan = spansFor(runState).tools.get(event.toolCallId);
592
+ toolSpan?.end({
593
+ attributes: metricAttributes({
594
+ "gen_ai.tool.name": event.toolName,
595
+ "gen_ai.tool.type": "function",
596
+ "mikan.tool.category": toolCategory(event.toolName),
597
+ "mikan.tool.output.characters": outputCharacters,
598
+ "openinference.span.kind": "TOOL",
599
+ duration_ms: durationMs,
600
+ ...context.baseAttrs,
601
+ }),
602
+ ...(event.isError ? { error: operationError("ToolError") } : {}),
603
+ });
604
+ spansFor(runState).tools.delete(event.toolCallId);
605
+ recordToolMetrics(event, durationMs, context);
606
+ if (event.isError) {
607
+ log.logToolError(logCtx, event.toolName, durationMs, resultStr);
608
+ return;
609
+ }
610
+ log.logToolSuccess(logCtx, event.toolName, durationMs, resultStr);
611
+ if (event.toolName === "slack_blockkit")
612
+ runState.finalResponseHandledByTool = true;
613
+ }
614
+ function handleMessageStart(event, context) {
615
+ if (event.message.role !== "assistant")
616
+ return;
617
+ context.runState.llmCallCount += 1;
618
+ spansFor(context.runState).llm.push({
619
+ span: startOperationSpan(`chat ${context.model.id}`, metricAttributes({
620
+ "gen_ai.operation.name": "chat",
621
+ "gen_ai.provider.name": context.model.provider,
622
+ "gen_ai.request.model": context.model.id,
623
+ "openinference.span.kind": "LLM",
624
+ "llm.provider": context.model.provider,
625
+ "llm.model_name": context.model.id,
626
+ ...context.baseAttrs,
627
+ })),
628
+ startedAt: Date.now(),
629
+ });
630
+ addLifecycleEvent("agent.llm.call.started", {
631
+ call_index: context.runState.llmCallCount,
632
+ provider: context.model.provider,
633
+ model: context.agentConfig.model,
634
+ ...context.baseAttrs,
635
+ });
636
+ log.logResponseStart(context.logCtx);
637
+ }
638
+ function handleMessageUpdate(event, context) {
639
+ const update = event.assistantMessageEvent;
640
+ if (update.type !== "text_delta" || !update.delta)
641
+ return;
642
+ const llmEntry = spansFor(context.runState).llm[0];
643
+ if (llmEntry && llmEntry.firstTokenAt === undefined) {
644
+ llmEntry.firstTokenAt = Date.now();
645
+ context.runState.firstTokenLatencyMs ??= llmEntry.firstTokenAt - llmEntry.startedAt;
646
+ }
647
+ if (context.responder.appendResponseDelta && !context.runState.suppressResponseDeltas) {
648
+ context.queue.enqueue(async () => {
649
+ await context.responder.appendResponseDelta?.(update.delta);
650
+ }, "response delta");
651
+ }
652
+ }
653
+ function recordAssistantUsage(message, context) {
654
+ if (!message.usage)
655
+ return;
656
+ const { totalUsage } = context.runState;
657
+ totalUsage.input += message.usage.input;
658
+ totalUsage.output += message.usage.output;
659
+ totalUsage.cacheRead += message.usage.cacheRead;
660
+ totalUsage.cacheWrite += message.usage.cacheWrite;
661
+ totalUsage.cost.input += message.usage.cost.input;
662
+ totalUsage.cost.output += message.usage.cost.output;
663
+ totalUsage.cost.cacheRead += message.usage.cost.cacheRead;
664
+ totalUsage.cost.cacheWrite += message.usage.cost.cacheWrite;
665
+ totalUsage.cost.total += message.usage.cost.total;
666
+ context.runState.reasoningTokens += message.usage.reasoning ?? 0;
667
+ context.runState.responseModel = message.responseModel ?? message.model;
668
+ const attributes = metricAttributes({
669
+ provider: context.model.provider,
670
+ model: context.agentConfig.model,
671
+ ...context.baseAttrs,
672
+ stop_reason: message.stopReason,
673
+ error: Boolean(message.errorMessage),
674
+ });
675
+ recordCounter("agent.llm.calls", 1, attributes);
676
+ recordDistribution("agent.llm.tokens_in", message.usage.input, { attributes });
677
+ recordDistribution("agent.llm.tokens_out", message.usage.output, { attributes });
678
+ if (message.usage.cacheRead > 0) {
679
+ recordDistribution("agent.llm.cache_read", message.usage.cacheRead, { attributes });
680
+ }
681
+ if (message.usage.cacheWrite > 0) {
682
+ recordDistribution("agent.llm.cache_write", message.usage.cacheWrite, { attributes });
683
+ }
684
+ recordDistribution("agent.llm.cost_per_turn", message.usage.cost.total, { attributes });
685
+ addLifecycleEvent("agent.llm.call.completed", {
686
+ call_index: context.runState.llmCallCount,
687
+ provider: context.model.provider,
688
+ model: context.agentConfig.model,
689
+ stop_reason: message.stopReason,
690
+ error: Boolean(message.errorMessage),
691
+ input_tokens: message.usage.input,
692
+ output_tokens: message.usage.output,
693
+ cost_total_usd: message.usage.cost.total,
694
+ });
695
+ }
696
+ /** Stream one thinking block to the channel and the diagnostic surface. */
697
+ function presentThinking(thinking, context) {
698
+ log.logThinking(context.logCtx, thinking);
699
+ context.queue.enqueue(() => context.responder.respond(`_${thinking}_`), "thinking main");
700
+ context.queue.enqueue(() => context.responder.respondDiagnostic(`_${thinking}_`), "thinking diagnostic");
701
+ }
702
+ /** Emit the assistant's answer as the run's final message. */
703
+ function presentFinalText(text, context) {
704
+ const finalText = appendTriggerAttribution(formatResponseWithToolProgress(text, context.runState), context.runState.triggerAttribution);
705
+ log.logResponse(context.logCtx, text);
706
+ // Subagent dashboard finalization must preserve "dashboard, blank line, answer".
707
+ if (context.runState.completedSubagentProgress.length > 0)
708
+ return;
709
+ if (context.responder.finishResponse) {
710
+ context.queue.enqueue(async () => {
711
+ await context.responder.finishResponse?.(finalText);
712
+ }, "response finish");
713
+ }
714
+ else {
715
+ context.queue.enqueue(() => context.responder.respond(finalText), "response main");
716
+ }
717
+ }
718
+ function presentAssistantMessage(message, context) {
719
+ const thinkingParts = [];
720
+ const textParts = [];
721
+ const hasToolCall = message.content.some((part) => ["tool_use", "toolCall", "tool-call"].includes(part.type ?? ""));
722
+ for (const part of message.content) {
723
+ if (part.type === "thinking")
724
+ thinkingParts.push(part.thinking);
725
+ else if (part.type === "text")
726
+ textParts.push(part.text);
727
+ }
728
+ for (const thinking of thinkingParts)
729
+ presentThinking(thinking, context);
730
+ const text = textParts.join("\n");
731
+ if (!text.trim() || hasToolCall || context.runState.finalResponseHandledByTool)
732
+ return;
733
+ presentFinalText(text, context);
734
+ }
735
+ function handleMessageEnd(event, context) {
736
+ if (event.message.role !== "assistant")
737
+ return;
738
+ const message = event.message;
739
+ context.runState.assistantMessageCount += 1;
740
+ context.runState.outputCharacters += message.content.reduce((total, part) => total + (part.type === "text" ? part.text.length : 0), 0);
741
+ if (message.stopReason) {
742
+ context.runState.stopReason = message.stopReason;
743
+ // The settling message clears any stale error left by a recovered retry.
744
+ context.runState.errorMessage = message.errorMessage;
745
+ }
746
+ recordAssistantUsage(message, context);
747
+ const llmEntry = spansFor(context.runState).llm.shift();
748
+ const inputTokens = message.usage
749
+ ? message.usage.input + message.usage.cacheRead + message.usage.cacheWrite
750
+ : undefined;
751
+ llmEntry?.span.end({
752
+ attributes: metricAttributes({
753
+ "gen_ai.provider.name": context.model.provider,
754
+ "gen_ai.request.model": context.model.id,
755
+ "gen_ai.response.model": message.responseModel ?? message.model,
756
+ "gen_ai.usage.input_tokens": inputTokens,
757
+ "gen_ai.usage.output_tokens": message.usage?.output,
758
+ "gen_ai.usage.input_tokens.cached": message.usage?.cacheRead,
759
+ "gen_ai.usage.input_tokens.cache_write": message.usage?.cacheWrite,
760
+ "gen_ai.usage.output_tokens.reasoning": message.usage?.reasoning,
761
+ "mikan.usage.cost_usd": message.usage?.cost.total,
762
+ "mikan.response.first_token_ms": llmEntry?.firstTokenAt === undefined
763
+ ? undefined
764
+ : llmEntry.firstTokenAt - llmEntry.startedAt,
765
+ "mikan.output.characters": message.content.reduce((total, part) => total + (part.type === "text" ? part.text.length : 0), 0),
766
+ "openinference.span.kind": "LLM",
767
+ "llm.provider": context.model.provider,
768
+ "llm.model_name": context.model.id,
769
+ "llm.token_count.prompt": inputTokens,
770
+ "llm.token_count.completion": message.usage?.output,
771
+ "llm.token_count.total": inputTokens !== undefined && message.usage ? inputTokens + message.usage.output : undefined,
772
+ "llm.token_count.prompt_details.cache_read": message.usage?.cacheRead,
773
+ "llm.token_count.prompt_details.cache_write": message.usage?.cacheWrite,
774
+ stop_reason: message.stopReason,
775
+ ...context.baseAttrs,
776
+ }),
777
+ ...(message.errorMessage ? { error: operationError("LLMError") } : {}),
778
+ });
779
+ presentAssistantMessage(message, context);
780
+ }
781
+ function handleLifecycleEvent(event, context) {
782
+ if (event.type === "compaction_start") {
783
+ context.runState.compactionCount += 1;
784
+ const text = "_Compacting context..._";
785
+ log.logInfo(`Auto-compaction started (reason: ${event.reason})`);
786
+ context.queue.enqueue(() => context.responder.respond(text), "compaction start");
787
+ return;
788
+ }
789
+ if (event.type === "compaction_end") {
790
+ if (event.result) {
791
+ log.logInfo(`Auto-compaction complete: ${event.result.tokensBefore} tokens compacted`);
792
+ }
793
+ else if (event.aborted) {
794
+ log.logInfo("Auto-compaction aborted");
795
+ }
796
+ return;
797
+ }
798
+ if (event.type === "auto_retry_start") {
799
+ context.runState.retryCount += 1;
800
+ log.logWarning(`Retrying (${event.attempt}/${event.maxAttempts})`, event.errorMessage);
801
+ const text = `_Retrying (${event.attempt}/${event.maxAttempts})..._`;
802
+ context.queue.enqueue(() => context.responder.respond(text), "retry");
803
+ return;
804
+ }
805
+ context.runState.budgetExceeded = true;
806
+ log.logWarning("Run stopped by budget circuit breaker", `${event.reason} (tokens=${event.tokens}, cost=${event.costUsd.toFixed(2)}, calls=${event.llmCalls}, ${event.durationMs}ms)`);
807
+ const text = `_Stopped: run budget exceeded (${event.reason})_`;
808
+ context.queue.enqueue(() => context.responder.respondDiagnostic(text, { style: "error" }), "budget exceeded");
809
+ }
810
+ function handlePresenterEvent(event, context) {
811
+ switch (event.type) {
812
+ case "tool_execution_start":
813
+ handleToolStart(event, context);
814
+ return;
815
+ case "tool_execution_update":
816
+ handleToolUpdate(event, context);
817
+ return;
818
+ case "tool_execution_end":
819
+ handleToolEnd(event, context);
820
+ return;
821
+ case "message_start":
822
+ handleMessageStart(event, context);
823
+ return;
824
+ case "message_update":
825
+ handleMessageUpdate(event, context);
826
+ return;
827
+ case "message_end":
828
+ handleMessageEnd(event, context);
829
+ return;
830
+ case "compaction_start":
831
+ case "compaction_end":
832
+ case "auto_retry_start":
833
+ case "budget_exceeded":
834
+ handleLifecycleEvent(event, context);
835
+ return;
836
+ default:
837
+ return;
838
+ }
839
+ }
840
+ export function attachSessionEventHandlers(params) {
841
+ const { session, runState, model, agentConfig } = params;
842
+ session.subscribe((event) => {
843
+ if (!runState.responder || !runState.logCtx || !runState.queue)
844
+ return;
845
+ handlePresenterEvent(event, {
846
+ runState,
847
+ responder: runState.responder,
848
+ logCtx: runState.logCtx,
849
+ queue: runState.queue,
850
+ baseAttrs: {
851
+ channel_id: runState.logCtx.conversationId,
852
+ session_id: runState.logCtx.sessionId,
853
+ },
854
+ model,
855
+ agentConfig,
856
+ });
857
+ });
858
+ }
859
+ //# sourceMappingURL=presenter.js.map