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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (900) hide show
  1. package/CHANGELOG.md +1149 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +12 -9
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +158 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +17 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +121 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +9 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +136 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +39 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +4 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +35 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -1
  30. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  31. package/dist/adapters/commands/sandbox.js +125 -0
  32. package/dist/adapters/commands/sandbox.js.map +1 -0
  33. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  34. package/dist/{commands → adapters/commands}/session-view.js +21 -16
  35. package/dist/adapters/commands/session-view.js.map +1 -0
  36. package/dist/adapters/commands/types.d.ts +105 -0
  37. package/dist/adapters/commands/types.d.ts.map +1 -0
  38. package/dist/adapters/commands/types.js.map +1 -0
  39. package/dist/adapters/commands/utils.d.ts +11 -0
  40. package/dist/adapters/commands/utils.d.ts.map +1 -0
  41. package/dist/{commands → adapters/commands}/utils.js +15 -1
  42. package/dist/adapters/commands/utils.js.map +1 -0
  43. package/dist/adapters/discord/bot.d.ts +10 -17
  44. package/dist/adapters/discord/bot.d.ts.map +1 -1
  45. package/dist/adapters/discord/bot.js +232 -297
  46. package/dist/adapters/discord/bot.js.map +1 -1
  47. package/dist/adapters/discord/components.d.ts +4 -0
  48. package/dist/adapters/discord/components.d.ts.map +1 -0
  49. package/dist/adapters/discord/components.js +9 -0
  50. package/dist/adapters/discord/components.js.map +1 -0
  51. package/dist/adapters/discord/context.d.ts +3 -7
  52. package/dist/adapters/discord/context.d.ts.map +1 -1
  53. package/dist/adapters/discord/context.js +55 -219
  54. package/dist/adapters/discord/context.js.map +1 -1
  55. package/dist/adapters/discord/format.d.ts +2 -0
  56. package/dist/adapters/discord/format.d.ts.map +1 -0
  57. package/dist/adapters/discord/format.js +47 -0
  58. package/dist/adapters/discord/format.js.map +1 -0
  59. package/dist/adapters/discord/types.d.ts +90 -1
  60. package/dist/adapters/discord/types.d.ts.map +1 -1
  61. package/dist/adapters/discord/types.js.map +1 -1
  62. package/dist/adapters/github/bot.d.ts +25 -9
  63. package/dist/adapters/github/bot.d.ts.map +1 -1
  64. package/dist/adapters/github/bot.js +326 -154
  65. package/dist/adapters/github/bot.js.map +1 -1
  66. package/dist/adapters/github/client.d.ts +35 -23
  67. package/dist/adapters/github/client.d.ts.map +1 -1
  68. package/dist/adapters/github/client.js +121 -28
  69. package/dist/adapters/github/client.js.map +1 -1
  70. package/dist/adapters/github/context.d.ts +3 -8
  71. package/dist/adapters/github/context.d.ts.map +1 -1
  72. package/dist/adapters/github/context.js +64 -131
  73. package/dist/adapters/github/context.js.map +1 -1
  74. package/dist/adapters/github/github-ops.d.ts +22 -0
  75. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  76. package/dist/adapters/github/github-ops.js +277 -0
  77. package/dist/adapters/github/github-ops.js.map +1 -0
  78. package/dist/adapters/github/ids.d.ts +2 -23
  79. package/dist/adapters/github/ids.d.ts.map +1 -1
  80. package/dist/adapters/github/ids.js +6 -36
  81. package/dist/adapters/github/ids.js.map +1 -1
  82. package/dist/adapters/github/repo.d.ts +8 -0
  83. package/dist/adapters/github/repo.d.ts.map +1 -0
  84. package/dist/adapters/github/repo.js +92 -0
  85. package/dist/adapters/github/repo.js.map +1 -0
  86. package/dist/adapters/github/tool-pack.d.ts +4 -0
  87. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  88. package/dist/adapters/github/tool-pack.js +45 -0
  89. package/dist/adapters/github/tool-pack.js.map +1 -0
  90. package/dist/adapters/github/tools/checks.d.ts +14 -0
  91. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  92. package/dist/adapters/github/tools/checks.js +80 -0
  93. package/dist/adapters/github/tools/checks.js.map +1 -0
  94. package/dist/adapters/github/tools/issue.d.ts +18 -0
  95. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  96. package/dist/adapters/github/tools/issue.js +44 -0
  97. package/dist/adapters/github/tools/issue.js.map +1 -0
  98. package/dist/adapters/github/tools/pr.d.ts +17 -0
  99. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  100. package/dist/adapters/github/tools/pr.js +42 -0
  101. package/dist/adapters/github/tools/pr.js.map +1 -0
  102. package/dist/adapters/github/tools/read.d.ts +17 -0
  103. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  104. package/dist/adapters/github/tools/read.js +134 -0
  105. package/dist/adapters/github/tools/read.js.map +1 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts +14 -0
  107. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  108. package/dist/adapters/github/tools/review-reply.js +34 -0
  109. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  110. package/dist/adapters/github/tools/sync.d.ts +13 -0
  111. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  112. package/dist/adapters/github/tools/sync.js +29 -0
  113. package/dist/adapters/github/tools/sync.js.map +1 -0
  114. package/dist/adapters/github/types.d.ts +197 -18
  115. package/dist/adapters/github/types.d.ts.map +1 -1
  116. package/dist/adapters/github/types.js.map +1 -1
  117. package/dist/adapters/github/webhook.d.ts +6 -0
  118. package/dist/adapters/github/webhook.d.ts.map +1 -0
  119. package/dist/adapters/github/webhook.js +62 -0
  120. package/dist/adapters/github/webhook.js.map +1 -0
  121. package/dist/adapters/intake.d.ts +4 -10
  122. package/dist/adapters/intake.d.ts.map +1 -1
  123. package/dist/adapters/intake.js +74 -31
  124. package/dist/adapters/intake.js.map +1 -1
  125. package/dist/adapters/markdown-tables.d.ts +8 -0
  126. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  127. package/dist/adapters/markdown-tables.js +111 -0
  128. package/dist/adapters/markdown-tables.js.map +1 -0
  129. package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  130. package/dist/adapters/messages.d.ts.map +1 -0
  131. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  132. package/dist/adapters/messages.js.map +1 -0
  133. package/dist/adapters/progressive-renderer.d.ts +7 -0
  134. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  135. package/dist/adapters/progressive-renderer.js +423 -0
  136. package/dist/adapters/progressive-renderer.js.map +1 -0
  137. package/dist/adapters/shared.d.ts +24 -53
  138. package/dist/adapters/shared.d.ts.map +1 -1
  139. package/dist/adapters/shared.js +140 -91
  140. package/dist/adapters/shared.js.map +1 -1
  141. package/dist/adapters/slack/assistant.d.ts +23 -0
  142. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  143. package/dist/adapters/slack/assistant.js +109 -0
  144. package/dist/adapters/slack/assistant.js.map +1 -0
  145. package/dist/adapters/slack/auto-reply-context.d.ts +14 -0
  146. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  147. package/dist/adapters/slack/auto-reply-context.js +21 -0
  148. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  149. package/dist/adapters/slack/blocks.d.ts +5 -0
  150. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  151. package/dist/adapters/slack/blocks.js +84 -148
  152. package/dist/adapters/slack/blocks.js.map +1 -1
  153. package/dist/adapters/slack/bot.d.ts +51 -39
  154. package/dist/adapters/slack/bot.d.ts.map +1 -1
  155. package/dist/adapters/slack/bot.js +892 -567
  156. package/dist/adapters/slack/bot.js.map +1 -1
  157. package/dist/adapters/slack/context.d.ts +3 -9
  158. package/dist/adapters/slack/context.d.ts.map +1 -1
  159. package/dist/adapters/slack/context.js +8 -17
  160. package/dist/adapters/slack/context.js.map +1 -1
  161. package/dist/adapters/slack/jev-context.d.ts +17 -0
  162. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  163. package/dist/adapters/slack/jev-context.js +57 -0
  164. package/dist/adapters/slack/jev-context.js.map +1 -0
  165. package/dist/adapters/slack/markdown.d.ts +2 -0
  166. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  167. package/dist/adapters/slack/markdown.js +43 -0
  168. package/dist/adapters/slack/markdown.js.map +1 -0
  169. package/dist/adapters/slack/persona.d.ts +6 -0
  170. package/dist/adapters/slack/persona.d.ts.map +1 -0
  171. package/dist/adapters/slack/persona.js +13 -0
  172. package/dist/adapters/slack/persona.js.map +1 -0
  173. package/dist/adapters/slack/response-lifecycle.d.ts +3 -4
  174. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  175. package/dist/adapters/slack/response-lifecycle.js +221 -347
  176. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  177. package/dist/adapters/slack/session.d.ts +3 -2
  178. package/dist/adapters/slack/session.d.ts.map +1 -1
  179. package/dist/adapters/slack/session.js +9 -13
  180. package/dist/adapters/slack/session.js.map +1 -1
  181. package/dist/adapters/slack/stream-limits.d.ts +10 -0
  182. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  183. package/dist/adapters/slack/stream-limits.js +22 -0
  184. package/dist/adapters/slack/stream-limits.js.map +1 -0
  185. package/dist/adapters/slack/task-intent.d.ts +19 -0
  186. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  187. package/dist/adapters/slack/task-intent.js +65 -0
  188. package/dist/adapters/slack/task-intent.js.map +1 -0
  189. package/dist/adapters/slack/task-status.d.ts +6 -0
  190. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  191. package/dist/adapters/slack/task-status.js +100 -0
  192. package/dist/adapters/slack/task-status.js.map +1 -0
  193. package/dist/adapters/slack/tool-pack.d.ts +4 -0
  194. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  195. package/dist/adapters/slack/tool-pack.js +40 -0
  196. package/dist/adapters/slack/tool-pack.js.map +1 -0
  197. package/dist/adapters/slack/tools/blockkit.d.ts +17 -0
  198. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.js +98 -0
  200. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  201. package/dist/adapters/slack/types.d.ts +91 -5
  202. package/dist/adapters/slack/types.d.ts.map +1 -1
  203. package/dist/adapters/slack/types.js.map +1 -1
  204. package/dist/adapters/slack/update-diagnostics.d.ts +13 -0
  205. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  206. package/dist/adapters/slack/update-diagnostics.js +128 -0
  207. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  208. package/dist/adapters/telegram/bot.d.ts +8 -18
  209. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  210. package/dist/adapters/telegram/bot.js +114 -232
  211. package/dist/adapters/telegram/bot.js.map +1 -1
  212. package/dist/adapters/telegram/context.d.ts +3 -7
  213. package/dist/adapters/telegram/context.d.ts.map +1 -1
  214. package/dist/adapters/telegram/context.js +47 -191
  215. package/dist/adapters/telegram/context.js.map +1 -1
  216. package/dist/adapters/telegram/types.d.ts +24 -1
  217. package/dist/adapters/telegram/types.d.ts.map +1 -1
  218. package/dist/adapters/telegram/types.js.map +1 -1
  219. package/dist/adapters/types.d.ts +89 -16
  220. package/dist/adapters/types.d.ts.map +1 -1
  221. package/dist/adapters/types.js.map +1 -1
  222. package/dist/adapters/web/admin/client-assets.d.ts +4 -0
  223. package/dist/adapters/web/admin/client-assets.d.ts.map +1 -0
  224. package/dist/adapters/web/admin/client-assets.js +1766 -0
  225. package/dist/adapters/web/admin/client-assets.js.map +1 -0
  226. package/dist/adapters/web/admin/portal.d.ts +27 -0
  227. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  228. package/dist/adapters/web/admin/portal.js +1506 -0
  229. package/dist/adapters/web/admin/portal.js.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  231. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  232. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  233. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  234. package/dist/adapters/web/admin/types.d.ts +56 -0
  235. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  236. package/dist/adapters/web/admin/types.js.map +1 -0
  237. package/dist/adapters/web/login/oauth.d.ts +4 -0
  238. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  239. package/dist/{web → adapters/web}/login/oauth.js +61 -100
  240. package/dist/adapters/web/login/oauth.js.map +1 -0
  241. package/dist/adapters/web/login/portal.d.ts +10 -0
  242. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  243. package/dist/{web → adapters/web}/login/portal.js +169 -159
  244. package/dist/adapters/web/login/portal.js.map +1 -0
  245. package/dist/{web → adapters/web}/login/types.d.ts +1 -17
  246. package/dist/adapters/web/login/types.d.ts.map +1 -0
  247. package/dist/adapters/web/login/types.js.map +1 -0
  248. package/dist/adapters/web/portal-shell.d.ts +9 -0
  249. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  250. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +73 -11
  251. package/dist/adapters/web/portal-shell.js.map +1 -0
  252. package/dist/adapters/web/server.d.ts +33 -0
  253. package/dist/adapters/web/server.d.ts.map +1 -0
  254. package/dist/{web → adapters/web}/server.js +15 -9
  255. package/dist/adapters/web/server.js.map +1 -0
  256. package/dist/adapters/web/session-view/portal.d.ts +19 -0
  257. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  258. package/dist/{web → adapters/web}/session-view/portal.js +641 -181
  259. package/dist/adapters/web/session-view/portal.js.map +1 -0
  260. package/dist/{web → adapters/web}/session-view/types.d.ts +1 -6
  261. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  262. package/dist/adapters/web/session-view/types.js.map +1 -0
  263. package/dist/{web → adapters/web}/token-store.d.ts +0 -3
  264. package/dist/adapters/web/token-store.d.ts.map +1 -0
  265. package/dist/{web → adapters/web}/token-store.js +1 -3
  266. package/dist/adapters/web/token-store.js.map +1 -0
  267. package/dist/adapters/web/types.d.ts.map +1 -0
  268. package/dist/adapters/web/types.js.map +1 -0
  269. package/dist/cli/arg-grammar.d.ts +8 -0
  270. package/dist/cli/arg-grammar.d.ts.map +1 -0
  271. package/dist/cli/arg-grammar.js +47 -0
  272. package/dist/cli/arg-grammar.js.map +1 -0
  273. package/dist/cli/boot.d.ts +4 -0
  274. package/dist/cli/boot.d.ts.map +1 -0
  275. package/dist/cli/boot.js +81 -0
  276. package/dist/cli/boot.js.map +1 -0
  277. package/dist/cli/download.d.ts.map +1 -0
  278. package/dist/cli/download.js +84 -0
  279. package/dist/cli/download.js.map +1 -0
  280. package/dist/cli/office.d.ts +2 -0
  281. package/dist/cli/office.d.ts.map +1 -0
  282. package/dist/cli/office.js +151 -0
  283. package/dist/cli/office.js.map +1 -0
  284. package/dist/cli/onboard.d.ts +8 -0
  285. package/dist/cli/onboard.d.ts.map +1 -0
  286. package/dist/cli/onboard.js +195 -0
  287. package/dist/cli/onboard.js.map +1 -0
  288. package/dist/cli/process-lifecycle.d.ts +14 -0
  289. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  290. package/dist/cli/process-lifecycle.js +61 -0
  291. package/dist/cli/process-lifecycle.js.map +1 -0
  292. package/dist/cli/sandbox.d.ts +3 -0
  293. package/dist/cli/sandbox.d.ts.map +1 -0
  294. package/dist/cli/sandbox.js +80 -0
  295. package/dist/cli/sandbox.js.map +1 -0
  296. package/dist/cli/sessions.d.ts +2 -0
  297. package/dist/cli/sessions.d.ts.map +1 -0
  298. package/dist/cli/sessions.js +78 -0
  299. package/dist/cli/sessions.js.map +1 -0
  300. package/dist/cli/types.d.ts +21 -0
  301. package/dist/cli/types.d.ts.map +1 -0
  302. package/dist/cli/types.js.map +1 -0
  303. package/dist/env-manifest.d.ts +17 -0
  304. package/dist/env-manifest.d.ts.map +1 -0
  305. package/dist/env-manifest.js +249 -0
  306. package/dist/env-manifest.js.map +1 -0
  307. package/dist/events/index.d.ts +122 -0
  308. package/dist/events/index.d.ts.map +1 -0
  309. package/dist/events/index.js +299 -0
  310. package/dist/events/index.js.map +1 -0
  311. package/dist/events/scheduler.d.ts +25 -0
  312. package/dist/events/scheduler.d.ts.map +1 -0
  313. package/dist/events/scheduler.js +223 -0
  314. package/dist/events/scheduler.js.map +1 -0
  315. package/dist/file-guards.d.ts +13 -0
  316. package/dist/file-guards.d.ts.map +1 -0
  317. package/dist/file-guards.js +104 -0
  318. package/dist/file-guards.js.map +1 -0
  319. package/dist/harness/execution-env.d.ts +4 -0
  320. package/dist/harness/execution-env.d.ts.map +1 -0
  321. package/dist/harness/execution-env.js +245 -0
  322. package/dist/harness/execution-env.js.map +1 -0
  323. package/dist/harness/execution-resolver.d.ts +23 -0
  324. package/dist/harness/execution-resolver.d.ts.map +1 -0
  325. package/dist/harness/execution-resolver.js +156 -0
  326. package/dist/harness/execution-resolver.js.map +1 -0
  327. package/dist/harness/http.d.ts +0 -12
  328. package/dist/harness/http.d.ts.map +1 -1
  329. package/dist/harness/http.js +0 -34
  330. package/dist/harness/http.js.map +1 -1
  331. package/dist/harness/index.d.ts +19 -17
  332. package/dist/harness/index.d.ts.map +1 -1
  333. package/dist/harness/index.js +12 -15
  334. package/dist/harness/index.js.map +1 -1
  335. package/dist/harness/jev.d.ts +67 -0
  336. package/dist/harness/jev.d.ts.map +1 -0
  337. package/dist/harness/jev.js +135 -0
  338. package/dist/harness/jev.js.map +1 -0
  339. package/dist/harness/mcp-result.d.ts +20 -0
  340. package/dist/harness/mcp-result.d.ts.map +1 -0
  341. package/dist/harness/mcp-result.js +179 -0
  342. package/dist/harness/mcp-result.js.map +1 -0
  343. package/dist/harness/mcp.d.ts +17 -0
  344. package/dist/harness/mcp.d.ts.map +1 -0
  345. package/dist/harness/mcp.js +243 -0
  346. package/dist/harness/mcp.js.map +1 -0
  347. package/dist/harness/models.d.ts +2 -19
  348. package/dist/harness/models.d.ts.map +1 -1
  349. package/dist/harness/models.js +42 -94
  350. package/dist/harness/models.js.map +1 -1
  351. package/dist/harness/open-connector.d.ts +12 -0
  352. package/dist/harness/open-connector.d.ts.map +1 -0
  353. package/dist/harness/open-connector.js +160 -0
  354. package/dist/harness/open-connector.js.map +1 -0
  355. package/dist/harness/presenter.d.ts +11 -0
  356. package/dist/harness/presenter.d.ts.map +1 -0
  357. package/dist/harness/presenter.js +824 -0
  358. package/dist/harness/presenter.js.map +1 -0
  359. package/dist/harness/prompt.d.ts +18 -0
  360. package/dist/harness/prompt.d.ts.map +1 -0
  361. package/dist/harness/prompt.js +403 -0
  362. package/dist/harness/prompt.js.map +1 -0
  363. package/dist/harness/runner.d.ts +2 -123
  364. package/dist/harness/runner.d.ts.map +1 -1
  365. package/dist/harness/runner.js +547 -415
  366. package/dist/harness/runner.js.map +1 -1
  367. package/dist/harness/session.d.ts +98 -0
  368. package/dist/harness/session.d.ts.map +1 -0
  369. package/dist/harness/session.js +645 -0
  370. package/dist/harness/session.js.map +1 -0
  371. package/dist/harness/skills.d.ts +7 -41
  372. package/dist/harness/skills.d.ts.map +1 -1
  373. package/dist/harness/skills.js +101 -55
  374. package/dist/harness/skills.js.map +1 -1
  375. package/dist/harness/subagent-profiles.d.ts +3 -0
  376. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  377. package/dist/harness/subagent-profiles.js +260 -0
  378. package/dist/harness/subagent-profiles.js.map +1 -0
  379. package/dist/harness/subagent.d.ts +39 -0
  380. package/dist/harness/subagent.d.ts.map +1 -0
  381. package/dist/harness/subagent.js +618 -0
  382. package/dist/harness/subagent.js.map +1 -0
  383. package/dist/harness/tool-args.d.ts +2 -0
  384. package/dist/harness/tool-args.d.ts.map +1 -0
  385. package/dist/harness/tool-args.js +20 -0
  386. package/dist/harness/tool-args.js.map +1 -0
  387. package/dist/harness/tools/attach.d.ts +13 -0
  388. package/dist/harness/tools/attach.d.ts.map +1 -0
  389. package/dist/{adapters/slack → harness}/tools/attach.js +2 -2
  390. package/dist/harness/tools/attach.js.map +1 -0
  391. package/dist/harness/tools/event.d.ts +28 -0
  392. package/dist/harness/tools/event.d.ts.map +1 -0
  393. package/dist/harness/tools/event.js +166 -0
  394. package/dist/harness/tools/event.js.map +1 -0
  395. package/dist/harness/tools/generate-image.d.ts +20 -0
  396. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  397. package/dist/harness/tools/generate-image.js +68 -0
  398. package/dist/harness/tools/generate-image.js.map +1 -0
  399. package/dist/harness/tools/host-fn-tool.d.ts +14 -0
  400. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  401. package/dist/harness/tools/host-fn-tool.js +39 -0
  402. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  403. package/dist/harness/tools/index.d.ts +34 -0
  404. package/dist/harness/tools/index.d.ts.map +1 -0
  405. package/dist/harness/tools/index.js +49 -0
  406. package/dist/harness/tools/index.js.map +1 -0
  407. package/dist/harness/tools/jev-browser.d.ts +42 -0
  408. package/dist/harness/tools/jev-browser.d.ts.map +1 -0
  409. package/dist/harness/tools/jev-browser.js +547 -0
  410. package/dist/harness/tools/jev-browser.js.map +1 -0
  411. package/dist/harness/tools/jev.d.ts +15 -0
  412. package/dist/harness/tools/jev.d.ts.map +1 -0
  413. package/dist/harness/tools/jev.js +98 -0
  414. package/dist/harness/tools/jev.js.map +1 -0
  415. package/dist/harness/tools/pi-tools.d.ts +8 -0
  416. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  417. package/dist/harness/tools/pi-tools.js +55 -0
  418. package/dist/harness/tools/pi-tools.js.map +1 -0
  419. package/dist/harness/tools/react.d.ts +11 -0
  420. package/dist/harness/tools/react.d.ts.map +1 -0
  421. package/dist/harness/tools/react.js +24 -0
  422. package/dist/harness/tools/react.js.map +1 -0
  423. package/dist/harness/tools/sandbox.d.ts +24 -0
  424. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  425. package/dist/{tools → harness/tools}/sandbox.js +15 -9
  426. package/dist/harness/tools/sandbox.js.map +1 -0
  427. package/dist/harness/tools/secret-redaction.d.ts +9 -0
  428. package/dist/harness/tools/secret-redaction.d.ts.map +1 -0
  429. package/dist/harness/tools/secret-redaction.js +44 -0
  430. package/dist/harness/tools/secret-redaction.js.map +1 -0
  431. package/dist/harness/tools/subagent.d.ts +51 -0
  432. package/dist/harness/tools/subagent.d.ts.map +1 -0
  433. package/dist/harness/tools/subagent.js +581 -0
  434. package/dist/harness/tools/subagent.js.map +1 -0
  435. package/dist/harness/tools/task.d.ts +22 -0
  436. package/dist/harness/tools/task.d.ts.map +1 -0
  437. package/dist/harness/tools/task.js +80 -0
  438. package/dist/harness/tools/task.js.map +1 -0
  439. package/dist/harness/tools/types.d.ts +14 -0
  440. package/dist/harness/tools/types.d.ts.map +1 -0
  441. package/dist/harness/tools/types.js.map +1 -0
  442. package/dist/harness/types.d.ts +345 -29
  443. package/dist/harness/types.d.ts.map +1 -1
  444. package/dist/harness/types.js +1 -1
  445. package/dist/harness/types.js.map +1 -1
  446. package/dist/index.d.ts +36 -9
  447. package/dist/index.d.ts.map +1 -1
  448. package/dist/index.js +19 -7
  449. package/dist/index.js.map +1 -1
  450. package/dist/log.d.ts +0 -1
  451. package/dist/log.d.ts.map +1 -1
  452. package/dist/log.js +3 -13
  453. package/dist/log.js.map +1 -1
  454. package/dist/main.js +300 -217
  455. package/dist/main.js.map +1 -1
  456. package/dist/memory-capture/index.d.ts +15 -0
  457. package/dist/memory-capture/index.d.ts.map +1 -0
  458. package/dist/memory-capture/index.js +199 -0
  459. package/dist/memory-capture/index.js.map +1 -0
  460. package/dist/memory-capture/types.d.ts +27 -0
  461. package/dist/memory-capture/types.d.ts.map +1 -0
  462. package/dist/memory-capture/types.js +2 -0
  463. package/dist/memory-capture/types.js.map +1 -0
  464. package/dist/observability/index.d.ts +30 -0
  465. package/dist/observability/index.d.ts.map +1 -0
  466. package/dist/observability/index.js +273 -0
  467. package/dist/observability/index.js.map +1 -0
  468. package/dist/observability/instrument.js +9 -6
  469. package/dist/observability/instrument.js.map +1 -1
  470. package/dist/observability/otel.d.ts +10 -0
  471. package/dist/observability/otel.d.ts.map +1 -0
  472. package/dist/observability/otel.js +182 -0
  473. package/dist/observability/otel.js.map +1 -0
  474. package/dist/observability/sentry.d.ts +32 -13
  475. package/dist/observability/sentry.d.ts.map +1 -1
  476. package/dist/observability/sentry.js +85 -58
  477. package/dist/observability/sentry.js.map +1 -1
  478. package/dist/observability/types.d.ts +30 -3
  479. package/dist/observability/types.d.ts.map +1 -1
  480. package/dist/observability/types.js.map +1 -1
  481. package/dist/office/index.d.ts +74 -0
  482. package/dist/office/index.d.ts.map +1 -0
  483. package/dist/office/index.js +971 -0
  484. package/dist/office/index.js.map +1 -0
  485. package/dist/office/projection.d.ts +11 -0
  486. package/dist/office/projection.d.ts.map +1 -0
  487. package/dist/office/projection.js +146 -0
  488. package/dist/office/projection.js.map +1 -0
  489. package/dist/office/types.d.ts +55 -0
  490. package/dist/office/types.d.ts.map +1 -0
  491. package/dist/office/types.js +2 -0
  492. package/dist/office/types.js.map +1 -0
  493. package/dist/runtime/conversation-runtime.d.ts +0 -1
  494. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  495. package/dist/runtime/conversation-runtime.js +375 -152
  496. package/dist/runtime/conversation-runtime.js.map +1 -1
  497. package/dist/runtime/session-lifecycle.d.ts +66 -0
  498. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  499. package/dist/runtime/session-lifecycle.js +393 -0
  500. package/dist/runtime/session-lifecycle.js.map +1 -0
  501. package/dist/runtime/types.d.ts +41 -17
  502. package/dist/runtime/types.d.ts.map +1 -1
  503. package/dist/runtime/types.js.map +1 -1
  504. package/dist/sandbox/cloudflare.d.ts +4 -0
  505. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  506. package/dist/sandbox/cloudflare.js +59 -55
  507. package/dist/sandbox/cloudflare.js.map +1 -1
  508. package/dist/sandbox/container.d.ts +3 -0
  509. package/dist/sandbox/container.d.ts.map +1 -1
  510. package/dist/sandbox/container.js +39 -20
  511. package/dist/sandbox/container.js.map +1 -1
  512. package/dist/sandbox/host.d.ts +3 -0
  513. package/dist/sandbox/host.d.ts.map +1 -1
  514. package/dist/sandbox/host.js +42 -35
  515. package/dist/sandbox/host.js.map +1 -1
  516. package/dist/sandbox/identity.d.ts +13 -0
  517. package/dist/sandbox/identity.d.ts.map +1 -0
  518. package/dist/sandbox/identity.js +49 -0
  519. package/dist/sandbox/identity.js.map +1 -0
  520. package/dist/sandbox/index.d.ts +5 -15
  521. package/dist/sandbox/index.d.ts.map +1 -1
  522. package/dist/sandbox/index.js +5 -51
  523. package/dist/sandbox/index.js.map +1 -1
  524. package/dist/sandbox/layout.d.ts +7 -0
  525. package/dist/sandbox/layout.d.ts.map +1 -0
  526. package/dist/sandbox/layout.js +13 -0
  527. package/dist/sandbox/layout.js.map +1 -0
  528. package/dist/{provisioner.d.ts → sandbox/provisioner.d.ts} +41 -4
  529. package/dist/sandbox/provisioner.d.ts.map +1 -0
  530. package/dist/sandbox/provisioner.js +971 -0
  531. package/dist/sandbox/provisioner.js.map +1 -0
  532. package/dist/sandbox/registry.d.ts +12 -0
  533. package/dist/sandbox/registry.d.ts.map +1 -0
  534. package/dist/sandbox/registry.js +93 -0
  535. package/dist/sandbox/registry.js.map +1 -0
  536. package/dist/sandbox/types.d.ts +23 -25
  537. package/dist/sandbox/types.d.ts.map +1 -1
  538. package/dist/sandbox/types.js.map +1 -1
  539. package/dist/sandbox/utils.d.ts +21 -0
  540. package/dist/sandbox/utils.d.ts.map +1 -1
  541. package/dist/sandbox/utils.js +100 -8
  542. package/dist/sandbox/utils.js.map +1 -1
  543. package/dist/sessions/chat-history-sync.d.ts +17 -0
  544. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  545. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +224 -183
  546. package/dist/sessions/chat-history-sync.js.map +1 -0
  547. package/dist/sessions/history-line.d.ts +9 -0
  548. package/dist/sessions/history-line.d.ts.map +1 -0
  549. package/dist/sessions/history-line.js +25 -0
  550. package/dist/sessions/history-line.js.map +1 -0
  551. package/dist/sessions/migrate-common.d.ts +28 -0
  552. package/dist/sessions/migrate-common.d.ts.map +1 -0
  553. package/dist/sessions/migrate-common.js +80 -0
  554. package/dist/sessions/migrate-common.js.map +1 -0
  555. package/dist/sessions/migrate-pi-084.d.ts +7 -0
  556. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  557. package/dist/sessions/migrate-pi-084.js +293 -0
  558. package/dist/sessions/migrate-pi-084.js.map +1 -0
  559. package/dist/sessions/migrate-v3.d.ts +7 -0
  560. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  561. package/dist/sessions/migrate-v3.js +351 -0
  562. package/dist/sessions/migrate-v3.js.map +1 -0
  563. package/dist/sessions/session-key.d.ts +18 -0
  564. package/dist/sessions/session-key.d.ts.map +1 -0
  565. package/dist/sessions/session-key.js +88 -0
  566. package/dist/sessions/session-key.js.map +1 -0
  567. package/dist/sessions/session-store.d.ts +55 -0
  568. package/dist/sessions/session-store.d.ts.map +1 -0
  569. package/dist/sessions/session-store.js +635 -0
  570. package/dist/sessions/session-store.js.map +1 -0
  571. package/dist/sessions/store.d.ts +7 -61
  572. package/dist/sessions/store.d.ts.map +1 -1
  573. package/dist/sessions/store.js +126 -102
  574. package/dist/sessions/store.js.map +1 -1
  575. package/dist/sessions/types.d.ts +59 -8
  576. package/dist/sessions/types.d.ts.map +1 -1
  577. package/dist/sessions/types.js +2 -1
  578. package/dist/sessions/types.js.map +1 -1
  579. package/dist/settings/apply.d.ts +9 -0
  580. package/dist/settings/apply.d.ts.map +1 -0
  581. package/dist/settings/apply.js +31 -0
  582. package/dist/settings/apply.js.map +1 -0
  583. package/dist/settings/index.d.ts +76 -0
  584. package/dist/settings/index.d.ts.map +1 -0
  585. package/dist/settings/index.js +351 -0
  586. package/dist/settings/index.js.map +1 -0
  587. package/dist/settings/migrate.d.ts +16 -0
  588. package/dist/settings/migrate.d.ts.map +1 -0
  589. package/dist/settings/migrate.js +70 -0
  590. package/dist/settings/migrate.js.map +1 -0
  591. package/dist/types.d.ts +231 -173
  592. package/dist/types.d.ts.map +1 -1
  593. package/dist/types.js +1 -3
  594. package/dist/types.js.map +1 -1
  595. package/dist/unknown-values.d.ts +3 -0
  596. package/dist/unknown-values.d.ts.map +1 -0
  597. package/dist/unknown-values.js +7 -0
  598. package/dist/unknown-values.js.map +1 -0
  599. package/dist/vault/index.d.ts +35 -11
  600. package/dist/vault/index.d.ts.map +1 -1
  601. package/dist/vault/index.js +326 -115
  602. package/dist/vault/index.js.map +1 -1
  603. package/dist/vault/types.d.ts +5 -16
  604. package/dist/vault/types.d.ts.map +1 -1
  605. package/dist/vault/types.js.map +1 -1
  606. package/package.json +82 -41
  607. package/dist/adapter.d.ts +0 -2
  608. package/dist/adapter.d.ts.map +0 -1
  609. package/dist/adapter.js +0 -2
  610. package/dist/adapter.js.map +0 -1
  611. package/dist/adapters/slack/tools/attach.d.ts +0 -12
  612. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  613. package/dist/adapters/slack/tools/attach.js.map +0 -1
  614. package/dist/adapters/streaming.d.ts +0 -18
  615. package/dist/adapters/streaming.d.ts.map +0 -1
  616. package/dist/adapters/streaming.js +0 -44
  617. package/dist/adapters/streaming.js.map +0 -1
  618. package/dist/adapters/telegram/html.d.ts +0 -3
  619. package/dist/adapters/telegram/html.d.ts.map +0 -1
  620. package/dist/adapters/telegram/html.js +0 -98
  621. package/dist/adapters/telegram/html.js.map +0 -1
  622. package/dist/agent-events.d.ts +0 -5
  623. package/dist/agent-events.d.ts.map +0 -1
  624. package/dist/agent-events.js +0 -26
  625. package/dist/agent-events.js.map +0 -1
  626. package/dist/agent.d.ts +0 -39
  627. package/dist/agent.d.ts.map +0 -1
  628. package/dist/agent.js +0 -1291
  629. package/dist/agent.js.map +0 -1
  630. package/dist/cli/ext-git.d.ts +0 -22
  631. package/dist/cli/ext-git.d.ts.map +0 -1
  632. package/dist/cli/ext-git.js +0 -76
  633. package/dist/cli/ext-git.js.map +0 -1
  634. package/dist/cli/ext.d.ts +0 -2
  635. package/dist/cli/ext.d.ts.map +0 -1
  636. package/dist/cli/ext.js +0 -217
  637. package/dist/cli/ext.js.map +0 -1
  638. package/dist/commands/admin.d.ts.map +0 -1
  639. package/dist/commands/admin.js.map +0 -1
  640. package/dist/commands/auto-reply.d.ts.map +0 -1
  641. package/dist/commands/auto-reply.js +0 -76
  642. package/dist/commands/auto-reply.js.map +0 -1
  643. package/dist/commands/extensions.d.ts +0 -14
  644. package/dist/commands/extensions.d.ts.map +0 -1
  645. package/dist/commands/extensions.js +0 -55
  646. package/dist/commands/extensions.js.map +0 -1
  647. package/dist/commands/login.d.ts +0 -5
  648. package/dist/commands/login.d.ts.map +0 -1
  649. package/dist/commands/login.js +0 -115
  650. package/dist/commands/login.js.map +0 -1
  651. package/dist/commands/model.d.ts +0 -10
  652. package/dist/commands/model.d.ts.map +0 -1
  653. package/dist/commands/model.js +0 -102
  654. package/dist/commands/model.js.map +0 -1
  655. package/dist/commands/new.d.ts.map +0 -1
  656. package/dist/commands/new.js +0 -25
  657. package/dist/commands/new.js.map +0 -1
  658. package/dist/commands/parse.d.ts +0 -7
  659. package/dist/commands/parse.d.ts.map +0 -1
  660. package/dist/commands/parse.js +0 -14
  661. package/dist/commands/parse.js.map +0 -1
  662. package/dist/commands/registry.d.ts +0 -5
  663. package/dist/commands/registry.d.ts.map +0 -1
  664. package/dist/commands/registry.js +0 -31
  665. package/dist/commands/registry.js.map +0 -1
  666. package/dist/commands/sandbox.d.ts.map +0 -1
  667. package/dist/commands/sandbox.js +0 -78
  668. package/dist/commands/sandbox.js.map +0 -1
  669. package/dist/commands/session-view.d.ts.map +0 -1
  670. package/dist/commands/session-view.js.map +0 -1
  671. package/dist/commands/types.d.ts +0 -66
  672. package/dist/commands/types.d.ts.map +0 -1
  673. package/dist/commands/types.js.map +0 -1
  674. package/dist/commands/utils.d.ts +0 -11
  675. package/dist/commands/utils.d.ts.map +0 -1
  676. package/dist/commands/utils.js.map +0 -1
  677. package/dist/config.d.ts +0 -78
  678. package/dist/config.d.ts.map +0 -1
  679. package/dist/config.js +0 -450
  680. package/dist/config.js.map +0 -1
  681. package/dist/download.d.ts.map +0 -1
  682. package/dist/download.js +0 -89
  683. package/dist/download.js.map +0 -1
  684. package/dist/events.d.ts +0 -43
  685. package/dist/events.d.ts.map +0 -1
  686. package/dist/events.js +0 -456
  687. package/dist/events.js.map +0 -1
  688. package/dist/execution-resolver.d.ts +0 -21
  689. package/dist/execution-resolver.d.ts.map +0 -1
  690. package/dist/execution-resolver.js +0 -170
  691. package/dist/execution-resolver.js.map +0 -1
  692. package/dist/harness/auth.d.ts +0 -16
  693. package/dist/harness/auth.d.ts.map +0 -1
  694. package/dist/harness/auth.js +0 -86
  695. package/dist/harness/auth.js.map +0 -1
  696. package/dist/harness/extensions/loader.d.ts +0 -86
  697. package/dist/harness/extensions/loader.d.ts.map +0 -1
  698. package/dist/harness/extensions/loader.js +0 -525
  699. package/dist/harness/extensions/loader.js.map +0 -1
  700. package/dist/harness/extensions/registry.d.ts +0 -23
  701. package/dist/harness/extensions/registry.d.ts.map +0 -1
  702. package/dist/harness/extensions/registry.js +0 -45
  703. package/dist/harness/extensions/registry.js.map +0 -1
  704. package/dist/harness/extensions/types.d.ts +0 -248
  705. package/dist/harness/extensions/types.d.ts.map +0 -1
  706. package/dist/harness/extensions/types.js.map +0 -1
  707. package/dist/harness/session-store.d.ts +0 -77
  708. package/dist/harness/session-store.d.ts.map +0 -1
  709. package/dist/harness/session-store.js +0 -248
  710. package/dist/harness/session-store.js.map +0 -1
  711. package/dist/harness/settings.d.ts +0 -47
  712. package/dist/harness/settings.d.ts.map +0 -1
  713. package/dist/harness/settings.js +0 -29
  714. package/dist/harness/settings.js.map +0 -1
  715. package/dist/model-registry.d.ts +0 -4
  716. package/dist/model-registry.d.ts.map +0 -1
  717. package/dist/model-registry.js +0 -7
  718. package/dist/model-registry.js.map +0 -1
  719. package/dist/platform-messages.d.ts.map +0 -1
  720. package/dist/platform-messages.js.map +0 -1
  721. package/dist/portal-shell.d.ts +0 -4
  722. package/dist/portal-shell.d.ts.map +0 -1
  723. package/dist/portal-shell.js.map +0 -1
  724. package/dist/provisioner.d.ts.map +0 -1
  725. package/dist/provisioner.js +0 -517
  726. package/dist/provisioner.js.map +0 -1
  727. package/dist/runtime/agent-run-controller.d.ts +0 -31
  728. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  729. package/dist/runtime/agent-run-controller.js +0 -195
  730. package/dist/runtime/agent-run-controller.js.map +0 -1
  731. package/dist/sandbox/errors.d.ts +0 -6
  732. package/dist/sandbox/errors.d.ts.map +0 -1
  733. package/dist/sandbox/errors.js +0 -11
  734. package/dist/sandbox/errors.js.map +0 -1
  735. package/dist/sandbox/firecracker.d.ts +0 -15
  736. package/dist/sandbox/firecracker.d.ts.map +0 -1
  737. package/dist/sandbox/firecracker.js +0 -212
  738. package/dist/sandbox/firecracker.js.map +0 -1
  739. package/dist/sandbox/image.d.ts +0 -3
  740. package/dist/sandbox/image.d.ts.map +0 -1
  741. package/dist/sandbox/image.js +0 -27
  742. package/dist/sandbox/image.js.map +0 -1
  743. package/dist/sandbox/path-context.d.ts +0 -3
  744. package/dist/sandbox/path-context.d.ts.map +0 -1
  745. package/dist/sandbox/path-context.js +0 -20
  746. package/dist/sandbox/path-context.js.map +0 -1
  747. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  748. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  749. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  750. package/dist/sessions/metadata.d.ts +0 -3
  751. package/dist/sessions/metadata.d.ts.map +0 -1
  752. package/dist/sessions/metadata.js +0 -11
  753. package/dist/sessions/metadata.js.map +0 -1
  754. package/dist/sessions/policy.d.ts +0 -6
  755. package/dist/sessions/policy.d.ts.map +0 -1
  756. package/dist/sessions/policy.js +0 -24
  757. package/dist/sessions/policy.js.map +0 -1
  758. package/dist/store.d.ts +0 -46
  759. package/dist/store.d.ts.map +0 -1
  760. package/dist/store.js +0 -177
  761. package/dist/store.js.map +0 -1
  762. package/dist/tools/bash.d.ts +0 -10
  763. package/dist/tools/bash.d.ts.map +0 -1
  764. package/dist/tools/bash.js +0 -80
  765. package/dist/tools/bash.js.map +0 -1
  766. package/dist/tools/edit.d.ts +0 -11
  767. package/dist/tools/edit.d.ts.map +0 -1
  768. package/dist/tools/edit.js +0 -131
  769. package/dist/tools/edit.js.map +0 -1
  770. package/dist/tools/event.d.ts +0 -56
  771. package/dist/tools/event.d.ts.map +0 -1
  772. package/dist/tools/event.js +0 -252
  773. package/dist/tools/event.js.map +0 -1
  774. package/dist/tools/index.d.ts +0 -24
  775. package/dist/tools/index.d.ts.map +0 -1
  776. package/dist/tools/index.js +0 -31
  777. package/dist/tools/index.js.map +0 -1
  778. package/dist/tools/react.d.ts +0 -15
  779. package/dist/tools/react.d.ts.map +0 -1
  780. package/dist/tools/react.js +0 -40
  781. package/dist/tools/react.js.map +0 -1
  782. package/dist/tools/read.d.ts +0 -11
  783. package/dist/tools/read.d.ts.map +0 -1
  784. package/dist/tools/read.js +0 -134
  785. package/dist/tools/read.js.map +0 -1
  786. package/dist/tools/sandbox.d.ts +0 -22
  787. package/dist/tools/sandbox.d.ts.map +0 -1
  788. package/dist/tools/sandbox.js.map +0 -1
  789. package/dist/tools/truncate.d.ts +0 -33
  790. package/dist/tools/truncate.d.ts.map +0 -1
  791. package/dist/tools/truncate.js +0 -184
  792. package/dist/tools/truncate.js.map +0 -1
  793. package/dist/tools/types.d.ts +0 -54
  794. package/dist/tools/types.d.ts.map +0 -1
  795. package/dist/tools/types.js.map +0 -1
  796. package/dist/tools/write.d.ts +0 -10
  797. package/dist/tools/write.d.ts.map +0 -1
  798. package/dist/tools/write.js +0 -29
  799. package/dist/tools/write.js.map +0 -1
  800. package/dist/trigger.d.ts +0 -22
  801. package/dist/trigger.d.ts.map +0 -1
  802. package/dist/trigger.js +0 -100
  803. package/dist/trigger.js.map +0 -1
  804. package/dist/utils/date.d.ts +0 -10
  805. package/dist/utils/date.d.ts.map +0 -1
  806. package/dist/utils/date.js +0 -23
  807. package/dist/utils/date.js.map +0 -1
  808. package/dist/utils/env.d.ts +0 -3
  809. package/dist/utils/env.d.ts.map +0 -1
  810. package/dist/utils/env.js +0 -12
  811. package/dist/utils/env.js.map +0 -1
  812. package/dist/utils/file-guards.d.ts +0 -9
  813. package/dist/utils/file-guards.d.ts.map +0 -1
  814. package/dist/utils/file-guards.js +0 -59
  815. package/dist/utils/file-guards.js.map +0 -1
  816. package/dist/utils/fs-atomic.d.ts +0 -10
  817. package/dist/utils/fs-atomic.d.ts.map +0 -1
  818. package/dist/utils/fs-atomic.js +0 -45
  819. package/dist/utils/fs-atomic.js.map +0 -1
  820. package/dist/utils/html.d.ts +0 -2
  821. package/dist/utils/html.d.ts.map +0 -1
  822. package/dist/utils/html.js +0 -4
  823. package/dist/utils/html.js.map +0 -1
  824. package/dist/utils/http-body.d.ts +0 -10
  825. package/dist/utils/http-body.d.ts.map +0 -1
  826. package/dist/utils/http-body.js +0 -34
  827. package/dist/utils/http-body.js.map +0 -1
  828. package/dist/vault/routing.d.ts +0 -3
  829. package/dist/vault/routing.d.ts.map +0 -1
  830. package/dist/vault/routing.js +0 -13
  831. package/dist/vault/routing.js.map +0 -1
  832. package/dist/web/admin/portal.d.ts +0 -5
  833. package/dist/web/admin/portal.d.ts.map +0 -1
  834. package/dist/web/admin/portal.js +0 -2572
  835. package/dist/web/admin/portal.js.map +0 -1
  836. package/dist/web/admin/provider-models.d.ts.map +0 -1
  837. package/dist/web/admin/provider-models.js.map +0 -1
  838. package/dist/web/admin/store.d.ts +0 -13
  839. package/dist/web/admin/store.d.ts.map +0 -1
  840. package/dist/web/admin/store.js +0 -14
  841. package/dist/web/admin/store.js.map +0 -1
  842. package/dist/web/admin/types.d.ts +0 -30
  843. package/dist/web/admin/types.d.ts.map +0 -1
  844. package/dist/web/admin/types.js.map +0 -1
  845. package/dist/web/agent-events/portal.d.ts +0 -3
  846. package/dist/web/agent-events/portal.d.ts.map +0 -1
  847. package/dist/web/agent-events/portal.js +0 -18
  848. package/dist/web/agent-events/portal.js.map +0 -1
  849. package/dist/web/login/oauth.d.ts +0 -6
  850. package/dist/web/login/oauth.d.ts.map +0 -1
  851. package/dist/web/login/oauth.js.map +0 -1
  852. package/dist/web/login/portal.d.ts +0 -17
  853. package/dist/web/login/portal.d.ts.map +0 -1
  854. package/dist/web/login/portal.js.map +0 -1
  855. package/dist/web/login/store.d.ts +0 -8
  856. package/dist/web/login/store.d.ts.map +0 -1
  857. package/dist/web/login/store.js +0 -15
  858. package/dist/web/login/store.js.map +0 -1
  859. package/dist/web/login/types.d.ts.map +0 -1
  860. package/dist/web/login/types.js.map +0 -1
  861. package/dist/web/request.d.ts +0 -3
  862. package/dist/web/request.d.ts.map +0 -1
  863. package/dist/web/request.js +0 -13
  864. package/dist/web/request.js.map +0 -1
  865. package/dist/web/server.d.ts +0 -28
  866. package/dist/web/server.d.ts.map +0 -1
  867. package/dist/web/server.js.map +0 -1
  868. package/dist/web/session-view/command.d.ts +0 -4
  869. package/dist/web/session-view/command.d.ts.map +0 -1
  870. package/dist/web/session-view/command.js +0 -7
  871. package/dist/web/session-view/command.js.map +0 -1
  872. package/dist/web/session-view/portal.d.ts +0 -13
  873. package/dist/web/session-view/portal.d.ts.map +0 -1
  874. package/dist/web/session-view/portal.js.map +0 -1
  875. package/dist/web/session-view/service.d.ts +0 -6
  876. package/dist/web/session-view/service.d.ts.map +0 -1
  877. package/dist/web/session-view/service.js +0 -498
  878. package/dist/web/session-view/service.js.map +0 -1
  879. package/dist/web/session-view/store.d.ts +0 -8
  880. package/dist/web/session-view/store.d.ts.map +0 -1
  881. package/dist/web/session-view/store.js +0 -15
  882. package/dist/web/session-view/store.js.map +0 -1
  883. package/dist/web/session-view/types.d.ts.map +0 -1
  884. package/dist/web/session-view/types.js.map +0 -1
  885. package/dist/web/token-store.d.ts.map +0 -1
  886. package/dist/web/token-store.js.map +0 -1
  887. package/dist/web/types.d.ts.map +0 -1
  888. package/dist/web/types.js.map +0 -1
  889. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  890. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  891. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  892. /package/dist/{commands → adapters/commands}/types.js +0 -0
  893. /package/dist/{harness/extensions → adapters/web/admin}/types.js +0 -0
  894. /package/dist/{tools → adapters/web/login}/types.js +0 -0
  895. /package/dist/{web/admin → adapters/web/session-view}/types.js +0 -0
  896. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  897. /package/dist/{web/login → adapters/web}/types.js +0 -0
  898. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  899. /package/dist/{web/session-view → cli}/types.js +0 -0
  900. /package/dist/{web → harness/tools}/types.js +0 -0
package/CHANGELOG.md CHANGED
@@ -9,6 +9,1155 @@ any release.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.0.0-beta.80]
13
+
14
+ ### Fixed
15
+
16
+ - Post no Slack usage summary for a `[SILENT]` response: the reply and its thread were deleted, so the summary for a quiet recurring event landed at the top level of the channel on every run.
17
+ - Stop warning `Could not remove snapshot image mikan-migrate:...` for every migrated container on each startup; the startup sweep now leaves a snapshot alone while its container still runs from it, and still reclaims snapshots no container uses.
18
+
19
+ ## [1.0.0-beta.79]
20
+
21
+ ### Changed
22
+
23
+ - Load the Discord adapter and `discord.js` only when Discord is active, saving about 38 MB of memory and 90 ms of startup in processes that do not run Discord.
24
+ - Use pi's `typebox` 1.3.27 for tool and settings schemas instead of the incompatible `@sinclair/typebox` 0.34; platform tool packs now share pi's `AgentTool` schema types. Schema validation errors retain field paths but use typebox 1's wording.
25
+ - **Breaking (SDK):** `new ChatHistorySync()` now requires `{ isCommandText }`, so sessions no longer import the command inventory from the adapters. Pass the newly exported `isCommandText` to keep filtering command messages out of synced history.
26
+
27
+ ### Security
28
+
29
+ - Only send the Slack bot token to `https://*.slack.com` file URLs, and stream incoming attachments to disk with a 100 MiB limit instead of buffering whole files in memory; a download over the limit is rejected, not retried, and leaves no partial file.
30
+
31
+ ### Fixed
32
+
33
+ - Reject missing sandbox helper executables as ordinary `ENOENT` errors instead of emitting an unhandled child-process error.
34
+ - Accept `thinking: max` in subagent profiles; they kept their own level list without `max`, while settings and `/pi-model` accepted it.
35
+ - Spill oversized MCP JSON results as indented JSON so `read` and `grep` can inspect them; the compact single-line spill exceeded `read`'s per-line limit.
36
+ - Record a Discord channel without a name (such as a DM) under its channel id instead of a `null` name.
37
+
38
+ ### Tests
39
+
40
+ - Type-check tests, E2E code, and the embedder example in pre-commit and CI, and remove every `any` and double assertion from tests.
41
+ - Run tests in random order and print the seed, so order-dependent tests fail visibly and can be reproduced.
42
+
43
+ ## [1.0.0-beta.78]
44
+
45
+ ### Added
46
+
47
+ - Capture durable knowledge after each settled human run: Jev gates the exchange, and the conversation's model adds or updates stamped lines under `## Captured knowledge` in the conversation `MEMORY.md`; configured secrets are redacted from captured entries (ADR 0011).
48
+ - Give each new managed image container a per-office home volume (`mikan-home-<key>`) at `/root`. A stopped container whose image or mounts are stale is recreated from the current image with the same volume, so `/root` survives image upgrades; running containers are never interrupted (ADR 0009).
49
+ - Add `mikan sandbox status|diff|migrate` to inspect managed containers and move legacy containers onto a home volume with the daemon stopped.
50
+
51
+ ### Changed
52
+
53
+ - Bound MCP tool results like `bash`: JSON is re-serialized compactly, oversized results become a structural digest (keys, counts, and pagination kept) within Pi's 50KB/2000-line limit, and the full result is spilled to `.mikan/mcp-output/` in the runtime workspace. `structuredContent` is used when `content` is empty, binary resources are no longer inlined, error text is bounded, and MCP results pass through secret redaction.
54
+ - Shared top-level channel sessions no longer rotate every two weeks; they stay current until `/new`, and Pi's automatic compaction bounds the model context (ADR 0010).
55
+ - The sandbox image installs its runtime outside `/root` and is published only with mikan releases.
56
+ - Document the Vault as the store for development credentials that sandbox programs read directly; OpenConnector is the path for third-party service access (ADR 0013).
57
+
58
+ ### Removed
59
+
60
+ - Remove scheduled Dream memory maintenance. Conversation `MEMORY.md` is written only by the agent and by post-run memory capture; existing `dream.json` checkpoints are no longer read (ADR 0012).
61
+
62
+ ## [1.0.0-beta.77]
63
+
64
+ ### Added
65
+
66
+ - Provision the standard sandbox image with Node.js 24, Chromium, ffmpeg, pinned `agent-browser` 0.38.1, and a checksummed Google Workspace CLI so `jev_browser` and capture workflows work without runtime installation and current-page recording preserves hydrated browser state.
67
+
68
+ ### Changed
69
+
70
+ - Run every `jev_browser` command through the conversation-authorized sandbox executor, preserve native snapshots, refs, frames, tabs, screenshots, HAR, and recording, serialize calls per runner, and make named-session continuity and close-only operations explicit.
71
+ - Bound autonomous browser failures and repeated action cycles, refresh current page evidence before reporting completion, and refuse to silently resurrect an explicitly closed named session as `about:blank`.
72
+ - Delegate persisted session behavior to public Pi session and harness APIs instead of maintaining duplicate storage semantics.
73
+
74
+ ### Fixed
75
+
76
+ - Log LLM cancellation reasons and Pi run ids only while provider transport is active, avoiding false abort logs during authentication, payload hooks, retry waits, tool execution, or after structural requests finish.
77
+
78
+ ### Security
79
+
80
+ - Harden state and credential ownership by preserving explicit vault mount targets outside secret directories, rejecting migration collisions, keeping private file writes atomic, and deriving session operations from authorized conversation identities.
81
+
82
+ ## [1.0.0-beta.76]
83
+
84
+ ### Changed
85
+
86
+ - Update `@earendil-works/pi-agent-core` and `@earendil-works/pi-ai` to 0.87.0, including their aligned telemetry and harness dependencies.
87
+
88
+ ## [1.0.0-beta.75]
89
+
90
+ ### Added
91
+
92
+ - `jev_browser` agent tool: drives a real Chrome browser toward a natural-language goal, deciding each step (click, type, select, scroll, wait) itself using a Jev decision per step against ref-indexed accessibility snapshots — the same architecture as [`browser-use/jev-ultrafast`](https://github.com/browser-use/jev-ultrafast). A `commands` mode forwards raw [`agent-browser`](https://github.com/vercel-labs/agent-browser) CLI argument arrays directly, covering screenshot, video recording, HAR capture, cookies, and any other agent-browser capability beyond the click/type/select loop. A named `session` spans multiple calls against the same browser (start a recording, run a goal, stop the recording, screenshot the result) and stays open by default; every result reports `browserContinuity` in plain language so a caller can tell whether the browser it just used was actually the same one a prior call left open. Tool progress lines are prefixed `jev_browser ·`, matching the existing `jev ·` treatment. Requires the `agent-browser` CLI installed on the host (not a mikan dependency); host sandbox only.
93
+ - Jev decision cost (from the `jev` tool, `jev_browser`'s decision loop, Slack auto-reply gating, and task-intent classification) is now reported to Sentry/OpenTelemetry as `agent.jev.cost`, `agent.jev.duration`, and `agent.jev.calls`, tagged by which feature made the call. Previously this spend was invisible next to the primary chat model's per-run cost — it only ever appeared inside a tool call's raw JSON text.
94
+
95
+ ### Changed
96
+
97
+ - Every agent tool now requires the `label` parameter the system prompt already promises for every tool call, so its progress line always shows a real description instead of silently falling back to the raw tool name.
98
+
99
+ ## [1.0.0-beta.74]
100
+
101
+ ### Security
102
+
103
+ - Host sandbox tool output (bash, read, and every other agent tool) is now scrubbed of any configured secret env var's value before it reaches the model or the durable session transcript. Host sandbox mode does not isolate environment variables, so a command like `echo $OPENROUTER_API_KEY` previously returned the key in plain text with no defense beyond the model choosing not to repeat it; it is now replaced with a `[SECRET:VAR_NAME]` placeholder using mikan's existing secret env var inventory.
104
+
105
+ ### Fixed
106
+
107
+ - Stop and shutdown-restart notices ("Stopping…", "Stopped.", the restart notice) are now recorded in the conversation's `log.jsonl`, matching every other agent reply. Previously these control messages reached the platform but left no trace in the human-readable history the agent (and operators) grep, so a stopped run looked, on later review, like it had never been interrupted.
108
+
109
+ ## [1.0.0-beta.73]
110
+
111
+ ### Changed
112
+
113
+ - Admin: redesigned the page around a persistent icon sidebar and a single active settings pane (Claude/ChatGPT settings-app style), replacing the pill-tab-plus-accordion layout. Conversation and workspace scope each get their own rail; every pane shares one quiet header (title, one-line description, actions) instead of a stack of bordered cards. Widened the page from 960px to 1180px so the sidebar-plus-pane layout has room to breathe.
114
+
115
+ ## [1.0.0-beta.72]
116
+
117
+ ### Added
118
+
119
+ - Admin: the Skills panel (conversation and global) can now create, edit, and delete skills directly, not just list and preview them. Saving writes `SKILL.md` straight into the workspace skills tree the harness loader reads, so a new or edited skill is available on the conversation's next turn.
120
+
121
+ ## [1.0.0-beta.71]
122
+
123
+ ### Changed
124
+
125
+ - Built-in subagents now use the full 100-turn / $10 allowance, and the model-facing `subagent` tool can only request a larger token allowance instead of accidentally shrinking turn, cost, or duration budgets (for example, to $0.30).
126
+
127
+ ### Fixed
128
+
129
+ - Shared-memory guidance now keeps personal, project-specific, and tool-specific knowledge in its proper scope, prevents memory from overriding system mechanisms, and removes the obsolete shared `SYSTEM.md` environment log.
130
+ - Console usage summaries now show cache-read tokens alongside fresh input tokens.
131
+ - Sandbox provisioning no longer logs `Container … already running` on every readiness check; creation, restart, drift, and failure messages remain visible.
132
+
133
+ ## [1.0.0-beta.70]
134
+
135
+ ### Fixed
136
+
137
+ - Sandbox: a container migrated to the office-key mount layout (or recreated after its mount configuration drifted) no longer re-migrates on every subsequent restart. The one-time bridging snapshot image is now removed once the new container is confirmed up, instead of being kept forever on the mistaken assumption that the container would eventually run from the base image again. In production this had pinned dozens of containers to increasingly stale snapshots and left their images unreclaimed, consuming disk space on every restart.
138
+
139
+ ## [1.0.0-beta.69]
140
+
141
+ ### Changed
142
+
143
+ - `harness/jev.ts` is now backed by [`@geminixiang/jev`](https://github.com/geminixiang/jev), a standalone SDK shaped like pi-ai (providers own auth, a model catalog, and a wire implementation) instead of a hand-rolled OpenRouter fetch client. `evaluateWithJev`'s signature, types, and error classes are unchanged, so the auto-reply gate, DM task-intent classification, and the `jev` tool are unaffected. The swap adds request retries and timeouts, neither of which existed before, and a path to other Jev backends (TypeSafe, Vercel AI Gateway, Cloudflare Workers AI) without touching call sites.
144
+
145
+ ## [1.0.0-beta.68]
146
+
147
+ ### Added
148
+
149
+ - `jev` agent tool: the model can now call Jev directly with a `state` (text or JSON) and any number of boolean / choice / score `questions`, mirroring the decisions API one-to-one — structured instructions and criteria, per-option probabilities, confidence, and score legends all pass through. Available to the main agent and to the `worker`, `software-engineer`, `data-scientist`, and `summarizer` subagent profiles. A missing `OPENROUTER_API_KEY` is reported as a tool error so the model judges for itself.
150
+ - Slack: DM messages in a task thread (and top-level DMs while a task is running) are classified by Jev as `status`, `steer`, or `request` before spending a model turn. Status questions are answered from recorded task state; steering is delivered into the running task; anything else starts a normal run. The regex status matcher remains as the fallback.
151
+ - `task_status` reports `queued` for tasks that were admitted but have not started executing yet.
152
+
153
+ ### Changed
154
+
155
+ - `harness/jev.ts` accepts structured JSON for state, instructions, and criteria, and returns `confidence` and `legend` on choice / score answers.
156
+ - Jev auto-reply and task-intent state renders `<@U…>` mentions as `@Name` (the bot as `@mikan`) so Jev can tell a message addressed to someone else from one addressed to mikan.
157
+ - Tool progress lines for `jev` calls are prefixed with `jev ·` so users can see which steps came from a calibrated judgment.
158
+
159
+ ## [1.0.0-beta.67]
160
+
161
+ ### Changed
162
+
163
+ - Slack: unaddressed thread replies in shared channels now pass through the same `/pi-auto-reply` gate as top-level messages instead of being dropped unconditionally. In `jev` mode, Jev scores the message together with its surrounding scope (the channel's recent top-level messages, or the thread's messages plus whether mikan has already replied there), so bare follow-ups like "then roll it back" are judged in context. `off` still requires a mention; `on` now admits thread replies too.
164
+ - Deploy docs: `/pi-auto-reply` slash command description lists `on | off | jev`.
165
+
166
+ ## [1.0.0-beta.66]
167
+
168
+ ### Added
169
+
170
+ - `/pi-auto-reply` gains a third state, `jev`: alongside manual `on`/`off`, a Slack channel can now delegate the "does this unaddressed message address mikan" decision to Jev (`typesafe/jev`), a fast typed-decision model, on a per-message basis. Any evaluation failure (including a missing `OPENROUTER_API_KEY`) fails closed to "not addressed" so a misconfiguration cannot make the bot noisy in a shared channel.
171
+ - `harness/jev.ts`: a standalone `evaluateWithJev` client for Jev, reached through OpenRouter's `/api/alpha/decisions` REST API using the same `OPENROUTER_API_KEY` pi-ai's `openrouter` chat provider reads. Jev returns typed decisions (boolean probability, choice, score) instead of generated text, so it is a plain function call sites use directly rather than a selectable chat provider in `models.ts`'s catalog.
172
+ - Jev-mode auto-reply decisions (channel, probability, addressed, truncated message text) are logged at info level for observability.
173
+
174
+ ## [1.0.0-beta.65]
175
+
176
+ ### Added
177
+
178
+ - Slack: when a run resolves to exactly one completed subagent profile with a known persona, the final answer posts as a fresh message under that profile's own username/icon (`Data Scientist`, `Software Engineer`, `DevOps Engineer`, `Account Manager`, `Business Development`, `Creative Producer`, `Ad Operations Specialist`) instead of mikan's own identity. Mixed-profile or partially-failed runs keep mikan's identity, since `chat.update`/`chat.appendStream` cannot carry a Slack identity and there is no single "who answered this" to attribute.
179
+ - The `react` tool (add an emoji reaction to the triggering message) is now documented in the system prompt with two unconditional triggers tied to `start_task`'s existing bar: react before starting any multi-step investigation, change/test, or long wait, and react instead of writing "nothing to report" on a periodic/background check with nothing to report.
180
+ - Discord and Telegram now wire the `react` tool into their responders (previously Slack/GitHub-only despite the tool being granted everywhere); a shared short-name-to-Unicode translation covers what the prompt recommends for platforms whose reaction API takes a Unicode character rather than a name.
181
+ - `creative-producer` subagent profile gains the `generate_image` tool grant, matching its image-deliverable description.
182
+
183
+ ### Changed
184
+
185
+ - Built-in subagent profile `maxTokens` raised from 100,000 to 1,000,000: the old cap was a common budget-exceeded trip for ordinary investigative tasks (e.g. a repo-wide architecture review), not just runaway loops.
186
+ - The `analysis-only` subagent profile is renamed `summarizer`: it is a DAG synthesis node over upstream dependency output, not a mid-task advisor.
187
+ - Office data policy for non-Slack platforms is now an explicit rule (ADR 0008): only Slack conversations can be public, and Telegram/Discord/GitHub offices always resolve to private rather than falling through an "unknown" branch by omission.
188
+ - The Admin office visibility card now states the effective outcome in plain words instead of the internal policy model; public Slack channels get one "Hide the files in this channel from other offices" checkbox, other conversation kinds show the fixed Hidden state with no control.
189
+ - `settings.json` ownership (schema, scope merge, readers, writers, one-time migrations) is gathered under `src/settings/`.
190
+
191
+ ### Docs and maintenance
192
+
193
+ - Describe mikan as an organization-wide, per-conversation-isolated agent.
194
+ - Move the three remaining top-level source files into their owning modules (`adapters/messages.ts`, `adapters/index.ts`, `cli/process-lifecycle.ts`); pure move, no behavior change.
195
+
196
+ ## [1.0.0-beta.64]
197
+
198
+ ### Changed
199
+
200
+ - The retired door-policy keys (`sandbox.image.workspaceMount`, `sandbox.workspace`) are dropped at load time and no longer appear in the resolved sandbox settings or the Admin office view.
201
+
202
+ ### Added
203
+
204
+ - `mikan office migrate-door-policy` removes the retired keys from the global and every registered office settings file, preserving all other settings and leaving files without them untouched. Only an explicit shared-support `private` visibility is carried into `office.visibility`; `full`, `isolated`, and legacy `private` are removed without deriving any grant.
205
+
206
+ ## [1.0.0-beta.63]
207
+
208
+ ### Changed
209
+
210
+ - Office data policy is now a single **visibility** derived from the Slack conversation type (ADR 0008): public channels are public offices; private channels, DMs, group DMs, externally shared channels, and unknown kinds are private. Every office receives the same projection — its own directory read-write, every other public office read-only under `/workspace/public/<office key>`, and shared `MEMORY.md`/`skills/` read-write for public offices or read-only for private ones. Nothing mounts the workspace root.
211
+ - The five-way door policy (`isolated`, `trusted/shared-support`, `trusted/full`, …) is retired. Legacy settings still parse but no longer change the projection; offices that still declare `full` are reported once per process. The Admin "door policy" control and `/pi-sandbox door` are replaced by one switch that can narrow a public channel to private (`/pi-sandbox visibility <private|default>`); nothing can widen beyond what Slack allows.
212
+ - Backends without a managed projection (`host`, `container:*`, `cloudflare:*`) now serve private offices with a one-time logged warning instead of refusing, since they are trusted deployments by definition.
213
+
214
+ ### Added
215
+
216
+ - The Slack adapter records channel kinds for every registered office from the channel list loaded at startup, so offices created before kinds were recorded keep their public status without waiting for a new message.
217
+
218
+ ### Fixed
219
+
220
+ - Recreating a sandbox container after a visibility change removes empty `/workspace/public/<key>` mountpoints that `docker commit` carried over from the previous mount set.
221
+
222
+ ## [1.0.0-beta.62]
223
+
224
+ ### Changed
225
+
226
+ - Scheduled events now live in host-only per-office state (`<state dir>/conversations/<office key>/events/`) and are never mounted into a sandbox. The `event` tool and the Admin portal are the only writers, both confined to the current office; `create` never overwrites, deleting a record cancels its timer or cron immediately, and the Slack App Home lists only the opener's DM office schedules. The filesystem watcher is gone: hand-edited records take effect on the next start.
227
+ - OpenConnector is an ordinary MCP server with a deployment default. When a Slack conversation has not declared `open-connector`, mikan mints that conversation's runtime token with `OPENCONNECTOR_ADMIN_TOKEN` and saves a normal `mcpServers` entry in its settings; conversations may override it with a self-hosted server or disable it like any other MCP entry. The loader no longer fills `connectionName`; connection selection belongs to OpenConnector.
228
+
229
+ ### Added
230
+
231
+ - `mikan office migrate-events` moves legacy `<workspace>/events/*.json` records into the owning office's state and reports records it cannot attribute.
232
+ - `mikan office migrate-openconnector` converts legacy `open-connector-runtime-token.json` files into conversation MCP entries.
233
+
234
+ ### Fixed
235
+
236
+ - The agent `event` tool can no longer list, read, update, or delete another office's events, and `scope=all` is rejected.
237
+
238
+ ### Docs and maintenance
239
+
240
+ - Redraw the architecture diagram as a single rounded page and refresh the README image.
241
+ - Support local Slack E2E runs, capture intake and session markers on failure, and schedule E2E events through the `event` tool instead of writing files.
242
+ - Record the Office isolation policy, storage inventory, and OpenConnector history audit under `docs/`.
243
+
244
+ ## [1.0.0-beta.61]
245
+
246
+ ### Added
247
+
248
+ - Ground Slack DM progress replies in runtime/v4 task observations; common task-thread status queries no longer steer work, and ordinary followups do not repeat completion mentions.
249
+ - Slack DM task handoff: independent task threads keep the main conversation free, with text steering in active task threads and continuation after stopping.
250
+
251
+ ### Fixed
252
+
253
+ - Keep thread stop acknowledgements in the source thread, including shared-channel unmentioned stop controls.
254
+ - Notify Slack DM task requesters with a fresh in-thread mention after normal completion.
255
+ - Finalize stop acknowledgements that arrive after the cancelled run has already settled.
256
+ - Propagate final response delivery failures so rejected updates do not trigger completion notifications.
257
+ - Honor stop during runner preparation and keep older active tasks visible in status queries.
258
+ - Report task admission, asynchronous startup, and status inspection failures through the existing Sentry/OTLP observability path.
259
+
260
+ ### Changed
261
+
262
+ - Publish the already built and verified npm package without rerunning build and repository setup lifecycle scripts.
263
+ - Keep the documented and CI coverage commands as stable entry points while maintaining their shared Vitest invocation in one place.
264
+ - Validate debug Session View selections from their path and header, leaving full parsing to consumers that load session content instead of inspecting the same file twice.
265
+
266
+ ## [1.0.0-beta.60]
267
+
268
+ ### Fixed
269
+
270
+ - Separate CJK-adjacent bold dollar amounts for Slack's Markdown parser while preserving code and link destinations.
271
+ - Validate Session View selections through read-only inspection so active and repeatedly selected historical sessions do not conflict with writer ownership or appear corrupted.
272
+
273
+ ## [1.0.0-beta.59]
274
+
275
+ ### Fixed
276
+
277
+ - Keep Slack's working indicator in its own paragraph so progressive heading and table updates can replace existing rich-text messages without `block_mismatch`.
278
+ - Pace failed progressive redraws as well as successful ones, retaining accumulated text for recovery instead of retrying on every delta.
279
+
280
+ ### Changed
281
+
282
+ - Use Commander for CLI option parsing, subcommand validation, and generated help.
283
+ - Guide interactive onboarding with arrow-key selections, masked credentials, and a final confirmation before saving. Cancel without writing settings.
284
+ - Refuse custom-provider onboarding when models.json already exists, without printing credentials or writing partial settings.
285
+
286
+ ## [1.0.0-beta.58]
287
+
288
+ ### Added
289
+
290
+ - Restore Slack `/pi-auto-reply on|off` with the original per-conversation marker files, without judge models or rules.
291
+ - Expose the admin portal command on Discord and Telegram.
292
+
293
+ ### Changed
294
+
295
+ - Collapse conversation sections in the Admin portal, load their data only when opened, remember their open state, and open Vault and Session View links in new tabs.
296
+
297
+ ## [1.0.0-beta.57]
298
+
299
+ ### Changed
300
+
301
+ - Export raw platform conversation, channel, session, thread, message, and user identifiers so Sentry traces can be mapped directly back to their source while continuing to exclude human-readable names and conversation or tool content.
302
+
303
+ ### Removed
304
+
305
+ - Remove telemetry identifier hashing and the `TELEMETRY_HASH_KEY` deployment setting.
306
+
307
+ ## [1.0.0-beta.56]
308
+
309
+ ### Added
310
+
311
+ - Add content-free agent diagnostics for actual model IDs, token and cost totals, first-token latency, context utilization, message and attachment counts, payload sizes, tool categories and status, and retry, compaction, and budget summaries.
312
+
313
+ ### Security
314
+
315
+ - Replace raw conversation, session, message, thread, and user telemetry identifiers with stable opaque values, support deployment-specific HMACs through `TELEMETRY_HASH_KEY`, and stop sending usernames to Sentry.
316
+
317
+ ## [1.0.0-beta.55]
318
+
319
+ ### Added
320
+
321
+ - Export explicitly configured, content-free traces and metrics over standard OTLP HTTP/protobuf, including GenAI and OpenInference attribution for Arize Phoenix. Sentry remains available for sanitized issues and legacy metric fallback without duplicate spans; zero configuration remains network-free.
322
+ - Add a guided Admin dialog for configuring MCP servers, with structured fields or pasted standard `mcpServers` JSON and card-based installed-server management.
323
+
324
+ ### Changed
325
+
326
+ - Delegate the agent run loop, retries, compaction, persistence, cancellation, and the native `read`, `write`, `edit`, and `bash` tools to Pi's `AgentHarness` and execution-tool implementations. mikan retains budgets, platform presentation, authorization, and sandbox-backed execution routing.
327
+ - Upgrade `pi-agent-core` and `pi-ai` to 0.85.1, including GPT-6 Astra catalog entries and the 30-minute prompt-cache TTL for GPT-5.6+ Responses models.
328
+ - Consolidate harness, office, session, sandbox, web-adapter, and shared-command ownership without changing the published root exports.
329
+
330
+ ### Removed
331
+
332
+ - Remove managed skill packages and their Admin/package materialization surfaces. Workspace and conversation skills remain supported.
333
+ - Remove the auto-reply judge, command, configuration, and UI; explicit platform triggers remain supported.
334
+ - Remove the unused `/api/agent-events/stream` SSE mirror, its token setting, and supporting event types. The authenticated session viewer continues to use `/session/stream`.
335
+
336
+ ### Fixed
337
+
338
+ - Preserve Pi's native optional tool schemas, require an explicit authorized execution environment for native file/shell tools, and keep container working directories inside the guest instead of applying them to the host Docker process.
339
+
340
+ ## [1.0.0-beta.54]
341
+
342
+ ### Changed
343
+
344
+ - Admin portal: MCP servers are added by pasting the server's standard `mcpServers` JSON (Claude Desktop / Cursor shape), stored as-is; the old name / target / `KEY=value` form is gone. Every add and preset install is followed by a real connection check, and the response shows the tool count or the server's own error; a per-server **Test** button re-checks an installed entry. Query-string values in listed URLs are redacted. stdio entries now run their command on the host at save time.
345
+
346
+ ## [1.0.0-beta.53]
347
+
348
+ ### Changed
349
+
350
+ - Graceful shutdown drains in-flight runs for up to five minutes (was 30 seconds) after stopping intake; runs still open at the deadline are aborted and their conversations receive a restart notice instead of silence. The pm2 template `kill_timeout` is now six minutes; update your `ecosystem.config.cjs` to match. Shutdown failures now log every nested step error.
351
+
352
+ ### Added
353
+
354
+ - Send the run user (id and username) with Sentry events instead of stripping it, so Conversations show who sent each message; email and IP stay dropped.
355
+ - Set the Sentry conversation id to the session key on every agent run so Agent Monitoring groups gen_ai spans per thread.
356
+ - Report subagent outcomes to Sentry from the subagent tool: `agent.subagent.runs` / `agent.subagent.duration` metrics and a lifecycle breadcrumb for every status; a Sentry error under `error_domain=subagent` for `failed` and `invalid_output` (fingerprinted by error class) and for launch failures. `budget_exceeded`, `timeout`, `cancelled`, and `skipped` stay metrics-only. Reports carry run metrics, never task text or labels.
357
+
358
+ ## [1.0.0-beta.52]
359
+
360
+ ### Removed
361
+
362
+ - Remove the subagent `requiredTools` / `required_tools` mechanism: the post-run "every listed tool was invoked" check was a proxy for evidence that never held and failed only after the budget was spent. Callers that want evidence can read `toolCallCounts`.
363
+
364
+ ## [1.0.0-beta.51]
365
+
366
+ ### Fixed
367
+
368
+ - Drop `requiredTools` from built-in subagent profiles; requiring both `read` and `bash` discarded finished answers from tasks that needed only one of them.
369
+ - Keep a caller's `requiredTools` when the request also names a profile.
370
+ - Stop dropping the retained assistant message when an overflow retry rebuilds context from the store.
371
+
372
+ ### Changed
373
+
374
+ - Read mikan session metadata through Pi's `session.getValue` in `open`/`inspect`; compare `fstat` fields instead of hashing the file for pending-session materialization.
375
+
376
+ ## [1.0.0-beta.50]
377
+
378
+ ### Fixed
379
+
380
+ - Tolerate byte-identical duplicate Dream session files while rejecting divergent same-ID files.
381
+
382
+ ## [1.0.0-beta.49]
383
+
384
+ ### Changed
385
+
386
+ - Configure OpenConnector only at startup with `OPENCONNECTOR_ENDPOINT` and `OPENCONNECTOR_ADMIN_TOKEN`; ignore settings overrides of the reserved server, and reduce the Admin MCP Marketplace to the Metabase preset.
387
+
388
+ ## [1.0.0-beta.48]
389
+
390
+ ### Added
391
+
392
+ - Add an offline session migration for Pi 0.84-generation v4 JSONL files, with verified atomic replacement and preserved `*.pi-084.bak` originals.
393
+
394
+ ### Changed
395
+
396
+ - Upgrade `pi-agent-core` and `pi-ai` to 0.85.0 and persist sessions with the current `v: 4`, `storageVersion: 1` schema.
397
+ - Extend `mikan sessions migrate` to convert both legacy mikan v3 and Pi 0.84-generation v4 sessions while the daemon is stopped.
398
+
399
+ ## [1.0.0-beta.47]
400
+
401
+ ### Added
402
+
403
+ - Integrate OpenConnector as a host-side MCP gateway: Slack Conversation offices receive scoped runtime identities, while provider OAuth connections remain in the gateway and execution audit stays attributable to the originating conversation.
404
+ - Preserve operating guidance supplied during MCP initialization and present it to the agent with explicit system-prompt and user-intent boundaries.
405
+ - Add automatic selection of a sole OpenConnector provider connection when an action omits `connectionName`; retain explicit selection when multiple accounts exist.
406
+
407
+ ### Changed
408
+
409
+ - Gate MCP tools by the platform trust model and enforce the untrusted package boundary.
410
+ - Make platform shutdown cleanup bounded and strengthen runner/session lifecycle rollback handling.
411
+
412
+ ### Fixed
413
+
414
+ - Isolate Slack DM and thread E2E context and bound event-delivery waits.
415
+
416
+ ### Tests
417
+
418
+ - Add coverage for OpenConnector token provisioning, MCP instruction propagation, connection selection, trust gating, lifecycle cleanup, and Slack isolation.
419
+
420
+ ## [1.0.0-beta.46]
421
+
422
+ ### Added
423
+
424
+ - Add an interactive `mikan onboard` wizard that configures one chat adapter, an LLM provider, and the sandbox, writing private environment and settings files while retaining non-interactive template generation.
425
+ - Derive shared workspace visibility from platform channel privacy: Slack public channels can update shared memory, private channels receive it read-only, and DMs, external channels, unknown kinds, and other platforms stay isolated unless explicitly overridden.
426
+ - Schedule Dream maintenance for Conversation-office memory with durable evidence checkpoints.
427
+ - Add an Admin MCP Marketplace with reviewed GitHub, Context7, Playwright, Sequential Thinking, and Metabase presets; Metabase installations accept an instance endpoint and API key.
428
+
429
+ ### Changed
430
+
431
+ - Remove the executable extension system and its CLI/chat management surfaces; packages remain the supported path for deploying read-only skills.
432
+ - Remove the harness `auth.json` credential store; configure provider credentials through environment variables, onboarding, or the conversation vault.
433
+ - Remove Gondolin, Firecracker, and GitHub Cloud Build log integrations from the supported runtime surface.
434
+ - Fail closed when a sandbox backend cannot enforce an isolated office or read-only shared workspace memory; use `image:*` or explicitly select a trusted read-write projection.
435
+ - Consolidate runtime, session, adapter, web, and configuration ownership to reduce duplicate lifecycle and parsing rules.
436
+
437
+ ### Fixed
438
+
439
+ - Preserve streamed UTF-8 output when host sandbox chunks split multi-byte characters.
440
+ - Re-aim migrated session lanes at the nearest surviving ancestor when the newest v3 entry contains facts but no v4 message.
441
+
442
+ ### Tests
443
+
444
+ - Move CI action runtimes to Node 24 and strengthen runtime, presenter, workspace-projection, MCP marketplace, and session migration coverage.
445
+
446
+ ## [1.0.0-beta.45]
447
+
448
+ ### Fixed
449
+
450
+ - Session migration now collapses crash-duplicated v3 lines (a retried append writing the same header and entry twice) the way the v3 reader did, instead of failing v4 verification on the duplicate id. Found rehearsing the migration against 5,446 production session files; after the fix all migrate and reopen cleanly.
451
+
452
+ ## [1.0.0-beta.44]
453
+
454
+ ### Added
455
+
456
+ - Connect MCP (Model Context Protocol) servers via `mcpServers` settings and expose their tools to the agent as `mcp__<server>__<tool>`; stdio and streamable-HTTP transports, per-server failures isolated, credentials held host-side in server config out of the model's reach.
457
+ - Manage MCP servers from the admin portal: per-conversation and global panels with add, enable/disable, and remove; credential values are redacted to key names in the UI.
458
+ - Migrate sessions to pi's v4 format with a `mikan sessions migrate` CLI; pi upgraded to 0.84.3.
459
+ - Extensions can declare required host capabilities in `package.json` (`mikan.requires`); activation checks them before importing the module and `mikan ext validate` reports them.
460
+
461
+ ### Changed
462
+
463
+ - Split the agent module into five authority modules (catalog, prompt, runner, subagent-runner, types); the runtime now owns session rotation decisions and per-event chat-history sync.
464
+ - Derive all platform command registration and routing from the single command manifest.
465
+ - Adopt pi-ai's retryable-error classifier instead of a local copy.
466
+ - Conversation runtimes are keyed by office key, fixing cross-conversation runner reuse after ID changes.
467
+
468
+ ### Fixed
469
+
470
+ - Session files enforce single-writer ownership, surviving inode reuse and stale writer claims.
471
+ - Failed extension activations roll back cleanly; duplicate tool names are rejected.
472
+ - Slack slash commands in threads carry the thread session key instead of falling back to the top-level session.
473
+ - GitHub first-contact stop no longer creates participation state.
474
+ - Subagent deadlines are enforced by a single wall-clock timer; `before_agent_start` hooks run before auth and pre-turn compaction.
475
+ - Sandbox container removal failures no longer clear ownership, preventing orphaned containers.
476
+ - Run outcomes settle from the final message and run state is released on throw.
477
+
478
+ ## [1.0.0-beta.43]
479
+
480
+ ### Added
481
+
482
+ - Add an optional authenticated GitHub webhook endpoint that wakes polling immediately for lower-latency issue and pull-request handling.
483
+ - Add a machine-readable architecture index and generated system architecture documentation for repository-wide module boundaries and flows.
484
+
485
+ ### Changed
486
+
487
+ - Run manual and automatic Session Dreams in the background while preserving session rotation and conversation maintenance boundaries.
488
+
489
+ ### Fixed
490
+
491
+ - Wait for final Slack thread responses in isolation coverage instead of accepting provisional native-stream text.
492
+
493
+ ### Tests
494
+
495
+ - Add regression coverage for GitHub webhook authentication and dispatch, background Session Dream lifecycle behavior, and final Slack stream settlement.
496
+
497
+ ## [1.0.0-beta.42]
498
+
499
+ ### Changed
500
+
501
+ - Dispatch Slack extension commands when users type the command name without a leading slash, so documented Agent Project Manager commands work in ordinary messages.
502
+ - Update `@earendil-works/pi-agent-core` and `@earendil-works/pi-ai` to 0.83.0.
503
+ - Clarify Agent Project Manager onboarding, initial behavior, and the distinction between commands and natural-language tasks across all translated guides.
504
+
505
+ ### Fixed
506
+
507
+ - Stabilize Slack end-to-end coverage for extension command dispatch, Agent Project Manager, and long-message threads.
508
+
509
+ ### Tests
510
+
511
+ - Add regression coverage for slashless extension command routing and conversation runtime dispatch.
512
+
513
+ ## [1.0.0-beta.41]
514
+
515
+ ### Added
516
+
517
+ - Add Slack App and Agent manifests plus support for `assistant_view` and `agent_view` lifecycle events, including thread-aware assistant context and optional socket-event tracing.
518
+ - Add Discord Components V2 responses with native sections, separators, containers, and markdown-table rendering suited to Discord's width model.
519
+ - Add rich Telegram responses through platform-native formatting.
520
+ - Show the current activity of running subagents in progress dashboards.
521
+ - Add an end-user Agent Project Manager guide in English, Japanese, Simplified Chinese, and Traditional Chinese.
522
+
523
+ ### Changed
524
+
525
+ - Pace progressive redraws by elapsed time instead of response volume, and edit overflow messages rather than repeatedly posting replacements.
526
+ - Split Slack streamed text at the 12,000-character API limit, decline unsupported native streams before starting them, and hand off a truncated final tail exactly once.
527
+ - Report package-installed extensions in `/extensions` and return a clear compatibility error when an extension requires a newer mikan version.
528
+
529
+ ### Fixed
530
+
531
+ - Preserve final-source preparation during progressive replacement and cut truncated Slack messages at line boundaries.
532
+ - Distinguish Slack length-limit failures from other send errors instead of treating every failure as oversized content.
533
+ - Prevent desktop automation helpers from sending into a Slack thread's main composer.
534
+
535
+ ### Tests
536
+
537
+ - Add coverage for Slack assistant lifecycle and stream limits, Discord Components V2 and table formatting, progressive overflow editing, rich Telegram context, subagent activity reporting, and extension compatibility reporting.
538
+
539
+ ## [1.0.0-beta.40]
540
+
541
+ ### Added
542
+
543
+ - Add deterministic extension callback schedules that run host-side without an agent run, model call, or token spend; schedules persist across restarts and use host-authoritative storage.
544
+ - Add extension APIs for reading conversation or thread history, listing active platform users, opening direct-message conversations, and posting threaded notifications.
545
+ - Add declarative extension secrets with activation-time validation, CLI visibility, admin portal provisioning, and purge support.
546
+ - Add a production-ready agent project manager example built as an Event → Workflow → Task pipeline with SQLite persistence, scheduled heartbeats, threaded polling, delivery tracking, and Slack end-to-end coverage.
547
+
548
+ ### Changed
549
+
550
+ - Make proactive extension messaging default to the conversation's platform, removing ambiguity in multi-platform deployments.
551
+ - Make `api.notify` return the posted message ID and allow `api.fetchHistory` to read replies beneath that message, enabling poll-only follow-up workflows without webhooks.
552
+ - Make `mikan ext remove --purge` sweep an extension's schedules, secrets, data directories, and optional workspace event files while reporting leftovers for non-purge removals.
553
+ - Enable stricter TypeScript and lint enforcement for indexed access, type-only imports, Node.js import protocols, dependency cycles, explicit `any`, nesting depth, function size, and parameter count.
554
+ - Consolidate duplicated authorities and thin wrappers into their owning modules, and refresh repository documentation for the office architecture.
555
+
556
+ ### Tests
557
+
558
+ - Add coverage for callback schedule persistence and dispatch, extension secrets, platform reads, threaded notifications, purge behavior, and the agent project manager pipeline.
559
+
560
+ ## [1.0.0-beta.39]
561
+
562
+ ### Fixed
563
+
564
+ - Slack mentions now actually notify people: the adapter resolves response-source `<@userName>` (and display-name) mentions to Slack's native `<@U…>` id form on every outgoing path, including streamed responses. Previously mentions rendered as literal text and never pinged anyone; scheduled-event texts that hard-require raw user ids as a workaround can go back to plain `<@userName>`. The system prompt now also names the Users table as the one source of mention handles and forbids borrowing handles from other platforms (a GitHub username is not a Slack mention).
565
+ - Discord slash commands register again: the `/sandbox` option description had grown past Discord's 100-character limit, which made Discord reject the whole registration batch at startup. A manifest test now enforces the budget for every command, argument, and Telegram menu description.
566
+ - Fix `generate_image` losing its generated file at the upload step (`sh: … cannot open /workspace/<file>: No such file`): the tool wrote the image host-side into the workspace base and then handed a bare filename to the attach upload path, which reads through the sandbox — where the base is no longer mounted since the office layout migration. The image is now written into the conversation's own office directory (guest-visible) and uploaded directly by host path, with no sandbox round-trip, under every door policy. Image-generation provider errors now also name the model id that was sent.
567
+ - The Slack e2e workflow works again after the door-policy and office-key changes: the runner's settings opt into the trusted door policy explicitly (host mode is refused under the isolated default by design), local-delivery verification reads the office-key log path, and one recall prompt was disambiguated.
568
+
569
+ ### Changed
570
+
571
+ - The Conversation office is now a first-class module: `src/office/` owns identity, the Workspace/Office layout values, the registry journal, and the boot migration. Option bags across the runtime carry one `office` value instead of parallel address/directory fields, the attachment convention has a single owner on the shared adapter surface, and `ChannelStore` is gone. No behavior or on-disk layout change.
572
+ - Embedders can now construct the runtime from the public surface: `createWorkspace`, `createOfficeAddress`, and `officeKey` (plus the `Office`/`Workspace` types) are exported, and `createConversationRuntime` takes a `workspace` value in place of the `workingDir` string.
573
+ - Repository layout for contributors: run-it assets live under `deploy/` (pm2, docker, examples), the test suite lives at `src/test/`, and tool configs live in `.config/` (root keeps `package.json` and `tsconfig.json`). The build config moved to `src/tsconfig.build.json`.
574
+
575
+ ## [1.0.0-beta.38]
576
+
577
+ ### Fixed
578
+
579
+ - Align the conversation-skill symlink guard with what the host actually reads: symlinked entries are skipped per skill — with the skipped paths named in the host log and surfaced to the agent in its prompt — instead of one symlink anywhere disqualifying the whole tree, and symlinks inside vendored `node_modules` or dot directories (which the loader never reads) no longer disqualify anything. Offices whose skills vanished because a skill vendored npm dependencies (`.bin` symlinks) get them back.
580
+
581
+ ## [1.0.0-beta.37]
582
+
583
+ ### Fixed
584
+
585
+ - Stop discarding preserved container contents on mount drift: a drifted managed container is now committed and re-created from its snapshot with the desired mounts — writable layer intact — instead of being rebuilt from the base image. This closes the gap that recreated layout-migrated containers from scratch on their first message after upgrade (stored mount signatures went stale as shared sources changed overnight). `MIKAN_SKIP_CONTAINER_PRESERVATION=1` restores plain recreation.
586
+ - Stop treating ordinary directory activity as mount drift: directory mount sources are now fingerprinted by identity (a replacement directory is drift) instead of size and mtime, so event-file churn and children being created no longer force container rebuilds. File sources keep content fingerprints — atomic replacement leaves a stale inode in the container and must recreate it.
587
+ - Door-policy changes now preserve container contents through the rebuild; the portal and `/pi-sandbox door` copy no longer warn about a reset.
588
+
589
+ ## [1.0.0-beta.36]
590
+
591
+ ### Added
592
+
593
+ - Make the office door policy configurable: the Admin portal gains a per-office selector (global default / isolated / trusted shared-support / trusted full) plus a global-default selector, and the existing `/pi-sandbox` command gains `door <default|isolated|shared|full>` — both write the explicit `sandbox.workspace` settings and retire the legacy `image.workspaceMount` key on save.
594
+ - Door-policy changes follow the same clear-or-refuse contract as model changes (the system prompt bakes the workspace projection), and the sandbox container is rebuilt with the new mounts on the office's next message.
595
+
596
+ ## [1.0.0-beta.35]
597
+
598
+ Completes the office storage migration introduced in 1.0.0-beta.34: sandbox containers now survive it with everything installed inside them intact. Upgrading directly from 1.0.0-beta.33 or earlier to this release keeps container contents; deployments that already booted 1.0.0-beta.34 had their containers recreated by that release.
599
+
600
+ ### Added
601
+
602
+ - Preserve managed sandbox containers through the office layout migration: each container still mounting legacy paths is committed to a snapshot and re-created with translated workspace, state, and vault mounts, keeping its writable layer — software installed inside survives the upgrade.
603
+ - Migrate containers off the boot path: on demand before a conversation's next message and via a background sweep after the platforms start, so boot stays fast and nothing blocks on the one-time cost.
604
+ - Resume interrupted container migrations safely: the pre-removal mounts ride on the snapshot image, a crash at any point resumes without data loss, and snapshots are reclaimed once a container naturally returns to the base image.
605
+ - Add the `MIKAN_SKIP_CONTAINER_PRESERVATION` escape hatch to fall back to plain container removal.
606
+
607
+ ### Tests
608
+
609
+ - Cover translate, no-op, resume, orphan-resume, snapshot reclamation, and disarmed paths on a stateful docker mock, plus bind-translator unit tests; rehearsed against real docker including the crash-resume path.
610
+
611
+ ## [1.0.0-beta.34]
612
+
613
+ **One-way storage migration.** On first boot this release renames every conversation's workspace directory, credential vault, and host state tree to platform-scoped office keys, journaled with crash recovery. Back up the state dir and workspace before upgrading; earlier versions cannot read the migrated layout, so there is no downgrade. Managed sandbox containers for migrated conversations are recreated, which resets software installed inside them once (a preservation path is planned for a follow-up release).
614
+
615
+ ### Added
616
+
617
+ - Isolate every conversation as an office keyed by platform and conversation id, ending all cross-platform collisions on shared raw ids: runtime state, workspace files, chat logs, attachments, credential vaults, settings, extension data, and scheduled-event scoping are now platform-scoped.
618
+ - Migrate legacy directories automatically at boot: ownership is verified against each enabled platform's id format, ambiguous or unrecognized directories fail closed as needs-owner, and repositories or build output sitting in a trusted workspace root are skipped in place.
619
+ - Add the `mikan office` CLI: `list` shows the office inventory and pending migrations; `claim` assigns an owner platform to a legacy directory the format check cannot decide.
620
+ - Record every office in a host-only registry at creation, giving Admin and CLI surfaces a durable raw-id ↔ office mapping.
621
+
622
+ ### Changed
623
+
624
+ - Scope the Admin portal by office: conversation lists show platforms, cross-platform targets name theirs explicitly, and all paths, settings, projections, and vault links resolve from the full office address.
625
+ - Show office-key paths (`/workspace/v1-slack-…`) in agent prompts and workspace listings; transcripts from before the upgrade may reference old paths until the agent re-lists.
626
+ - Breaking for embedders: `createRunner`, `MessagingEventHandler`, settings, package, and extension APIs now carry an `OfficeAddress`.
627
+
628
+ ### Fixed
629
+
630
+ - Preserve Session Dream memory writes after the migration; the write grant previously derived the memory path from the raw conversation id and would have refused every dream.
631
+ - Stop `mikan ext` from resolving conversation state against the wrong state dir when `--state-dir` differs from the environment default.
632
+ - Keep thread sessions anchored to their main-session lineage via `parentSessionId`.
633
+
634
+ ### Tests
635
+
636
+ - Add migration-engine coverage for claiming, crash recovery, ambiguity, reappeared directories, vault and state-tree moves, and format verification; rehearsed end-to-end against a production-shaped 327-entry workspace (285 offices migrated in ~2.4s, zero manual claims, checksums identical).
637
+ - Keep state-writing tests out of the developer's real `~/.mikan` with a suite-wide temporary state dir.
638
+
639
+ ## [1.0.0-beta.33]
640
+
641
+ ### Changed
642
+
643
+ - Give every built-in subagent profile a 100,000-token allowance and honor larger token budgets requested by the parent model.
644
+
645
+ ### Fixed
646
+
647
+ - Disable Sentry's faulty OpenAI integration to prevent instrumentation failures in model-provider requests.
648
+
649
+ ### Tests
650
+
651
+ - Add regression coverage for subagent profile token defaults, model-requested increases, tool schema behavior, and disabled OpenAI instrumentation.
652
+
653
+ ## [1.0.0-beta.32]
654
+
655
+ ### Changed
656
+
657
+ - Raise the autonomous event and trigger run cost stop-loss from $2 to $10 while retaining the 10-minute and 50-call limits.
658
+ - Allow session memory dreams to make up to 10 LLM calls and remove their fixed cost cap while retaining the two-minute limit.
659
+
660
+ ### Fixed
661
+
662
+ - Prevent large conversations from becoming permanently unable to reset or rotate when preserving memory necessarily exceeds a fixed cost threshold.
663
+
664
+ ## [1.0.0-beta.31]
665
+
666
+ ### Changed
667
+
668
+ - Allow attachments to use each sandbox executor's standard file reader while retaining workspace path containment.
669
+
670
+ ### Fixed
671
+
672
+ - Restore HTML, image, and document uploads from managed sandboxes that cannot provide atomic symlink-free traversal.
673
+
674
+ ### Tests
675
+
676
+ - Add end-to-end regression coverage for staging and uploading workspace files through the regular executor transport.
677
+
678
+ ## [1.0.0-beta.30]
679
+
680
+ ### Added
681
+
682
+ - Add role-based subagent profiles for software engineering, DevOps, data science, account management, business development, creative production, advertising operations, and bounded general work.
683
+ - Add a generated cross-module hardening report covering module boundaries, coupling, and verification evidence.
684
+
685
+ ### Changed
686
+
687
+ - Stabilize exported module interfaces and route executor-dependent file staging through the active execution transport.
688
+ - Deepen progressive response rendering and keep Slack E2E turns bound to the runner lifecycle.
689
+
690
+ ### Fixed
691
+
692
+ - Prevent extension packages, attachment bridges, vault keys, sandbox paths, and event inputs from escaping their intended boundaries.
693
+ - Close runner construction, cached-runner invalidation, Gondolin projection, and automatic Session Dream settlement races.
694
+ - Validate model identifiers, event timezones, package refreshes, and shared-history watermarks consistently.
695
+ - Keep reset history bounded by reset time and exclude queued future turns from session history.
696
+ - Prevent Slack from posting bare working-indicator updates.
697
+
698
+ ### Security
699
+
700
+ - Harden Git package materialization, extension subpaths, filesystem bridges, and sandbox path validation against traversal and symlink escapes.
701
+
702
+ ### Tests
703
+
704
+ - Add regression coverage for declaration surfaces, session history boundaries, runtime races, event validation, package materialization, and Slack runner integration.
705
+
706
+ ## [1.0.0-beta.29]
707
+
708
+ ### Added
709
+
710
+ - Add Git-sourced extension packages with global and conversation scopes, package mount resolution, CLI inspection, and admin portal management.
711
+ - Add native Slack markdown-block responses and the `slack_blockkit` tool for interactive Block Kit messages.
712
+ - Add interactive Block Kit APIs for extensions, with a poll extension example.
713
+ - Add named subagent profiles, built-in workflow specialists, per-profile tool grants, and a bounded Slack progress dashboard.
714
+ - Preserve durable memory with Session Dream before biweekly shared-channel session rotation, using the same conversation-scoped maintenance path as `/new`.
715
+
716
+ ### Changed
717
+
718
+ - Run Gondolin runtimes inside the mikan process instead of detached workers. Restarts now boot fresh VMs on demand, and shutdown closes every VM so projected files sync back first.
719
+ - Remove Gondolin runtime inventories, worker heartbeats, and the `stateDir` argument from `configureGondolinRuntime`.
720
+ - Render standard GFM response prose as native Slack markdown blocks while keeping progressive response updates behind a single lifecycle.
721
+
722
+ ### Fixed
723
+
724
+ - Keep the current session active and preserve saved memory when Session Dream cannot finish.
725
+ - Bound subagent cancellation, invocation modes, profile labels, and Block Kit payloads; clamp long labels with an ellipsis instead of rejecting calls.
726
+ - Show the selected subagent profile and its tool grant consistently in progress output.
727
+ - Render the Slack subagent dashboard as a response source rather than escaped mrkdwn.
728
+ - Isolate Git test fixtures from an ambient `GIT_DIR`.
729
+
730
+ ### Tests
731
+
732
+ - Add coverage for extension packages, extension Block Kit APIs, native Slack rendering, subagent profiles and progress, Session Dream rotation, and in-process Gondolin lifecycle behavior.
733
+
734
+ ## [1.0.0-beta.28]
735
+
736
+ ### Removed
737
+
738
+ - Remove Gondolin remote-worker and fleet support. `sandbox.gondolin.remote`, `gondolin:remote`, and `--worker-token` are no longer supported; use the local `gondolin:default` sandbox instead.
739
+
740
+ ### Fixed
741
+
742
+ - Preserve Slack mrkdwn links whose labels contain spaces when rendering Block Kit responses.
743
+ - Reuse the existing Slack progress message when streaming the final response, preventing duplicate or partially completed bot messages.
744
+
745
+ ## [1.0.0-beta.27]
746
+
747
+ ### Added
748
+
749
+ - Preserve concrete long-term memory before `/new` creates a fresh DM session, while keeping transient context and pre-reset platform history out of the new model context.
750
+
751
+ ### Changed
752
+
753
+ - Serialize workspace-mutating tools and memory-maintenance runs so file updates, resets, and incoming messages have deterministic ordering.
754
+ - Align extension context and message hooks with the active agent lifecycle, including per-run system prompt rewrites that preserve dynamically rebuilt memory, skills, and sandbox context.
755
+
756
+ ### Fixed
757
+
758
+ - Keep extension-rewritten messages consistent across tool execution, persistence, provider context, and lifecycle events.
759
+ - Account for compaction model usage in run budgets and reject corrupted session trees instead of silently accepting broken history.
760
+ - Wait for active runs before resetting sessions, and prevent old runs from writing after `/new`.
761
+ - Keep long Slack continuations in their thread and preserve mrkdwn links when rendering Block Kit text.
762
+
763
+ ### Tests
764
+
765
+ - Add real Slack coverage for memory-preserving `/pi-new`, long threaded responses, and Block Kit markdown links.
766
+ - Add regression coverage for harness message identity, dynamic prompts, compaction budgets, session integrity, runtime settlement, and mutation-tool ordering.
767
+
768
+ ## [1.0.0-beta.26]
769
+
770
+ ### Fixed
771
+
772
+ - Make the subagent tool schema compatible with OpenAI by exposing an object at the function parameter root.
773
+
774
+ ### Tests
775
+
776
+ - Add regression coverage for OpenAI-compatible subagent function schemas.
777
+
778
+ ## [1.0.0-beta.25]
779
+
780
+ ### Changed
781
+
782
+ - Temporarily remove the Agent Sandbox runtime, SDK, Kubernetes client, Helm deployment, runtime images, and related release workflow from the npm release.
783
+ - Restore the Gondolin, Gondolin remote-worker, and Firecracker sandbox implementations while Agent Sandbox packaging is redesigned separately.
784
+
785
+ ### Fixed
786
+
787
+ - Restore global npm installation and CLI startup after the broken Agent Sandbox dependencies in `1.0.0-beta.23` and `1.0.0-beta.24`.
788
+
789
+ ### Tests
790
+
791
+ - Add a real `npm install -g --prefix` smoke test for the packed tarball, enforce a 2 MiB size ceiling, and gate CI and npm publishing on the result.
792
+
793
+ ## [1.0.0-beta.24]
794
+
795
+ ### Fixed
796
+
797
+ - Bundle the vendored Agent Sandbox SDK in the npm package so global installs no longer fail on a missing repository-local tarball.
798
+ - Reuse mikan's direct Kubernetes client dependency as an SDK peer instead of recursively bundling a duplicate dependency tree, keeping the published tarball under 1 MiB.
799
+
800
+ ### Tests
801
+
802
+ - Add a pack-install smoke test that imports the bundled SDK, runs the packed CLI, enforces a 2 MiB size ceiling, and gates both CI and npm publishing.
803
+
804
+ ## [1.0.0-beta.23]
805
+
806
+ ### Added
807
+
808
+ - Add Kubernetes Agent Sandbox execution with mandatory `kata-qemu` isolation, a pinned TypeScript client, managed idle cleanup, and shared workspace support.
809
+ - Add a Helm chart with GKE Standard, Linux k3s, Colima, and router-only profiles; GKE supports Filestore CSI on an explicitly configured VPC.
810
+ - Publish mikan, the Agent Sandbox runtime, and the pinned router source build to GHCR through a release-aware image workflow.
811
+ - Expose detailed subagent input, output, cache, reasoning, and cost usage while retaining the existing summary aliases.
812
+
813
+ ### Changed
814
+
815
+ - Replace Gondolin and Firecracker sandbox modes with `agent-sandbox:<warm-pool>`.
816
+ - Make Helm the supported Kubernetes deployment interface; the default and Colima profiles use host execution, while GKE and k3s profiles require Kata and RWX storage.
817
+ - Include delegated subagent usage in parent run statistics and budget accounting.
818
+
819
+ ### Removed
820
+
821
+ - Remove the standalone `mikan-worker`, remote worker fleet, dial-home gateway, Gondolin runtime, Firecracker executor, worker CI, and worker release binaries. Existing Gondolin deployments must move to the Agent Sandbox Helm deployment; no automatic deployment or state migration is provided.
822
+
823
+ ### Security
824
+
825
+ - Require Kata rather than silently falling back to runc, restrict the optional router to the configured mikan namespace with a NetworkPolicy, and keep generated PVCs by default on Helm uninstall.
826
+ - Update transitive `js-yaml` to 4.3.0 to address the merge-key chain denial-of-service advisory.
827
+
828
+ ### Tests
829
+
830
+ - Add Agent Sandbox unit coverage, Helm profile assertions, pinned router image builds, and full GKE validation covering Kata, Filestore RWX, browser recording, aborts, recovery, Slack, and LLM tool execution.
831
+ - Add coverage for detailed subagent usage, compatibility aliases, failure paths, extension results, and parent budget accounting.
832
+
833
+ ## [1.0.0-beta.22]
834
+
835
+ ### Added
836
+
837
+ - Let subagents opt into a normalized reference snapshot of the active parent conversation with `parentContext`, while keeping fresh isolated context as the default.
838
+
839
+ ### Changed
840
+
841
+ - Raise default subagent limits from 8 to 100 turns, $0.50 to $10, and 2 to 10 minutes; return concrete budget or timeout reasons.
842
+ - Apply the process-wide subagent concurrency ceiling to both tool- and extension-initiated runs, with cancellation while queued and usage attribution only to the active parent run.
843
+ - Use collision-safe hashed keys for credential authorization and runtime resources. Exact legacy host and shared-container credentials remain readable, but users of ambiguous legacy managed-sandbox keys may need to run `/login` again.
844
+ - Reject unsupported vault file mounts and mounts that overlap workspace or other credential targets.
845
+ - Extract workspace projection and session lifecycle responsibilities into focused modules without intended runtime behavior changes.
846
+
847
+ ### Fixed
848
+
849
+ - Reject session keys belonging to another conversation and unsafe conversation or thread identifiers.
850
+ - Prevent session pointers and thread files from escaping their owning directory or resolving through symlinks.
851
+ - Process Slack messages posted by known human users through user tokens even when Slack includes the posting app's `bot_id`; bot-authored messages remain ignored.
852
+ - Clearly report subagent budget exhaustion instead of returning a generic incomplete status.
853
+
854
+ ### Tests
855
+
856
+ - Add Slack E2E coverage for DMs, idle stop, thread isolation, busy queues, images, and multi-file uploads.
857
+ - Add unit coverage for session identity and path safety, collision-safe sandbox identities, vault mount policy, session lifecycle, normalized subagent context, shared slots, cancellation, and budget reporting.
858
+
859
+ ## [1.0.0-beta.21]
860
+
861
+ ### Added
862
+
863
+ - Fold each subagent's tokens and cost into the parent run's tally (`MikanAgentSession.recordExternalUsage`), so delegated spend counts against the parent run's budget instead of staying invisible to it.
864
+ - Add a process-wide subagent fan-out ceiling shared across conversations.
865
+ - Add `mikan --help` and a generated `mikan env` inventory from the daemon environment manifest.
866
+ - Make the working-directory argument optional, defaulting to `<state-dir>/workspace`.
867
+ - Add a public Gondolin runtime bootstrap seam for embedders.
868
+
869
+ ### Changed
870
+
871
+ - Subagent runs never reject: request validation failures (unknown tools, invalid budgets, empty tasks, nested runs) now resolve to `failed` results, so one bad request in a `tasks`/`dag` batch can no longer orphan in-flight sibling subagents.
872
+ - Cap parallel `tasks[]` batches at 4 concurrent subagents (the same limit as DAG mode) and run DAG waves through a slot pool instead of chunk barriers.
873
+ - Report a subagent final response with no text as `failed` instead of `completed` with empty output.
874
+ - Enforce parent budgets immediately when subagent usage is folded into the parent run.
875
+ - Apply one state-directory precedence rule across boot, extensions, Sentry, and runtime readers.
876
+ - Refuse model and sandbox settings updates while a conversation is busy, and invalidate affected cached runners consistently.
877
+ - Drive PM2 environment configuration from `~/.mikan/mikan.env` instead of inline secrets.
878
+
879
+ ### Fixed
880
+
881
+ - Harden Gondolin dial-home reconnects after transport failures and stale sessions.
882
+ - Reject invalid one-shot event timestamps consistently across all event writers.
883
+ - Apply global model settings to idle conversations and report busy conversations as stale.
884
+
885
+ ### Security
886
+
887
+ - Keep PM2 secrets in an owner-only file outside repository trees and make the PM2 template supervision-only.
888
+
889
+ ### Tests
890
+
891
+ - Add coverage for subagent accounting and concurrency, CLI and environment manifests, settings mutation, Gondolin reconnects and contracts, event formatting, and worker state layout.
892
+
893
+ ## [1.0.0-beta.20]
894
+
895
+ ### Fixed
896
+
897
+ - Validate subagent `outputSchema` correctly when it arrives as plain JSON Schema (the only form tool calls can carry), instead of throwing `ValueCheckUnknownTypeError` because it lacks TypeBox's `Kind` metadata.
898
+
899
+ ### Tests
900
+
901
+ - Add coverage for plain JSON Schema hydration, nested objects, arrays, unions, and validation failures.
902
+
903
+ ## [1.0.0-beta.19]
904
+
905
+ ### Added
906
+
907
+ - Add fresh in-memory subagents for the main agent and extensions, with explicit tools, budgets, structured output, parallel batches, and bounded DAG orchestration.
908
+ - Stream debounced subagent node progress through the shared Slack, Discord, and Telegram response lifecycle.
909
+
910
+ ### Changed
911
+
912
+ - Let final responses at the LLM-call cap complete without tripping the run budget when no continuation is required.
913
+
914
+ ### Fixed
915
+
916
+ - Install worker binaries from the newest GitHub release that contains a matching asset, including prereleases.
917
+ - Restore generic Google Workspace CLI credential mounts in sandbox vaults.
918
+
919
+ ### Tests
920
+
921
+ - Add coverage for subagent isolation, recursion guards, budgets, structured output, parallel execution, DAG validation and dependency flow, and platform-neutral progress rendering.
922
+
923
+ ## [1.0.0-beta.18]
924
+
925
+ ### Added
926
+
927
+ - Add an idempotent Debian and Ubuntu worker-host initialization script.
928
+ - Add persistent `mikan-worker` installation as a delegated systemd service.
929
+ - Add NFS export detection with OS-specific setup guidance for `gondolin:remote` workspaces.
930
+ - Ship host-side vault credential files securely to remote workers without placing them in the shared workspace.
931
+ - Add bounded shared-workspace health probes and worker degradation reporting.
932
+
933
+ ### Changed
934
+
935
+ - Require each Gondolin remote gateway and static worker to declare its shared `workspaceRoot`.
936
+ - Exclude workers with unhealthy shared workspaces from new placements and restore them after a healthy heartbeat.
937
+
938
+ ### Fixed
939
+
940
+ - Fail remote execution with actionable diagnostics instead of hanging on dead shared-workspace mounts.
941
+ - Create runtime cgroups beneath the worker's delegated cgroup and report missing `Delegate=yes` configuration.
942
+ - Verify downloaded worker binaries against the matching release checksum filename.
943
+ - Validate `gondolin:remote` only after gateway and worker transports are configured.
944
+
945
+ ### Security
946
+
947
+ - Materialize remote credential files as owner-only, read-only runtime files outside shared workspaces.
948
+
949
+ ### Tests
950
+
951
+ - Add coverage for worker host services, cgroup delegation, workspace health, credential delivery, NFS advice, remote validation, and idle execution deadlines.
952
+
953
+ ## [1.0.0-beta.17]
954
+
955
+ ### Added
956
+
957
+ - Add `gondolin:remote` for scheduling sandbox runtimes across a fleet of Linux/KVM workers.
958
+ - Add a standalone `mikan-worker` daemon with mutual TLS, fenced leases, crash recovery, capacity-aware placement, draining, and sticky conversation assignment.
959
+ - Add dial-home worker enrollment through one-time join tokens and a mikan-hosted gateway.
960
+ - Add private workspace projection, vault injection, resource limits, lifecycle reconciliation, and drift recovery to Gondolin runtimes.
961
+ - Add worker installation, enrollment, operations, and remote quickstart documentation with a one-command end-to-end smoke test.
962
+ - Publish `mikan-worker` binaries and checksums with GitHub releases.
963
+
964
+ ### Changed
965
+
966
+ - Rename the preview sandbox mode from `microvm:default` to `gondolin:default` and the image build command to `npm run gondolin:image:build`.
967
+
968
+ ### Fixed
969
+
970
+ - Project mounted files correctly into Gondolin guests.
971
+ - Refresh rotated credentials when Gondolin runtimes are recreated.
972
+
973
+ ### Security
974
+
975
+ - Authenticate remote workers with mutual TLS and fence stale workers through expiring leases.
976
+ - Keep enrollment tokens one-time and store worker credentials privately.
977
+
978
+ ### Tests
979
+
980
+ - Add coverage for Gondolin lifecycle, workspace isolation, vaults, resource controls, fleet scheduling, gateways, enrollment, workers, leases, and remote execution.
981
+
982
+ ## [1.0.0-beta.16]
983
+
984
+ ### Added
985
+
986
+ - Add a preview `gondolin:default` sandbox backed by Gondolin and QEMU.
987
+ - Add a curated microVM guest image build with Node.js, Python, uv, Git, ripgrep, fd, jq, SSH, and build tools.
988
+ - Manage one process-local microVM per conversation with idle shutdown and recreation on demand.
989
+
990
+ ### Changed
991
+
992
+ - Broaden the coverage gate across all source modules.
993
+
994
+ ### Fixed
995
+
996
+ - Keep top-level Slack file uploads out of threads.
997
+
998
+ ### Tests
999
+
1000
+ - Add coverage for microVM execution and lifecycle, events, logging, disabled vaults, channel storage, and core file and shell tools.
1001
+
1002
+ ## [1.0.0-beta.15]
1003
+
1004
+ ### Added
1005
+
1006
+ - Add native image generation with automatic upload through the active model provider.
1007
+ - Add extension chat commands via `api.registerCommand`: deterministic `/name` dispatch with no model call; built-ins and first registrations win.
1008
+ - Add an extension disposal lifecycle (`api.onDispose` or an `activate` return value), run when a harness instance is discarded (`/pi-new`, idle eviction, session rotation).
1009
+ - Add `api.triggerRun(text)` to fire an immediate autonomous agent run, `api.uploadFile(path, title)` for proactive file uploads, and an explicit `conversationId` option on `api.notify` for cross-conversation posting.
1010
+ - Add `agent_error` and `budget_exceeded` extension hooks so monitoring extensions see failed turns and tripped run budgets.
1011
+ - Pass a `RunOrigin` (platform, triggering message id, user identity, attachments) to extension hook events, making `api.react` and per-user extension policy usable.
1012
+ - Let `before_agent_start` extensions rewrite the user prompt or block the turn before the model runs; blocked turns leave no trace in the transcript or session store.
1013
+ - Let `tool_result` extensions rewrite tool output (content and error flag) before the model and the session store see it, enabling secret redaction and output truncation.
1014
+
1015
+ ### Changed
1016
+
1017
+ - Dispatch `before_agent_start` and `tool_result` hooks with chaining semantics (each handler sees earlier handlers' rewrites; any `block` wins) instead of first-result-wins.
1018
+
1019
+ ### Fixed
1020
+
1021
+ - Dispose cached runners when models switch or environment credentials refresh.
1022
+
1023
+ ### Tests
1024
+
1025
+ - Add coverage for image generation, extension lifecycle and hook rewrites, and runner disposal.
1026
+
1027
+ ## [1.0.0-beta.14]
1028
+
1029
+ ### Added
1030
+
1031
+ - Add GitHub inline review-thread intake and a `github_review_reply` tool.
1032
+ - Add `github_sync`, `github_read`, and `github_issue` tools for repository refresh and issue or pull request operations.
1033
+ - Add host-side Cloud Build log retrieval using GCP ADC or Workload Identity Federation.
1034
+ - Add a minimal embedder example that runs without portal services.
1035
+
1036
+ ### Changed
1037
+
1038
+ - Update eligible GitHub pull request head branches in place instead of opening duplicate pull requests.
1039
+ - Drive platform command registration and routing from a shared command manifest.
1040
+ - Use one cross-platform stop grammar, including `/stop` in GitHub conversations.
1041
+ - Route sandbox file reads and writes through executors with staged, shell-safe transport.
1042
+ - Keep sandbox settings nested through configuration resolution and updates.
1043
+
1044
+ ### Fixed
1045
+
1046
+ - Preserve raw session keys when using Slack's Force Stop button.
1047
+ - Spill large bash output into the runtime workspace so sandboxed agents can read it.
1048
+ - Keep malformed event files visible in the admin portal for deletion.
1049
+ - Unify platform formatting guidance across adapter and conversation contexts.
1050
+
1051
+ ### Security
1052
+
1053
+ - Keep Cloud Build credentials host-side and outside agent sandboxes.
1054
+ - Centralize runtime identity and sandbox path sanitization.
1055
+
1056
+ ### Tests
1057
+
1058
+ - Add coverage for GitHub tool operations, review threads, Cloud Build logs, executor file transport, command manifests, runtime embedding, and session serialization.
1059
+
1060
+ ## [1.0.0-beta.13]
1061
+
1062
+ ### Added
1063
+
1064
+ - Add the `max` thinking level to commands, configuration, and the admin portal.
1065
+ - Add quickstart and extension development guides across all supported locales.
1066
+
1067
+ ### Changed
1068
+
1069
+ - Update pi agent dependencies to 0.80.6.
1070
+ - Load platform-specific tool packs only for their configured adapters.
1071
+ - Improve `github_checks` output and guidance for external CI providers.
1072
+ - Synchronize configuration, platform, sandbox, session, skill, event, portal, and deployment documentation across locales.
1073
+
1074
+ ### Fixed
1075
+
1076
+ - Fix broken CLI tables and dead documentation links across locales.
1077
+
1078
+ ### Security
1079
+
1080
+ - Derive ambient shared-vault access from each platform's declared trust model and sandbox topology.
1081
+
1082
+ ### Tests
1083
+
1084
+ - Add coverage for platform tool-pack isolation, external CI checks, and vault trust policy.
1085
+
1086
+ ## [1.0.0-beta.12]
1087
+
1088
+ ### Added
1089
+
1090
+ - Let `github_checks` fetch the log tail for a failing GitHub Actions job by job ID.
1091
+
1092
+ ### Changed
1093
+
1094
+ - Require GitHub App Actions read permission for job log inspection.
1095
+
1096
+ ### Fixed
1097
+
1098
+ - Treat skipped and neutral GitHub checks separately from failures in check summaries.
1099
+
1100
+ ### Tests
1101
+
1102
+ - Add coverage for job log retrieval and check conclusion classification.
1103
+ - Use collision-resistant temporary directories across parallel tests.
1104
+
1105
+ ## [1.0.0-beta.11]
1106
+
1107
+ ### Added
1108
+
1109
+ - Add a read-only `github_checks` tool for inspecting branch and pull request check runs.
1110
+
1111
+ ### Changed
1112
+
1113
+ - Make `github_pr` idempotent so pushing an existing branch updates its open pull request.
1114
+ - Teach the GitHub agent workflow to inspect CI, fix failures, and push updates.
1115
+ - Require GitHub App Checks read permission for CI inspection.
1116
+
1117
+ ### Tests
1118
+
1119
+ - Add coverage for GitHub check summaries and existing pull request updates.
1120
+
1121
+ ## [1.0.0-beta.10]
1122
+
1123
+ ### Fixed
1124
+
1125
+ - Retry cloning a GitHub repository on later triggers when the conversation clone is missing.
1126
+
1127
+ ### Security
1128
+
1129
+ - Stop applying the ambient default shared vault to GitHub conversations while preserving explicit conversation vault grants.
1130
+ - Document the platform, shared machine, and personal credential trust boundaries.
1131
+
1132
+ ### Tests
1133
+
1134
+ - Add coverage for GitHub clone retries and platform-gated default vault resolution.
1135
+
1136
+ ## [1.0.0-beta.9]
1137
+
1138
+ ### Added
1139
+
1140
+ - Clone GitHub repositories into conversation workspaces and check out pull request heads.
1141
+ - Add a `github_pr` tool that pushes agent changes from `pi/*` branches and opens pull requests.
1142
+
1143
+ ### Changed
1144
+
1145
+ - Require GitHub App Contents read and write permission for repository automation.
1146
+ - Post completed GitHub responses as single comments instead of streaming edits.
1147
+
1148
+ ### Fixed
1149
+
1150
+ - Keep GitHub issue context inside the history recency window.
1151
+
1152
+ ### Security
1153
+
1154
+ - Require commenters to have repository write permission or higher before triggering the agent.
1155
+ - Keep installation tokens out of sandboxes and restrict agent pushes to non-force `pi/*` branches.
1156
+
1157
+ ### Tests
1158
+
1159
+ - Add coverage for GitHub repository checkout, permission gating, pull request creation, and branch restrictions.
1160
+
12
1161
  ## [1.0.0-beta.8]
13
1162
 
14
1163
  ### Added