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

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 (853) hide show
  1. package/CHANGELOG.md +1040 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +11 -8
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +166 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +37 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +155 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +15 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +153 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +41 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +5 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +43 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  30. package/dist/adapters/commands/sandbox.js +125 -0
  31. package/dist/adapters/commands/sandbox.js.map +1 -0
  32. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  33. package/dist/{commands → adapters/commands}/session-view.js +23 -16
  34. package/dist/adapters/commands/session-view.js.map +1 -0
  35. package/dist/adapters/commands/types.d.ts +145 -0
  36. package/dist/adapters/commands/types.d.ts.map +1 -0
  37. package/dist/adapters/commands/types.js.map +1 -0
  38. package/dist/adapters/commands/utils.d.ts +14 -0
  39. package/dist/adapters/commands/utils.d.ts.map +1 -0
  40. package/dist/{commands → adapters/commands}/utils.js +18 -1
  41. package/dist/adapters/commands/utils.js.map +1 -0
  42. package/dist/adapters/discord/bot.d.ts +11 -8
  43. package/dist/adapters/discord/bot.d.ts.map +1 -1
  44. package/dist/adapters/discord/bot.js +223 -256
  45. package/dist/adapters/discord/bot.js.map +1 -1
  46. package/dist/adapters/discord/components.d.ts +28 -0
  47. package/dist/adapters/discord/components.d.ts.map +1 -0
  48. package/dist/adapters/discord/components.js +32 -0
  49. package/dist/adapters/discord/components.js.map +1 -0
  50. package/dist/adapters/discord/context.d.ts +2 -6
  51. package/dist/adapters/discord/context.d.ts.map +1 -1
  52. package/dist/adapters/discord/context.js +64 -218
  53. package/dist/adapters/discord/context.js.map +1 -1
  54. package/dist/adapters/discord/format.d.ts +3 -0
  55. package/dist/adapters/discord/format.d.ts.map +1 -0
  56. package/dist/adapters/discord/format.js +84 -0
  57. package/dist/adapters/discord/format.js.map +1 -0
  58. package/dist/adapters/discord/types.d.ts +8 -1
  59. package/dist/adapters/discord/types.d.ts.map +1 -1
  60. package/dist/adapters/discord/types.js.map +1 -1
  61. package/dist/adapters/github/bot.d.ts +102 -0
  62. package/dist/adapters/github/bot.d.ts.map +1 -0
  63. package/dist/adapters/github/bot.js +720 -0
  64. package/dist/adapters/github/bot.js.map +1 -0
  65. package/dist/adapters/github/client.d.ts +122 -0
  66. package/dist/adapters/github/client.d.ts.map +1 -0
  67. package/dist/adapters/github/client.js +301 -0
  68. package/dist/adapters/github/client.js.map +1 -0
  69. package/dist/adapters/github/context.d.ts +5 -0
  70. package/dist/adapters/github/context.d.ts.map +1 -0
  71. package/dist/adapters/github/context.js +101 -0
  72. package/dist/adapters/github/context.js.map +1 -0
  73. package/dist/adapters/github/github-ops.d.ts +78 -0
  74. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  75. package/dist/adapters/github/github-ops.js +337 -0
  76. package/dist/adapters/github/github-ops.js.map +1 -0
  77. package/dist/adapters/github/ids.d.ts +34 -0
  78. package/dist/adapters/github/ids.d.ts.map +1 -0
  79. package/dist/adapters/github/ids.js +57 -0
  80. package/dist/adapters/github/ids.js.map +1 -0
  81. package/dist/adapters/github/repo.d.ts +33 -0
  82. package/dist/adapters/github/repo.d.ts.map +1 -0
  83. package/dist/adapters/github/repo.js +141 -0
  84. package/dist/adapters/github/repo.js.map +1 -0
  85. package/dist/adapters/github/tool-pack.d.ts +14 -0
  86. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  87. package/dist/adapters/github/tool-pack.js +55 -0
  88. package/dist/adapters/github/tool-pack.js.map +1 -0
  89. package/dist/adapters/github/tools/checks.d.ts +18 -0
  90. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  91. package/dist/adapters/github/tools/checks.js +86 -0
  92. package/dist/adapters/github/tools/checks.js.map +1 -0
  93. package/dist/adapters/github/tools/issue.d.ts +21 -0
  94. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  95. package/dist/adapters/github/tools/issue.js +48 -0
  96. package/dist/adapters/github/tools/issue.js.map +1 -0
  97. package/dist/adapters/github/tools/pr.d.ts +22 -0
  98. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  99. package/dist/adapters/github/tools/pr.js +48 -0
  100. package/dist/adapters/github/tools/pr.js.map +1 -0
  101. package/dist/adapters/github/tools/read.d.ts +21 -0
  102. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  103. package/dist/adapters/github/tools/read.js +141 -0
  104. package/dist/adapters/github/tools/read.js.map +1 -0
  105. package/dist/adapters/github/tools/review-reply.d.ts +17 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  107. package/dist/adapters/github/tools/review-reply.js +38 -0
  108. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  109. package/dist/adapters/github/tools/sync.d.ts +17 -0
  110. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  111. package/dist/adapters/github/tools/sync.js +34 -0
  112. package/dist/adapters/github/tools/sync.js.map +1 -0
  113. package/dist/adapters/github/types.d.ts +345 -0
  114. package/dist/adapters/github/types.d.ts.map +1 -0
  115. package/dist/adapters/github/types.js.map +1 -0
  116. package/dist/adapters/github/webhook.d.ts +20 -0
  117. package/dist/adapters/github/webhook.d.ts.map +1 -0
  118. package/dist/adapters/github/webhook.js +78 -0
  119. package/dist/adapters/github/webhook.js.map +1 -0
  120. package/dist/adapters/index.d.ts +12 -0
  121. package/dist/adapters/index.d.ts.map +1 -0
  122. package/dist/adapters/index.js +19 -0
  123. package/dist/adapters/index.js.map +1 -0
  124. package/dist/adapters/intake.d.ts +17 -6
  125. package/dist/adapters/intake.d.ts.map +1 -1
  126. package/dist/adapters/intake.js +96 -27
  127. package/dist/adapters/intake.js.map +1 -1
  128. package/dist/adapters/markdown-tables.d.ts +19 -0
  129. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  130. package/dist/adapters/markdown-tables.js +152 -0
  131. package/dist/adapters/markdown-tables.js.map +1 -0
  132. package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  133. package/dist/adapters/messages.d.ts.map +1 -0
  134. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  135. package/dist/adapters/messages.js.map +1 -0
  136. package/dist/adapters/progressive-renderer.d.ts +7 -0
  137. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  138. package/dist/adapters/progressive-renderer.js +443 -0
  139. package/dist/adapters/progressive-renderer.js.map +1 -0
  140. package/dist/adapters/shared.d.ts +37 -11
  141. package/dist/adapters/shared.d.ts.map +1 -1
  142. package/dist/adapters/shared.js +130 -24
  143. package/dist/adapters/shared.js.map +1 -1
  144. package/dist/adapters/slack/assistant.d.ts +73 -0
  145. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  146. package/dist/adapters/slack/assistant.js +205 -0
  147. package/dist/adapters/slack/assistant.js.map +1 -0
  148. package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
  149. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  150. package/dist/adapters/slack/auto-reply-context.js +28 -0
  151. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  152. package/dist/adapters/slack/blocks.d.ts +14 -0
  153. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  154. package/dist/adapters/slack/blocks.js +104 -148
  155. package/dist/adapters/slack/blocks.js.map +1 -1
  156. package/dist/adapters/slack/bot.d.ts +154 -21
  157. package/dist/adapters/slack/bot.d.ts.map +1 -1
  158. package/dist/adapters/slack/bot.js +1037 -484
  159. package/dist/adapters/slack/bot.js.map +1 -1
  160. package/dist/adapters/slack/context.d.ts +2 -6
  161. package/dist/adapters/slack/context.d.ts.map +1 -1
  162. package/dist/adapters/slack/context.js +11 -17
  163. package/dist/adapters/slack/context.js.map +1 -1
  164. package/dist/adapters/slack/jev-context.d.ts +30 -0
  165. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  166. package/dist/adapters/slack/jev-context.js +67 -0
  167. package/dist/adapters/slack/jev-context.js.map +1 -0
  168. package/dist/adapters/slack/markdown.d.ts +3 -0
  169. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  170. package/dist/adapters/slack/markdown.js +48 -0
  171. package/dist/adapters/slack/markdown.js.map +1 -0
  172. package/dist/adapters/slack/persona.d.ts +15 -0
  173. package/dist/adapters/slack/persona.d.ts.map +1 -0
  174. package/dist/adapters/slack/persona.js +22 -0
  175. package/dist/adapters/slack/persona.js.map +1 -0
  176. package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
  177. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  178. package/dist/adapters/slack/response-lifecycle.js +261 -345
  179. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  180. package/dist/adapters/slack/session.d.ts.map +1 -1
  181. package/dist/adapters/slack/session.js +7 -11
  182. package/dist/adapters/slack/session.js.map +1 -1
  183. package/dist/adapters/slack/stream-limits.d.ts +35 -0
  184. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  185. package/dist/adapters/slack/stream-limits.js +56 -0
  186. package/dist/adapters/slack/stream-limits.js.map +1 -0
  187. package/dist/adapters/slack/task-intent.d.ts +32 -0
  188. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  189. package/dist/adapters/slack/task-intent.js +72 -0
  190. package/dist/adapters/slack/task-intent.js.map +1 -0
  191. package/dist/adapters/slack/task-status.d.ts +7 -0
  192. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  193. package/dist/adapters/slack/task-status.js +107 -0
  194. package/dist/adapters/slack/task-status.js.map +1 -0
  195. package/dist/adapters/slack/tool-pack.d.ts +11 -0
  196. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  197. package/dist/adapters/slack/tool-pack.js +45 -0
  198. package/dist/adapters/slack/tool-pack.js.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
  200. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  201. package/dist/adapters/slack/tools/blockkit.js +106 -0
  202. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  203. package/dist/adapters/slack/types.d.ts +73 -2
  204. package/dist/adapters/slack/types.d.ts.map +1 -1
  205. package/dist/adapters/slack/types.js.map +1 -1
  206. package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
  207. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  208. package/dist/adapters/slack/update-diagnostics.js +134 -0
  209. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  210. package/dist/adapters/telegram/bot.d.ts +10 -9
  211. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  212. package/dist/adapters/telegram/bot.js +133 -202
  213. package/dist/adapters/telegram/bot.js.map +1 -1
  214. package/dist/adapters/telegram/context.d.ts +2 -6
  215. package/dist/adapters/telegram/context.d.ts.map +1 -1
  216. package/dist/adapters/telegram/context.js +53 -190
  217. package/dist/adapters/telegram/context.js.map +1 -1
  218. package/dist/adapters/telegram/types.d.ts +1 -1
  219. package/dist/adapters/telegram/types.d.ts.map +1 -1
  220. package/dist/adapters/telegram/types.js.map +1 -1
  221. package/dist/adapters/types.d.ts +144 -13
  222. package/dist/adapters/types.d.ts.map +1 -1
  223. package/dist/adapters/types.js.map +1 -1
  224. package/dist/adapters/web/admin/portal.d.ts +44 -0
  225. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  226. package/dist/adapters/web/admin/portal.js +3207 -0
  227. package/dist/adapters/web/admin/portal.js.map +1 -0
  228. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  229. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  231. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  232. package/dist/adapters/web/admin/types.d.ts +53 -0
  233. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  234. package/dist/adapters/web/admin/types.js.map +1 -0
  235. package/dist/adapters/web/login/oauth.d.ts +5 -0
  236. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  237. package/dist/{web → adapters/web}/login/oauth.js +50 -85
  238. package/dist/adapters/web/login/oauth.js.map +1 -0
  239. package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
  240. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  241. package/dist/{web → adapters/web}/login/portal.js +161 -119
  242. package/dist/adapters/web/login/portal.js.map +1 -0
  243. package/dist/{web → adapters/web}/login/types.d.ts +1 -12
  244. package/dist/adapters/web/login/types.d.ts.map +1 -0
  245. package/dist/adapters/web/login/types.js.map +1 -0
  246. package/dist/adapters/web/portal-shell.d.ts +22 -0
  247. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  248. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
  249. package/dist/adapters/web/portal-shell.js.map +1 -0
  250. package/dist/{web → adapters/web}/server.d.ts +14 -8
  251. package/dist/adapters/web/server.d.ts.map +1 -0
  252. package/dist/{web → adapters/web}/server.js +14 -7
  253. package/dist/adapters/web/server.js.map +1 -0
  254. package/dist/adapters/web/session-view/portal.d.ts +20 -0
  255. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  256. package/dist/{web → adapters/web}/session-view/portal.js +633 -162
  257. package/dist/adapters/web/session-view/portal.js.map +1 -0
  258. package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
  259. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  260. package/dist/adapters/web/session-view/types.js.map +1 -0
  261. package/dist/adapters/web/token-store.d.ts.map +1 -0
  262. package/dist/{web → adapters/web}/token-store.js +1 -1
  263. package/dist/adapters/web/token-store.js.map +1 -0
  264. package/dist/adapters/web/types.d.ts.map +1 -0
  265. package/dist/adapters/web/types.js.map +1 -0
  266. package/dist/cli/arg-grammar.d.ts +11 -0
  267. package/dist/cli/arg-grammar.d.ts.map +1 -0
  268. package/dist/cli/arg-grammar.js +50 -0
  269. package/dist/cli/arg-grammar.js.map +1 -0
  270. package/dist/cli/boot.d.ts +5 -0
  271. package/dist/cli/boot.d.ts.map +1 -0
  272. package/dist/cli/boot.js +90 -0
  273. package/dist/cli/boot.js.map +1 -0
  274. package/dist/cli/download.d.ts.map +1 -0
  275. package/dist/cli/download.js +88 -0
  276. package/dist/cli/download.js.map +1 -0
  277. package/dist/cli/office.d.ts +2 -0
  278. package/dist/cli/office.d.ts.map +1 -0
  279. package/dist/cli/office.js +181 -0
  280. package/dist/cli/office.js.map +1 -0
  281. package/dist/cli/onboard.d.ts +10 -0
  282. package/dist/cli/onboard.d.ts.map +1 -0
  283. package/dist/cli/onboard.js +225 -0
  284. package/dist/cli/onboard.js.map +1 -0
  285. package/dist/cli/process-lifecycle.d.ts +19 -0
  286. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  287. package/dist/cli/process-lifecycle.js +67 -0
  288. package/dist/cli/process-lifecycle.js.map +1 -0
  289. package/dist/cli/sessions.d.ts +2 -0
  290. package/dist/cli/sessions.d.ts.map +1 -0
  291. package/dist/cli/sessions.js +88 -0
  292. package/dist/cli/sessions.js.map +1 -0
  293. package/dist/cli/types.d.ts +25 -0
  294. package/dist/cli/types.d.ts.map +1 -0
  295. package/dist/cli/types.js.map +1 -0
  296. package/dist/dream/index.d.ts +20 -0
  297. package/dist/dream/index.d.ts.map +1 -0
  298. package/dist/dream/index.js +264 -0
  299. package/dist/dream/index.js.map +1 -0
  300. package/dist/dream/types.d.ts +30 -0
  301. package/dist/dream/types.d.ts.map +1 -0
  302. package/dist/dream/types.js +2 -0
  303. package/dist/dream/types.js.map +1 -0
  304. package/dist/env-manifest.d.ts +38 -0
  305. package/dist/env-manifest.d.ts.map +1 -0
  306. package/dist/env-manifest.js +260 -0
  307. package/dist/env-manifest.js.map +1 -0
  308. package/dist/events/index.d.ts +172 -0
  309. package/dist/events/index.d.ts.map +1 -0
  310. package/dist/events/index.js +340 -0
  311. package/dist/events/index.js.map +1 -0
  312. package/dist/events/scheduler.d.ts +34 -0
  313. package/dist/events/scheduler.d.ts.map +1 -0
  314. package/dist/events/scheduler.js +231 -0
  315. package/dist/events/scheduler.js.map +1 -0
  316. package/dist/file-guards.d.ts +26 -0
  317. package/dist/file-guards.d.ts.map +1 -0
  318. package/dist/file-guards.js +133 -0
  319. package/dist/file-guards.js.map +1 -0
  320. package/dist/harness/execution-env.d.ts +19 -0
  321. package/dist/harness/execution-env.d.ts.map +1 -0
  322. package/dist/harness/execution-env.js +262 -0
  323. package/dist/harness/execution-env.js.map +1 -0
  324. package/dist/harness/execution-resolver.d.ts +25 -0
  325. package/dist/harness/execution-resolver.d.ts.map +1 -0
  326. package/dist/harness/execution-resolver.js +156 -0
  327. package/dist/harness/execution-resolver.js.map +1 -0
  328. package/dist/harness/index.d.ts +18 -13
  329. package/dist/harness/index.d.ts.map +1 -1
  330. package/dist/harness/index.js +11 -11
  331. package/dist/harness/index.js.map +1 -1
  332. package/dist/harness/jev.d.ts +86 -0
  333. package/dist/harness/jev.d.ts.map +1 -0
  334. package/dist/harness/jev.js +167 -0
  335. package/dist/harness/jev.js.map +1 -0
  336. package/dist/harness/mcp.d.ts +38 -0
  337. package/dist/harness/mcp.d.ts.map +1 -0
  338. package/dist/harness/mcp.js +304 -0
  339. package/dist/harness/mcp.js.map +1 -0
  340. package/dist/harness/models.d.ts +7 -4
  341. package/dist/harness/models.d.ts.map +1 -1
  342. package/dist/harness/models.js +54 -55
  343. package/dist/harness/models.js.map +1 -1
  344. package/dist/harness/open-connector.d.ts +25 -0
  345. package/dist/harness/open-connector.d.ts.map +1 -0
  346. package/dist/harness/open-connector.js +178 -0
  347. package/dist/harness/open-connector.js.map +1 -0
  348. package/dist/harness/presenter.d.ts +31 -0
  349. package/dist/harness/presenter.d.ts.map +1 -0
  350. package/dist/harness/presenter.js +859 -0
  351. package/dist/harness/presenter.js.map +1 -0
  352. package/dist/harness/prompt.d.ts +30 -0
  353. package/dist/harness/prompt.d.ts.map +1 -0
  354. package/dist/harness/prompt.js +429 -0
  355. package/dist/harness/prompt.js.map +1 -0
  356. package/dist/harness/runner.d.ts +2 -123
  357. package/dist/harness/runner.d.ts.map +1 -1
  358. package/dist/harness/runner.js +551 -416
  359. package/dist/harness/runner.js.map +1 -1
  360. package/dist/harness/session.d.ts +122 -0
  361. package/dist/harness/session.d.ts.map +1 -0
  362. package/dist/harness/session.js +581 -0
  363. package/dist/harness/session.js.map +1 -0
  364. package/dist/harness/skills.d.ts +17 -28
  365. package/dist/harness/skills.d.ts.map +1 -1
  366. package/dist/harness/skills.js +104 -39
  367. package/dist/harness/skills.js.map +1 -1
  368. package/dist/harness/subagent-profiles.d.ts +8 -0
  369. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  370. package/dist/harness/subagent-profiles.js +284 -0
  371. package/dist/harness/subagent-profiles.js.map +1 -0
  372. package/dist/harness/subagent.d.ts +64 -0
  373. package/dist/harness/subagent.d.ts.map +1 -0
  374. package/dist/harness/subagent.js +687 -0
  375. package/dist/harness/subagent.js.map +1 -0
  376. package/dist/harness/tools/attach.d.ts.map +1 -0
  377. package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
  378. package/dist/harness/tools/attach.js.map +1 -0
  379. package/dist/{tools → harness/tools}/event.d.ts +4 -33
  380. package/dist/harness/tools/event.d.ts.map +1 -0
  381. package/dist/harness/tools/event.js +175 -0
  382. package/dist/harness/tools/event.js.map +1 -0
  383. package/dist/harness/tools/generate-image.d.ts +23 -0
  384. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  385. package/dist/harness/tools/generate-image.js +65 -0
  386. package/dist/harness/tools/generate-image.js.map +1 -0
  387. package/dist/harness/tools/host-fn-tool.d.ts +21 -0
  388. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  389. package/dist/harness/tools/host-fn-tool.js +32 -0
  390. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  391. package/dist/harness/tools/index.d.ts +41 -0
  392. package/dist/harness/tools/index.d.ts.map +1 -0
  393. package/dist/harness/tools/index.js +51 -0
  394. package/dist/harness/tools/index.js.map +1 -0
  395. package/dist/harness/tools/jev.d.ts +21 -0
  396. package/dist/harness/tools/jev.d.ts.map +1 -0
  397. package/dist/harness/tools/jev.js +109 -0
  398. package/dist/harness/tools/jev.js.map +1 -0
  399. package/dist/harness/tools/pi-tools.d.ts +18 -0
  400. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  401. package/dist/harness/tools/pi-tools.js +84 -0
  402. package/dist/harness/tools/pi-tools.js.map +1 -0
  403. package/dist/harness/tools/react.d.ts.map +1 -0
  404. package/dist/{tools → harness/tools}/react.js +6 -17
  405. package/dist/harness/tools/react.js.map +1 -0
  406. package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
  407. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  408. package/dist/{tools → harness/tools}/sandbox.js +12 -8
  409. package/dist/harness/tools/sandbox.js.map +1 -0
  410. package/dist/harness/tools/subagent.d.ts +88 -0
  411. package/dist/harness/tools/subagent.d.ts.map +1 -0
  412. package/dist/harness/tools/subagent.js +681 -0
  413. package/dist/harness/tools/subagent.js.map +1 -0
  414. package/dist/harness/tools/task.d.ts +20 -0
  415. package/dist/harness/tools/task.d.ts.map +1 -0
  416. package/dist/harness/tools/task.js +79 -0
  417. package/dist/harness/tools/task.js.map +1 -0
  418. package/dist/harness/tools/types.d.ts +29 -0
  419. package/dist/harness/tools/types.d.ts.map +1 -0
  420. package/dist/harness/tools/types.js +2 -0
  421. package/dist/harness/tools/types.js.map +1 -0
  422. package/dist/harness/types.d.ts +384 -25
  423. package/dist/harness/types.d.ts.map +1 -1
  424. package/dist/harness/types.js +1 -1
  425. package/dist/harness/types.js.map +1 -1
  426. package/dist/index.d.ts +33 -9
  427. package/dist/index.d.ts.map +1 -1
  428. package/dist/index.js +19 -6
  429. package/dist/index.js.map +1 -1
  430. package/dist/main.js +357 -198
  431. package/dist/main.js.map +1 -1
  432. package/dist/observability/index.d.ts +33 -0
  433. package/dist/observability/index.d.ts.map +1 -0
  434. package/dist/observability/index.js +257 -0
  435. package/dist/observability/index.js.map +1 -0
  436. package/dist/observability/instrument.js +14 -6
  437. package/dist/observability/instrument.js.map +1 -1
  438. package/dist/observability/otel.d.ts +10 -0
  439. package/dist/observability/otel.d.ts.map +1 -0
  440. package/dist/observability/otel.js +183 -0
  441. package/dist/observability/otel.js.map +1 -0
  442. package/dist/observability/sentry.d.ts +40 -7
  443. package/dist/observability/sentry.d.ts.map +1 -1
  444. package/dist/observability/sentry.js +176 -32
  445. package/dist/observability/sentry.js.map +1 -1
  446. package/dist/observability/types.d.ts +24 -3
  447. package/dist/observability/types.d.ts.map +1 -1
  448. package/dist/observability/types.js.map +1 -1
  449. package/dist/office/index.d.ts +139 -0
  450. package/dist/office/index.d.ts.map +1 -0
  451. package/dist/office/index.js +1084 -0
  452. package/dist/office/index.js.map +1 -0
  453. package/dist/office/projection.d.ts +42 -0
  454. package/dist/office/projection.d.ts.map +1 -0
  455. package/dist/office/projection.js +182 -0
  456. package/dist/office/projection.js.map +1 -0
  457. package/dist/office/types.d.ts +116 -0
  458. package/dist/office/types.d.ts.map +1 -0
  459. package/dist/office/types.js +2 -0
  460. package/dist/office/types.js.map +1 -0
  461. package/dist/runtime/conversation-runtime.d.ts +1 -1
  462. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  463. package/dist/runtime/conversation-runtime.js +423 -152
  464. package/dist/runtime/conversation-runtime.js.map +1 -1
  465. package/dist/runtime/session-lifecycle.d.ts +76 -0
  466. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  467. package/dist/runtime/session-lifecycle.js +404 -0
  468. package/dist/runtime/session-lifecycle.js.map +1 -0
  469. package/dist/runtime/types.d.ts +63 -15
  470. package/dist/runtime/types.d.ts.map +1 -1
  471. package/dist/runtime/types.js.map +1 -1
  472. package/dist/sandbox/cloudflare.d.ts +4 -0
  473. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  474. package/dist/sandbox/cloudflare.js +54 -52
  475. package/dist/sandbox/cloudflare.js.map +1 -1
  476. package/dist/sandbox/container.d.ts +3 -0
  477. package/dist/sandbox/container.d.ts.map +1 -1
  478. package/dist/sandbox/container.js +19 -7
  479. package/dist/sandbox/container.js.map +1 -1
  480. package/dist/sandbox/host.d.ts +3 -0
  481. package/dist/sandbox/host.d.ts.map +1 -1
  482. package/dist/sandbox/host.js +44 -35
  483. package/dist/sandbox/host.js.map +1 -1
  484. package/dist/sandbox/identity.d.ts +42 -0
  485. package/dist/sandbox/identity.d.ts.map +1 -0
  486. package/dist/sandbox/identity.js +77 -0
  487. package/dist/sandbox/identity.js.map +1 -0
  488. package/dist/sandbox/index.d.ts +24 -6
  489. package/dist/sandbox/index.d.ts.map +1 -1
  490. package/dist/sandbox/index.js +77 -17
  491. package/dist/sandbox/index.js.map +1 -1
  492. package/dist/sandbox/provisioner.d.ts +139 -0
  493. package/dist/sandbox/provisioner.d.ts.map +1 -0
  494. package/dist/{provisioner.js → sandbox/provisioner.js} +377 -20
  495. package/dist/sandbox/provisioner.js.map +1 -0
  496. package/dist/sandbox/types.d.ts +43 -9
  497. package/dist/sandbox/types.d.ts.map +1 -1
  498. package/dist/sandbox/types.js.map +1 -1
  499. package/dist/sandbox/utils.d.ts +24 -0
  500. package/dist/sandbox/utils.d.ts.map +1 -1
  501. package/dist/sandbox/utils.js +92 -1
  502. package/dist/sandbox/utils.js.map +1 -1
  503. package/dist/sessions/chat-history-sync.d.ts +23 -0
  504. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  505. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
  506. package/dist/sessions/chat-history-sync.js.map +1 -0
  507. package/dist/sessions/history-line.d.ts +29 -0
  508. package/dist/sessions/history-line.d.ts.map +1 -0
  509. package/dist/sessions/history-line.js +45 -0
  510. package/dist/sessions/history-line.js.map +1 -0
  511. package/dist/sessions/migrate-common.d.ts +43 -0
  512. package/dist/sessions/migrate-common.d.ts.map +1 -0
  513. package/dist/sessions/migrate-common.js +99 -0
  514. package/dist/sessions/migrate-common.js.map +1 -0
  515. package/dist/sessions/migrate-pi-084.d.ts +8 -0
  516. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  517. package/dist/sessions/migrate-pi-084.js +302 -0
  518. package/dist/sessions/migrate-pi-084.js.map +1 -0
  519. package/dist/sessions/migrate-v3.d.ts +15 -0
  520. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  521. package/dist/sessions/migrate-v3.js +419 -0
  522. package/dist/sessions/migrate-v3.js.map +1 -0
  523. package/dist/sessions/session-key.d.ts +33 -0
  524. package/dist/sessions/session-key.d.ts.map +1 -0
  525. package/dist/sessions/session-key.js +115 -0
  526. package/dist/sessions/session-key.js.map +1 -0
  527. package/dist/sessions/session-store.d.ts +61 -0
  528. package/dist/sessions/session-store.d.ts.map +1 -0
  529. package/dist/sessions/session-store.js +684 -0
  530. package/dist/sessions/session-store.js.map +1 -0
  531. package/dist/sessions/store.d.ts +17 -10
  532. package/dist/sessions/store.d.ts.map +1 -1
  533. package/dist/sessions/store.js +182 -47
  534. package/dist/sessions/store.js.map +1 -1
  535. package/dist/sessions/types.d.ts +74 -8
  536. package/dist/sessions/types.d.ts.map +1 -1
  537. package/dist/sessions/types.js +1 -1
  538. package/dist/sessions/types.js.map +1 -1
  539. package/dist/settings/apply.d.ts +16 -0
  540. package/dist/settings/apply.d.ts.map +1 -0
  541. package/dist/settings/apply.js +60 -0
  542. package/dist/settings/apply.js.map +1 -0
  543. package/dist/settings/index.d.ts +126 -0
  544. package/dist/settings/index.d.ts.map +1 -0
  545. package/dist/settings/index.js +422 -0
  546. package/dist/settings/index.js.map +1 -0
  547. package/dist/settings/migrate.d.ts +21 -0
  548. package/dist/settings/migrate.d.ts.map +1 -0
  549. package/dist/settings/migrate.js +86 -0
  550. package/dist/settings/migrate.js.map +1 -0
  551. package/dist/types.d.ts +330 -141
  552. package/dist/types.d.ts.map +1 -1
  553. package/dist/types.js +2 -2
  554. package/dist/types.js.map +1 -1
  555. package/dist/vault/index.d.ts +52 -2
  556. package/dist/vault/index.d.ts.map +1 -1
  557. package/dist/vault/index.js +218 -86
  558. package/dist/vault/index.js.map +1 -1
  559. package/dist/vault/types.d.ts +6 -2
  560. package/dist/vault/types.d.ts.map +1 -1
  561. package/dist/vault/types.js.map +1 -1
  562. package/package.json +79 -40
  563. package/dist/adapter.d.ts +0 -2
  564. package/dist/adapter.d.ts.map +0 -1
  565. package/dist/adapter.js +0 -2
  566. package/dist/adapter.js.map +0 -1
  567. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  568. package/dist/adapters/slack/tools/attach.js.map +0 -1
  569. package/dist/adapters/streaming.d.ts +0 -18
  570. package/dist/adapters/streaming.d.ts.map +0 -1
  571. package/dist/adapters/streaming.js +0 -44
  572. package/dist/adapters/streaming.js.map +0 -1
  573. package/dist/adapters/telegram/html.d.ts +0 -3
  574. package/dist/adapters/telegram/html.d.ts.map +0 -1
  575. package/dist/adapters/telegram/html.js +0 -98
  576. package/dist/adapters/telegram/html.js.map +0 -1
  577. package/dist/agent-events.d.ts +0 -5
  578. package/dist/agent-events.d.ts.map +0 -1
  579. package/dist/agent-events.js +0 -26
  580. package/dist/agent-events.js.map +0 -1
  581. package/dist/agent.d.ts +0 -39
  582. package/dist/agent.d.ts.map +0 -1
  583. package/dist/agent.js +0 -1291
  584. package/dist/agent.js.map +0 -1
  585. package/dist/cli/ext-git.d.ts +0 -22
  586. package/dist/cli/ext-git.d.ts.map +0 -1
  587. package/dist/cli/ext-git.js +0 -76
  588. package/dist/cli/ext-git.js.map +0 -1
  589. package/dist/cli/ext.d.ts +0 -2
  590. package/dist/cli/ext.d.ts.map +0 -1
  591. package/dist/cli/ext.js +0 -217
  592. package/dist/cli/ext.js.map +0 -1
  593. package/dist/commands/admin.d.ts.map +0 -1
  594. package/dist/commands/admin.js.map +0 -1
  595. package/dist/commands/auto-reply.d.ts.map +0 -1
  596. package/dist/commands/auto-reply.js +0 -76
  597. package/dist/commands/auto-reply.js.map +0 -1
  598. package/dist/commands/extensions.d.ts +0 -14
  599. package/dist/commands/extensions.d.ts.map +0 -1
  600. package/dist/commands/extensions.js +0 -55
  601. package/dist/commands/extensions.js.map +0 -1
  602. package/dist/commands/login.d.ts +0 -5
  603. package/dist/commands/login.d.ts.map +0 -1
  604. package/dist/commands/login.js +0 -115
  605. package/dist/commands/login.js.map +0 -1
  606. package/dist/commands/model.d.ts +0 -10
  607. package/dist/commands/model.d.ts.map +0 -1
  608. package/dist/commands/model.js +0 -102
  609. package/dist/commands/model.js.map +0 -1
  610. package/dist/commands/new.d.ts.map +0 -1
  611. package/dist/commands/new.js +0 -25
  612. package/dist/commands/new.js.map +0 -1
  613. package/dist/commands/parse.d.ts +0 -7
  614. package/dist/commands/parse.d.ts.map +0 -1
  615. package/dist/commands/parse.js +0 -14
  616. package/dist/commands/parse.js.map +0 -1
  617. package/dist/commands/registry.d.ts +0 -5
  618. package/dist/commands/registry.d.ts.map +0 -1
  619. package/dist/commands/registry.js +0 -31
  620. package/dist/commands/registry.js.map +0 -1
  621. package/dist/commands/sandbox.d.ts.map +0 -1
  622. package/dist/commands/sandbox.js +0 -78
  623. package/dist/commands/sandbox.js.map +0 -1
  624. package/dist/commands/session-view.d.ts.map +0 -1
  625. package/dist/commands/session-view.js.map +0 -1
  626. package/dist/commands/types.d.ts +0 -66
  627. package/dist/commands/types.d.ts.map +0 -1
  628. package/dist/commands/types.js.map +0 -1
  629. package/dist/commands/utils.d.ts +0 -11
  630. package/dist/commands/utils.d.ts.map +0 -1
  631. package/dist/commands/utils.js.map +0 -1
  632. package/dist/config.d.ts +0 -78
  633. package/dist/config.d.ts.map +0 -1
  634. package/dist/config.js +0 -450
  635. package/dist/config.js.map +0 -1
  636. package/dist/download.d.ts.map +0 -1
  637. package/dist/download.js +0 -89
  638. package/dist/download.js.map +0 -1
  639. package/dist/events.d.ts +0 -43
  640. package/dist/events.d.ts.map +0 -1
  641. package/dist/events.js +0 -456
  642. package/dist/events.js.map +0 -1
  643. package/dist/execution-resolver.d.ts +0 -21
  644. package/dist/execution-resolver.d.ts.map +0 -1
  645. package/dist/execution-resolver.js +0 -170
  646. package/dist/execution-resolver.js.map +0 -1
  647. package/dist/harness/auth.d.ts +0 -16
  648. package/dist/harness/auth.d.ts.map +0 -1
  649. package/dist/harness/auth.js +0 -86
  650. package/dist/harness/auth.js.map +0 -1
  651. package/dist/harness/extensions/loader.d.ts +0 -86
  652. package/dist/harness/extensions/loader.d.ts.map +0 -1
  653. package/dist/harness/extensions/loader.js +0 -525
  654. package/dist/harness/extensions/loader.js.map +0 -1
  655. package/dist/harness/extensions/registry.d.ts +0 -23
  656. package/dist/harness/extensions/registry.d.ts.map +0 -1
  657. package/dist/harness/extensions/registry.js +0 -45
  658. package/dist/harness/extensions/registry.js.map +0 -1
  659. package/dist/harness/extensions/types.d.ts +0 -248
  660. package/dist/harness/extensions/types.d.ts.map +0 -1
  661. package/dist/harness/extensions/types.js.map +0 -1
  662. package/dist/harness/session-store.d.ts +0 -77
  663. package/dist/harness/session-store.d.ts.map +0 -1
  664. package/dist/harness/session-store.js +0 -248
  665. package/dist/harness/session-store.js.map +0 -1
  666. package/dist/harness/settings.d.ts +0 -47
  667. package/dist/harness/settings.d.ts.map +0 -1
  668. package/dist/harness/settings.js +0 -29
  669. package/dist/harness/settings.js.map +0 -1
  670. package/dist/model-registry.d.ts +0 -4
  671. package/dist/model-registry.d.ts.map +0 -1
  672. package/dist/model-registry.js +0 -7
  673. package/dist/model-registry.js.map +0 -1
  674. package/dist/platform-messages.d.ts.map +0 -1
  675. package/dist/platform-messages.js.map +0 -1
  676. package/dist/portal-shell.d.ts +0 -4
  677. package/dist/portal-shell.d.ts.map +0 -1
  678. package/dist/portal-shell.js.map +0 -1
  679. package/dist/provisioner.d.ts +0 -61
  680. package/dist/provisioner.d.ts.map +0 -1
  681. package/dist/provisioner.js.map +0 -1
  682. package/dist/runtime/agent-run-controller.d.ts +0 -31
  683. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  684. package/dist/runtime/agent-run-controller.js +0 -195
  685. package/dist/runtime/agent-run-controller.js.map +0 -1
  686. package/dist/sandbox/errors.d.ts +0 -6
  687. package/dist/sandbox/errors.d.ts.map +0 -1
  688. package/dist/sandbox/errors.js +0 -11
  689. package/dist/sandbox/errors.js.map +0 -1
  690. package/dist/sandbox/firecracker.d.ts +0 -15
  691. package/dist/sandbox/firecracker.d.ts.map +0 -1
  692. package/dist/sandbox/firecracker.js +0 -212
  693. package/dist/sandbox/firecracker.js.map +0 -1
  694. package/dist/sandbox/image.d.ts +0 -3
  695. package/dist/sandbox/image.d.ts.map +0 -1
  696. package/dist/sandbox/image.js +0 -27
  697. package/dist/sandbox/image.js.map +0 -1
  698. package/dist/sandbox/path-context.d.ts +0 -3
  699. package/dist/sandbox/path-context.d.ts.map +0 -1
  700. package/dist/sandbox/path-context.js +0 -20
  701. package/dist/sandbox/path-context.js.map +0 -1
  702. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  703. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  704. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  705. package/dist/sessions/metadata.d.ts +0 -3
  706. package/dist/sessions/metadata.d.ts.map +0 -1
  707. package/dist/sessions/metadata.js +0 -11
  708. package/dist/sessions/metadata.js.map +0 -1
  709. package/dist/sessions/policy.d.ts +0 -6
  710. package/dist/sessions/policy.d.ts.map +0 -1
  711. package/dist/sessions/policy.js +0 -23
  712. package/dist/sessions/policy.js.map +0 -1
  713. package/dist/store.d.ts +0 -46
  714. package/dist/store.d.ts.map +0 -1
  715. package/dist/store.js +0 -177
  716. package/dist/store.js.map +0 -1
  717. package/dist/tools/bash.d.ts +0 -10
  718. package/dist/tools/bash.d.ts.map +0 -1
  719. package/dist/tools/bash.js +0 -80
  720. package/dist/tools/bash.js.map +0 -1
  721. package/dist/tools/edit.d.ts +0 -11
  722. package/dist/tools/edit.d.ts.map +0 -1
  723. package/dist/tools/edit.js +0 -131
  724. package/dist/tools/edit.js.map +0 -1
  725. package/dist/tools/event.d.ts.map +0 -1
  726. package/dist/tools/event.js +0 -252
  727. package/dist/tools/event.js.map +0 -1
  728. package/dist/tools/index.d.ts +0 -24
  729. package/dist/tools/index.d.ts.map +0 -1
  730. package/dist/tools/index.js +0 -31
  731. package/dist/tools/index.js.map +0 -1
  732. package/dist/tools/react.d.ts.map +0 -1
  733. package/dist/tools/react.js.map +0 -1
  734. package/dist/tools/read.d.ts +0 -11
  735. package/dist/tools/read.d.ts.map +0 -1
  736. package/dist/tools/read.js +0 -134
  737. package/dist/tools/read.js.map +0 -1
  738. package/dist/tools/sandbox.d.ts.map +0 -1
  739. package/dist/tools/sandbox.js.map +0 -1
  740. package/dist/tools/truncate.d.ts +0 -33
  741. package/dist/tools/truncate.d.ts.map +0 -1
  742. package/dist/tools/truncate.js +0 -184
  743. package/dist/tools/truncate.js.map +0 -1
  744. package/dist/tools/types.d.ts +0 -54
  745. package/dist/tools/types.d.ts.map +0 -1
  746. package/dist/tools/types.js.map +0 -1
  747. package/dist/tools/write.d.ts +0 -10
  748. package/dist/tools/write.d.ts.map +0 -1
  749. package/dist/tools/write.js +0 -29
  750. package/dist/tools/write.js.map +0 -1
  751. package/dist/trigger.d.ts +0 -22
  752. package/dist/trigger.d.ts.map +0 -1
  753. package/dist/trigger.js +0 -100
  754. package/dist/trigger.js.map +0 -1
  755. package/dist/utils/date.d.ts +0 -10
  756. package/dist/utils/date.d.ts.map +0 -1
  757. package/dist/utils/date.js +0 -23
  758. package/dist/utils/date.js.map +0 -1
  759. package/dist/utils/env.d.ts +0 -3
  760. package/dist/utils/env.d.ts.map +0 -1
  761. package/dist/utils/env.js +0 -12
  762. package/dist/utils/env.js.map +0 -1
  763. package/dist/utils/file-guards.d.ts +0 -9
  764. package/dist/utils/file-guards.d.ts.map +0 -1
  765. package/dist/utils/file-guards.js +0 -59
  766. package/dist/utils/file-guards.js.map +0 -1
  767. package/dist/utils/fs-atomic.d.ts +0 -10
  768. package/dist/utils/fs-atomic.d.ts.map +0 -1
  769. package/dist/utils/fs-atomic.js +0 -45
  770. package/dist/utils/fs-atomic.js.map +0 -1
  771. package/dist/utils/html.d.ts +0 -2
  772. package/dist/utils/html.d.ts.map +0 -1
  773. package/dist/utils/html.js +0 -4
  774. package/dist/utils/html.js.map +0 -1
  775. package/dist/utils/http-body.d.ts +0 -10
  776. package/dist/utils/http-body.d.ts.map +0 -1
  777. package/dist/utils/http-body.js +0 -34
  778. package/dist/utils/http-body.js.map +0 -1
  779. package/dist/vault/routing.d.ts +0 -3
  780. package/dist/vault/routing.d.ts.map +0 -1
  781. package/dist/vault/routing.js +0 -13
  782. package/dist/vault/routing.js.map +0 -1
  783. package/dist/web/admin/portal.d.ts +0 -5
  784. package/dist/web/admin/portal.d.ts.map +0 -1
  785. package/dist/web/admin/portal.js +0 -2572
  786. package/dist/web/admin/portal.js.map +0 -1
  787. package/dist/web/admin/provider-models.d.ts.map +0 -1
  788. package/dist/web/admin/provider-models.js.map +0 -1
  789. package/dist/web/admin/store.d.ts +0 -13
  790. package/dist/web/admin/store.d.ts.map +0 -1
  791. package/dist/web/admin/store.js +0 -14
  792. package/dist/web/admin/store.js.map +0 -1
  793. package/dist/web/admin/types.d.ts +0 -30
  794. package/dist/web/admin/types.d.ts.map +0 -1
  795. package/dist/web/admin/types.js.map +0 -1
  796. package/dist/web/agent-events/portal.d.ts +0 -3
  797. package/dist/web/agent-events/portal.d.ts.map +0 -1
  798. package/dist/web/agent-events/portal.js +0 -18
  799. package/dist/web/agent-events/portal.js.map +0 -1
  800. package/dist/web/login/oauth.d.ts +0 -6
  801. package/dist/web/login/oauth.d.ts.map +0 -1
  802. package/dist/web/login/oauth.js.map +0 -1
  803. package/dist/web/login/portal.d.ts.map +0 -1
  804. package/dist/web/login/portal.js.map +0 -1
  805. package/dist/web/login/store.d.ts +0 -8
  806. package/dist/web/login/store.d.ts.map +0 -1
  807. package/dist/web/login/store.js +0 -15
  808. package/dist/web/login/store.js.map +0 -1
  809. package/dist/web/login/types.d.ts.map +0 -1
  810. package/dist/web/login/types.js.map +0 -1
  811. package/dist/web/request.d.ts +0 -3
  812. package/dist/web/request.d.ts.map +0 -1
  813. package/dist/web/request.js +0 -13
  814. package/dist/web/request.js.map +0 -1
  815. package/dist/web/server.d.ts.map +0 -1
  816. package/dist/web/server.js.map +0 -1
  817. package/dist/web/session-view/command.d.ts +0 -4
  818. package/dist/web/session-view/command.d.ts.map +0 -1
  819. package/dist/web/session-view/command.js +0 -7
  820. package/dist/web/session-view/command.js.map +0 -1
  821. package/dist/web/session-view/portal.d.ts +0 -13
  822. package/dist/web/session-view/portal.d.ts.map +0 -1
  823. package/dist/web/session-view/portal.js.map +0 -1
  824. package/dist/web/session-view/service.d.ts +0 -6
  825. package/dist/web/session-view/service.d.ts.map +0 -1
  826. package/dist/web/session-view/service.js +0 -498
  827. package/dist/web/session-view/service.js.map +0 -1
  828. package/dist/web/session-view/store.d.ts +0 -8
  829. package/dist/web/session-view/store.d.ts.map +0 -1
  830. package/dist/web/session-view/store.js +0 -15
  831. package/dist/web/session-view/store.js.map +0 -1
  832. package/dist/web/session-view/types.d.ts.map +0 -1
  833. package/dist/web/session-view/types.js.map +0 -1
  834. package/dist/web/token-store.d.ts.map +0 -1
  835. package/dist/web/token-store.js.map +0 -1
  836. package/dist/web/types.d.ts.map +0 -1
  837. package/dist/web/types.js.map +0 -1
  838. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  839. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  840. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  841. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  842. /package/dist/{commands → adapters/commands}/types.js +0 -0
  843. /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
  844. /package/dist/{tools → adapters/web/admin}/types.js +0 -0
  845. /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
  846. /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
  847. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  848. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  849. /package/dist/{web/session-view → adapters/web}/types.js +0 -0
  850. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  851. /package/dist/{web → cli}/types.js +0 -0
  852. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  853. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
@@ -1,32 +1,33 @@
1
- import { join } from "path";
2
- import { isRecord, parseJsonValue, readTextFileIfExists } from "../utils/file-guards.js";
3
- import { formatLocalTimestamp } from "../utils/date.js";
4
- import { atomicWritePrivateFile } from "../utils/fs-atomic.js";
1
+ import { officeSessionsDir } from "../office/index.js";
2
+ import { SessionStore } from "./session-store.js";
3
+ import { join } from "node:path";
5
4
  import * as log from "../log.js";
6
- import { isPlatformHistorySession } from "./metadata.js";
7
- import { createManagedSessionFile, createManagedSessionFileAtPath, extractSessionSuffix, getChannelSessionDir, getThreadSessionFile, openManagedSession, resolveChannelSessionFile, tryResolveCurrentSession, tryResolveThreadSession, } from "./store.js";
5
+ import { isRecord, parseJsonValue, readTextFileIfExists } from "../file-guards.js";
6
+ import { isCommandText } from "../adapters/commands/manifest.js";
7
+ import { formatHistoryLine, stripHistoryLinePrefix } from "./history-line.js";
8
+ import { isPlatformHistorySession } from "./store.js";
9
+ import { isThreadSessionKey } from "./session-key.js";
10
+ import { archiveManagedSessionFile, createManagedSessionFile, createManagedSessionFileAtPath, extractSessionSuffix, getThreadSessionFile, openManagedSession, resolveChannelSessionFile, resolveParentSessionForThread, tryResolveCurrentSession, tryResolveThreadSession, } from "./store.js";
8
11
  const DEFAULT_RECENT_DAYS = 14;
9
12
  const DEFAULT_MAX_TOP_LEVEL_MESSAGES = 200;
10
13
  const CHAT_SYNC_CUSTOM_TYPE = "mikan.chat_sync";
11
- const BIWEEKLY_ROTATION_ANCHOR = new Date(2026, 0, 4); // Sunday
12
- const BIWEEKLY_MS = 14 * 24 * 60 * 60 * 1000;
13
14
  export function hasMaterializedChatSession(options) {
14
- if (!options.sessionKey.includes(":")) {
15
+ if (!isThreadSessionKey(options.sessionKey)) {
15
16
  return resolveChannelSessionFile(options.conversationDir) !== null;
16
17
  }
17
18
  return (tryResolveThreadSession(getThreadSessionFile(options.conversationDir, options.sessionKey)) !==
18
19
  null);
19
20
  }
20
21
  export function registerThreadSession(options) {
21
- if (!options.sessionKey.includes(":"))
22
+ if (!isThreadSessionKey(options.sessionKey))
22
23
  return null;
23
24
  const threadFile = getThreadSessionFile(options.conversationDir, options.sessionKey);
24
25
  return (tryResolveThreadSession(threadFile) ??
25
- createManagedSessionFileAtPath(threadFile, options.cwd ?? options.conversationDir));
26
+ createManagedSessionFileAtPath(threadFile, options.cwd ?? options.conversationDir, resolveParentSessionForThread(options.conversationDir, extractSessionSuffix(options.sessionKey)) ?? undefined));
26
27
  }
27
28
  export async function waitForThreadSessionBootstrap(options) {
28
29
  const { parentSessionKey, sessionKey, hasThreadSession, isParentRunning, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)), pollMs = 100, } = options;
29
- if (!sessionKey.includes(":"))
30
+ if (!isThreadSessionKey(sessionKey))
30
31
  return false;
31
32
  if (sessionKey === parentSessionKey)
32
33
  return false;
@@ -39,7 +40,13 @@ export async function waitForThreadSessionBootstrap(options) {
39
40
  }
40
41
  return waited;
41
42
  }
42
- export class AgentMemoryFileManager {
43
+ /**
44
+ * Syncs the platform chat transcript (log.jsonl) into managed session files:
45
+ * resolves which session file a message belongs to (top-level vs thread,
46
+ * with biweekly rotation), bootstraps new sessions from recent history, and
47
+ * incrementally appends log messages the session does not yet represent.
48
+ */
49
+ export class ChatHistorySync {
43
50
  constructor(options = {}) {
44
51
  this.recentDays = options.recentDays ?? DEFAULT_RECENT_DAYS;
45
52
  this.maxTopLevelMessages = options.maxTopLevelMessages ?? DEFAULT_MAX_TOP_LEVEL_MESSAGES;
@@ -47,14 +54,13 @@ export class AgentMemoryFileManager {
47
54
  }
48
55
  async resolveSessionScope(options) {
49
56
  const cwd = options.cwd ?? options.conversationDir;
50
- const sessionDir = getChannelSessionDir(options.conversationDir);
51
- if (!options.sessionKey.includes(":")) {
52
- const contextFile = this.resolveTopLevelSessionFile({
57
+ const sessionDir = officeSessionsDir(options.conversationDir);
58
+ if (!isThreadSessionKey(options.sessionKey)) {
59
+ const contextFile = await this.resolveTopLevelSessionFile({
53
60
  conversationDir: options.conversationDir,
54
61
  sessionDir,
55
62
  cwd,
56
63
  currentMessageId: options.currentMessageId,
57
- rotateTopLevelSession: options.rotateTopLevelSession === true,
58
64
  });
59
65
  return { sessionDir, contextFile, threadRootMessage: null };
60
66
  }
@@ -66,32 +72,49 @@ export class AgentMemoryFileManager {
66
72
  currentMessageId: options.currentMessageId,
67
73
  });
68
74
  }
69
- syncSessionManager(options) {
75
+ async syncSessionManager(options) {
70
76
  const records = readConversationLog(options.conversationDir);
71
- syncSessionManagerFromLog(options.sessionManager, selectExistingSessionSyncMessages(records, {
72
- sessionKey: options.sessionKey.includes(":") ? options.sessionKey : null,
77
+ return syncSessionManagerFromLog(options.sessionManager, selectExistingSessionSyncMessages(records, {
78
+ sessionKey: isThreadSessionKey(options.sessionKey) ? options.sessionKey : null,
73
79
  excludeMessageId: options.currentMessageId,
74
- }), this.historyWindow());
80
+ }), {
81
+ recentDays: this.recentDays,
82
+ maxMessages: this.maxTopLevelMessages,
83
+ now: this.now(),
84
+ });
75
85
  }
76
- resetSession(options) {
86
+ async resetSession(options) {
77
87
  const cwd = options.cwd ?? options.conversationDir;
78
- if (options.sessionKey.includes(":")) {
79
- return createManagedSessionFileAtPath(getThreadSessionFile(options.conversationDir, options.sessionKey), cwd);
88
+ const sessionFile = isThreadSessionKey(options.sessionKey)
89
+ ? resetThreadSessionFile(options.conversationDir, options.sessionKey, cwd)
90
+ : createManagedSessionFile(officeSessionsDir(options.conversationDir), cwd);
91
+ const records = readConversationLog(options.conversationDir);
92
+ const lastMessageId = latestSyncMessageId(records, {
93
+ sessionKey: isThreadSessionKey(options.sessionKey) ? options.sessionKey : null,
94
+ });
95
+ const sessionManager = await openManagedSession(sessionFile, cwd);
96
+ try {
97
+ await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
98
+ source: "log.jsonl",
99
+ messageCount: 0,
100
+ resetAt: this.now().toISOString(),
101
+ ...(lastMessageId ? { lastMessageId } : {}),
102
+ });
80
103
  }
81
- return createManagedSessionFile(getChannelSessionDir(options.conversationDir), cwd);
104
+ finally {
105
+ await sessionManager.close();
106
+ }
107
+ return sessionFile;
82
108
  }
83
- resolveTopLevelSessionFile(options) {
84
- const records = readConversationLog(options.conversationDir);
109
+ async resolveTopLevelSessionFile(options) {
110
+ // Materialization only: an existing session is returned as-is. The
111
+ // runtime performs the one incremental log sync per event through the
112
+ // runner, after the writer is created — syncing here too made every
113
+ // cache-miss event run the pipeline twice.
85
114
  const existing = tryResolveCurrentSession(options.sessionDir);
86
- if (existing && !isPlatformHistorySession(existing)) {
87
- if (!options.rotateTopLevelSession || !shouldRotateTopLevelSession(existing, this.now())) {
88
- syncSessionFromLog(existing, options.cwd, selectExistingSessionSyncMessages(records, {
89
- sessionKey: null,
90
- excludeMessageId: options.currentMessageId,
91
- }), this.historyWindow());
92
- return existing;
93
- }
94
- }
115
+ if (existing && !isPlatformHistorySession(existing))
116
+ return existing;
117
+ const records = readConversationLog(options.conversationDir);
95
118
  const sessionFile = createManagedSessionFile(options.sessionDir, options.cwd);
96
119
  const bootstrapRecords = selectRecentTopLevelMessages(records, {
97
120
  recentDays: this.recentDays,
@@ -99,119 +122,81 @@ export class AgentMemoryFileManager {
99
122
  now: this.now(),
100
123
  excludeMessageId: options.currentMessageId,
101
124
  });
102
- bootstrapSessionFromLog(sessionFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
125
+ await bootstrapSessionFromLog(sessionFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
103
126
  sessionKey: null,
104
127
  excludeMessageId: options.currentMessageId,
105
128
  }));
106
129
  return sessionFile;
107
130
  }
108
- historyWindow() {
109
- return { recentDays: this.recentDays, maxMessages: this.maxTopLevelMessages, now: this.now() };
110
- }
111
- resolveThreadSessionScope(options) {
131
+ async resolveThreadSessionScope(options) {
112
132
  const threadFile = getThreadSessionFile(options.conversationDir, options.sessionKey);
113
133
  const threadId = extractSessionSuffix(options.sessionKey);
114
134
  const records = readConversationLog(options.conversationDir);
115
135
  const threadRootMessage = buildThreadRootSeed(findLogRecordById(records, threadId)?.message);
116
136
  const existing = tryResolveThreadSession(threadFile);
117
137
  if (existing) {
118
- syncSessionFromLog(existing, options.cwd, selectExistingSessionSyncMessages(records, {
119
- sessionKey: options.sessionKey,
120
- excludeMessageId: options.currentMessageId,
121
- }), this.historyWindow());
138
+ // Materialization only; the runtime owns the per-event incremental sync.
122
139
  return { sessionDir: options.sessionDir, contextFile: existing, threadRootMessage };
123
140
  }
124
- createManagedSessionFileAtPath(threadFile, options.cwd);
141
+ createManagedSessionFileAtPath(threadFile, options.cwd, resolveParentSessionForThread(options.conversationDir, threadId) ?? undefined);
125
142
  const bootstrapRecords = selectThreadBootstrapMessages(records, threadId, {
126
143
  recentDays: this.recentDays,
127
144
  maxTopLevelMessages: this.maxTopLevelMessages,
128
145
  now: this.now(),
129
146
  excludeMessageId: options.currentMessageId,
130
147
  });
131
- bootstrapSessionFromLog(threadFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
148
+ await bootstrapSessionFromLog(threadFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
132
149
  sessionKey: options.sessionKey,
133
150
  excludeMessageId: options.currentMessageId,
134
151
  }));
135
152
  return { sessionDir: options.sessionDir, contextFile: threadFile, threadRootMessage };
136
153
  }
137
154
  }
138
- function shouldRotateTopLevelSession(sessionFile, now) {
139
- const timestamp = readSessionTimestamp(sessionFile);
140
- return timestamp !== null && biweeklyBucket(timestamp) !== biweeklyBucket(now);
141
- }
142
- function readSessionTimestamp(sessionFile) {
143
- const raw = readTextFileIfExists(sessionFile);
144
- if (raw === undefined)
145
- return null;
146
- const firstLine = raw.split("\n").find((line) => line.trim());
147
- if (!firstLine)
148
- return null;
155
+ /** The recorded parent of an existing thread session, kept across a reset. */
156
+ function existingThreadParent(threadFile) {
157
+ let header;
149
158
  try {
150
- const header = parseJsonValue(firstLine, (value) => isRecord(value), (detail) => (detail === "unexpected JSON shape" ? "expected a JSON object" : detail));
151
- if (typeof header.timestamp !== "string")
152
- return null;
153
- const date = new Date(header.timestamp);
154
- return Number.isFinite(date.getTime()) ? date : null;
159
+ header = SessionStore.readHeader(threadFile);
155
160
  }
156
161
  catch {
157
- return null;
162
+ return undefined; // File missing or corrupted — the session is recreated.
158
163
  }
159
- }
160
- function biweeklyBucket(date) {
161
- const weekStart = sundayStart(date).getTime();
162
- const anchor = sundayStart(BIWEEKLY_ROTATION_ANCHOR).getTime();
163
- return Math.floor((weekStart - anchor) / BIWEEKLY_MS);
164
- }
165
- function sundayStart(date) {
166
- return new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
167
- }
168
- function readConversationLog(conversationDir) {
169
- const logFile = join(conversationDir, "log.jsonl");
170
- const raw = readTextFileIfExists(logFile);
171
- if (raw === undefined)
172
- return [];
173
- const lines = raw.trim().split("\n").filter(Boolean);
174
- const records = [];
175
- for (let i = 0; i < lines.length; i++) {
176
- try {
177
- const message = parseJsonValue(lines[i], (value) => isRecord(value), (detail) => (detail === "unexpected JSON shape" ? "expected a JSON object" : detail));
178
- records.push({ message, index: i });
179
- }
180
- catch (err) {
181
- log.logWarning(`Skipping malformed log entry at ${logFile}:${i + 1}`, err instanceof Error ? err.message : String(err));
182
- }
164
+ const path = header?.parentSession;
165
+ if (!header || !path)
166
+ return undefined;
167
+ // Prefer the stored UUID; legacy sessions without it need the parent file.
168
+ const id = header.parentSessionId ?? readParentSessionId(path);
169
+ return id ? { path, id } : undefined;
170
+ }
171
+ function readParentSessionId(parentPath) {
172
+ try {
173
+ return SessionStore.readHeader(parentPath)?.id;
183
174
  }
184
- return coalesceMessagingBotLogChunks(records);
185
- }
186
- function coalesceMessagingBotLogChunks(records) {
187
- const coalesced = [];
188
- for (const record of records) {
189
- const previous = coalesced.at(-1);
190
- if (previous && canCoalesceMessagingBotLogChunk(previous.message, record.message)) {
191
- previous.message.text = `${previous.message.text ?? ""}${record.message.text ?? ""}`;
192
- continue;
193
- }
194
- coalesced.push({ ...record, message: { ...record.message } });
175
+ catch {
176
+ return undefined;
195
177
  }
196
- return coalesced;
197
178
  }
198
- function canCoalesceMessagingBotLogChunk(previous, current) {
199
- return (previous.isMessagingBot === true &&
200
- current.isMessagingBot === true &&
201
- !!previous.ts &&
202
- previous.ts === current.ts &&
203
- previous.threadTs === current.threadTs &&
204
- previous.user === current.user);
179
+ /**
180
+ * Archive a thread session and create its replacement, preserving lineage:
181
+ * the original parent is kept rather than re-bound to the current session.
182
+ */
183
+ function resetThreadSessionFile(conversationDir, sessionKey, cwd) {
184
+ const threadFile = getThreadSessionFile(conversationDir, sessionKey);
185
+ const parent = existingThreadParent(threadFile) ??
186
+ resolveParentSessionForThread(conversationDir, extractSessionSuffix(sessionKey)) ??
187
+ undefined;
188
+ archiveManagedSessionFile(threadFile);
189
+ return createManagedSessionFileAtPath(threadFile, cwd, parent);
205
190
  }
206
191
  function findLogRecordById(records, messageId) {
207
192
  for (let i = records.length - 1; i >= 0; i--) {
208
- if (records[i].message.ts === messageId)
193
+ if (records[i]?.message.ts === messageId)
209
194
  return records[i];
210
195
  }
211
196
  return undefined;
212
197
  }
213
198
  function selectRecentTopLevelMessages(records, options) {
214
- return selectRecentMessages(records.filter((record) => isTopLevelHistoryMessage(record.message, options.excludeMessageId)), options);
199
+ return selectRecentMessages(recordsBeforeCurrentMessage(records, options.excludeMessageId).filter((record) => isTopLevelHistoryMessage(record.message, options.excludeMessageId)), options);
215
200
  }
216
201
  function selectRecentMessages(records, options) {
217
202
  const sinceMs = options.now.getTime() - options.recentDays * 24 * 60 * 60 * 1000;
@@ -220,17 +205,18 @@ function selectRecentMessages(records, options) {
220
205
  .slice(-options.maxMessages);
221
206
  }
222
207
  function selectThreadBootstrapMessages(records, threadId, options) {
223
- const rootRecord = findLogRecordById(records, threadId);
208
+ const scopedRecords = recordsBeforeCurrentMessage(records, options.excludeMessageId);
209
+ const rootRecord = findLogRecordById(scopedRecords, threadId);
224
210
  const topLevelSource = rootRecord
225
- ? records.filter((record) => record.index <= rootRecord.index)
226
- : records;
211
+ ? scopedRecords.filter((record) => record.index <= rootRecord.index)
212
+ : scopedRecords;
227
213
  const topLevelRecords = selectRecentTopLevelMessages(topLevelSource, {
228
214
  recentDays: options.recentDays,
229
215
  maxMessages: options.maxTopLevelMessages,
230
216
  now: options.now,
231
217
  excludeMessageId: options.excludeMessageId,
232
218
  });
233
- const threadRecords = records.filter((record) => isRenderableConversationMessage(record.message, options.excludeMessageId) &&
219
+ const threadRecords = scopedRecords.filter((record) => isRenderableConversationMessage(record.message, options.excludeMessageId) &&
234
220
  (record.message.ts === threadId || record.message.threadTs === threadId));
235
221
  return dedupeAndSortRecords([...topLevelRecords, ...threadRecords]);
236
222
  }
@@ -247,7 +233,7 @@ function isRecentHistoryMessage(message, sinceMs) {
247
233
  }
248
234
  function selectExistingSessionSyncMessages(records, options) {
249
235
  const threadId = options.sessionKey ? extractSessionSuffix(options.sessionKey) : null;
250
- return dedupeAndSortRecords(records.filter((record) => {
236
+ return dedupeAndSortRecords(recordsBeforeCurrentMessage(records, options.excludeMessageId).filter((record) => {
251
237
  if (!isRenderableConversationMessage(record.message, options.excludeMessageId))
252
238
  return false;
253
239
  if (!threadId)
@@ -255,21 +241,29 @@ function selectExistingSessionSyncMessages(records, options) {
255
241
  return record.message.ts === threadId || record.message.threadTs === threadId;
256
242
  }));
257
243
  }
244
+ /**
245
+ * Slack logs messages before enqueueing them, so a later queued turn may
246
+ * already be present while the current turn is being prepared. Chat history
247
+ * must stop at the current record rather than merely removing that one id.
248
+ */
249
+ function recordsBeforeCurrentMessage(records, currentMessageId) {
250
+ if (!currentMessageId)
251
+ return records;
252
+ const currentRecord = findLogRecordById(records, currentMessageId);
253
+ if (!currentRecord)
254
+ return records;
255
+ return records.filter((record) => record.index < currentRecord.index);
256
+ }
258
257
  function latestSyncMessageId(records, options) {
259
258
  return selectExistingSessionSyncMessages(records, options).at(-1)?.message.ts;
260
259
  }
261
260
  function isRenderableConversationMessage(message, excludeMessageId) {
262
261
  if (excludeMessageId && message.ts === excludeMessageId)
263
262
  return false;
264
- if (isChatCommandMessage(message))
263
+ if (!message.isMessagingBot && isCommandText(message.text ?? ""))
265
264
  return false;
266
265
  return !!message.text?.trim();
267
266
  }
268
- function isChatCommandMessage(message) {
269
- const text = message.text?.trim() ?? "";
270
- return (!message.isMessagingBot &&
271
- /^\/(?:pi-[\w-]+|login|session|new|stop|model|sandbox|admin|auto-reply)(?:@\w+)?(?:\s|$)/i.test(text));
272
- }
273
267
  function dedupeAndSortRecords(records) {
274
268
  const byKey = new Map();
275
269
  for (const record of records) {
@@ -296,74 +290,98 @@ function sortTime(record) {
296
290
  }
297
291
  return record.index;
298
292
  }
299
- function bootstrapSessionFromLog(sessionFile, cwd, records, lastMessageId = records.at(-1)?.message.ts) {
293
+ async function bootstrapSessionFromLog(sessionFile, cwd, records, lastMessageId = records.at(-1)?.message.ts) {
300
294
  if (records.length === 0 && !lastMessageId)
301
295
  return;
302
- const sessionManager = openManagedSession(sessionFile, cwd);
303
- appendLogRecordsToSession(sessionManager, records);
304
- sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
305
- source: "log.jsonl",
306
- messageCount: records.length,
307
- lastMessageId,
308
- });
309
- forceRewriteSession(sessionManager, sessionFile);
310
- }
311
- function syncSessionFromLog(sessionFile, cwd, records, historyWindow) {
312
- if (records.length === 0)
313
- return;
314
- syncSessionManagerFromLog(openManagedSession(sessionFile, cwd), records, historyWindow);
296
+ const sessionManager = await openManagedSession(sessionFile, cwd);
297
+ try {
298
+ await appendLogRecordsToSession(sessionManager, records);
299
+ await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
300
+ source: "log.jsonl",
301
+ messageCount: records.length,
302
+ lastMessageId,
303
+ });
304
+ }
305
+ finally {
306
+ await sessionManager.close();
307
+ }
315
308
  }
316
- function syncSessionManagerFromLog(sessionManager, records, historyWindow) {
309
+ async function syncSessionManagerFromLog(sessionManager, records, historyWindow) {
317
310
  if (records.length === 0)
318
- return;
319
- const existingEntries = sessionManager.getEntries();
311
+ return { appended: 0 };
312
+ const existingEntries = await sessionManager.getEntries();
313
+ const resetAt = getLatestChatSyncResetAt(existingEntries);
314
+ const controlledIds = new Set(existingEntries.flatMap((entry) => {
315
+ if (entry.type !== "custom" ||
316
+ entry.customType !== "mikan.control_input" ||
317
+ !isRecord(entry.data))
318
+ return [];
319
+ return typeof entry.data.messageId === "string" ? [entry.data.messageId] : [];
320
+ }));
321
+ const eligibleRecords = records.filter((record) => !controlledIds.has(record.message.ts ?? "") && (!resetAt || isAfterReset(record, resetAt)));
320
322
  const lastSyncedMessageId = getLatestChatSyncMessageId(existingEntries);
321
323
  const lastSyncedIndex = lastSyncedMessageId
322
- ? records.findIndex((record) => record.message.ts === lastSyncedMessageId)
324
+ ? eligibleRecords.findIndex((record) => record.message.ts === lastSyncedMessageId)
323
325
  : -1;
324
- if (lastSyncedMessageId && lastSyncedIndex === -1)
325
- return;
326
- const syncCandidates = selectRecentMessages(records.slice(lastSyncedIndex + 1), historyWindow);
326
+ // A truncated or rebuilt log may no longer contain the watermark. Replay the
327
+ // current bounded history; represented-message matching below prevents duplicates.
328
+ const syncCandidates = selectRecentMessages(eligibleRecords.slice(lastSyncedIndex + 1), historyWindow);
327
329
  if (syncCandidates.length === 0)
328
- return;
330
+ return { appended: 0 };
329
331
  const represented = buildRepresentedMessageCounts(existingEntries);
330
332
  const newRecords = syncCandidates.filter((record) => !consumeRepresentedLogMessage(record, represented));
331
333
  if (newRecords.length === 0)
332
- return;
333
- appendLogRecordsToSession(sessionManager, newRecords);
334
- sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
334
+ return { appended: 0 };
335
+ const lastMessageId = syncCandidates.at(-1)?.message.ts;
336
+ await appendLogRecordsToSession(sessionManager, newRecords);
337
+ await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
335
338
  source: "log.jsonl",
336
339
  messageCount: newRecords.length,
337
- lastMessageId: syncCandidates.at(-1)?.message.ts,
340
+ lastMessageId,
338
341
  });
342
+ return {
343
+ appended: newRecords.length,
344
+ ...(lastMessageId !== undefined ? { lastMessageId } : {}),
345
+ };
339
346
  }
340
- function appendLogRecordsToSession(sessionManager, records) {
347
+ async function appendLogRecordsToSession(sessionManager, records) {
341
348
  for (const record of records) {
342
349
  const message = buildHistorySessionMessage(record.message);
343
350
  if (message)
344
- sessionManager.appendMessage(message);
351
+ await sessionManager.appendMessage(message);
345
352
  }
346
353
  }
347
- function forceRewriteSession(sessionManager, sessionFile) {
348
- const header = sessionManager.getHeader();
349
- if (!header)
350
- return;
351
- const content = [header, ...sessionManager.getEntries()]
352
- .map((entry) => JSON.stringify(entry))
353
- .join("\n");
354
- atomicWritePrivateFile(sessionFile, `${content}\n`);
355
- }
356
- function getLatestChatSyncMessageId(entries) {
357
- for (let i = entries.length - 1; i >= 0; i--) {
358
- const entry = entries[i];
359
- if (entry.type !== "custom" || entry.customType !== CHAT_SYNC_CUSTOM_TYPE)
360
- continue;
361
- if (!isRecord(entry.data))
362
- return undefined;
363
- return typeof entry.data.lastMessageId === "string" ? entry.data.lastMessageId : undefined;
354
+ function isChatSyncMarker(entry) {
355
+ return entry.type === "custom" && entry.customType === CHAT_SYNC_CUSTOM_TYPE;
356
+ }
357
+ /** The reset timestamp a chat-sync marker records, when it carries a usable one. */
358
+ function markerResetAt(entry) {
359
+ if (!isChatSyncMarker(entry))
360
+ return undefined;
361
+ if (!isRecord(entry.data) || typeof entry.data.resetAt !== "string")
362
+ return undefined;
363
+ const resetAt = new Date(entry.data.resetAt).getTime();
364
+ return Number.isFinite(resetAt) ? resetAt : undefined;
365
+ }
366
+ function getLatestChatSyncResetAt(entries) {
367
+ for (const entry of entries.toReversed()) {
368
+ const resetAt = markerResetAt(entry);
369
+ if (resetAt !== undefined)
370
+ return resetAt;
364
371
  }
365
372
  return undefined;
366
373
  }
374
+ function isAfterReset(record, resetAt) {
375
+ if (!record.message.date)
376
+ return false;
377
+ const messageTime = new Date(record.message.date).getTime();
378
+ return Number.isFinite(messageTime) && messageTime >= resetAt;
379
+ }
380
+ function getLatestChatSyncMessageId(entries) {
381
+ const marker = entries.toReversed().find(isChatSyncMarker);
382
+ const lastMessageId = isRecord(marker?.data) ? marker.data.lastMessageId : undefined;
383
+ return typeof lastMessageId === "string" ? lastMessageId : undefined;
384
+ }
367
385
  function buildRepresentedMessageCounts(entries) {
368
386
  const counts = new Map();
369
387
  for (const entry of entries) {
@@ -413,11 +431,7 @@ function getSessionMessageText(entry) {
413
431
  .map((part) => (part.type === "text" && "text" in part ? part.text : ""))
414
432
  .join("\n");
415
433
  }
416
- function normalizeComparableText(text) {
417
- return text
418
- .replace(/^\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}\]\s+\[[^\]]+\](?:\s+\[in-thread:[^\]]+\])?:\s*/, "")
419
- .trim();
420
- }
434
+ const normalizeComparableText = stripHistoryLinePrefix;
421
435
  function buildHistorySessionMessage(message) {
422
436
  const text = message.text?.trim();
423
437
  if (!text)
@@ -466,10 +480,11 @@ function parseMessageTimestamp(message) {
466
480
  return undefined;
467
481
  }
468
482
  function formatHistoryMessage(message) {
469
- const text = message.text?.trim() ?? "";
470
- const userLabel = message.userName || message.user || "unknown";
471
- const timestamp = message.date ? formatLocalTimestamp(new Date(message.date)) : null;
472
- return timestamp ? `[${timestamp}] [${userLabel}]: ${text}` : `[${userLabel}]: ${text}`;
483
+ return formatHistoryLine({
484
+ date: message.date ? new Date(message.date) : undefined,
485
+ userName: message.userName || message.user,
486
+ text: message.text?.trim() ?? "",
487
+ });
473
488
  }
474
489
  function zeroUsage() {
475
490
  return {
@@ -481,4 +496,53 @@ function zeroUsage() {
481
496
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
482
497
  };
483
498
  }
484
- //# sourceMappingURL=agent-memory-file-manager.js.map
499
+ // ── Conversation platform log (log.jsonl) ─────────────────────────────────────
500
+ /**
501
+ * Read a conversation's platform chat log (log.jsonl): skip malformed lines,
502
+ * and coalesce consecutive messaging-bot chunks that share a ts — streamed
503
+ * responses are logged in pieces but represent one message.
504
+ */
505
+ function readConversationLog(conversationDir) {
506
+ const logFile = join(conversationDir, "log.jsonl");
507
+ const raw = readTextFileIfExists(logFile);
508
+ if (raw === undefined)
509
+ return [];
510
+ const records = [];
511
+ for (const [index, line] of raw.trim().split("\n").filter(Boolean).entries()) {
512
+ const message = parseLogLine(line, logFile, index + 1);
513
+ if (message)
514
+ records.push({ message, index });
515
+ }
516
+ return coalesceMessagingBotLogChunks(records);
517
+ }
518
+ /** One log line, or `undefined` after warning about a malformed one. */
519
+ function parseLogLine(line, logFile, lineNumber) {
520
+ try {
521
+ return parseJsonValue(line, (value) => isRecord(value), (detail) => (detail === "unexpected JSON shape" ? "expected a JSON object" : detail));
522
+ }
523
+ catch (err) {
524
+ log.logWarning(`Skipping malformed log entry at ${logFile}:${lineNumber}`, err instanceof Error ? err.message : String(err));
525
+ return undefined;
526
+ }
527
+ }
528
+ function coalesceMessagingBotLogChunks(records) {
529
+ const coalesced = [];
530
+ for (const record of records) {
531
+ const previous = coalesced.at(-1);
532
+ if (previous && canCoalesceMessagingBotLogChunk(previous.message, record.message)) {
533
+ previous.message.text = `${previous.message.text ?? ""}${record.message.text ?? ""}`;
534
+ continue;
535
+ }
536
+ coalesced.push({ ...record, message: { ...record.message } });
537
+ }
538
+ return coalesced;
539
+ }
540
+ function canCoalesceMessagingBotLogChunk(previous, current) {
541
+ return (previous.isMessagingBot === true &&
542
+ current.isMessagingBot === true &&
543
+ !!previous.ts &&
544
+ previous.ts === current.ts &&
545
+ previous.threadTs === current.threadTs &&
546
+ previous.user === current.user);
547
+ }
548
+ //# sourceMappingURL=chat-history-sync.js.map