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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (998) hide show
  1. package/CHANGELOG.md +342 -424
  2. package/README.md +102 -42
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/adapters/commands/admin.js +33 -0
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/adapters/commands/auto-reply.d.ts +5 -0
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +158 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +17 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +121 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +9 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +136 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +39 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +4 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +35 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts +6 -0
  30. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  31. package/dist/adapters/commands/sandbox.js +125 -0
  32. package/dist/adapters/commands/sandbox.js.map +1 -0
  33. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  34. package/dist/adapters/commands/session-view.js +46 -0
  35. package/dist/adapters/commands/session-view.js.map +1 -0
  36. package/dist/adapters/commands/types.d.ts +105 -0
  37. package/dist/adapters/commands/types.d.ts.map +1 -0
  38. package/dist/adapters/commands/types.js.map +1 -0
  39. package/dist/adapters/commands/utils.d.ts +11 -0
  40. package/dist/adapters/commands/utils.d.ts.map +1 -0
  41. package/dist/adapters/commands/utils.js +43 -0
  42. package/dist/adapters/commands/utils.js.map +1 -0
  43. package/dist/adapters/discord/bot.d.ts +14 -18
  44. package/dist/adapters/discord/bot.d.ts.map +1 -1
  45. package/dist/adapters/discord/bot.js +234 -303
  46. package/dist/adapters/discord/bot.js.map +1 -1
  47. package/dist/adapters/discord/components.d.ts +4 -0
  48. package/dist/adapters/discord/components.d.ts.map +1 -0
  49. package/dist/adapters/discord/components.js +9 -0
  50. package/dist/adapters/discord/components.js.map +1 -0
  51. package/dist/adapters/discord/context.d.ts +3 -7
  52. package/dist/adapters/discord/context.d.ts.map +1 -1
  53. package/dist/adapters/discord/context.js +57 -219
  54. package/dist/adapters/discord/context.js.map +1 -1
  55. package/dist/adapters/discord/format.d.ts +2 -0
  56. package/dist/adapters/discord/format.d.ts.map +1 -0
  57. package/dist/adapters/discord/format.js +47 -0
  58. package/dist/adapters/discord/format.js.map +1 -0
  59. package/dist/adapters/discord/types.d.ts +91 -1
  60. package/dist/adapters/discord/types.d.ts.map +1 -1
  61. package/dist/adapters/discord/types.js.map +1 -1
  62. package/dist/adapters/github/activity.d.ts +3 -0
  63. package/dist/adapters/github/activity.d.ts.map +1 -0
  64. package/dist/adapters/github/activity.js +148 -0
  65. package/dist/adapters/github/activity.js.map +1 -0
  66. package/dist/adapters/github/bot.d.ts +24 -37
  67. package/dist/adapters/github/bot.d.ts.map +1 -1
  68. package/dist/adapters/github/bot.js +209 -397
  69. package/dist/adapters/github/bot.js.map +1 -1
  70. package/dist/adapters/github/client.d.ts +32 -49
  71. package/dist/adapters/github/client.d.ts.map +1 -1
  72. package/dist/adapters/github/client.js +108 -118
  73. package/dist/adapters/github/client.js.map +1 -1
  74. package/dist/adapters/github/context.d.ts +3 -8
  75. package/dist/adapters/github/context.d.ts.map +1 -1
  76. package/dist/adapters/github/context.js +74 -138
  77. package/dist/adapters/github/context.js.map +1 -1
  78. package/dist/adapters/github/github-ops.d.ts +14 -0
  79. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  80. package/dist/adapters/github/github-ops.js +218 -0
  81. package/dist/adapters/github/github-ops.js.map +1 -0
  82. package/dist/adapters/github/ids.d.ts +2 -23
  83. package/dist/adapters/github/ids.d.ts.map +1 -1
  84. package/dist/adapters/github/ids.js +6 -36
  85. package/dist/adapters/github/ids.js.map +1 -1
  86. package/dist/adapters/github/policy.d.ts +19 -0
  87. package/dist/adapters/github/policy.d.ts.map +1 -0
  88. package/dist/adapters/github/policy.js +79 -0
  89. package/dist/adapters/github/policy.js.map +1 -0
  90. package/dist/adapters/github/tool-pack.d.ts +4 -0
  91. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  92. package/dist/adapters/github/tool-pack.js +40 -0
  93. package/dist/adapters/github/tool-pack.js.map +1 -0
  94. package/dist/adapters/github/tools/checks.d.ts +14 -0
  95. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  96. package/dist/adapters/github/tools/checks.js +78 -0
  97. package/dist/adapters/github/tools/checks.js.map +1 -0
  98. package/dist/adapters/github/tools/issue.d.ts +18 -0
  99. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  100. package/dist/adapters/github/tools/issue.js +44 -0
  101. package/dist/adapters/github/tools/issue.js.map +1 -0
  102. package/dist/adapters/github/tools/pr.d.ts +17 -0
  103. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  104. package/dist/adapters/github/tools/pr.js +40 -0
  105. package/dist/adapters/github/tools/pr.js.map +1 -0
  106. package/dist/adapters/github/tools/read.d.ts +17 -0
  107. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  108. package/dist/adapters/github/tools/read.js +134 -0
  109. package/dist/adapters/github/tools/read.js.map +1 -0
  110. package/dist/adapters/github/tools/review-reply.d.ts +14 -0
  111. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  112. package/dist/adapters/github/tools/review-reply.js +34 -0
  113. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  114. package/dist/adapters/github/types.d.ts +200 -57
  115. package/dist/adapters/github/types.d.ts.map +1 -1
  116. package/dist/adapters/github/types.js.map +1 -1
  117. package/dist/adapters/github/webhook.d.ts +7 -0
  118. package/dist/adapters/github/webhook.d.ts.map +1 -0
  119. package/dist/adapters/github/webhook.js +104 -0
  120. package/dist/adapters/github/webhook.js.map +1 -0
  121. package/dist/adapters/intake.d.ts +4 -10
  122. package/dist/adapters/intake.d.ts.map +1 -1
  123. package/dist/adapters/intake.js +85 -32
  124. package/dist/adapters/intake.js.map +1 -1
  125. package/dist/adapters/markdown-tables.d.ts +8 -0
  126. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  127. package/dist/adapters/markdown-tables.js +111 -0
  128. package/dist/adapters/markdown-tables.js.map +1 -0
  129. package/dist/adapters/messages.d.ts +13 -0
  130. package/dist/adapters/messages.d.ts.map +1 -0
  131. package/dist/adapters/messages.js +39 -0
  132. package/dist/adapters/messages.js.map +1 -0
  133. package/dist/adapters/progressive-renderer.d.ts +7 -0
  134. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  135. package/dist/adapters/progressive-renderer.js +426 -0
  136. package/dist/adapters/progressive-renderer.js.map +1 -0
  137. package/dist/adapters/shared.d.ts +27 -53
  138. package/dist/adapters/shared.d.ts.map +1 -1
  139. package/dist/adapters/shared.js +167 -91
  140. package/dist/adapters/shared.js.map +1 -1
  141. package/dist/adapters/slack/assistant.d.ts +21 -0
  142. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  143. package/dist/adapters/slack/assistant.js +103 -0
  144. package/dist/adapters/slack/assistant.js.map +1 -0
  145. package/dist/adapters/slack/auto-reply-context.d.ts +14 -0
  146. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  147. package/dist/adapters/slack/auto-reply-context.js +21 -0
  148. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  149. package/dist/adapters/slack/blocks.d.ts +5 -0
  150. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  151. package/dist/adapters/slack/blocks.js +144 -145
  152. package/dist/adapters/slack/blocks.js.map +1 -1
  153. package/dist/adapters/slack/bot.d.ts +60 -40
  154. package/dist/adapters/slack/bot.d.ts.map +1 -1
  155. package/dist/adapters/slack/bot.js +968 -588
  156. package/dist/adapters/slack/bot.js.map +1 -1
  157. package/dist/adapters/slack/context.d.ts +3 -9
  158. package/dist/adapters/slack/context.d.ts.map +1 -1
  159. package/dist/adapters/slack/context.js +8 -17
  160. package/dist/adapters/slack/context.js.map +1 -1
  161. package/dist/adapters/slack/jev-context.d.ts +17 -0
  162. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  163. package/dist/adapters/slack/jev-context.js +57 -0
  164. package/dist/adapters/slack/jev-context.js.map +1 -0
  165. package/dist/adapters/slack/markdown.d.ts +2 -0
  166. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  167. package/dist/adapters/slack/markdown.js +43 -0
  168. package/dist/adapters/slack/markdown.js.map +1 -0
  169. package/dist/adapters/slack/persona.d.ts +6 -0
  170. package/dist/adapters/slack/persona.d.ts.map +1 -0
  171. package/dist/adapters/slack/persona.js +13 -0
  172. package/dist/adapters/slack/persona.js.map +1 -0
  173. package/dist/adapters/slack/response-lifecycle.d.ts +3 -4
  174. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  175. package/dist/adapters/slack/response-lifecycle.js +222 -348
  176. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  177. package/dist/adapters/slack/session.d.ts +3 -2
  178. package/dist/adapters/slack/session.d.ts.map +1 -1
  179. package/dist/adapters/slack/session.js +9 -13
  180. package/dist/adapters/slack/session.js.map +1 -1
  181. package/dist/adapters/slack/stream-limits.d.ts +10 -0
  182. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  183. package/dist/adapters/slack/stream-limits.js +22 -0
  184. package/dist/adapters/slack/stream-limits.js.map +1 -0
  185. package/dist/adapters/slack/task-intent.d.ts +19 -0
  186. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  187. package/dist/adapters/slack/task-intent.js +65 -0
  188. package/dist/adapters/slack/task-intent.js.map +1 -0
  189. package/dist/adapters/slack/task-status.d.ts +7 -0
  190. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  191. package/dist/adapters/slack/task-status.js +96 -0
  192. package/dist/adapters/slack/task-status.js.map +1 -0
  193. package/dist/adapters/slack/tool-pack.d.ts +4 -0
  194. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  195. package/dist/adapters/slack/tool-pack.js +40 -0
  196. package/dist/adapters/slack/tool-pack.js.map +1 -0
  197. package/dist/adapters/slack/tools/blockkit.d.ts +17 -0
  198. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.js +98 -0
  200. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  201. package/dist/adapters/slack/types.d.ts +91 -5
  202. package/dist/adapters/slack/types.d.ts.map +1 -1
  203. package/dist/adapters/slack/types.js.map +1 -1
  204. package/dist/adapters/slack/update-diagnostics.d.ts +13 -0
  205. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  206. package/dist/adapters/slack/update-diagnostics.js +128 -0
  207. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  208. package/dist/adapters/telegram/bot.d.ts +12 -19
  209. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  210. package/dist/adapters/telegram/bot.js +114 -239
  211. package/dist/adapters/telegram/bot.js.map +1 -1
  212. package/dist/adapters/telegram/context.d.ts +3 -7
  213. package/dist/adapters/telegram/context.d.ts.map +1 -1
  214. package/dist/adapters/telegram/context.js +49 -191
  215. package/dist/adapters/telegram/context.js.map +1 -1
  216. package/dist/adapters/telegram/types.d.ts +24 -1
  217. package/dist/adapters/telegram/types.d.ts.map +1 -1
  218. package/dist/adapters/telegram/types.js.map +1 -1
  219. package/dist/adapters/types.d.ts +92 -17
  220. package/dist/adapters/types.d.ts.map +1 -1
  221. package/dist/adapters/types.js.map +1 -1
  222. package/dist/adapters/web/admin/client-assets.d.ts +4 -0
  223. package/dist/adapters/web/admin/client-assets.d.ts.map +1 -0
  224. package/dist/adapters/web/admin/client-assets.js +1766 -0
  225. package/dist/adapters/web/admin/client-assets.js.map +1 -0
  226. package/dist/adapters/web/admin/portal.d.ts +26 -0
  227. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  228. package/dist/adapters/web/admin/portal.js +1490 -0
  229. package/dist/adapters/web/admin/portal.js.map +1 -0
  230. package/dist/adapters/web/admin/provider-models.d.ts +10 -0
  231. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  232. package/dist/adapters/web/admin/provider-models.js +103 -0
  233. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  234. package/dist/adapters/web/admin/types.d.ts +54 -0
  235. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  236. package/dist/adapters/web/admin/types.js.map +1 -0
  237. package/dist/adapters/web/login/oauth.d.ts +4 -0
  238. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  239. package/dist/adapters/web/login/oauth.js +219 -0
  240. package/dist/adapters/web/login/oauth.js.map +1 -0
  241. package/dist/adapters/web/login/portal.d.ts +10 -0
  242. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  243. package/dist/adapters/web/login/portal.js +1336 -0
  244. package/dist/adapters/web/login/portal.js.map +1 -0
  245. package/dist/adapters/web/login/types.d.ts +34 -0
  246. package/dist/adapters/web/login/types.d.ts.map +1 -0
  247. package/dist/adapters/web/login/types.js.map +1 -0
  248. package/dist/adapters/web/portal-shell.d.ts +9 -0
  249. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  250. package/dist/adapters/web/portal-shell.js +428 -0
  251. package/dist/adapters/web/portal-shell.js.map +1 -0
  252. package/dist/adapters/web/server.d.ts +35 -0
  253. package/dist/adapters/web/server.d.ts.map +1 -0
  254. package/dist/adapters/web/server.js +80 -0
  255. package/dist/adapters/web/server.js.map +1 -0
  256. package/dist/adapters/web/session-view/portal.d.ts +19 -0
  257. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  258. package/dist/adapters/web/session-view/portal.js +1833 -0
  259. package/dist/adapters/web/session-view/portal.js.map +1 -0
  260. package/dist/adapters/web/session-view/types.d.ts +45 -0
  261. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  262. package/dist/adapters/web/session-view/types.js.map +1 -0
  263. package/dist/adapters/web/token-store.d.ts +10 -0
  264. package/dist/adapters/web/token-store.d.ts.map +1 -0
  265. package/dist/adapters/web/token-store.js +42 -0
  266. package/dist/adapters/web/token-store.js.map +1 -0
  267. package/dist/adapters/web/types.d.ts.map +1 -0
  268. package/dist/adapters/web/types.js.map +1 -0
  269. package/dist/cli/arg-grammar.d.ts +8 -0
  270. package/dist/cli/arg-grammar.d.ts.map +1 -0
  271. package/dist/cli/arg-grammar.js +47 -0
  272. package/dist/cli/arg-grammar.js.map +1 -0
  273. package/dist/cli/boot.d.ts +4 -0
  274. package/dist/cli/boot.d.ts.map +1 -0
  275. package/dist/cli/boot.js +79 -0
  276. package/dist/cli/boot.js.map +1 -0
  277. package/dist/cli/download.d.ts.map +1 -0
  278. package/dist/cli/download.js +84 -0
  279. package/dist/cli/download.js.map +1 -0
  280. package/dist/cli/migrate.d.ts +3 -0
  281. package/dist/cli/migrate.d.ts.map +1 -0
  282. package/dist/cli/migrate.js +74 -0
  283. package/dist/cli/migrate.js.map +1 -0
  284. package/dist/cli/office.d.ts +2 -0
  285. package/dist/cli/office.d.ts.map +1 -0
  286. package/dist/cli/office.js +30 -0
  287. package/dist/cli/office.js.map +1 -0
  288. package/dist/cli/onboard.d.ts +7 -0
  289. package/dist/cli/onboard.d.ts.map +1 -0
  290. package/dist/cli/onboard.js +192 -0
  291. package/dist/cli/onboard.js.map +1 -0
  292. package/dist/cli/process-lifecycle.d.ts +14 -0
  293. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  294. package/dist/cli/process-lifecycle.js +61 -0
  295. package/dist/cli/process-lifecycle.js.map +1 -0
  296. package/dist/cli/types.d.ts +20 -0
  297. package/dist/cli/types.d.ts.map +1 -0
  298. package/dist/cli/types.js.map +1 -0
  299. package/dist/env-manifest.d.ts +14 -0
  300. package/dist/env-manifest.d.ts.map +1 -0
  301. package/dist/env-manifest.js +255 -0
  302. package/dist/env-manifest.js.map +1 -0
  303. package/dist/events/index.d.ts +105 -0
  304. package/dist/events/index.d.ts.map +1 -0
  305. package/dist/events/index.js +252 -0
  306. package/dist/events/index.js.map +1 -0
  307. package/dist/events/scheduler.d.ts +24 -0
  308. package/dist/events/scheduler.d.ts.map +1 -0
  309. package/dist/events/scheduler.js +221 -0
  310. package/dist/events/scheduler.js.map +1 -0
  311. package/dist/file-guards.d.ts +20 -0
  312. package/dist/file-guards.d.ts.map +1 -0
  313. package/dist/file-guards.js +166 -0
  314. package/dist/file-guards.js.map +1 -0
  315. package/dist/harness/budget-stop.d.ts +3 -0
  316. package/dist/harness/budget-stop.d.ts.map +1 -0
  317. package/dist/harness/budget-stop.js +36 -0
  318. package/dist/harness/budget-stop.js.map +1 -0
  319. package/dist/harness/execution-env.d.ts +4 -0
  320. package/dist/harness/execution-env.d.ts.map +1 -0
  321. package/dist/harness/execution-env.js +245 -0
  322. package/dist/harness/execution-env.js.map +1 -0
  323. package/dist/harness/execution-resolver.d.ts +23 -0
  324. package/dist/harness/execution-resolver.d.ts.map +1 -0
  325. package/dist/harness/execution-resolver.js +152 -0
  326. package/dist/harness/execution-resolver.js.map +1 -0
  327. package/dist/harness/http.d.ts +0 -12
  328. package/dist/harness/http.d.ts.map +1 -1
  329. package/dist/harness/http.js +0 -34
  330. package/dist/harness/http.js.map +1 -1
  331. package/dist/harness/index.d.ts +18 -17
  332. package/dist/harness/index.d.ts.map +1 -1
  333. package/dist/harness/index.js +11 -15
  334. package/dist/harness/index.js.map +1 -1
  335. package/dist/harness/jev.d.ts +67 -0
  336. package/dist/harness/jev.d.ts.map +1 -0
  337. package/dist/harness/jev.js +135 -0
  338. package/dist/harness/jev.js.map +1 -0
  339. package/dist/harness/loop-guard.d.ts +10 -0
  340. package/dist/harness/loop-guard.d.ts.map +1 -0
  341. package/dist/harness/loop-guard.js +111 -0
  342. package/dist/harness/loop-guard.js.map +1 -0
  343. package/dist/harness/mcp-result.d.ts +21 -0
  344. package/dist/harness/mcp-result.d.ts.map +1 -0
  345. package/dist/harness/mcp-result.js +204 -0
  346. package/dist/harness/mcp-result.js.map +1 -0
  347. package/dist/harness/mcp.d.ts +17 -0
  348. package/dist/harness/mcp.d.ts.map +1 -0
  349. package/dist/harness/mcp.js +339 -0
  350. package/dist/harness/mcp.js.map +1 -0
  351. package/dist/harness/models.d.ts +2 -19
  352. package/dist/harness/models.d.ts.map +1 -1
  353. package/dist/harness/models.js +43 -95
  354. package/dist/harness/models.js.map +1 -1
  355. package/dist/harness/open-connector.d.ts +3 -0
  356. package/dist/harness/open-connector.d.ts.map +1 -0
  357. package/dist/harness/open-connector.js +106 -0
  358. package/dist/harness/open-connector.js.map +1 -0
  359. package/dist/harness/presenter.d.ts +11 -0
  360. package/dist/harness/presenter.d.ts.map +1 -0
  361. package/dist/harness/presenter.js +867 -0
  362. package/dist/harness/presenter.js.map +1 -0
  363. package/dist/harness/prompt.d.ts +17 -0
  364. package/dist/harness/prompt.d.ts.map +1 -0
  365. package/dist/harness/prompt.js +348 -0
  366. package/dist/harness/prompt.js.map +1 -0
  367. package/dist/harness/run-events.d.ts +10 -0
  368. package/dist/harness/run-events.d.ts.map +1 -0
  369. package/dist/harness/run-events.js +126 -0
  370. package/dist/harness/run-events.js.map +1 -0
  371. package/dist/harness/runner.d.ts +2 -123
  372. package/dist/harness/runner.d.ts.map +1 -1
  373. package/dist/harness/runner.js +570 -414
  374. package/dist/harness/runner.js.map +1 -1
  375. package/dist/harness/session.d.ts +102 -0
  376. package/dist/harness/session.d.ts.map +1 -0
  377. package/dist/harness/session.js +725 -0
  378. package/dist/harness/session.js.map +1 -0
  379. package/dist/harness/skills.d.ts +7 -41
  380. package/dist/harness/skills.d.ts.map +1 -1
  381. package/dist/harness/skills.js +120 -69
  382. package/dist/harness/skills.js.map +1 -1
  383. package/dist/harness/subagent-profiles.d.ts +3 -0
  384. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  385. package/dist/harness/subagent-profiles.js +260 -0
  386. package/dist/harness/subagent-profiles.js.map +1 -0
  387. package/dist/harness/subagent.d.ts +39 -0
  388. package/dist/harness/subagent.d.ts.map +1 -0
  389. package/dist/harness/subagent.js +613 -0
  390. package/dist/harness/subagent.js.map +1 -0
  391. package/dist/harness/tool-args.d.ts +2 -0
  392. package/dist/harness/tool-args.d.ts.map +1 -0
  393. package/dist/harness/tool-args.js +20 -0
  394. package/dist/harness/tool-args.js.map +1 -0
  395. package/dist/harness/tools/attach.d.ts +13 -0
  396. package/dist/harness/tools/attach.d.ts.map +1 -0
  397. package/dist/harness/tools/attach.js +39 -0
  398. package/dist/harness/tools/attach.js.map +1 -0
  399. package/dist/harness/tools/codemode.d.ts +5 -0
  400. package/dist/harness/tools/codemode.d.ts.map +1 -0
  401. package/dist/harness/tools/codemode.js +229 -0
  402. package/dist/harness/tools/codemode.js.map +1 -0
  403. package/dist/harness/tools/event.d.ts +28 -0
  404. package/dist/harness/tools/event.d.ts.map +1 -0
  405. package/dist/harness/tools/event.js +183 -0
  406. package/dist/harness/tools/event.js.map +1 -0
  407. package/dist/harness/tools/generate-image.d.ts +20 -0
  408. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  409. package/dist/harness/tools/generate-image.js +82 -0
  410. package/dist/harness/tools/generate-image.js.map +1 -0
  411. package/dist/harness/tools/history.d.ts +20 -0
  412. package/dist/harness/tools/history.d.ts.map +1 -0
  413. package/dist/harness/tools/history.js +293 -0
  414. package/dist/harness/tools/history.js.map +1 -0
  415. package/dist/harness/tools/host-fn-tool.d.ts +14 -0
  416. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  417. package/dist/harness/tools/host-fn-tool.js +39 -0
  418. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  419. package/dist/harness/tools/index.d.ts +34 -0
  420. package/dist/harness/tools/index.d.ts.map +1 -0
  421. package/dist/harness/tools/index.js +49 -0
  422. package/dist/harness/tools/index.js.map +1 -0
  423. package/dist/harness/tools/jev-browser.d.ts +41 -0
  424. package/dist/harness/tools/jev-browser.d.ts.map +1 -0
  425. package/dist/harness/tools/jev-browser.js +570 -0
  426. package/dist/harness/tools/jev-browser.js.map +1 -0
  427. package/dist/harness/tools/jev.d.ts +15 -0
  428. package/dist/harness/tools/jev.d.ts.map +1 -0
  429. package/dist/harness/tools/jev.js +98 -0
  430. package/dist/harness/tools/jev.js.map +1 -0
  431. package/dist/harness/tools/pi-tools.d.ts +8 -0
  432. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  433. package/dist/harness/tools/pi-tools.js +83 -0
  434. package/dist/harness/tools/pi-tools.js.map +1 -0
  435. package/dist/harness/tools/react.d.ts +12 -0
  436. package/dist/harness/tools/react.d.ts.map +1 -0
  437. package/dist/harness/tools/react.js +25 -0
  438. package/dist/harness/tools/react.js.map +1 -0
  439. package/dist/harness/tools/sandbox.d.ts +24 -0
  440. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  441. package/dist/harness/tools/sandbox.js +79 -0
  442. package/dist/harness/tools/sandbox.js.map +1 -0
  443. package/dist/harness/tools/secret-redaction.d.ts +9 -0
  444. package/dist/harness/tools/secret-redaction.d.ts.map +1 -0
  445. package/dist/harness/tools/secret-redaction.js +88 -0
  446. package/dist/harness/tools/secret-redaction.js.map +1 -0
  447. package/dist/harness/tools/subagent.d.ts +51 -0
  448. package/dist/harness/tools/subagent.d.ts.map +1 -0
  449. package/dist/harness/tools/subagent.js +581 -0
  450. package/dist/harness/tools/subagent.js.map +1 -0
  451. package/dist/harness/tools/task.d.ts +22 -0
  452. package/dist/harness/tools/task.d.ts.map +1 -0
  453. package/dist/harness/tools/task.js +80 -0
  454. package/dist/harness/tools/task.js.map +1 -0
  455. package/dist/harness/tools/tool-search.d.ts +6 -0
  456. package/dist/harness/tools/tool-search.d.ts.map +1 -0
  457. package/dist/harness/tools/tool-search.js +89 -0
  458. package/dist/harness/tools/tool-search.js.map +1 -0
  459. package/dist/harness/tools/types.d.ts +14 -0
  460. package/dist/harness/tools/types.d.ts.map +1 -0
  461. package/dist/harness/tools/types.js.map +1 -0
  462. package/dist/harness/types.d.ts +488 -29
  463. package/dist/harness/types.d.ts.map +1 -1
  464. package/dist/harness/types.js +1 -1
  465. package/dist/harness/types.js.map +1 -1
  466. package/dist/index.d.ts +31 -9
  467. package/dist/index.d.ts.map +1 -1
  468. package/dist/index.js +15 -7
  469. package/dist/index.js.map +1 -1
  470. package/dist/log.d.ts +0 -4
  471. package/dist/log.d.ts.map +1 -1
  472. package/dist/log.js +3 -28
  473. package/dist/log.js.map +1 -1
  474. package/dist/main.js +282 -258
  475. package/dist/main.js.map +1 -1
  476. package/dist/memory-capture/index.d.ts +15 -0
  477. package/dist/memory-capture/index.d.ts.map +1 -0
  478. package/dist/memory-capture/index.js +198 -0
  479. package/dist/memory-capture/index.js.map +1 -0
  480. package/dist/memory-capture/types.d.ts +27 -0
  481. package/dist/memory-capture/types.d.ts.map +1 -0
  482. package/dist/memory-capture/types.js +2 -0
  483. package/dist/memory-capture/types.js.map +1 -0
  484. package/dist/migrations/actor-vaults.d.ts +3 -0
  485. package/dist/migrations/actor-vaults.d.ts.map +1 -0
  486. package/dist/migrations/actor-vaults.js +43 -0
  487. package/dist/migrations/actor-vaults.js.map +1 -0
  488. package/dist/migrations/conversation-settings.d.ts +3 -0
  489. package/dist/migrations/conversation-settings.d.ts.map +1 -0
  490. package/dist/migrations/conversation-settings.js +31 -0
  491. package/dist/migrations/conversation-settings.js.map +1 -0
  492. package/dist/migrations/dream-checkpoints.d.ts +3 -0
  493. package/dist/migrations/dream-checkpoints.d.ts.map +1 -0
  494. package/dist/migrations/dream-checkpoints.js +23 -0
  495. package/dist/migrations/dream-checkpoints.js.map +1 -0
  496. package/dist/migrations/index.d.ts +14 -0
  497. package/dist/migrations/index.d.ts.map +1 -0
  498. package/dist/migrations/index.js +105 -0
  499. package/dist/migrations/index.js.map +1 -0
  500. package/dist/migrations/models-json.d.ts +3 -0
  501. package/dist/migrations/models-json.d.ts.map +1 -0
  502. package/dist/migrations/models-json.js +18 -0
  503. package/dist/migrations/models-json.js.map +1 -0
  504. package/dist/migrations/office-layout.d.ts +4 -0
  505. package/dist/migrations/office-layout.d.ts.map +1 -0
  506. package/dist/migrations/office-layout.js +94 -0
  507. package/dist/migrations/office-layout.js.map +1 -0
  508. package/dist/migrations/office-sessions.d.ts +3 -0
  509. package/dist/migrations/office-sessions.d.ts.map +1 -0
  510. package/dist/migrations/office-sessions.js +81 -0
  511. package/dist/migrations/office-sessions.js.map +1 -0
  512. package/dist/migrations/private-office-dirs.d.ts +3 -0
  513. package/dist/migrations/private-office-dirs.d.ts.map +1 -0
  514. package/dist/migrations/private-office-dirs.js +24 -0
  515. package/dist/migrations/private-office-dirs.js.map +1 -0
  516. package/dist/migrations/sandbox-containers.d.ts +3 -0
  517. package/dist/migrations/sandbox-containers.d.ts.map +1 -0
  518. package/dist/migrations/sandbox-containers.js +36 -0
  519. package/dist/migrations/sandbox-containers.js.map +1 -0
  520. package/dist/migrations/session-files.d.ts +28 -0
  521. package/dist/migrations/session-files.d.ts.map +1 -0
  522. package/dist/migrations/session-files.js +80 -0
  523. package/dist/migrations/session-files.js.map +1 -0
  524. package/dist/migrations/session-v4.d.ts +77 -0
  525. package/dist/migrations/session-v4.d.ts.map +1 -0
  526. package/dist/migrations/session-v4.js +177 -0
  527. package/dist/migrations/session-v4.js.map +1 -0
  528. package/dist/migrations/sessions-sqlite.d.ts +3 -0
  529. package/dist/migrations/sessions-sqlite.d.ts.map +1 -0
  530. package/dist/migrations/sessions-sqlite.js +215 -0
  531. package/dist/migrations/sessions-sqlite.js.map +1 -0
  532. package/dist/migrations/sessions-v3.d.ts +8 -0
  533. package/dist/migrations/sessions-v3.d.ts.map +1 -0
  534. package/dist/migrations/sessions-v3.js +350 -0
  535. package/dist/migrations/sessions-v3.js.map +1 -0
  536. package/dist/migrations/types.d.ts +25 -0
  537. package/dist/migrations/types.d.ts.map +1 -0
  538. package/dist/migrations/types.js +2 -0
  539. package/dist/migrations/types.js.map +1 -0
  540. package/dist/migrations/workspace-events.d.ts +3 -0
  541. package/dist/migrations/workspace-events.d.ts.map +1 -0
  542. package/dist/migrations/workspace-events.js +43 -0
  543. package/dist/migrations/workspace-events.js.map +1 -0
  544. package/dist/observability/index.d.ts +30 -0
  545. package/dist/observability/index.d.ts.map +1 -0
  546. package/dist/observability/index.js +273 -0
  547. package/dist/observability/index.js.map +1 -0
  548. package/dist/observability/instrument.js +9 -6
  549. package/dist/observability/instrument.js.map +1 -1
  550. package/dist/observability/otel.d.ts +10 -0
  551. package/dist/observability/otel.d.ts.map +1 -0
  552. package/dist/observability/otel.js +182 -0
  553. package/dist/observability/otel.js.map +1 -0
  554. package/dist/observability/sentry.d.ts +30 -18
  555. package/dist/observability/sentry.d.ts.map +1 -1
  556. package/dist/observability/sentry.js +94 -119
  557. package/dist/observability/sentry.js.map +1 -1
  558. package/dist/observability/types.d.ts +30 -19
  559. package/dist/observability/types.d.ts.map +1 -1
  560. package/dist/observability/types.js.map +1 -1
  561. package/dist/office/index.d.ts +49 -0
  562. package/dist/office/index.d.ts.map +1 -0
  563. package/dist/office/index.js +395 -0
  564. package/dist/office/index.js.map +1 -0
  565. package/dist/office/projection.d.ts +11 -0
  566. package/dist/office/projection.d.ts.map +1 -0
  567. package/dist/office/projection.js +145 -0
  568. package/dist/office/projection.js.map +1 -0
  569. package/dist/office/types.d.ts +44 -0
  570. package/dist/office/types.d.ts.map +1 -0
  571. package/dist/office/types.js +2 -0
  572. package/dist/office/types.js.map +1 -0
  573. package/dist/runtime/conversation-runtime.d.ts +0 -1
  574. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  575. package/dist/runtime/conversation-runtime.js +365 -155
  576. package/dist/runtime/conversation-runtime.js.map +1 -1
  577. package/dist/runtime/session-lifecycle.d.ts +65 -0
  578. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  579. package/dist/runtime/session-lifecycle.js +384 -0
  580. package/dist/runtime/session-lifecycle.js.map +1 -0
  581. package/dist/runtime/types.d.ts +42 -20
  582. package/dist/runtime/types.d.ts.map +1 -1
  583. package/dist/runtime/types.js.map +1 -1
  584. package/dist/sandbox/cloudflare.d.ts +4 -0
  585. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  586. package/dist/sandbox/cloudflare.js +59 -55
  587. package/dist/sandbox/cloudflare.js.map +1 -1
  588. package/dist/sandbox/container.d.ts +3 -0
  589. package/dist/sandbox/container.d.ts.map +1 -1
  590. package/dist/sandbox/container.js +39 -20
  591. package/dist/sandbox/container.js.map +1 -1
  592. package/dist/sandbox/host.d.ts +3 -0
  593. package/dist/sandbox/host.d.ts.map +1 -1
  594. package/dist/sandbox/host.js +42 -35
  595. package/dist/sandbox/host.js.map +1 -1
  596. package/dist/sandbox/identity.d.ts +12 -0
  597. package/dist/sandbox/identity.d.ts.map +1 -0
  598. package/dist/sandbox/identity.js +42 -0
  599. package/dist/sandbox/identity.js.map +1 -0
  600. package/dist/sandbox/index.d.ts +5 -15
  601. package/dist/sandbox/index.d.ts.map +1 -1
  602. package/dist/sandbox/index.js +5 -51
  603. package/dist/sandbox/index.js.map +1 -1
  604. package/dist/sandbox/layout.d.ts +5 -0
  605. package/dist/sandbox/layout.d.ts.map +1 -0
  606. package/dist/sandbox/layout.js +13 -0
  607. package/dist/sandbox/layout.js.map +1 -0
  608. package/dist/sandbox/provisioner.d.ts +64 -0
  609. package/dist/sandbox/provisioner.d.ts.map +1 -0
  610. package/dist/sandbox/provisioner.js +546 -0
  611. package/dist/sandbox/provisioner.js.map +1 -0
  612. package/dist/sandbox/registry.d.ts +12 -0
  613. package/dist/sandbox/registry.d.ts.map +1 -0
  614. package/dist/sandbox/registry.js +93 -0
  615. package/dist/sandbox/registry.js.map +1 -0
  616. package/dist/sandbox/types.d.ts +23 -25
  617. package/dist/sandbox/types.d.ts.map +1 -1
  618. package/dist/sandbox/types.js.map +1 -1
  619. package/dist/sandbox/utils.d.ts +21 -0
  620. package/dist/sandbox/utils.d.ts.map +1 -1
  621. package/dist/sandbox/utils.js +100 -8
  622. package/dist/sandbox/utils.js.map +1 -1
  623. package/dist/sessions/chat-history-sync.d.ts +19 -0
  624. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  625. package/dist/sessions/chat-history-sync.js +459 -0
  626. package/dist/sessions/chat-history-sync.js.map +1 -0
  627. package/dist/sessions/compaction-summary.d.ts +4 -0
  628. package/dist/sessions/compaction-summary.d.ts.map +1 -0
  629. package/dist/sessions/compaction-summary.js +16 -0
  630. package/dist/sessions/compaction-summary.js.map +1 -0
  631. package/dist/sessions/history-line.d.ts +10 -0
  632. package/dist/sessions/history-line.d.ts.map +1 -0
  633. package/dist/sessions/history-line.js +29 -0
  634. package/dist/sessions/history-line.js.map +1 -0
  635. package/dist/sessions/session-key.d.ts +19 -0
  636. package/dist/sessions/session-key.d.ts.map +1 -0
  637. package/dist/sessions/session-key.js +91 -0
  638. package/dist/sessions/session-key.js.map +1 -0
  639. package/dist/sessions/session-store.d.ts +73 -0
  640. package/dist/sessions/session-store.d.ts.map +1 -0
  641. package/dist/sessions/session-store.js +721 -0
  642. package/dist/sessions/session-store.js.map +1 -0
  643. package/dist/sessions/types.d.ts +90 -34
  644. package/dist/sessions/types.d.ts.map +1 -1
  645. package/dist/sessions/types.js +2 -1
  646. package/dist/sessions/types.js.map +1 -1
  647. package/dist/settings/apply.d.ts +9 -0
  648. package/dist/settings/apply.d.ts.map +1 -0
  649. package/dist/settings/apply.js +31 -0
  650. package/dist/settings/apply.js.map +1 -0
  651. package/dist/settings/index.d.ts +28 -0
  652. package/dist/settings/index.d.ts.map +1 -0
  653. package/dist/settings/index.js +322 -0
  654. package/dist/settings/index.js.map +1 -0
  655. package/dist/types.d.ts +209 -191
  656. package/dist/types.d.ts.map +1 -1
  657. package/dist/types.js +1 -3
  658. package/dist/types.js.map +1 -1
  659. package/dist/unknown-values.d.ts +3 -0
  660. package/dist/unknown-values.d.ts.map +1 -0
  661. package/dist/unknown-values.js +7 -0
  662. package/dist/unknown-values.js.map +1 -0
  663. package/dist/vault/index.d.ts +28 -11
  664. package/dist/vault/index.d.ts.map +1 -1
  665. package/dist/vault/index.js +291 -118
  666. package/dist/vault/index.js.map +1 -1
  667. package/dist/vault/types.d.ts +5 -19
  668. package/dist/vault/types.d.ts.map +1 -1
  669. package/dist/vault/types.js.map +1 -1
  670. package/package.json +87 -41
  671. package/dist/adapter.d.ts +0 -2
  672. package/dist/adapter.d.ts.map +0 -1
  673. package/dist/adapter.js +0 -2
  674. package/dist/adapter.js.map +0 -1
  675. package/dist/adapters/github/repo.d.ts +0 -19
  676. package/dist/adapters/github/repo.d.ts.map +0 -1
  677. package/dist/adapters/github/repo.js +0 -58
  678. package/dist/adapters/github/repo.js.map +0 -1
  679. package/dist/adapters/slack/tools/attach.d.ts +0 -12
  680. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  681. package/dist/adapters/slack/tools/attach.js +0 -39
  682. package/dist/adapters/slack/tools/attach.js.map +0 -1
  683. package/dist/adapters/streaming.d.ts +0 -18
  684. package/dist/adapters/streaming.d.ts.map +0 -1
  685. package/dist/adapters/streaming.js +0 -44
  686. package/dist/adapters/streaming.js.map +0 -1
  687. package/dist/adapters/telegram/html.d.ts +0 -3
  688. package/dist/adapters/telegram/html.d.ts.map +0 -1
  689. package/dist/adapters/telegram/html.js +0 -98
  690. package/dist/adapters/telegram/html.js.map +0 -1
  691. package/dist/agent-events.d.ts +0 -5
  692. package/dist/agent-events.d.ts.map +0 -1
  693. package/dist/agent-events.js +0 -26
  694. package/dist/agent-events.js.map +0 -1
  695. package/dist/agent.d.ts +0 -39
  696. package/dist/agent.d.ts.map +0 -1
  697. package/dist/agent.js +0 -1299
  698. package/dist/agent.js.map +0 -1
  699. package/dist/cli/ext-git.d.ts +0 -22
  700. package/dist/cli/ext-git.d.ts.map +0 -1
  701. package/dist/cli/ext-git.js +0 -76
  702. package/dist/cli/ext-git.js.map +0 -1
  703. package/dist/cli/ext.d.ts +0 -2
  704. package/dist/cli/ext.d.ts.map +0 -1
  705. package/dist/cli/ext.js +0 -217
  706. package/dist/cli/ext.js.map +0 -1
  707. package/dist/commands/admin.d.ts.map +0 -1
  708. package/dist/commands/admin.js +0 -30
  709. package/dist/commands/admin.js.map +0 -1
  710. package/dist/commands/auto-reply.d.ts +0 -8
  711. package/dist/commands/auto-reply.d.ts.map +0 -1
  712. package/dist/commands/auto-reply.js +0 -76
  713. package/dist/commands/auto-reply.js.map +0 -1
  714. package/dist/commands/extensions.d.ts +0 -14
  715. package/dist/commands/extensions.d.ts.map +0 -1
  716. package/dist/commands/extensions.js +0 -55
  717. package/dist/commands/extensions.js.map +0 -1
  718. package/dist/commands/login.d.ts +0 -5
  719. package/dist/commands/login.d.ts.map +0 -1
  720. package/dist/commands/login.js +0 -115
  721. package/dist/commands/login.js.map +0 -1
  722. package/dist/commands/model.d.ts +0 -10
  723. package/dist/commands/model.d.ts.map +0 -1
  724. package/dist/commands/model.js +0 -102
  725. package/dist/commands/model.js.map +0 -1
  726. package/dist/commands/new.d.ts.map +0 -1
  727. package/dist/commands/new.js +0 -25
  728. package/dist/commands/new.js.map +0 -1
  729. package/dist/commands/parse.d.ts +0 -7
  730. package/dist/commands/parse.d.ts.map +0 -1
  731. package/dist/commands/parse.js +0 -14
  732. package/dist/commands/parse.js.map +0 -1
  733. package/dist/commands/registry.d.ts +0 -5
  734. package/dist/commands/registry.d.ts.map +0 -1
  735. package/dist/commands/registry.js +0 -31
  736. package/dist/commands/registry.js.map +0 -1
  737. package/dist/commands/sandbox.d.ts +0 -7
  738. package/dist/commands/sandbox.d.ts.map +0 -1
  739. package/dist/commands/sandbox.js +0 -78
  740. package/dist/commands/sandbox.js.map +0 -1
  741. package/dist/commands/session-view.d.ts.map +0 -1
  742. package/dist/commands/session-view.js +0 -41
  743. package/dist/commands/session-view.js.map +0 -1
  744. package/dist/commands/types.d.ts +0 -66
  745. package/dist/commands/types.d.ts.map +0 -1
  746. package/dist/commands/types.js.map +0 -1
  747. package/dist/commands/utils.d.ts +0 -11
  748. package/dist/commands/utils.d.ts.map +0 -1
  749. package/dist/commands/utils.js +0 -29
  750. package/dist/commands/utils.js.map +0 -1
  751. package/dist/config.d.ts +0 -78
  752. package/dist/config.d.ts.map +0 -1
  753. package/dist/config.js +0 -450
  754. package/dist/config.js.map +0 -1
  755. package/dist/download.d.ts.map +0 -1
  756. package/dist/download.js +0 -89
  757. package/dist/download.js.map +0 -1
  758. package/dist/events.d.ts +0 -43
  759. package/dist/events.d.ts.map +0 -1
  760. package/dist/events.js +0 -456
  761. package/dist/events.js.map +0 -1
  762. package/dist/execution-resolver.d.ts +0 -21
  763. package/dist/execution-resolver.d.ts.map +0 -1
  764. package/dist/execution-resolver.js +0 -170
  765. package/dist/execution-resolver.js.map +0 -1
  766. package/dist/harness/auth.d.ts +0 -16
  767. package/dist/harness/auth.d.ts.map +0 -1
  768. package/dist/harness/auth.js +0 -86
  769. package/dist/harness/auth.js.map +0 -1
  770. package/dist/harness/extensions/loader.d.ts +0 -86
  771. package/dist/harness/extensions/loader.d.ts.map +0 -1
  772. package/dist/harness/extensions/loader.js +0 -525
  773. package/dist/harness/extensions/loader.js.map +0 -1
  774. package/dist/harness/extensions/registry.d.ts +0 -23
  775. package/dist/harness/extensions/registry.d.ts.map +0 -1
  776. package/dist/harness/extensions/registry.js +0 -45
  777. package/dist/harness/extensions/registry.js.map +0 -1
  778. package/dist/harness/extensions/types.d.ts +0 -248
  779. package/dist/harness/extensions/types.d.ts.map +0 -1
  780. package/dist/harness/extensions/types.js.map +0 -1
  781. package/dist/harness/session-store.d.ts +0 -77
  782. package/dist/harness/session-store.d.ts.map +0 -1
  783. package/dist/harness/session-store.js +0 -248
  784. package/dist/harness/session-store.js.map +0 -1
  785. package/dist/harness/settings.d.ts +0 -47
  786. package/dist/harness/settings.d.ts.map +0 -1
  787. package/dist/harness/settings.js +0 -29
  788. package/dist/harness/settings.js.map +0 -1
  789. package/dist/model-registry.d.ts +0 -4
  790. package/dist/model-registry.d.ts.map +0 -1
  791. package/dist/model-registry.js +0 -7
  792. package/dist/model-registry.js.map +0 -1
  793. package/dist/platform-messages.d.ts +0 -12
  794. package/dist/platform-messages.d.ts.map +0 -1
  795. package/dist/platform-messages.js +0 -36
  796. package/dist/platform-messages.js.map +0 -1
  797. package/dist/portal-shell.d.ts +0 -4
  798. package/dist/portal-shell.d.ts.map +0 -1
  799. package/dist/portal-shell.js +0 -366
  800. package/dist/portal-shell.js.map +0 -1
  801. package/dist/provisioner.d.ts +0 -61
  802. package/dist/provisioner.d.ts.map +0 -1
  803. package/dist/provisioner.js +0 -517
  804. package/dist/provisioner.js.map +0 -1
  805. package/dist/runtime/agent-run-controller.d.ts +0 -31
  806. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  807. package/dist/runtime/agent-run-controller.js +0 -195
  808. package/dist/runtime/agent-run-controller.js.map +0 -1
  809. package/dist/sandbox/errors.d.ts +0 -6
  810. package/dist/sandbox/errors.d.ts.map +0 -1
  811. package/dist/sandbox/errors.js +0 -11
  812. package/dist/sandbox/errors.js.map +0 -1
  813. package/dist/sandbox/firecracker.d.ts +0 -15
  814. package/dist/sandbox/firecracker.d.ts.map +0 -1
  815. package/dist/sandbox/firecracker.js +0 -212
  816. package/dist/sandbox/firecracker.js.map +0 -1
  817. package/dist/sandbox/image.d.ts +0 -3
  818. package/dist/sandbox/image.d.ts.map +0 -1
  819. package/dist/sandbox/image.js +0 -27
  820. package/dist/sandbox/image.js.map +0 -1
  821. package/dist/sandbox/path-context.d.ts +0 -3
  822. package/dist/sandbox/path-context.d.ts.map +0 -1
  823. package/dist/sandbox/path-context.js +0 -20
  824. package/dist/sandbox/path-context.js.map +0 -1
  825. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  826. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  827. package/dist/sessions/agent-memory-file-manager.js +0 -484
  828. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  829. package/dist/sessions/metadata.d.ts +0 -3
  830. package/dist/sessions/metadata.d.ts.map +0 -1
  831. package/dist/sessions/metadata.js +0 -11
  832. package/dist/sessions/metadata.js.map +0 -1
  833. package/dist/sessions/policy.d.ts +0 -6
  834. package/dist/sessions/policy.d.ts.map +0 -1
  835. package/dist/sessions/policy.js +0 -24
  836. package/dist/sessions/policy.js.map +0 -1
  837. package/dist/sessions/store.d.ts +0 -72
  838. package/dist/sessions/store.d.ts.map +0 -1
  839. package/dist/sessions/store.js +0 -193
  840. package/dist/sessions/store.js.map +0 -1
  841. package/dist/store.d.ts +0 -46
  842. package/dist/store.d.ts.map +0 -1
  843. package/dist/store.js +0 -177
  844. package/dist/store.js.map +0 -1
  845. package/dist/tools/bash.d.ts +0 -10
  846. package/dist/tools/bash.d.ts.map +0 -1
  847. package/dist/tools/bash.js +0 -80
  848. package/dist/tools/bash.js.map +0 -1
  849. package/dist/tools/edit.d.ts +0 -11
  850. package/dist/tools/edit.d.ts.map +0 -1
  851. package/dist/tools/edit.js +0 -131
  852. package/dist/tools/edit.js.map +0 -1
  853. package/dist/tools/event.d.ts +0 -56
  854. package/dist/tools/event.d.ts.map +0 -1
  855. package/dist/tools/event.js +0 -252
  856. package/dist/tools/event.js.map +0 -1
  857. package/dist/tools/github-pr.d.ts +0 -22
  858. package/dist/tools/github-pr.d.ts.map +0 -1
  859. package/dist/tools/github-pr.js +0 -53
  860. package/dist/tools/github-pr.js.map +0 -1
  861. package/dist/tools/index.d.ts +0 -25
  862. package/dist/tools/index.d.ts.map +0 -1
  863. package/dist/tools/index.js +0 -35
  864. package/dist/tools/index.js.map +0 -1
  865. package/dist/tools/react.d.ts +0 -15
  866. package/dist/tools/react.d.ts.map +0 -1
  867. package/dist/tools/react.js +0 -40
  868. package/dist/tools/react.js.map +0 -1
  869. package/dist/tools/read.d.ts +0 -11
  870. package/dist/tools/read.d.ts.map +0 -1
  871. package/dist/tools/read.js +0 -134
  872. package/dist/tools/read.js.map +0 -1
  873. package/dist/tools/sandbox.d.ts +0 -22
  874. package/dist/tools/sandbox.d.ts.map +0 -1
  875. package/dist/tools/sandbox.js +0 -73
  876. package/dist/tools/sandbox.js.map +0 -1
  877. package/dist/tools/truncate.d.ts +0 -33
  878. package/dist/tools/truncate.d.ts.map +0 -1
  879. package/dist/tools/truncate.js +0 -184
  880. package/dist/tools/truncate.js.map +0 -1
  881. package/dist/tools/types.d.ts +0 -54
  882. package/dist/tools/types.d.ts.map +0 -1
  883. package/dist/tools/types.js.map +0 -1
  884. package/dist/tools/write.d.ts +0 -10
  885. package/dist/tools/write.d.ts.map +0 -1
  886. package/dist/tools/write.js +0 -29
  887. package/dist/tools/write.js.map +0 -1
  888. package/dist/trigger.d.ts +0 -22
  889. package/dist/trigger.d.ts.map +0 -1
  890. package/dist/trigger.js +0 -100
  891. package/dist/trigger.js.map +0 -1
  892. package/dist/utils/date.d.ts +0 -10
  893. package/dist/utils/date.d.ts.map +0 -1
  894. package/dist/utils/date.js +0 -23
  895. package/dist/utils/date.js.map +0 -1
  896. package/dist/utils/env.d.ts +0 -3
  897. package/dist/utils/env.d.ts.map +0 -1
  898. package/dist/utils/env.js +0 -12
  899. package/dist/utils/env.js.map +0 -1
  900. package/dist/utils/file-guards.d.ts +0 -9
  901. package/dist/utils/file-guards.d.ts.map +0 -1
  902. package/dist/utils/file-guards.js +0 -59
  903. package/dist/utils/file-guards.js.map +0 -1
  904. package/dist/utils/fs-atomic.d.ts +0 -10
  905. package/dist/utils/fs-atomic.d.ts.map +0 -1
  906. package/dist/utils/fs-atomic.js +0 -45
  907. package/dist/utils/fs-atomic.js.map +0 -1
  908. package/dist/utils/html.d.ts +0 -2
  909. package/dist/utils/html.d.ts.map +0 -1
  910. package/dist/utils/html.js +0 -4
  911. package/dist/utils/html.js.map +0 -1
  912. package/dist/utils/http-body.d.ts +0 -10
  913. package/dist/utils/http-body.d.ts.map +0 -1
  914. package/dist/utils/http-body.js +0 -34
  915. package/dist/utils/http-body.js.map +0 -1
  916. package/dist/vault/routing.d.ts +0 -3
  917. package/dist/vault/routing.d.ts.map +0 -1
  918. package/dist/vault/routing.js +0 -13
  919. package/dist/vault/routing.js.map +0 -1
  920. package/dist/web/admin/portal.d.ts +0 -5
  921. package/dist/web/admin/portal.d.ts.map +0 -1
  922. package/dist/web/admin/portal.js +0 -2572
  923. package/dist/web/admin/portal.js.map +0 -1
  924. package/dist/web/admin/provider-models.d.ts +0 -10
  925. package/dist/web/admin/provider-models.d.ts.map +0 -1
  926. package/dist/web/admin/provider-models.js +0 -96
  927. package/dist/web/admin/provider-models.js.map +0 -1
  928. package/dist/web/admin/store.d.ts +0 -13
  929. package/dist/web/admin/store.d.ts.map +0 -1
  930. package/dist/web/admin/store.js +0 -14
  931. package/dist/web/admin/store.js.map +0 -1
  932. package/dist/web/admin/types.d.ts +0 -30
  933. package/dist/web/admin/types.d.ts.map +0 -1
  934. package/dist/web/admin/types.js.map +0 -1
  935. package/dist/web/agent-events/portal.d.ts +0 -3
  936. package/dist/web/agent-events/portal.d.ts.map +0 -1
  937. package/dist/web/agent-events/portal.js +0 -18
  938. package/dist/web/agent-events/portal.js.map +0 -1
  939. package/dist/web/login/oauth.d.ts +0 -6
  940. package/dist/web/login/oauth.d.ts.map +0 -1
  941. package/dist/web/login/oauth.js +0 -258
  942. package/dist/web/login/oauth.js.map +0 -1
  943. package/dist/web/login/portal.d.ts +0 -17
  944. package/dist/web/login/portal.d.ts.map +0 -1
  945. package/dist/web/login/portal.js +0 -1329
  946. package/dist/web/login/portal.js.map +0 -1
  947. package/dist/web/login/store.d.ts +0 -8
  948. package/dist/web/login/store.d.ts.map +0 -1
  949. package/dist/web/login/store.js +0 -15
  950. package/dist/web/login/store.js.map +0 -1
  951. package/dist/web/login/types.d.ts +0 -50
  952. package/dist/web/login/types.d.ts.map +0 -1
  953. package/dist/web/login/types.js.map +0 -1
  954. package/dist/web/request.d.ts +0 -3
  955. package/dist/web/request.d.ts.map +0 -1
  956. package/dist/web/request.js +0 -13
  957. package/dist/web/request.js.map +0 -1
  958. package/dist/web/server.d.ts +0 -28
  959. package/dist/web/server.d.ts.map +0 -1
  960. package/dist/web/server.js +0 -66
  961. package/dist/web/server.js.map +0 -1
  962. package/dist/web/session-view/command.d.ts +0 -4
  963. package/dist/web/session-view/command.d.ts.map +0 -1
  964. package/dist/web/session-view/command.js +0 -7
  965. package/dist/web/session-view/command.js.map +0 -1
  966. package/dist/web/session-view/portal.d.ts +0 -13
  967. package/dist/web/session-view/portal.d.ts.map +0 -1
  968. package/dist/web/session-view/portal.js +0 -1651
  969. package/dist/web/session-view/portal.js.map +0 -1
  970. package/dist/web/session-view/service.d.ts +0 -6
  971. package/dist/web/session-view/service.d.ts.map +0 -1
  972. package/dist/web/session-view/service.js +0 -498
  973. package/dist/web/session-view/service.js.map +0 -1
  974. package/dist/web/session-view/store.d.ts +0 -8
  975. package/dist/web/session-view/store.d.ts.map +0 -1
  976. package/dist/web/session-view/store.js +0 -15
  977. package/dist/web/session-view/store.js.map +0 -1
  978. package/dist/web/session-view/types.d.ts +0 -50
  979. package/dist/web/session-view/types.d.ts.map +0 -1
  980. package/dist/web/session-view/types.js.map +0 -1
  981. package/dist/web/token-store.d.ts +0 -13
  982. package/dist/web/token-store.d.ts.map +0 -1
  983. package/dist/web/token-store.js +0 -44
  984. package/dist/web/token-store.js.map +0 -1
  985. package/dist/web/types.d.ts.map +0 -1
  986. package/dist/web/types.js.map +0 -1
  987. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  988. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  989. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  990. /package/dist/{commands → adapters/commands}/types.js +0 -0
  991. /package/dist/{harness/extensions → adapters/web/admin}/types.js +0 -0
  992. /package/dist/{tools → adapters/web/login}/types.js +0 -0
  993. /package/dist/{web/admin → adapters/web/session-view}/types.js +0 -0
  994. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  995. /package/dist/{web/login → adapters/web}/types.js +0 -0
  996. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  997. /package/dist/{web/session-view → cli}/types.js +0 -0
  998. /package/dist/{web → harness/tools}/types.js +0 -0
package/CHANGELOG.md CHANGED
@@ -9,738 +9,656 @@ any release.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
- ## [1.0.0-beta.9]
13
-
14
- ### Added
15
-
16
- - Clone GitHub repositories into conversation workspaces and check out pull request heads.
17
- - Add a `github_pr` tool that pushes agent changes from `pi/*` branches and opens pull requests.
12
+ ## [1.0.0-beta.91]
18
13
 
19
14
  ### Changed
20
15
 
21
- - Require GitHub App Contents read and write permission for repository automation.
22
- - Post completed GitHub responses as single comments instead of streaming edits.
23
-
24
- ### Fixed
25
-
26
- - Keep GitHub issue context inside the history recency window.
27
-
28
- ### Security
29
-
30
- - Require commenters to have repository write permission or higher before triggering the agent.
31
- - Keep installation tokens out of sandboxes and restrict agent pushes to non-force `pi/*` branches.
32
-
33
- ### Tests
34
-
35
- - Add coverage for GitHub repository checkout, permission gating, pull request creation, and branch restrictions.
36
-
37
- ## [1.0.0-beta.8]
38
-
39
- ### Added
40
-
41
- - Add a GitHub messaging adapter where each issue or pull request is an independent conversation.
42
- - Add GitHub App authentication, mention and participation triggers, persisted polling cursors, and downtime replay.
43
- - Add GitHub adapter deployment configuration and documentation.
16
+ - MCP follows Pi's codemode design. MCP tools are reached from `codemode` scripts by default and `tool_search` exists only for servers configured with `"exposure": "deferred"`. A script receives each MCP tool's complete `CallToolResult` (`content`, `structuredContent`, `isError`) instead of the bounded view the model gets, so it can filter large results before they enter the context, and an MCP error resolves with `isError: true` instead of rejecting. The `codemode` description no longer repeats the declarations of tools already declared to the model; each of those tools' descriptions says what a script call resolves to. Server instructions are no longer copied into the system prompt: an `mcp_servers` section lists each server once with the first line of its new optional `description` or its instructions, and scripts read the rest with the new `describeNamespace()`. On a local request these changes cut the tool declarations from 38,274 to 26,538 characters and the codemode description from 14,232 to 2,803.
17
+ - A direct MCP call that the server marks `isError` returns an error result instead of throwing, keeping the server's message.
44
18
 
45
- ### Tests
19
+ ## [1.0.0-beta.90]
46
20
 
47
- - Add coverage for GitHub polling, authentication, conversation context, triggers, and responses.
48
-
49
- ## [1.0.0-beta.7]
50
-
51
- ### Added
21
+ ### Changed
52
22
 
53
- - Add TypeScript and npm-package extensions with `package.json` entrypoints and runtime dependencies.
54
- - Add `mikan ext install`, `validate`, `list`, and `remove` commands.
55
- - Add extension installation from Git sources and repository subpaths.
23
+ - Run `mikan migrate` before starting this version. It deletes each office's `dream.json`, the checkpoint of the Dream maintenance removed in [ADR 0012](docs/adr/0012-remove-dream.md) that nothing reads, and makes every directory under `<state-dir>/conversations/` readable only by its owner (mode 700); links are not followed.
56
24
 
57
- ### Changed
25
+ ### Security
58
26
 
59
- - Treat reinstalling an extension as an update while preserving its data directory.
60
- - Use `package.json` as the primary extension metadata source with `manifest.json` as a fallback.
61
- - Convert the agent project manager example to TypeScript with a typed extension API.
62
- - Add the Slack `reactions:write` scope and missing slash commands to the manifests and setup guides.
27
+ - An office's `events/` directory is created readable only by its owner (mode 700) instead of following the process umask.
63
28
 
64
- ### Tests
29
+ ## [1.0.0-beta.89]
65
30
 
66
- - Add coverage for TypeScript loading, package metadata, extension CLI operations, and Git installation.
31
+ ### Breaking
67
32
 
68
- ## [1.0.0-beta.6]
33
+ - **Pi is upgraded to 1.0, and conversations now run on `@earendil-works/pi-durable`.** Pi 1.0 removed the harness, sessions, compaction, and coding tools from `pi-agent-core`; pi-durable is their first-party successor (see [ADR 0017](docs/adr/0017-pi-durable-harness.md)). Each office now keeps all its sessions in one SQLite storage, `sessions.db` in its State dir (see [ADR 0018](docs/adr/0018-one-durable-storage-per-office.md)); this needs Node 24.15 or later, whose built-in `node:sqlite` prints an experimental warning on load. Run `mikan migrate` before starting this version: it imports each office's v4 session files into that storage, the current main session as the top-level session and earlier main sessions and threads beside it, and moves the office's `sessions/` directory to `sessions-v4/`. An imported session keeps what the model could still see (the newest compaction summary and everything after it), its name, ID, and mikan's bookkeeping; history an earlier compaction had already hidden stays only in the archived files. Every office must be in `office-registry.json`. A tool call that was still running at upgrade is closed with an error result instead of being retried, and a run left unfinished is not resumed.
34
+ - `/new` resets the session in place: the model starts from an empty context, and the earlier history stays readable to the `history` tool and the session view instead of moving to a new session file.
35
+ - Library API: `createManagedSessionFile`, `createManagedSessionFileAtPath`, `createNewSessionFile`, `extractSessionSuffix`, `extractSessionUuid`, `getThreadSessionFile`, `openManagedSession`, `resolveManagedSessionFile`, `resolveSessionFile`, `tryResolveCurrentSession`, `tryResolveThreadSession`, `isPlatformHistorySession`, `CURRENT_SESSION_VERSION`, `MikanSessionHeader`, and `ChatSyncReport` are removed with session files; `SessionHeader` holds only `id`, `createdAt`, and `parentSessionId`; `registerThreadSession` and `hasMaterializedChatSession` are asynchronous, and `ResolvedSessionScope` no longer has `contextFile`.
36
+ - Library API: `SessionEntry` is mikan's own union of `message`, `custom`, and `compaction` entries, with IDs qualified by the session ID; `BranchSummaryEntry`, `CompactionEntry`, and `CustomEntry` are no longer exported. `SessionStore.createHarness` is replaced by `bindHarness`; `appendCustomMessageEntry`, the tree-era `getBranch`, `getLeafId`, `getEntry`, and `isPersisted`, and `SessionEntry.parentId` are removed; `SessionStore.getContextEntries()` returns the entries still in the model's context; and `MikanAgentSession.compactWhenNearLimit`/`cancelIdleCompaction`/`foldExternalUsage` are gone. `HarnessEvent` no longer mirrors pi-agent-core's `AgentEvent`: it drops `agent_start`/`agent_end`/`turn_start`/`turn_end`, replaces `message_update` with `text_delta`, and tool events carry `details` and a `{ content, details }` result. `MikanAgentSession.messages` and `reloadFromSession` are removed: the session keeps no transcript copy, so read the context through `SessionStore`, and a run's own messages through `lastRunMessages`. Harness tools use pi-durable's `execute(args, api, context)`; plain `AgentTool`s are still adapted.
69
37
 
70
38
  ### Added
71
39
 
72
- - Add emoji reactions for agents and extensions across Slack, Discord, and Telegram.
40
+ - Slack and Discord mark a message with ⏳ when it waits behind a task that is still running, so a queued message no longer looks ignored.
41
+ - The agent gets a `history` tool, in every conversation, that lists the conversation's sessions (earlier ones replaced by `/new` and its threads), searches or reads them including tool calls and their output that `log.jsonl` does not keep, and searches the chat log; a query matches entries containing all of its words, and a Chinese or Japanese word also matches when most of its character pairs appear, so `暫時代號` finds `暫時註記:代號`. The system prompt tells the agent to answer from its own context when it can, and to look up a result its context lacks, such as a command's output from another session, instead of guessing or rerunning the command. It never reaches another conversation.
42
+ - `SENTRY_TRACES_SAMPLE_RATE` (0 to 1, default 1) sets how many traces go to Sentry when OTLP traces are not configured; an invalid value stops startup.
73
43
 
74
44
  ### Changed
75
45
 
76
- - Default the agent project manager example to conversation-scoped extension data.
77
- - Log when extensions rewrite the system prompt and report the resulting size change.
46
+ - A new thread starts from what caused it. A thread under a channel answer, or under the message that triggered it, forks that run, so it carries the run's context up to its end, including tool calls and their output: asked what a command printed, the agent reads it instead of guessing or running it again. Any other thread starts from its root and its own replies, instead of ten earlier top-level messages copied from the chat log. Each run records the message that started it, and the chat log records each run answer with that message and its session.
47
+ - Chat history never appears as the agent's own turn: synced messages from other people, other bots, and mikan's notices enter a session as attributed chat lines, and an answer a run posted is left to its own session, so a Discord or Telegram reply answered in another session no longer leaks into the channel session.
48
+ - Compaction is Pi's: it runs in the background as the context grows and blocks the next request only near the limit, so mikan no longer starts its own compaction after a reply. Compaction summary requests now count toward a run's LLM-call and token budgets, and a request over the LLM-call budget is never sent.
49
+ - A run left unfinished by a crash or restart is aborted before the next message in that conversation instead of answering first.
50
+ - A thread session is named after the first line of its root message, cut to 80 characters, instead of the whole message; existing thread sessions take the short name on their next run.
78
51
 
79
52
  ### Fixed
80
53
 
81
- - Render Slack session links outside the triggered-by italic span.
82
-
83
- ### Tests
84
-
85
- - Add coverage for the reaction tool and extension reaction API.
54
+ - A one-shot event whose time passed while mikan was restarting or stopped now fires when mikan starts, instead of being deleted without running.
55
+ - Tool results that report `isError` reach the model as errors, so a failing codemode script is no longer recorded as a success.
56
+ - A run stopped before the model wrote anything no longer stores a made-up aborted answer, and its reply is never taken from the previous run.
57
+ - Compaction entries in the session view and subagent parent context show the summary itself, without Pi's wrapper text, and a subagent's parent context keeps the messages Pi retained after compaction.
58
+ - A run Pi settles with a model error is recorded as failed instead of completed.
59
+ - The usage summary's context size follows Pi's rule, the newest successful answer after the latest compaction, so it no longer reports the pre-compaction size, and it is omitted until a new answer measures it.
86
60
 
87
- ## [1.0.0-beta.5]
61
+ ## [1.0.0-beta.88]
88
62
 
89
63
  ### Added
90
64
 
91
- - Add `api.paths.sharedDataDir` for extension state intentionally shared across conversations.
92
- - Add an idempotent, dry-run-first script for migrating extension code and data to the new layout.
93
-
94
- ### Changed
95
-
96
- - Store conversation extension code and data under `conversations/<id>/` and global extension assets under `global/`.
97
- - Make `api.paths.dataDir` conversation-scoped by default to prevent accidental cross-conversation state sharing.
98
-
99
- ### Tests
100
-
101
- - Update extension loader and command coverage for the conversation-scoped layout.
65
+ - `tool_search` discovers authorized MCP tools and loads matching schemas for the next model call. MCP connections still start as before, but tools are no longer all declared upfront. Loaded tools survive later prompts and session reopen, subject to current grants. Codemode gains `searchTools()` and omits MCP schemas from its inline description.
66
+ - `codemode` runs JavaScript through Pi's official QuickJS sandbox to combine authorized tools and filter results before returning them to the model. Existing direct tools remain available; nested calls honor per-run grants, loop guards and cancellation, and appear in progress and tool-call counts. Sessions without tools stay tool-less.
102
67
 
103
- ## [1.0.0-beta.4]
68
+ ### Fixed
104
69
 
105
- ### Changed
70
+ - Codemode follows Pi's model-facing helper guidance and generates asynchronous global declarations from the same definitions used by the official sandbox. `searchTools` and `describeTool` are explicitly global functions called with `await`; their complete declarations remain available even when the nested tool catalog exceeds its inline budget. Discovery uses Pi-generated tool samples with declared output schemas and its text-result default, so scripts can distinguish JSON text from structured values.
106
71
 
107
- - Show an extension's slug in `/pi-extensions` when it differs from the manifest display name.
72
+ ## [1.0.0-beta.87]
108
73
 
109
74
  ### Fixed
110
75
 
111
- - Reject extensions installed directly at a scope root and show an actionable warning to use a named subdirectory.
112
-
113
- ### Tests
76
+ - `mikan migrate` moves the per-thread session directories that early versions left inside `sessions/` to the state directory intact, instead of stopping with `Unexpected entry in sessions directory`. Links inside them are moved as links and never followed.
114
77
 
115
- - Add coverage for scope-root extension mis-install detection and inventory warnings.
78
+ ## [1.0.0-beta.86]
116
79
 
117
- ## [1.0.0-beta.3]
80
+ ### Breaking
118
81
 
119
- ### Fixed
82
+ - **The GitHub adapter now runs as a bound GitHub account driven by webhooks, and no longer uses a GitHub App or polling.** People mention it with autocomplete, assign it issues and pull requests, and request its review. Set `GITHUB_AGENT_TOKEN` (a fine-grained PAT of that account), `GITHUB_WEBHOOK_SECRET` (an organization or App webhook to `<LINK_URL>/github/webhook`), and `GITHUB_REPOS` (now required: `owner/repo` or `owner/*`); the link server must run. `GITHUB_APP_ID`, `GITHUB_INSTALLATION_ID`, `GITHUB_APP_PRIVATE_KEY`, `GITHUB_APP_PRIVATE_KEY_PATH`, and `GITHUB_POLL_INTERVAL` are removed, `@<app-slug>` no longer triggers, and `<state-dir>/github-sync.json` is no longer read and can be deleted. Deliveries are best effort: events sent while mikan is down are not replayed. See [ADR 0015](docs/adr/0015-github-agent-account-and-webhooks.md) and [Make mikan a GitHub teammate](src/content/docs/github-teammate-guide.md).
83
+ - **The GitHub adapter is restricted by default.** It answers only in private repositories listed in `GITHUB_REPOS`, only to people with write permission, and only comments and reads. `GITHUB_CAPABILITIES=triage,push` restores label and assignee management and pull requests; `GITHUB_PUBLIC_REPOS`, `GITHUB_USERS`, `GITHUB_MIN_PERMISSION`, and `GITHUB_TRIGGERS` narrow or widen who can trigger it and how.
84
+ - `github_checks` reads GitHub Actions jobs and commit statuses instead of check runs, because fine-grained PATs have no Checks permission. Check runs from third-party CI apps are no longer visible.
85
+ - **mikan no longer runs git for GitHub conversations.** Nothing is cloned into `<office>/repo`, and `github_sync` is removed. The agent clones, commits, and pushes inside its sandbox with the sandbox's GitHub credentials, and `github_pr` only opens a pull request for a branch the agent already pushed. What the agent can push is now bounded by that token, the account's repository role, and branch protection instead of mikan's `pi/*` rule; protect the default branch. GitHub conversations now trust `membership`, because only collaborators with write access can trigger them, so they receive `sandbox.defaultSharedVault` and settings-declared MCP servers like Slack conversations.
86
+ - **Session files move from `<workspace>/<office-key>/sessions/` to `<state-dir>/conversations/<office-key>/sessions/`, and sandboxes no longer see them.** Run `mikan migrate` before starting this version. The agent searches earlier history in `log.jsonl`, which stays in the office directory. See [ADR 0016](docs/adr/0016-host-sandbox-trust-boundary.md).
87
+ - Library API: `officeSessionsDir` and `resolveChannelSessionFile` are removed; use `office.sessionsDir` and `tryResolveCurrentSession(office.sessionsDir)`. `getThreadSessionFile` and `resolveParentSessionForThread` take the sessions directory, and the `ChatHistorySync` options and `registerThreadSession`/`hasMaterializedChatSession` take `office` instead of `conversationDir`.
88
+ - `jev_browser` no longer takes a `session` parameter. Each conversation thread has one browser that stays open across calls until `close: true`; a later `url` opens a new tab, and opening past three tabs closes the oldest inactive tabs and reports them in `closedOldTabs`. Model-named sessions each started another Chrome, and a few of them exhausted a 1 GB sandbox until every page load timed out.
120
89
 
121
- - Route `/pi-extensions` through Slack and include it in the bundled app manifests.
90
+ ### Changed
122
91
 
123
- ## [1.0.0-beta.2]
92
+ - Pi is upgraded from 0.87 to 0.99 (`pi-agent-core`, `pi-ai`).
93
+ - MCP servers now connect through Pi's `@earendil-works/pi-mcp` client instead of the official `@modelcontextprotocol/sdk`, which is removed along with `zod`. Stdio servers still receive only a minimal inherited environment plus their configured `env`. When an HTTP server rejects the connection, the error now carries the status and the start of the server's response body.
124
94
 
125
95
  ### Added
126
96
 
127
- - Add `/pi-extensions` to list global and conversation extensions, manifest metadata, and bundled skills without activating modules.
128
-
129
- ### Tests
130
-
131
- - Add coverage for extension inventory discovery and command output.
132
-
133
- ## [1.0.0-beta.1]
97
+ - GitHub issue and pull request conversations receive the default OpenConnector runtime token like Slack conversations, named `mikan:github:<conversation-id>`.
134
98
 
135
99
  ### Fixed
136
100
 
137
- - Accept `maxOutputTokens` as an alias for `maxTokens` in custom model configuration.
138
- - Restore npm release automation with compatible Node.js and npm versions.
139
-
140
- ### Tests
141
-
142
- - Add coverage for production-shaped custom model configuration.
101
+ - `models.json` follows `--state-dir` / `STATE_DIR` like `settings.json`; the daemon, `mikan migrate`, and `mikan onboard` no longer read or write `~/.mikan/models.json` for another state directory.
102
+ - A daemon adopts at startup only the sandbox containers that mount its own workspace, so two mikan instances sharing one Docker engine no longer stop each other's containers.
103
+ - The sandbox image now ships CJK fonts (`fonts-noto-cjk`, about 170 MB). Without them, `jev_browser` screenshots showed Chinese and Japanese text as blank space, and charts drawn in the sandbox could not use Chinese labels.
104
+ - Python packages in the sandbox go through uv. The system pip still refuses installs, but its message now names the uv commands to use (`uv run --with <package>`), so the agent recovers after one attempt instead of trying pip, venvs, and apt in turn. The docs no longer claim that `pip install --user` works.
105
+ - Creating or updating a periodic event now reports its next three runs in the event's timezone, so the agent no longer computes weekdays itself (it once announced a Monday reminder for a Tuesday). An invalid cron `schedule` or `timezone` is rejected before the event file is written instead of being saved and then skipped by the scheduler.
106
+ - `apt-get install` works inside managed sandbox containers again. The containers drop all capabilities, so apt's download sandbox user could not switch groups and every install failed; the image now runs apt downloads as root, and the image smoke test installs a package under the same hardening.
107
+ - Asking "好了嗎" at the moment a background task finishes no longer answers "還在處理" right beside the completion notice. Task status now trusts the recorded end of the run over the runtime's still-settling state.
108
+ - A Slack message whose acknowledgement was lost during a socket reconnect no longer runs twice. Slack redelivers such events; mikan now recognizes a message or mention it has already taken and ignores the copy. A failed acknowledgement is logged instead of surfacing as an unhandled promise rejection.
109
+ - A Slack app that is not an agent app no longer calls `assistant.threads.setSuggestedPrompts` and logs `not_agent_app` every time someone opens its DM; after the first refusal the call is skipped until restart.
110
+ - A long Slack answer that outgrew the native stream no longer shows up twice. The partial streamed message is deleted before the full answer is posted, and the notification text sent with it is capped at the 4,000 bytes `chat.update` accepts, so the edit no longer fails with `msg_too_long`.
111
+ - A long Slack answer with many headings no longer fails with `invalid_blocks` and an `Error:` line. Slack expands each heading of a markdown block into its own block and rejects a message with more than 50; when an answer would exceed that, its headings are sent as bold lines instead.
112
+ - MCP tools ask the model for a progress label like every built-in tool, so the Slack checklist shows a readable step (for example "確認 GitHub 連線") instead of `mcp__server__tool`. The label is not forwarded to the MCP server, and a tool that already has its own `label` argument is left unchanged.
143
113
 
144
- ## [1.0.0-beta.0]
114
+ ## [1.0.0-beta.85]
145
115
 
146
- ### Added
116
+ ### Breaking
147
117
 
148
- - Add mikan's native agent harness with model, authentication, session, compaction, and skill support.
149
- - Add an extension system for hooks, schedules, notifications, data directories, secrets, and bundled skills, with an agent project manager example.
150
- - Add per-conversation token usage bar charts to the admin portal.
118
+ - **State migrations run only through `mikan migrate`.** The daemon now refuses to start while a migration is pending, and prints the exact command to run. It no longer moves anything at startup or on first read. After installing a new version, run `mikan migrate --sandbox=<the daemon's --sandbox> --dry-run`; if anything is pending, stop the daemon, run the same command without `--dry-run`, then start it. Applied migrations are recorded in `<state-dir>/migrations.json`, and `mikan onboard` marks a new state directory as fully migrated. See [ADR 0014](docs/adr/0014-versioned-state-migrations.md).
119
+ - **Removed commands:** `mikan office claim`, `mikan office migrate-openconnector`, `mikan office migrate-events`, `mikan office migrate-door-policy`, `mikan sessions migrate`, and `mikan sandbox status|diff|migrate`. `mikan office list` remains and now prints each office key with its platform and conversation id.
120
+ - **Upgrades are supported only from 0.5.3.** Formats that existed only in 1.0.0 prereleases are no longer converted: OpenConnector `open-connector-runtime-token.json` files, door-policy settings, Pi 0.84 session files, `<state-dir>/conversations/<raw-id>` directories, and the hashed legacy vault keys. A prerelease install that already ran those conversions is unaffected.
121
+ - **Sandbox containers are disposable.** A managed container has no home volume. When its image or mounts change, it is replaced once it is stopped, and only the workspace and vault mounts carry over. Anything else, including `/root`, installed packages, and caches, starts empty. Existing `mikan-home-*` volumes and `mikan-migrate:*` images are no longer used, and operators may delete them.
122
+ - **Host and container vaults use hashed keys only.** The runtime no longer falls back to vault directories named by raw user id (`host`) or `container-<name>` (`container:*`). `mikan migrate` renames them.
123
+ - The public API no longer exports `findV3SessionFiles`, `isV3SessionFile`, or `migrateSessionFile`.
151
124
 
152
125
  ### Changed
153
126
 
154
- - Replace the pi-coding-agent runtime and session integration with the native harness built on pi-agent-core and pi-ai.
127
+ - When a scheduled run hits its budget, the stop notice now says how long it ran, how many model and tool calls it made, the slowest steps with their durations, and which step was still running. Slow queries can be found from the notice alone.
155
128
 
156
- ### Tests
129
+ ### Fixed
157
130
 
158
- - Add coverage for harness authentication, extensions, HTTP helpers, runner, sessions, and skills.
131
+ - Multi-line error notices in Slack are italicized line by line, because Slack emphasis does not span line breaks.
132
+ - Upgrading a 0.5.3 install keeps each conversation's credentials. The old startup migration looked for a vault name that 0.5.3 never wrote, so 0.5.3 conversation vaults were silently left behind; `mikan migrate` moves them to their office keys.
133
+ - Upgrading a 0.5.3 install removes its sandbox containers instead of recreating them from snapshots under their old names next to the new ones.
159
134
 
160
- ## [0.5.3] - 2026-06-30
135
+ ## [1.0.0-beta.84]
161
136
 
162
- ### Added
163
-
164
- - Append a session-view link to event-triggered attribution messages.
165
- - Show raw cached token counts and cache-hit rate in usage summaries.
137
+ ### Performance
166
138
 
167
- ### Changed
139
+ - Shorten the `jev_browser` tool definition from about 7,000 to 2,800 characters sent on every turn: its description and parameters no longer repeat each other or explain rules the tool already enforces with its own error messages.
140
+ - List skills in the prompt one line each under their directory instead of an XML block with a full path per skill; a path appears only when a skill's directory differs from its name. A workspace with 68 skills drops from about 31,000 to 22,000 characters of prompt per turn with the same names and descriptions.
168
141
 
169
- - Use a stable, low-noise usage summary layout with token units and fixed cost breakdowns.
170
- - Mark the auto-reply command as deprecated.
142
+ ## [1.0.0-beta.83]
171
143
 
172
144
  ### Fixed
173
145
 
174
- - Harden state file writes to avoid readers seeing partial state.
175
- - Reject malformed OAuth configuration during login setup.
176
-
177
- ### Tests
178
-
179
- - Add unit coverage for utility and tool modules.
180
- - Expand Slack end-to-end coverage and make CI Slack artifacts more reliable.
146
+ - Stop copying each mikan reply back into the session a second time: chat history sync compared the posted reply, which carries the `_Triggered by …_` signature, against the model's unsigned text, missed the match, and appended the signed copy. Context held every answer twice and taught the model to keep writing the signature. Imported bot messages are now compared and stored without the signature, and a posted reply that opens with the tool checklist is matched to the model's answer it ends with.
181
147
 
182
- ## [0.5.2] - 2026-06-26
148
+ ## [1.0.0-beta.82]
183
149
 
184
- ### Added
150
+ ### Changed
185
151
 
186
- - Show the top 20 pi sessions by token usage in the admin portal, including channel labels and raw input, output, cache read, cache write, total, and cost columns.
152
+ - mikan reacts `saluting_face` (eyes on GitHub) itself when a run starts its first work tool, instead of the model spending a separate round on the reaction; the model's `react` tool is left for background checks with nothing to report.
153
+ - mikan owns the `_Triggered by …_` signature on chat responses and replaces any signature line the model wrote, so user messages no longer carry a per-turn attribution instruction. The model is still asked to sign GitHub text it writes itself.
154
+ - The model reads the current time from each message's send time instead of running `date`.
187
155
 
188
- ## [0.5.1] - 2026-06-26
156
+ ## [1.0.0-beta.81]
189
157
 
190
158
  ### Added
191
159
 
192
- - Render markdown as Slack Block Kit.
193
- - Show live tool progress during agent runs.
160
+ - Stream every run of a session live in Session View: a run started from Slack or another chat platform now appears on an open page as it happens (user message, tool results, the streaming answer), then the timeline reloads. Page-sent messages use the same stream; thinking text and errors appear after the timeline reloads.
161
+ - Guard tool loops: repeating the same tool call with identical arguments earns a notice from the third call, is blocked from the fifth, and stops the run at the tenth; short repeating cycles of calls also earn a notice.
162
+ - Compact a session in the background after a successful run when its context nears the compaction threshold, so the next message does not wait for compaction.
194
163
 
195
- ## [0.5.0] - 2026-06-25
164
+ ### Fixed
196
165
 
197
- ### Added
166
+ - Undo Slack's HTML escaping on incoming text: the model and the office log saw `&amp;&amp;`, `&lt;`, and `&gt;` where the user typed `&&`, `<`, and `>`.
167
+ - Keep the tool checklist visible while the final answer streams; it used to disappear until the answer finished.
168
+ - Stop an open Session View page from holding shutdown open; open live streams now close after a five-second grace, so a restart no longer waits for the process manager's kill timeout.
169
+ - Report a GitHub API request that returns an empty body where a resource is required with its method, path, and status, instead of failing later on a null value.
198
170
 
199
- - Add the Starlight documentation site with localized docs for English, Japanese, Simplified Chinese, and Traditional Chinese.
200
- - Add platform adapter guides for Slack, Discord, and Telegram.
201
- - Add a web agent-events portal for streaming agent events.
171
+ ### Security
202
172
 
203
- ### Changed
173
+ - **Breaking (deploy):** The link server (Admin, Session View, and credential links) now listens on `127.0.0.1` even when `LINK_URL` is set; it used to listen on every interface, so portal tokens could travel in plain HTTP straight to `LINK_PORT` around the TLS reverse proxy. A reverse proxy on the same host (`reverse_proxy 127.0.0.1:8181`) keeps working unchanged. Set the new `LINK_HOST` (for example `0.0.0.0`) when the proxy runs on another host or in a separate network namespace.
204
174
 
205
- - Align adapter, runtime, and session naming around conversation terminology for clearer contributor navigation.
206
- - Update project dependencies and bundled pi packages.
175
+ ## [1.0.0-beta.80]
207
176
 
208
177
  ### Fixed
209
178
 
210
- - Preserve custom Starlight theme component overrides.
211
- - Keep the docs dev server from restarting when settings cleanup runs.
212
- - Tighten Sentry event sanitization.
179
+ - 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.
180
+ - 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.
213
181
 
214
- ## [0.4.8] - 2026-06-22
182
+ ## [1.0.0-beta.79]
215
183
 
216
184
  ### Changed
217
185
 
218
- - Update bundled pi packages to the 0.79.9 line.
186
+ - 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.
187
+ - 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.
188
+ - **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.
189
+
190
+ ### Security
219
191
 
220
- ## [0.4.7] - 2026-06-22
192
+ - 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.
221
193
 
222
194
  ### Fixed
223
195
 
224
- - Apply the recent-days and max-messages history window when syncing existing chat sessions so resuming a session no longer replays unbounded older log history.
196
+ - Reject missing sandbox helper executables as ordinary `ENOENT` errors instead of emitting an unhandled child-process error.
197
+ - Accept `thinking: max` in subagent profiles; they kept their own level list without `max`, while settings and `/pi-model` accepted it.
198
+ - 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.
199
+ - Record a Discord channel without a name (such as a DM) under its channel id instead of a `null` name.
225
200
 
226
- ### Changed
201
+ ### Tests
227
202
 
228
- - Always report a usage summary whenever token usage is available.
203
+ - Type-check tests, E2E code, and the embedder example in pre-commit and CI, and remove every `any` and double assertion from tests.
204
+ - Run tests in random order and print the seed, so order-dependent tests fail visibly and can be reproduced.
229
205
 
230
- ### Tests
206
+ ## [1.0.0-beta.78]
231
207
 
232
- - Add coverage for capping existing chat history sync to the recent history window.
208
+ ### Added
233
209
 
234
- ## [0.4.6] - 2026-06-18
210
+ - 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).
211
+ - 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).
212
+ - Add `mikan sandbox status|diff|migrate` to inspect managed containers and move legacy containers onto a home volume with the daemon stopped.
235
213
 
236
- ### Fixed
214
+ ### Changed
237
215
 
238
- - Store Slack streamed responses as a single finalized bot log entry instead of per-delta fragments.
239
- - Coalesce legacy Slack bot log fragments when bootstrapping chat sessions so platform history is not filled with partial words.
216
+ - 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.
217
+ - 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).
218
+ - The sandbox image installs its runtime outside `/root` and is published only with mikan releases.
219
+ - 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).
240
220
 
241
- ### Tests
221
+ ### Removed
242
222
 
243
- - Add coverage for coalescing streamed bot history and logging only finalized Slack responses.
223
+ - 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).
244
224
 
245
- ## [0.4.5] - 2026-06-17
225
+ ## [1.0.0-beta.77]
246
226
 
247
227
  ### Added
248
228
 
249
- - Rotate shared top-level channel sessions on biweekly Sunday boundaries while keeping thread sessions fixed.
229
+ - 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.
250
230
 
251
231
  ### Changed
252
232
 
253
- - Bootstrap rotated shared channel sessions from the recent two-week chat log window and prevent older log history from being resynced into the active session.
254
- - Harden managed Docker sandboxes with dropped capabilities, no-new-privileges, and a PID limit.
233
+ - 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.
234
+ - 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`.
235
+ - Delegate persisted session behavior to public Pi session and harness APIs instead of maintaining duplicate storage semantics.
255
236
 
256
237
  ### Fixed
257
238
 
258
- - Report usage summaries when token usage is available even if provider pricing data is missing.
239
+ - 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.
259
240
 
260
- ### Tests
241
+ ### Security
261
242
 
262
- - Add coverage for session rotation, thread bootstrap watermarks, sandbox hardening flags, and usage summaries without cost data.
243
+ - 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.
263
244
 
264
- ## [0.4.4] - 2026-06-12
245
+ ## [1.0.0-beta.76]
265
246
 
266
- ### Fixed
247
+ ### Changed
267
248
 
268
- - Require exact provider model ID matches when grouping verified admin model availability.
249
+ - Update `@earendil-works/pi-agent-core` and `@earendil-works/pi-ai` to 0.87.0, including their aligned telemetry and harness dependencies.
269
250
 
270
- ## [0.4.3] - 2026-06-12
251
+ ## [1.0.0-beta.75]
271
252
 
272
253
  ### Added
273
254
 
274
- - Group admin model selectors by verified availability for OpenAI and Anthropic keys.
275
- - Log the active provider and model when each agent run starts to simplify server-side debugging.
276
-
277
- ## [0.4.2] - 2026-06-11
278
-
279
- ### Fixed
280
-
281
- - Resolve custom providers through pi's model registry so conversation settings can select models from `models.json`.
282
- - Resolve attached file paths from the sandbox runtime workspace so image sandboxes upload generated files from the correct host path.
283
-
284
- ## [0.4.1] - 2026-06-08
255
+ - `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.
256
+ - 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.
285
257
 
286
258
  ### Changed
287
259
 
288
- - Update bundled pi packages to the 0.78.1 line.
289
-
290
- ### Fixed
260
+ - 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.
291
261
 
292
- - Stream Slack responses with delta-only appends to avoid duplicated message segments and streaming state conflicts.
293
- - Include Slack streaming recipient metadata so threaded streamed replies work in Slack E2E and production workspaces.
262
+ ## [1.0.0-beta.74]
294
263
 
295
- ### Tests
264
+ ### Security
296
265
 
297
- - Add Slack streaming E2E coverage for delta appends without duplicate text.
266
+ - 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.
298
267
 
299
- ## [0.4.0] - 2026-06-07
268
+ ### Fixed
300
269
 
301
- ### Added
270
+ - 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.
302
271
 
303
- - Add streamed response deltas across adapters so replies can update progressively.
304
- - Add Slack reply mode configuration in the admin portal.
305
- - Add event tool CRUD support for listing, reading, updating, and deleting scheduled events, with conversation-scoped listing by default and explicit all-event listing.
272
+ ## [1.0.0-beta.73]
306
273
 
307
274
  ### Changed
308
275
 
309
- - Reorganize source modules and centralize shared type definitions for clearer contributor navigation.
310
- - Centralize adapter conversation intake and reduce wrapper indirection across runtime, adapters, commands, config, and web modules.
311
- - Attribute agent Sentry traces with platform and conversation context for clearer operator debugging.
276
+ - 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.
312
277
 
313
- ### Fixed
314
-
315
- - Persist global settings overrides correctly.
316
- - Warn when invalid custom OAuth service definitions are skipped instead of silently dropping them.
317
-
318
- ## [0.4.0-beta.0]
278
+ ## [1.0.0-beta.72]
319
279
 
320
280
  ### Added
321
281
 
322
- - Add streamed response deltas across adapters so replies can update progressively.
323
- - Add Slack reply mode configuration in the admin portal.
324
- - Add event tool CRUD support for listing, reading, updating, and deleting scheduled events, with conversation-scoped listing by default and explicit all-event listing.
282
+ - 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.
283
+
284
+ ## [1.0.0-beta.71]
325
285
 
326
286
  ### Changed
327
287
 
328
- - Reorganize source modules and centralize shared type definitions for clearer contributor navigation.
329
- - Centralize adapter conversation intake and reduce wrapper indirection across runtime, adapters, commands, config, and web modules.
288
+ - 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).
330
289
 
331
290
  ### Fixed
332
291
 
333
- - Persist global settings overrides correctly.
292
+ - 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.
293
+ - Console usage summaries now show cache-read tokens alongside fresh input tokens.
294
+ - Sandbox provisioning no longer logs `Container … already running` on every readiness check; creation, restart, drift, and failure messages remain visible.
334
295
 
335
- ## [0.3.2] - 2026-06-02
296
+ ## [1.0.0-beta.70]
336
297
 
337
298
  ### Fixed
338
299
 
339
- - Preserve trigger attribution in streamed agent responses so tool-written GitHub comments include the triggering user.
340
-
341
- ## [0.3.1] - 2026-06-02
342
-
343
- ### Added
300
+ - 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.
344
301
 
345
- - Add Slack Block Kit response support and document Block Kit implementation lessons.
302
+ ## [1.0.0-beta.69]
346
303
 
347
- ### Fixed
348
-
349
- - Require explicit mentions before Slack thread replies trigger the bot.
350
-
351
- ### Tests
304
+ ### Changed
352
305
 
353
- - Enforce phase-one strict checks and unused export checks.
306
+ - `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.
354
307
 
355
- ## [0.3.0] - 2026-06-01
308
+ ## [1.0.0-beta.68]
356
309
 
357
310
  ### Added
358
311
 
359
- - Add source directory README guides for contributors navigating adapters, commands, runtime, sessions, sandbox, tools, login, admin, and session-view code.
312
+ - `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.
313
+ - 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.
314
+ - `task_status` reports `queued` for tasks that were admitted but have not started executing yet.
360
315
 
361
316
  ### Changed
362
317
 
363
- - Centralize chat session bootstrapping through `ChatSessionManager` so Slack top-level and thread sessions share the same log-based history sync path.
364
- - Rename Slack branch/fork terminology to thread/anchor terminology across the adapter, session viewer, and documentation.
365
- - Model session-view related sessions as parent/thread relationships, including fixed-path thread sessions without legacy parent metadata.
366
- - Remove legacy thread fork and snapshot helpers from session storage.
318
+ - `harness/jev.ts` accepts structured JSON for state, instructions, and criteria, and returns `confidence` and `legend` on choice / score answers.
319
+ - 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.
320
+ - Tool progress lines for `jev` calls are prefixed with `jev ·` so users can see which steps came from a calibrated judgment.
367
321
 
368
- ### Fixed
369
-
370
- - Anchor session-view thread links on the root turn instead of earlier bootstrapped context messages.
371
-
372
- ## [0.3.0-beta.0]
322
+ ## [1.0.0-beta.67]
373
323
 
374
324
  ### Changed
375
325
 
376
- - Centralize chat session bootstrapping through `ChatSessionManager` so Slack top-level and thread sessions share the same log-based history sync path.
377
- - Rename Slack branch/fork terminology to thread/anchor terminology across the adapter, session viewer, and documentation.
378
- - Model session-view related sessions as parent/thread relationships, including fixed-path thread sessions without legacy parent metadata.
379
- - Remove legacy thread fork and snapshot helpers from session storage.
380
-
381
- ### Fixed
382
-
383
- - Anchor session-view thread links on the root turn instead of earlier bootstrapped context messages.
326
+ - 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.
327
+ - Deploy docs: `/pi-auto-reply` slash command description lists `on | off | jev`.
384
328
 
385
- ## [0.2.4] - 2026-06-01
386
-
387
- ### Fixed
388
-
389
- - Make Slack bot-rooted thread session seeds loadable by storing platform-history assistant metadata.
390
-
391
- ## [0.2.3] - 2026-06-01
329
+ ## [1.0.0-beta.66]
392
330
 
393
331
  ### Added
394
332
 
395
- - Add a sandbox resource limit tool for checking and temporarily updating managed sandbox CPU and memory limits.
396
-
397
- ### Fixed
398
-
399
- - Isolate Slack sessions rooted at bot messages so thread replies do not inherit unrelated channel history.
333
+ - `/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.
334
+ - `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.
335
+ - Jev-mode auto-reply decisions (channel, probability, addressed, truncated message text) are logged at info level for observability.
400
336
 
401
- ## [0.2.2] - 2026-05-30
337
+ ## [1.0.0-beta.65]
402
338
 
403
339
  ### Added
404
340
 
405
- - Add `/admin` portal with token-protected access via `/admin` and `/pi-admin` commands.
406
- - Add admin APIs and UI for conversation settings, global settings, workspace preview, skills, events, session links, and login/vault links.
407
- - Add model selection in the admin portal using `ModelRegistry.getAvailable()` instead of free-text fields.
408
- - Share portal shell chrome across admin, session-view, and login/vault pages.
409
- - Document admin, login, and session token boundaries in `docs/portal-auth-model.md`.
341
+ - 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.
342
+ - 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.
343
+ - 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.
344
+ - `creative-producer` subagent profile gains the `generate_image` tool grant, matching its image-deliverable description.
410
345
 
411
346
  ### Changed
412
347
 
413
- - Normalize slash-command feedback into muted compact summaries.
414
- - Align desktop layout widths across all portal surfaces.
348
+ - 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.
349
+ - The `analysis-only` subagent profile is renamed `summarizer`: it is a DAG synthesis node over upstream dependency output, not a mid-task advisor.
350
+ - 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.
351
+ - 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.
352
+ - `settings.json` ownership (schema, scope merge, readers, writers, one-time migrations) is gathered under `src/settings/`.
415
353
 
416
- ## [0.2.1] - 2026-05-27
354
+ ### Docs and maintenance
417
355
 
418
- ### Added
356
+ - Describe mikan as an organization-wide, per-conversation-isolated agent.
357
+ - 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.
419
358
 
420
- - Add expanded command, configuration, deployment, development, session, and skill documentation.
421
- - Add README hero and architecture diagrams.
422
- - Add project agent development rules and Karpathy coding guidelines.
359
+ ## [1.0.0-beta.64]
423
360
 
424
361
  ### Changed
425
362
 
426
- - Simplify the README overview and clarify sandbox runtime architecture documentation.
427
- - Simplify file guards and retry helpers.
428
-
429
- ### Fixed
430
-
431
- - Retry attachment downloads.
432
- - Skip retry sleep on the final attempt and clarify retry naming.
363
+ - 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.
433
364
 
434
- ## [0.2.0] - 2026-05-23
435
-
436
- ### Changed
365
+ ### Added
437
366
 
438
- - Renamed the project, CLI, npm package, GitHub repository, documentation, release skill, and sandbox image references to mikan.
439
- - Changed platform credentials to unprefixed env vars (`SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, `TELEGRAM_BOT_TOKEN`, `DISCORD_BOT_TOKEN`) while keeping `MIKAN_*` aliases as fallbacks.
440
- - Changed runtime env vars such as `LINK_URL`, `LINK_PORT`, `STATE_DIR`, OAuth scope overrides, and Cloudflare sandbox settings to prefer unprefixed names with `MIKAN_*` fallbacks.
441
- - Raised the minimum supported Node.js version to `>=22.19.0`.
442
- - Updated internal variable, function, type, Docker label, sandbox image, and generated resource names to use mikan naming.
443
- - Added manual dispatch support to the CI workflow.
367
+ - `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.
444
368
 
445
- ## [0.2.0-beta.25] - 2026-05-23
369
+ ## [1.0.0-beta.63]
446
370
 
447
371
  ### Changed
448
372
 
449
- - Grouped session modules under a single directory.
450
- - Centralized command parsing across adapters.
451
- - Removed explicit `any` usage across the type surface.
452
- - Cleaned unused dependencies.
453
-
454
- ### Tests
373
+ - 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.
374
+ - 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.
375
+ - 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.
455
376
 
456
- - CI now enforces coverage thresholds.
377
+ ### Added
457
378
 
458
- ## [0.2.0-beta.24]
379
+ - 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.
459
380
 
460
381
  ### Fixed
461
382
 
462
- - Session history writes now emit valid assistant messages.
383
+ - Recreating a sandbox container after a visibility change removes empty `/workspace/public/<key>` mountpoints that `docker commit` carried over from the previous mount set.
463
384
 
464
- ## [0.2.0-beta.23]
385
+ ## [1.0.0-beta.62]
465
386
 
466
- ### Fixed
387
+ ### Changed
467
388
 
468
- - Refresh stale channel history before forking a thread.
469
- - Separate history seeds from live sessions to prevent cross-contamination.
470
- - Materialize channel history when the first thread is created.
389
+ - 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.
390
+ - 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.
471
391
 
472
392
  ### Added
473
393
 
474
- - Scripts to migrate session history and repair orphan thread sessions.
475
-
476
- ## [0.2.0-beta.22]
394
+ - `mikan office migrate-events` moves legacy `<workspace>/events/*.json` records into the owning office's state and reports records it cannot attribute.
395
+ - `mikan office migrate-openconnector` converts legacy `open-connector-runtime-token.json` files into conversation MCP entries.
477
396
 
478
397
  ### Fixed
479
398
 
480
- - Slack: fork bot response threads from the channel session so replies inherit context.
481
- - Vault: preserve failures when the default shared vault cannot be applied.
482
-
483
- ## [0.2.0-beta.21]
399
+ - The agent `event` tool can no longer list, read, update, or delete another office's events, and `scope=all` is rejected.
484
400
 
485
- ### Added
401
+ ### Docs and maintenance
486
402
 
487
- - Vault: seed new sandboxes from a shared profile (`sandbox.defaultSharedVault`).
403
+ - Redraw the architecture diagram as a single rounded page and refresh the README image.
404
+ - Support local Slack E2E runs, capture intake and session markers on failure, and schedule E2E events through the `event` tool instead of writing files.
405
+ - Record the Office isolation policy, storage inventory, and OpenConnector history audit under `docs/`.
488
406
 
489
- ## [0.2.0-beta.20]
407
+ ## [1.0.0-beta.61]
490
408
 
491
409
  ### Added
492
410
 
493
- - Sentry: report user-facing failures.
494
- - Auto-reply: surface configured rules in the status command.
411
+ - 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.
412
+ - Slack DM task handoff: independent task threads keep the main conversation free, with text steering in active task threads and continuation after stopping.
495
413
 
496
414
  ### Fixed
497
415
 
498
- - Slack: anchor event-fork sessions correctly (#61).
499
- - Slack: keep session ephemerals scoped to threads.
500
- - Agent: require history search before answering unknown replies.
501
- - Agent: keep quiet tool errors out of chat.
416
+ - Keep thread stop acknowledgements in the source thread, including shared-channel unmentioned stop controls.
417
+ - Notify Slack DM task requesters with a fresh in-thread mention after normal completion.
418
+ - Finalize stop acknowledgements that arrive after the cancelled run has already settled.
419
+ - Propagate final response delivery failures so rejected updates do not trigger completion notifications.
420
+ - Honor stop during runner preparation and keep older active tasks visible in status queries.
421
+ - Report task admission, asynchronous startup, and status inspection failures through the existing Sentry/OTLP observability path.
502
422
 
503
423
  ### Changed
504
424
 
505
- - Removed cloud-logging config — log to stdout/stderr and route via your process manager.
425
+ - Publish the already built and verified npm package without rerunning build and repository setup lifecycle scripts.
426
+ - Keep the documented and CI coverage commands as stable entry points while maintaining their shared Vitest invocation in one place.
427
+ - 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.
506
428
 
507
- ## [0.2.0-beta.19]
429
+ ## [1.0.0-beta.60]
508
430
 
509
431
  ### Fixed
510
432
 
511
- - Sandbox: bootstrap `gh` git credentials inside managed containers.
433
+ - Separate CJK-adjacent bold dollar amounts for Slack's Markdown parser while preserving code and link destinations.
434
+ - Validate Session View selections through read-only inspection so active and repeatedly selected historical sessions do not conflict with writer ownership or appear corrupted.
512
435
 
513
- ## [0.2.0-beta.18]
436
+ ## [1.0.0-beta.59]
514
437
 
515
438
  ### Fixed
516
439
 
517
- - Sandbox: update memory swap when applying CPU/memory limits.
518
- - Slack: preserve long replies posted in threads.
440
+ - Keep Slack's working indicator in its own paragraph so progressive heading and table updates can replace existing rich-text messages without `block_mismatch`.
441
+ - Pace failed progressive redraws as well as successful ones, retaining accumulated text for recovery instead of retrying on every delta.
519
442
 
520
- ## [0.2.0-beta.17]
443
+ ### Changed
444
+
445
+ - Use Commander for CLI option parsing, subcommand validation, and generated help.
446
+ - Guide interactive onboarding with arrow-key selections, masked credentials, and a final confirmation before saving. Cancel without writing settings.
447
+ - Refuse custom-provider onboarding when models.json already exists, without printing credentials or writing partial settings.
448
+
449
+ ## [1.0.0-beta.58]
521
450
 
522
451
  ### Added
523
452
 
524
- - Sentry: store env values and write a `sentry-cli` config for richer error reports.
453
+ - Restore Slack `/pi-auto-reply on|off` with the original per-conversation marker files, without judge models or rules.
454
+ - Expose the admin portal command on Discord and Telegram.
525
455
 
526
456
  ### Changed
527
457
 
528
- - Bumped `@earendil-works/pi-*` packages.
458
+ - 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.
529
459
 
530
- ## [0.2.0-beta.16]
531
-
532
- ### Performance
460
+ ## [1.0.0-beta.57]
533
461
 
534
- - Slack: unblock startup while backfill is running.
462
+ ### Changed
535
463
 
536
- ## [0.2.0-beta.15]
464
+ - 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.
537
465
 
538
- ### Added
466
+ ### Removed
539
467
 
540
- - Config: validate JSON files with TypeBox schemas.
541
- - Agent: attribute the trigger (mention/direct/auto-reply/…) in responses.
468
+ - Remove telemetry identifier hashing and the `TELEMETRY_HASH_KEY` deployment setting.
542
469
 
543
- ## [0.2.0-beta.14]
470
+ ## [1.0.0-beta.56]
544
471
 
545
- ### Fixed
472
+ ### Added
546
473
 
547
- - Login: refresh the sandbox after copying a shared profile.
474
+ - 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.
548
475
 
549
- ### Changed
476
+ ### Security
550
477
 
551
- - Simplified command dispatch, token stores, and re-exports (#60).
478
+ - 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.
552
479
 
553
- ## [0.2.0-beta.13]
480
+ ## [1.0.0-beta.55]
554
481
 
555
482
  ### Added
556
483
 
557
- - Login: gcloud OAuth support.
484
+ - 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.
485
+ - Add a guided Admin dialog for configuring MCP servers, with structured fields or pasted standard `mcpServers` JSON and card-based installed-server management.
558
486
 
559
- ## [0.2.0-beta.12]
487
+ ### Changed
560
488
 
561
- ### Fixed
489
+ - 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.
490
+ - 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.
491
+ - Consolidate harness, office, session, sandbox, web-adapter, and shared-command ownership without changing the published root exports.
562
492
 
563
- - Auto-reply: persist the resolved session key.
493
+ ### Removed
564
494
 
565
- ## [0.2.0-beta.11]
495
+ - Remove managed skill packages and their Admin/package materialization surfaces. Workspace and conversation skills remain supported.
496
+ - Remove the auto-reply judge, command, configuration, and UI; explicit platform triggers remain supported.
497
+ - 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`.
566
498
 
567
499
  ### Fixed
568
500
 
569
- - Login: make Slack login ephemeral and refresh vault mounts after credentials change.
501
+ - 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.
570
502
 
571
- ### Changed
503
+ ## [1.0.0-beta.54]
572
504
 
573
- - Sandbox: update base image and tags.
505
+ ### Changed
574
506
 
575
- ## [0.2.0-beta.10]
507
+ - 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.
576
508
 
577
- ### Added
509
+ ## [1.0.0-beta.53]
578
510
 
579
- - Auto-reply: channel trigger rules and a configurable judge model (`llm.autoReply`).
580
- - Slack: native E2E smoke workflow under `e2e/`.
511
+ ### Changed
581
512
 
582
- ### Fixed
513
+ - 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.
583
514
 
584
- - Auto-reply: use mom-compatible marker files; judge policy never throws and always logs.
585
- - Events: validate one-shot times before scheduling; simplify fresh follow-up sessions.
515
+ ### Added
586
516
 
587
- ### Changed
517
+ - 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.
518
+ - Set the Sentry conversation id to the session key on every agent run so Agent Monitoring groups gen_ai spans per thread.
519
+ - 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.
588
520
 
589
- - Onboard: default model is `claude-sonnet-4-6`.
590
- - Separated runtime and control-plane paths.
521
+ ## [1.0.0-beta.52]
591
522
 
592
- ## [0.2.0-beta.9]
523
+ ### Removed
593
524
 
594
- ### Added
525
+ - 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`.
595
526
 
596
- - Session view: floating composer and per-message copy button.
597
- - Docker sandbox: add `rg` and `fd` to the image.
527
+ ## [1.0.0-beta.51]
598
528
 
599
529
  ### Fixed
600
530
 
601
- - Session view: ignore Enter during IME composition; preserve code-block contrast.
531
+ - Drop `requiredTools` from built-in subagent profiles; requiring both `read` and `bash` discarded finished answers from tasks that needed only one of them.
532
+ - Keep a caller's `requiredTools` when the request also names a profile.
533
+ - Stop dropping the retained assistant message when an overflow retry rebuilds context from the store.
602
534
 
603
- ## [0.2.0-beta.8]
535
+ ### Changed
604
536
 
605
- ### Added
537
+ - Read mikan session metadata through Pi's `session.getValue` in `open`/`inspect`; compare `fstat` fields instead of hashing the file for pending-session materialization.
606
538
 
607
- - Login: shared vault profiles.
608
- - Session view: improved interactive chat console.
609
- - Slack: harden socket connection and label the platform in the connect log.
610
- - Agent: `ThinkingLevel` type on session parameters.
539
+ ## [1.0.0-beta.50]
611
540
 
612
- ### Changed
541
+ ### Fixed
613
542
 
614
- - Sandbox: store the image workspace mount in settings.
615
- - Dropped `vault.json` metadata — directories are the only source of truth.
616
- - Refactored agent runner orchestration into smaller modules.
543
+ - Tolerate byte-identical duplicate Dream session files while rejecting divergent same-ID files.
617
544
 
618
- ### Removed
545
+ ## [1.0.0-beta.49]
546
+
547
+ ### Changed
619
548
 
620
- - `UserBindingStore` and `bindings.json` plumbing.
621
- - Log-to-session backfill.
549
+ - 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.
622
550
 
623
- ## [0.2.0-beta.7]
551
+ ## [1.0.0-beta.48]
624
552
 
625
553
  ### Added
626
554
 
627
- - Sandbox: temporary `boost` command for one-off CPU/memory bumps.
628
- - Slack: mute command summaries.
555
+ - Add an offline session migration for Pi 0.84-generation v4 JSONL files, with verified atomic replacement and preserved `*.pi-084.bak` originals.
629
556
 
630
557
  ### Changed
631
558
 
632
- - Migrated `pi-*` packages to the `@earendil-works/` namespace.
633
-
634
- ### Fixed
559
+ - Upgrade `pi-agent-core` and `pi-ai` to 0.85.0 and persist sessions with the current `v: 4`, `storageVersion: 1` schema.
560
+ - Extend `mikan sessions migrate` to convert both legacy mikan v3 and Pi 0.84-generation v4 sessions while the daemon is stopped.
635
561
 
636
- - Slack: log messages from external apps; hide bash tool diagnostics.
637
- - Session: ignore history written before a reset.
638
- - Agent: clarify runtime workspace paths in the system prompt.
639
-
640
- ## [0.2.0-beta.6]
562
+ ## [1.0.0-beta.47]
641
563
 
642
564
  ### Added
643
565
 
644
- - Commands: conversation model switch (`/pi-model …`) with `:thinking` shorthand.
645
- - Config: onboarding flow for global settings (`mikan --onboard`).
646
- - Docs: PM2 ecosystem config and production deploy guide.
566
+ - 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.
567
+ - Preserve operating guidance supplied during MCP initialization and present it to the agent with explicit system-prompt and user-intent boundaries.
568
+ - Add automatic selection of a sole OpenConnector provider connection when an action omits `connectionName`; retain explicit selection when multiple accounts exist.
647
569
 
648
570
  ### Changed
649
571
 
650
- - Config: nest settings schema; align chat platform commands.
572
+ - Gate MCP tools by the platform trust model and enforce the untrusted package boundary.
573
+ - Make platform shutdown cleanup bounded and strengthen runner/session lifecycle rollback handling.
651
574
 
652
575
  ### Fixed
653
576
 
654
- - Slack: strip only the bot's own mention from message text.
655
-
656
- ## [0.2.0-beta.5]
577
+ - Isolate Slack DM and thread E2E context and bound event-delivery waits.
657
578
 
658
- ### Added
579
+ ### Tests
659
580
 
660
- - Sandbox: Cloudflare sandbox bridge (experimental).
661
- - Tests: unit coverage for `CommandRegistry` and command handlers.
581
+ - Add coverage for OpenConnector token provisioning, MCP instruction propagation, connection selection, trust gating, lifecycle cleanup, and Slack isolation.
662
582
 
663
- ### Changed
583
+ ## [1.0.0-beta.46]
664
584
 
665
- - Env: renamed `MOM_*` env vars to `MIKAN_*` (breaking).
666
- - Vault: conversation vault directories are now the source of truth; dropped platform prefix from the conversation vault key.
667
- - Config: `--state-dir` is the single source for settings.
668
- - Tightened command/runtime types and added a `postPrivate` capability.
585
+ ### Added
669
586
 
670
- ## [0.2.0-beta.4]
587
+ - 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.
588
+ - 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.
589
+ - Schedule Dream maintenance for Conversation-office memory with durable evidence checkpoints.
590
+ - Add an Admin MCP Marketplace with reviewed GitHub, Context7, Playwright, Sequential Thinking, and Metabase presets; Metabase installations accept an instance endpoint and API key.
671
591
 
672
592
  ### Changed
673
593
 
674
- - Hardened core writes; unified adapter retry and log helpers.
675
- - Eliminated duplication across adapters, vault, and Slack command factories (#53).
676
- - Session forks now anchor to raw split points.
677
- - Adapter-specific stop logic stays in adapters.
594
+ - Remove the executable extension system and its CLI/chat management surfaces; packages remain the supported path for deploying read-only skills.
595
+ - Remove the harness `auth.json` credential store; configure provider credentials through environment variables, onboarding, or the conversation vault.
596
+ - Remove Gondolin, Firecracker, and GitHub Cloud Build log integrations from the supported runtime surface.
597
+ - 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.
598
+ - Consolidate runtime, session, adapter, web, and configuration ownership to reduce duplicate lifecycle and parsing rules.
678
599
 
679
600
  ### Fixed
680
601
 
681
- - Slack: tighten thread reply triggers.
602
+ - Preserve streamed UTF-8 output when host sandbox chunks split multi-byte characters.
603
+ - Re-aim migrated session lanes at the nearest surviving ancestor when the newest v3 entry contains facts but no v4 message.
682
604
 
683
- ## [0.2.0-beta.3]
605
+ ### Tests
684
606
 
685
- ### Added
607
+ - Move CI action runtimes to Node 24 and strengthen runtime, presenter, workspace-projection, MCP marketplace, and session migration coverage.
686
608
 
687
- - Session view: Slack-aware session viewer with branching (#51).
688
- - Login: built-in credential presets and a redesigned credential portal.
689
- - Sandbox: image-mode container CPU/memory limits (#50), bridge network isolation, `ffmpeg` in the tools image.
609
+ ## [1.0.0-beta.45]
690
610
 
691
611
  ### Fixed
692
612
 
693
- - Discord: normalize thread sessions; queue follow-up messages; persistent channel sessions; hide usage summary by default.
694
- - Events: restore Slack synthetic notifications (#52).
695
- - Attachments: wait for downloads before the agent accesses them.
613
+ - 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.
696
614
 
697
- ## [0.2.0-beta.2]
615
+ ## [1.0.0-beta.44]
698
616
 
699
617
  ### Added
700
618
 
701
- - Per-user vault system for actor-scoped credential isolation (#24).
702
- - Managed image sandbox (`--sandbox=image:<image>`) (#47).
703
- - Login flow wired into the runtime; credential onboarding server (#32, #34).
704
- - Slack: `/pi-new` and `/pi-login` DM commands.
705
- - Events: actor-aware scheduling tool (#36, #39).
619
+ - 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.
620
+ - 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.
621
+ - Migrate sessions to pi's v4 format with a `mikan sessions migrate` CLI; pi upgraded to 0.84.3.
622
+ - Extensions can declare required host capabilities in `package.json` (`mikan.requires`); activation checks them before importing the module and `mikan ext validate` reports them.
706
623
 
707
624
  ### Changed
708
625
 
709
- - Internal contracts unified around "conversation" naming across adapter, store, config, log, and UI layers (#38, #41, #42, #43, #44, #46).
626
+ - 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.
627
+ - Derive all platform command registration and routing from the single command manifest.
628
+ - Adopt pi-ai's retryable-error classifier instead of a local copy.
629
+ - Conversation runtimes are keyed by office key, fixing cross-conversation runner reuse after ID changes.
710
630
 
711
631
  ### Fixed
712
632
 
713
- - Telegram: handle bare `stop` in shared chats; escape unsupported HTML entities.
714
- - Slack: queue follow-up messages per session.
633
+ - Session files enforce single-writer ownership, surviving inode reuse and stale writer claims.
634
+ - Failed extension activations roll back cleanly; duplicate tool names are rejected.
635
+ - Slack slash commands in threads carry the thread session key instead of falling back to the top-level session.
636
+ - GitHub first-contact stop no longer creates participation state.
637
+ - Subagent deadlines are enforced by a single wall-clock timer; `before_agent_start` hooks run before auth and pre-turn compaction.
638
+ - Sandbox container removal failures no longer clear ownership, preventing orphaned containers.
639
+ - Run outcomes settle from the final message and run state is released on throw.
715
640
 
716
- ## [0.2.0-beta.1]
641
+ ## [1.0.0-beta.43]
717
642
 
718
643
  ### Added
719
644
 
720
- - File-backed credential vault (#31) and per-user vault routing (#33).
721
- - OAuth: GitHub redirect flow, scope parity with `gh` CLI, gcloud OAuth.
722
- - Sandbox: separate `stateDir` from `workspaceDir` to keep secrets out of sandboxes.
645
+ - Add an optional authenticated GitHub webhook endpoint that wakes polling immediately for lower-latency issue and pull-request handling.
646
+ - Add a machine-readable architecture index and generated system architecture documentation for repository-wide module boundaries and flows.
723
647
 
724
- ### Security
648
+ ### Changed
725
649
 
726
- - Hardened vault writes, file permissions, and login flow.
727
- - Stopped leaking secrets in `docker exec` args.
728
- - Enforced vault sandbox isolation policy.
650
+ - Run manual and automatic Session Dreams in the background while preserving session rotation and conversation maintenance boundaries.
729
651
 
730
- ### Changed
652
+ ### Fixed
731
653
 
732
- - Renamed `docker` sandbox mode to `container` (breaking).
733
- - Replaced `DockerProvisioner` with `DockerContainerManager` + idle stop.
654
+ - Wait for final Slack thread responses in isolation coverage instead of accepting provisional native-stream text.
734
655
 
735
- ## [0.2.0-beta.0]
656
+ ### Tests
736
657
 
737
- ### Added
658
+ - Add regression coverage for GitHub webhook authentication and dispatch, background Session Dream lifecycle behavior, and final Slack stream settlement.
738
659
 
739
- - Sentry integration for error monitoring, tracing, and metrics (#21).
740
- - Persistent session management with in-thread replies (#18).
741
- - Telegram: native slash commands; private-chat session fix (#15).
742
- - `pi-coding-agent` extension loading (#12).
660
+ ## [1.0.0-beta.42]
743
661
 
744
- ## Earlier releases
662
+ ### Changed
745
663
 
746
- For releases prior to `0.2.0-beta.0` (i.e. the `0.1.x` line), see the [git tag history](https://github.com/geminixiang/mikan/tags).
664
+ [Showing lines 1-614 of 1985 (50.0KB limit). Use offset=615 to continue.]