@geminixiang/mikan 1.0.0-beta.53 → 1.0.0-beta.55

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 (556) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +3 -2
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +4 -8
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/adapters/commands/login.d.ts.map +1 -0
  7. package/dist/adapters/commands/login.js +166 -0
  8. package/dist/adapters/commands/login.js.map +1 -0
  9. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  10. package/dist/{commands → adapters/commands}/manifest.js +0 -7
  11. package/dist/adapters/commands/manifest.js.map +1 -0
  12. package/dist/{commands → adapters/commands}/model.d.ts +6 -0
  13. package/dist/adapters/commands/model.d.ts.map +1 -0
  14. package/dist/{commands → adapters/commands}/model.js +56 -44
  15. package/dist/adapters/commands/model.js.map +1 -0
  16. package/dist/adapters/commands/new.d.ts.map +1 -0
  17. package/dist/{commands → adapters/commands}/new.js +7 -8
  18. package/dist/adapters/commands/new.js.map +1 -0
  19. package/dist/adapters/commands/registry.d.ts.map +1 -0
  20. package/dist/{commands → adapters/commands}/registry.js +1 -3
  21. package/dist/adapters/commands/registry.js.map +1 -0
  22. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  23. package/dist/{commands → adapters/commands}/sandbox.js +22 -21
  24. package/dist/adapters/commands/sandbox.js.map +1 -0
  25. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  26. package/dist/{commands → adapters/commands}/session-view.js +8 -11
  27. package/dist/adapters/commands/session-view.js.map +1 -0
  28. package/dist/{commands → adapters/commands}/types.d.ts +6 -6
  29. package/dist/adapters/commands/types.d.ts.map +1 -0
  30. package/dist/adapters/commands/types.js.map +1 -0
  31. package/dist/adapters/commands/utils.d.ts +14 -0
  32. package/dist/adapters/commands/utils.d.ts.map +1 -0
  33. package/dist/{commands → adapters/commands}/utils.js +18 -1
  34. package/dist/adapters/commands/utils.js.map +1 -0
  35. package/dist/adapters/discord/bot.d.ts.map +1 -1
  36. package/dist/adapters/discord/bot.js +4 -5
  37. package/dist/adapters/discord/bot.js.map +1 -1
  38. package/dist/adapters/github/bot.d.ts.map +1 -1
  39. package/dist/adapters/github/bot.js +3 -4
  40. package/dist/adapters/github/bot.js.map +1 -1
  41. package/dist/adapters/github/client.d.ts.map +1 -1
  42. package/dist/adapters/github/client.js +5 -18
  43. package/dist/adapters/github/client.js.map +1 -1
  44. package/dist/adapters/github/tool-pack.d.ts +1 -1
  45. package/dist/adapters/github/tool-pack.d.ts.map +1 -1
  46. package/dist/adapters/github/tool-pack.js.map +1 -1
  47. package/dist/adapters/github/tools/checks.js +1 -1
  48. package/dist/adapters/github/tools/checks.js.map +1 -1
  49. package/dist/adapters/github/tools/issue.js +1 -1
  50. package/dist/adapters/github/tools/issue.js.map +1 -1
  51. package/dist/adapters/github/tools/pr.js +1 -1
  52. package/dist/adapters/github/tools/pr.js.map +1 -1
  53. package/dist/adapters/github/tools/read.d.ts.map +1 -1
  54. package/dist/adapters/github/tools/read.js +53 -53
  55. package/dist/adapters/github/tools/read.js.map +1 -1
  56. package/dist/adapters/github/tools/review-reply.js +1 -1
  57. package/dist/adapters/github/tools/review-reply.js.map +1 -1
  58. package/dist/adapters/github/tools/sync.js +1 -1
  59. package/dist/adapters/github/tools/sync.js.map +1 -1
  60. package/dist/adapters/intake.d.ts +1 -1
  61. package/dist/adapters/intake.d.ts.map +1 -1
  62. package/dist/adapters/intake.js +2 -6
  63. package/dist/adapters/intake.js.map +1 -1
  64. package/dist/adapters/markdown-tables.d.ts +0 -13
  65. package/dist/adapters/markdown-tables.d.ts.map +1 -1
  66. package/dist/adapters/markdown-tables.js +26 -38
  67. package/dist/adapters/markdown-tables.js.map +1 -1
  68. package/dist/adapters/shared.js +1 -1
  69. package/dist/adapters/shared.js.map +1 -1
  70. package/dist/adapters/slack/bot.d.ts +7 -4
  71. package/dist/adapters/slack/bot.d.ts.map +1 -1
  72. package/dist/adapters/slack/bot.js +104 -122
  73. package/dist/adapters/slack/bot.js.map +1 -1
  74. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  75. package/dist/adapters/slack/response-lifecycle.js +33 -25
  76. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  77. package/dist/adapters/slack/tool-pack.d.ts +1 -1
  78. package/dist/adapters/slack/tool-pack.d.ts.map +1 -1
  79. package/dist/adapters/slack/tool-pack.js.map +1 -1
  80. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -1
  81. package/dist/adapters/slack/update-diagnostics.js +8 -24
  82. package/dist/adapters/slack/update-diagnostics.js.map +1 -1
  83. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  84. package/dist/adapters/telegram/bot.js +3 -4
  85. package/dist/adapters/telegram/bot.js.map +1 -1
  86. package/dist/adapters/types.d.ts +2 -4
  87. package/dist/adapters/types.d.ts.map +1 -1
  88. package/dist/adapters/types.js.map +1 -1
  89. package/dist/{web → adapters/web}/admin/portal.d.ts +3 -3
  90. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  91. package/dist/{web → adapters/web}/admin/portal.js +535 -709
  92. package/dist/adapters/web/admin/portal.js.map +1 -0
  93. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  94. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  95. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  96. package/dist/{web → adapters/web}/admin/types.d.ts +5 -5
  97. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  98. package/dist/adapters/web/admin/types.js.map +1 -0
  99. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  100. package/dist/{web → adapters/web}/login/oauth.js +50 -54
  101. package/dist/adapters/web/login/oauth.js.map +1 -0
  102. package/dist/{web → adapters/web}/login/portal.d.ts +2 -2
  103. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  104. package/dist/{web → adapters/web}/login/portal.js +6 -6
  105. package/dist/adapters/web/login/portal.js.map +1 -0
  106. package/dist/{web → adapters/web}/login/types.d.ts +1 -1
  107. package/dist/adapters/web/login/types.d.ts.map +1 -0
  108. package/dist/adapters/web/login/types.js.map +1 -0
  109. package/dist/{web → adapters/web}/portal-shell.d.ts +2 -2
  110. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  111. package/dist/{web → adapters/web}/portal-shell.js +2 -2
  112. package/dist/adapters/web/portal-shell.js.map +1 -0
  113. package/dist/{web → adapters/web}/server.d.ts +5 -5
  114. package/dist/adapters/web/server.d.ts.map +1 -0
  115. package/dist/{web → adapters/web}/server.js +4 -7
  116. package/dist/adapters/web/server.js.map +1 -0
  117. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  118. package/dist/{web → adapters/web}/session-view/portal.js +9 -9
  119. package/dist/adapters/web/session-view/portal.js.map +1 -0
  120. package/dist/{web → adapters/web}/session-view/types.d.ts +3 -3
  121. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  122. package/dist/adapters/web/session-view/types.js.map +1 -0
  123. package/dist/adapters/web/token-store.d.ts.map +1 -0
  124. package/dist/adapters/web/token-store.js.map +1 -0
  125. package/dist/adapters/web/types.d.ts.map +1 -0
  126. package/dist/adapters/web/types.js.map +1 -0
  127. package/dist/cli/arg-grammar.d.ts +24 -0
  128. package/dist/cli/arg-grammar.d.ts.map +1 -1
  129. package/dist/cli/arg-grammar.js +39 -8
  130. package/dist/cli/arg-grammar.js.map +1 -1
  131. package/dist/cli/boot.d.ts.map +1 -1
  132. package/dist/cli/boot.js +48 -62
  133. package/dist/cli/boot.js.map +1 -1
  134. package/dist/cli/download.d.ts.map +1 -1
  135. package/dist/cli/download.js +51 -54
  136. package/dist/cli/download.js.map +1 -1
  137. package/dist/cli/office.d.ts.map +1 -1
  138. package/dist/cli/office.js +9 -26
  139. package/dist/cli/office.js.map +1 -1
  140. package/dist/cli/onboard.d.ts.map +1 -1
  141. package/dist/cli/onboard.js +15 -11
  142. package/dist/cli/onboard.js.map +1 -1
  143. package/dist/cli/sessions.d.ts.map +1 -1
  144. package/dist/cli/sessions.js +49 -52
  145. package/dist/cli/sessions.js.map +1 -1
  146. package/dist/config.d.ts +4 -28
  147. package/dist/config.d.ts.map +1 -1
  148. package/dist/config.js +7 -112
  149. package/dist/config.js.map +1 -1
  150. package/dist/dream/index.d.ts.map +1 -1
  151. package/dist/dream/index.js +8 -2
  152. package/dist/dream/index.js.map +1 -1
  153. package/dist/dream/types.d.ts +1 -1
  154. package/dist/dream/types.d.ts.map +1 -1
  155. package/dist/dream/types.js.map +1 -1
  156. package/dist/env-manifest.d.ts +2 -0
  157. package/dist/env-manifest.d.ts.map +1 -1
  158. package/dist/env-manifest.js +29 -8
  159. package/dist/env-manifest.js.map +1 -1
  160. package/dist/events/index.d.ts +150 -0
  161. package/dist/events/index.d.ts.map +1 -0
  162. package/dist/{harness/event-format.js → events/index.js} +80 -2
  163. package/dist/events/index.js.map +1 -0
  164. package/dist/{events.d.ts → events/watcher.d.ts} +4 -4
  165. package/dist/events/watcher.d.ts.map +1 -0
  166. package/dist/{events.js → events/watcher.js} +8 -8
  167. package/dist/events/watcher.js.map +1 -0
  168. package/dist/file-guards.d.ts.map +1 -0
  169. package/dist/file-guards.js.map +1 -0
  170. package/dist/harness/execution-env.d.ts +19 -0
  171. package/dist/harness/execution-env.d.ts.map +1 -0
  172. package/dist/harness/execution-env.js +262 -0
  173. package/dist/harness/execution-env.js.map +1 -0
  174. package/dist/harness/execution-resolver.d.ts +25 -0
  175. package/dist/harness/execution-resolver.d.ts.map +1 -0
  176. package/dist/{execution-resolver.js → harness/execution-resolver.js} +12 -21
  177. package/dist/harness/execution-resolver.js.map +1 -0
  178. package/dist/harness/index.d.ts +9 -9
  179. package/dist/harness/index.d.ts.map +1 -1
  180. package/dist/harness/index.js +8 -8
  181. package/dist/harness/index.js.map +1 -1
  182. package/dist/harness/mcp.d.ts +38 -0
  183. package/dist/harness/mcp.d.ts.map +1 -0
  184. package/dist/{mcp/loader.js → harness/mcp.js} +155 -6
  185. package/dist/harness/mcp.js.map +1 -0
  186. package/dist/harness/models.js +1 -1
  187. package/dist/harness/models.js.map +1 -1
  188. package/dist/harness/open-connector.d.ts.map +1 -0
  189. package/dist/{mcp → harness}/open-connector.js +1 -1
  190. package/dist/harness/open-connector.js.map +1 -0
  191. package/dist/{agent → harness}/presenter.d.ts +2 -9
  192. package/dist/harness/presenter.d.ts.map +1 -0
  193. package/dist/{agent → harness}/presenter.js +170 -146
  194. package/dist/harness/presenter.js.map +1 -0
  195. package/dist/{agent → harness}/prompt.d.ts +10 -3
  196. package/dist/harness/prompt.d.ts.map +1 -0
  197. package/dist/{agent → harness}/prompt.js +137 -41
  198. package/dist/harness/prompt.js.map +1 -0
  199. package/dist/harness/runner.d.ts +2 -109
  200. package/dist/harness/runner.d.ts.map +1 -1
  201. package/dist/harness/runner.js +499 -467
  202. package/dist/harness/runner.js.map +1 -1
  203. package/dist/harness/session.d.ts +119 -0
  204. package/dist/harness/session.d.ts.map +1 -0
  205. package/dist/harness/session.js +561 -0
  206. package/dist/harness/session.js.map +1 -0
  207. package/dist/harness/skills.d.ts +10 -2
  208. package/dist/harness/skills.d.ts.map +1 -1
  209. package/dist/harness/skills.js +62 -39
  210. package/dist/harness/skills.js.map +1 -1
  211. package/dist/harness/{subagent-runner.d.ts → subagent.d.ts} +25 -6
  212. package/dist/harness/subagent.d.ts.map +1 -0
  213. package/dist/harness/{subagent-runner.js → subagent.js} +106 -54
  214. package/dist/harness/subagent.js.map +1 -0
  215. package/dist/harness/tools/attach.d.ts.map +1 -0
  216. package/dist/harness/tools/attach.js.map +1 -0
  217. package/dist/{tools → harness/tools}/event.d.ts +3 -32
  218. package/dist/harness/tools/event.d.ts.map +1 -0
  219. package/dist/harness/tools/event.js +178 -0
  220. package/dist/harness/tools/event.js.map +1 -0
  221. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  222. package/dist/harness/tools/generate-image.js.map +1 -0
  223. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  224. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  225. package/dist/{tools → harness/tools}/index.d.ts +5 -6
  226. package/dist/harness/tools/index.d.ts.map +1 -0
  227. package/dist/{tools → harness/tools}/index.js +12 -16
  228. package/dist/harness/tools/index.js.map +1 -0
  229. package/dist/harness/tools/pi-tools.d.ts +18 -0
  230. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  231. package/dist/harness/tools/pi-tools.js +84 -0
  232. package/dist/harness/tools/pi-tools.js.map +1 -0
  233. package/dist/harness/tools/react.d.ts.map +1 -0
  234. package/dist/harness/tools/react.js.map +1 -0
  235. package/dist/{tools → harness/tools}/sandbox.d.ts +2 -2
  236. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  237. package/dist/{tools → harness/tools}/sandbox.js +1 -1
  238. package/dist/harness/tools/sandbox.js.map +1 -0
  239. package/dist/{tools → harness/tools}/subagent.d.ts +28 -1
  240. package/dist/harness/tools/subagent.d.ts.map +1 -0
  241. package/dist/{tools → harness/tools}/subagent.js +218 -2
  242. package/dist/harness/tools/subagent.js.map +1 -0
  243. package/dist/{tools → harness/tools}/types.d.ts +0 -33
  244. package/dist/harness/tools/types.d.ts.map +1 -0
  245. package/dist/harness/tools/types.js.map +1 -0
  246. package/dist/harness/types.d.ts +180 -97
  247. package/dist/harness/types.d.ts.map +1 -1
  248. package/dist/harness/types.js +1 -1
  249. package/dist/harness/types.js.map +1 -1
  250. package/dist/index.d.ts +12 -11
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +6 -6
  253. package/dist/index.js.map +1 -1
  254. package/dist/main.js +10 -12
  255. package/dist/main.js.map +1 -1
  256. package/dist/observability/index.d.ts +33 -0
  257. package/dist/observability/index.d.ts.map +1 -0
  258. package/dist/observability/index.js +256 -0
  259. package/dist/observability/index.js.map +1 -0
  260. package/dist/observability/instrument.js +7 -1
  261. package/dist/observability/instrument.js.map +1 -1
  262. package/dist/observability/otel.d.ts +10 -0
  263. package/dist/observability/otel.d.ts.map +1 -0
  264. package/dist/observability/otel.js +183 -0
  265. package/dist/observability/otel.js.map +1 -0
  266. package/dist/observability/sentry.d.ts +22 -5
  267. package/dist/observability/sentry.d.ts.map +1 -1
  268. package/dist/observability/sentry.js +68 -23
  269. package/dist/observability/sentry.js.map +1 -1
  270. package/dist/observability/types.d.ts +6 -2
  271. package/dist/observability/types.d.ts.map +1 -1
  272. package/dist/observability/types.js.map +1 -1
  273. package/dist/office/index.d.ts +2 -3
  274. package/dist/office/index.d.ts.map +1 -1
  275. package/dist/office/index.js +172 -140
  276. package/dist/office/index.js.map +1 -1
  277. package/dist/{workspace-projection/index.d.ts → office/projection.d.ts} +2 -2
  278. package/dist/office/projection.d.ts.map +1 -0
  279. package/dist/{workspace-projection/index.js → office/projection.js} +2 -2
  280. package/dist/office/projection.js.map +1 -0
  281. package/dist/office/types.d.ts +29 -2
  282. package/dist/office/types.d.ts.map +1 -1
  283. package/dist/office/types.js.map +1 -1
  284. package/dist/process-lifecycle.d.ts +1 -1
  285. package/dist/process-lifecycle.d.ts.map +1 -1
  286. package/dist/process-lifecycle.js +3 -3
  287. package/dist/process-lifecycle.js.map +1 -1
  288. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  289. package/dist/runtime/conversation-runtime.js +106 -107
  290. package/dist/runtime/conversation-runtime.js.map +1 -1
  291. package/dist/runtime/session-lifecycle.d.ts +10 -0
  292. package/dist/runtime/session-lifecycle.d.ts.map +1 -1
  293. package/dist/runtime/session-lifecycle.js +42 -24
  294. package/dist/runtime/session-lifecycle.js.map +1 -1
  295. package/dist/runtime/types.d.ts +3 -3
  296. package/dist/runtime/types.d.ts.map +1 -1
  297. package/dist/runtime/types.js.map +1 -1
  298. package/dist/sandbox/cloudflare.d.ts +1 -0
  299. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  300. package/dist/sandbox/cloudflare.js +41 -50
  301. package/dist/sandbox/cloudflare.js.map +1 -1
  302. package/dist/sandbox/container.d.ts.map +1 -1
  303. package/dist/sandbox/container.js +7 -4
  304. package/dist/sandbox/container.js.map +1 -1
  305. package/dist/sandbox/host.d.ts.map +1 -1
  306. package/dist/sandbox/host.js +27 -35
  307. package/dist/sandbox/host.js.map +1 -1
  308. package/dist/sandbox/index.d.ts.map +1 -1
  309. package/dist/sandbox/index.js +8 -15
  310. package/dist/sandbox/index.js.map +1 -1
  311. package/dist/{provisioner.d.ts → sandbox/provisioner.d.ts} +2 -2
  312. package/dist/sandbox/provisioner.d.ts.map +1 -0
  313. package/dist/{provisioner.js → sandbox/provisioner.js} +3 -3
  314. package/dist/sandbox/provisioner.js.map +1 -0
  315. package/dist/sandbox/types.d.ts +2 -0
  316. package/dist/sandbox/types.d.ts.map +1 -1
  317. package/dist/sandbox/types.js.map +1 -1
  318. package/dist/sandbox/utils.d.ts +5 -0
  319. package/dist/sandbox/utils.d.ts.map +1 -1
  320. package/dist/sandbox/utils.js +14 -0
  321. package/dist/sandbox/utils.js.map +1 -1
  322. package/dist/sessions/chat-history-sync.d.ts.map +1 -1
  323. package/dist/sessions/chat-history-sync.js +72 -62
  324. package/dist/sessions/chat-history-sync.js.map +1 -1
  325. package/dist/sessions/migrate-common.d.ts +43 -0
  326. package/dist/sessions/migrate-common.d.ts.map +1 -0
  327. package/dist/sessions/migrate-common.js +99 -0
  328. package/dist/sessions/migrate-common.js.map +1 -0
  329. package/dist/sessions/migrate-pi-084.d.ts.map +1 -1
  330. package/dist/sessions/migrate-pi-084.js +152 -203
  331. package/dist/sessions/migrate-pi-084.js.map +1 -1
  332. package/dist/sessions/migrate-v3.d.ts +5 -0
  333. package/dist/sessions/migrate-v3.d.ts.map +1 -1
  334. package/dist/sessions/migrate-v3.js +161 -209
  335. package/dist/sessions/migrate-v3.js.map +1 -1
  336. package/dist/{harness → sessions}/session-store.d.ts +12 -1
  337. package/dist/sessions/session-store.d.ts.map +1 -0
  338. package/dist/{harness → sessions}/session-store.js +74 -35
  339. package/dist/sessions/session-store.js.map +1 -0
  340. package/dist/sessions/store.d.ts +1 -1
  341. package/dist/sessions/store.d.ts.map +1 -1
  342. package/dist/sessions/store.js +18 -17
  343. package/dist/sessions/store.js.map +1 -1
  344. package/dist/sessions/types.d.ts +40 -1
  345. package/dist/sessions/types.d.ts.map +1 -1
  346. package/dist/sessions/types.js +1 -1
  347. package/dist/sessions/types.js.map +1 -1
  348. package/dist/types.d.ts +7 -99
  349. package/dist/types.d.ts.map +1 -1
  350. package/dist/types.js.map +1 -1
  351. package/dist/vault/index.d.ts.map +1 -1
  352. package/dist/vault/index.js +70 -53
  353. package/dist/vault/index.js.map +1 -1
  354. package/package.json +10 -4
  355. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  356. package/dist/adapters/slack/tools/attach.js.map +0 -1
  357. package/dist/agent/catalog.d.ts +0 -22
  358. package/dist/agent/catalog.d.ts.map +0 -1
  359. package/dist/agent/catalog.js +0 -104
  360. package/dist/agent/catalog.js.map +0 -1
  361. package/dist/agent/execution.d.ts +0 -25
  362. package/dist/agent/execution.d.ts.map +0 -1
  363. package/dist/agent/execution.js +0 -171
  364. package/dist/agent/execution.js.map +0 -1
  365. package/dist/agent/presenter.d.ts.map +0 -1
  366. package/dist/agent/presenter.js.map +0 -1
  367. package/dist/agent/prompt.d.ts.map +0 -1
  368. package/dist/agent/prompt.js.map +0 -1
  369. package/dist/agent/runner.d.ts +0 -3
  370. package/dist/agent/runner.d.ts.map +0 -1
  371. package/dist/agent/runner.js +0 -452
  372. package/dist/agent/runner.js.map +0 -1
  373. package/dist/agent/types.d.ts +0 -101
  374. package/dist/agent/types.d.ts.map +0 -1
  375. package/dist/agent/types.js +0 -3
  376. package/dist/agent/types.js.map +0 -1
  377. package/dist/agent-events.d.ts +0 -6
  378. package/dist/agent-events.d.ts.map +0 -1
  379. package/dist/agent-events.js +0 -44
  380. package/dist/agent-events.js.map +0 -1
  381. package/dist/commands/admin.d.ts.map +0 -1
  382. package/dist/commands/admin.js.map +0 -1
  383. package/dist/commands/auto-reply.d.ts +0 -8
  384. package/dist/commands/auto-reply.d.ts.map +0 -1
  385. package/dist/commands/auto-reply.js +0 -65
  386. package/dist/commands/auto-reply.js.map +0 -1
  387. package/dist/commands/login.d.ts.map +0 -1
  388. package/dist/commands/login.js +0 -158
  389. package/dist/commands/login.js.map +0 -1
  390. package/dist/commands/manifest.d.ts.map +0 -1
  391. package/dist/commands/manifest.js.map +0 -1
  392. package/dist/commands/model.d.ts.map +0 -1
  393. package/dist/commands/model.js.map +0 -1
  394. package/dist/commands/new.d.ts.map +0 -1
  395. package/dist/commands/new.js.map +0 -1
  396. package/dist/commands/registry.d.ts.map +0 -1
  397. package/dist/commands/registry.js.map +0 -1
  398. package/dist/commands/sandbox.d.ts.map +0 -1
  399. package/dist/commands/sandbox.js.map +0 -1
  400. package/dist/commands/session-view.d.ts.map +0 -1
  401. package/dist/commands/session-view.js.map +0 -1
  402. package/dist/commands/types.d.ts.map +0 -1
  403. package/dist/commands/types.js.map +0 -1
  404. package/dist/commands/utils.d.ts +0 -11
  405. package/dist/commands/utils.d.ts.map +0 -1
  406. package/dist/commands/utils.js.map +0 -1
  407. package/dist/events.d.ts.map +0 -1
  408. package/dist/events.js.map +0 -1
  409. package/dist/execution-resolver.d.ts +0 -27
  410. package/dist/execution-resolver.d.ts.map +0 -1
  411. package/dist/execution-resolver.js.map +0 -1
  412. package/dist/harness/event-format.d.ts +0 -33
  413. package/dist/harness/event-format.d.ts.map +0 -1
  414. package/dist/harness/event-format.js.map +0 -1
  415. package/dist/harness/session-store.d.ts.map +0 -1
  416. package/dist/harness/session-store.js.map +0 -1
  417. package/dist/harness/settings.d.ts +0 -29
  418. package/dist/harness/settings.d.ts.map +0 -1
  419. package/dist/harness/settings.js +0 -40
  420. package/dist/harness/settings.js.map +0 -1
  421. package/dist/harness/subagent-runner.d.ts.map +0 -1
  422. package/dist/harness/subagent-runner.js.map +0 -1
  423. package/dist/harness/subagent-slots.d.ts +0 -28
  424. package/dist/harness/subagent-slots.d.ts.map +0 -1
  425. package/dist/harness/subagent-slots.js +0 -72
  426. package/dist/harness/subagent-slots.js.map +0 -1
  427. package/dist/harness/usage.d.ts +0 -11
  428. package/dist/harness/usage.d.ts.map +0 -1
  429. package/dist/harness/usage.js +0 -38
  430. package/dist/harness/usage.js.map +0 -1
  431. package/dist/mcp/catalog.d.ts +0 -5
  432. package/dist/mcp/catalog.d.ts.map +0 -1
  433. package/dist/mcp/catalog.js +0 -68
  434. package/dist/mcp/catalog.js.map +0 -1
  435. package/dist/mcp/loader.d.ts +0 -12
  436. package/dist/mcp/loader.d.ts.map +0 -1
  437. package/dist/mcp/loader.js.map +0 -1
  438. package/dist/mcp/open-connector.d.ts.map +0 -1
  439. package/dist/mcp/open-connector.js.map +0 -1
  440. package/dist/mcp/types.d.ts +0 -66
  441. package/dist/mcp/types.d.ts.map +0 -1
  442. package/dist/mcp/types.js.map +0 -1
  443. package/dist/packages/index.d.ts +0 -169
  444. package/dist/packages/index.d.ts.map +0 -1
  445. package/dist/packages/index.js +0 -721
  446. package/dist/packages/index.js.map +0 -1
  447. package/dist/packages/types.d.ts +0 -100
  448. package/dist/packages/types.d.ts.map +0 -1
  449. package/dist/packages/types.js.map +0 -1
  450. package/dist/provisioner.d.ts.map +0 -1
  451. package/dist/provisioner.js.map +0 -1
  452. package/dist/subagent-progress.d.ts +0 -39
  453. package/dist/subagent-progress.d.ts.map +0 -1
  454. package/dist/subagent-progress.js +0 -225
  455. package/dist/subagent-progress.js.map +0 -1
  456. package/dist/tools/bash.d.ts +0 -12
  457. package/dist/tools/bash.d.ts.map +0 -1
  458. package/dist/tools/bash.js +0 -80
  459. package/dist/tools/bash.js.map +0 -1
  460. package/dist/tools/edit.d.ts +0 -11
  461. package/dist/tools/edit.d.ts.map +0 -1
  462. package/dist/tools/edit.js +0 -132
  463. package/dist/tools/edit.js.map +0 -1
  464. package/dist/tools/event.d.ts.map +0 -1
  465. package/dist/tools/event.js +0 -255
  466. package/dist/tools/event.js.map +0 -1
  467. package/dist/tools/generate-image.d.ts.map +0 -1
  468. package/dist/tools/generate-image.js.map +0 -1
  469. package/dist/tools/host-fn-tool.d.ts.map +0 -1
  470. package/dist/tools/host-fn-tool.js.map +0 -1
  471. package/dist/tools/index.d.ts.map +0 -1
  472. package/dist/tools/index.js.map +0 -1
  473. package/dist/tools/react.d.ts.map +0 -1
  474. package/dist/tools/react.js.map +0 -1
  475. package/dist/tools/read.d.ts +0 -12
  476. package/dist/tools/read.d.ts.map +0 -1
  477. package/dist/tools/read.js +0 -140
  478. package/dist/tools/read.js.map +0 -1
  479. package/dist/tools/sandbox.d.ts.map +0 -1
  480. package/dist/tools/sandbox.js.map +0 -1
  481. package/dist/tools/subagent.d.ts.map +0 -1
  482. package/dist/tools/subagent.js.map +0 -1
  483. package/dist/tools/types.d.ts.map +0 -1
  484. package/dist/tools/types.js.map +0 -1
  485. package/dist/tools/write.d.ts +0 -10
  486. package/dist/tools/write.d.ts.map +0 -1
  487. package/dist/tools/write.js +0 -23
  488. package/dist/tools/write.js.map +0 -1
  489. package/dist/trigger.d.ts +0 -23
  490. package/dist/trigger.d.ts.map +0 -1
  491. package/dist/trigger.js +0 -97
  492. package/dist/trigger.js.map +0 -1
  493. package/dist/utils/file-guards.d.ts.map +0 -1
  494. package/dist/utils/file-guards.js.map +0 -1
  495. package/dist/web/admin/portal.d.ts.map +0 -1
  496. package/dist/web/admin/portal.js.map +0 -1
  497. package/dist/web/admin/provider-models.d.ts.map +0 -1
  498. package/dist/web/admin/provider-models.js.map +0 -1
  499. package/dist/web/admin/types.d.ts.map +0 -1
  500. package/dist/web/admin/types.js.map +0 -1
  501. package/dist/web/login/oauth.d.ts.map +0 -1
  502. package/dist/web/login/oauth.js.map +0 -1
  503. package/dist/web/login/portal.d.ts.map +0 -1
  504. package/dist/web/login/portal.js.map +0 -1
  505. package/dist/web/login/types.d.ts.map +0 -1
  506. package/dist/web/login/types.js.map +0 -1
  507. package/dist/web/portal-shell.d.ts.map +0 -1
  508. package/dist/web/portal-shell.js.map +0 -1
  509. package/dist/web/server.d.ts.map +0 -1
  510. package/dist/web/server.js.map +0 -1
  511. package/dist/web/session-view/portal.d.ts.map +0 -1
  512. package/dist/web/session-view/portal.js.map +0 -1
  513. package/dist/web/session-view/types.d.ts.map +0 -1
  514. package/dist/web/session-view/types.js +0 -2
  515. package/dist/web/session-view/types.js.map +0 -1
  516. package/dist/web/token-store.d.ts.map +0 -1
  517. package/dist/web/token-store.js.map +0 -1
  518. package/dist/web/types.d.ts.map +0 -1
  519. package/dist/web/types.js +0 -2
  520. package/dist/web/types.js.map +0 -1
  521. package/dist/workspace-projection/index.d.ts.map +0 -1
  522. package/dist/workspace-projection/index.js.map +0 -1
  523. package/dist/workspace-projection/types.d.ts +0 -29
  524. package/dist/workspace-projection/types.d.ts.map +0 -1
  525. package/dist/workspace-projection/types.js +0 -2
  526. package/dist/workspace-projection/types.js.map +0 -1
  527. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  528. /package/dist/{commands → adapters/commands}/login.d.ts +0 -0
  529. /package/dist/{commands → adapters/commands}/manifest.d.ts +0 -0
  530. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  531. /package/dist/{commands → adapters/commands}/registry.d.ts +0 -0
  532. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  533. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  534. /package/dist/{commands → adapters/commands}/types.js +0 -0
  535. /package/dist/{web → adapters/web}/admin/provider-models.js +0 -0
  536. /package/dist/{mcp → adapters/web/admin}/types.js +0 -0
  537. /package/dist/{web → adapters/web}/login/oauth.d.ts +0 -0
  538. /package/dist/{packages → adapters/web/login}/types.js +0 -0
  539. /package/dist/{web → adapters/web}/session-view/portal.d.ts +0 -0
  540. /package/dist/{tools → adapters/web/session-view}/types.js +0 -0
  541. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  542. /package/dist/{web → adapters/web}/token-store.js +0 -0
  543. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  544. /package/dist/{web/admin → adapters/web}/types.js +0 -0
  545. /package/dist/{utils/file-guards.d.ts → file-guards.d.ts} +0 -0
  546. /package/dist/{utils/file-guards.js → file-guards.js} +0 -0
  547. /package/dist/{mcp → harness}/open-connector.d.ts +0 -0
  548. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  549. /package/dist/{adapters/slack → harness}/tools/attach.js +0 -0
  550. /package/dist/{tools → harness/tools}/generate-image.d.ts +0 -0
  551. /package/dist/{tools → harness/tools}/generate-image.js +0 -0
  552. /package/dist/{tools → harness/tools}/host-fn-tool.d.ts +0 -0
  553. /package/dist/{tools → harness/tools}/host-fn-tool.js +0 -0
  554. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
  555. /package/dist/{tools → harness/tools}/react.js +0 -0
  556. /package/dist/{web/login → harness/tools}/types.js +0 -0
@@ -5,24 +5,35 @@ import { readFile, writeFile } from "node:fs/promises";
5
5
  import { basename, join } from "node:path";
6
6
  import { createConversationEvent, createConversationMessage, } from "../../adapter.js";
7
7
  import { createOfficeAddress } from "../../office/index.js";
8
- import { COMMAND_MANIFEST } from "../../commands/manifest.js";
8
+ import { COMMAND_MANIFEST } from "../commands/manifest.js";
9
9
  import { resolveConversationSettings } from "../../config.js";
10
10
  import * as log from "../../log.js";
11
- import { isRecord, readTextFileIfExists } from "../../utils/file-guards.js";
11
+ import { isRecord, readTextFileIfExists } from "../../file-guards.js";
12
12
  import { PRODUCT_NAME, formatForceStopped } from "../../platform-messages.js";
13
13
  import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, MessagingIntakeTracker, saveIncomingAttachments, withRetry, } from "../shared.js";
14
14
  import { processMessageIntake } from "../intake.js";
15
- import { recordPlatformChannelKind, } from "../../workspace-projection/index.js";
15
+ import { recordPlatformChannelKind } from "../../office/projection.js";
16
16
  import { AssistantThreadRegistry, handleAgentContextChanged, handleAgentDmOpened, handleAssistantThreadStarted, titleAssistantThread, } from "./assistant.js";
17
17
  import { createSlackAdapters } from "./context.js";
18
18
  import { hasMaterializedChatSession, registerThreadSession, } from "../../sessions/chat-history-sync.js";
19
19
  import { conversationIdOf } from "../../sessions/session-key.js";
20
20
  import { isSlackThreadSessionKey, planSlackAdapterSession, planSlackEventAnchorRun, resolveSlackSessionKey, } from "./session.js";
21
- import { reportUserFacingError } from "../../observability/sentry.js";
21
+ import { reportUserFacingError } from "../../observability/index.js";
22
22
  import { recordSlackUpdate } from "./update-diagnostics.js";
23
23
  import { renderSlackBlocks, resolveSlackMentions } from "./blocks.js";
24
24
  import { StreamStartLimiter } from "./stream-limits.js";
25
25
  const SLACK_EVENT_ANCHOR_TEXT = "Working on it...";
26
+ function hasMessageContent(message, includeBlocks = true) {
27
+ const content = [message.text, message.files];
28
+ if (includeBlocks)
29
+ content.push(message.blocks, message.attachments);
30
+ return content.some((part) => !!part?.length);
31
+ }
32
+ function hasBotIdentity(message) {
33
+ return !!message.bot_id || message.subtype === "bot_message";
34
+ }
35
+ const USER_MESSAGE_SUBTYPES = new Set([undefined, "file_share"]);
36
+ const BOT_MESSAGE_SUBTYPES = new Set([...USER_MESSAGE_SUBTYPES, "bot_message"]);
26
37
  /**
27
38
  * Slack's per-call limit on `markdown_text`: "Limit this field to 12,000
28
39
  * characters." mikan allows far more in a message, so streamed text is split
@@ -124,6 +135,7 @@ export class SlackMessagingBot {
124
135
  });
125
136
  }
126
137
  constructor(handler, config) {
138
+ this.statusUpdates = new Map();
127
139
  this.botUserId = null;
128
140
  this.botId = null;
129
141
  this.teamId = null;
@@ -154,6 +166,11 @@ export class SlackMessagingBot {
154
166
  clientPingTimeout: 12_000,
155
167
  });
156
168
  this.webClient = new WebClient(config.botToken);
169
+ this.statusClient = new WebClient(config.botToken, {
170
+ timeout: 3000,
171
+ retryConfig: { retries: 0 },
172
+ rejectRateLimitedCalls: true,
173
+ });
157
174
  }
158
175
  setEventsWatcher(watcher) {
159
176
  this.eventsWatcher = watcher;
@@ -221,9 +238,13 @@ export class SlackMessagingBot {
221
238
  resolveMentions(text) {
222
239
  return resolveSlackMentions(text, this.users.values());
223
240
  }
224
- async postMessage(channel, text) {
241
+ async postMessage(channel, text, threadTs) {
225
242
  return slackRetry(async () => {
226
- const payload = { channel, ...renderSlackBlocks(this.resolveMentions(text)) };
243
+ const payload = {
244
+ channel,
245
+ ...(threadTs !== undefined ? { thread_ts: threadTs } : {}),
246
+ ...renderSlackBlocks(this.resolveMentions(text)),
247
+ };
227
248
  const result = await this.webClient.chat.postMessage(payload);
228
249
  return result.ts;
229
250
  });
@@ -243,30 +264,28 @@ export class SlackMessagingBot {
243
264
  }
244
265
  });
245
266
  }
246
- async postEphemeral(channel, user, text, threadTs) {
267
+ async postEphemeral(channel, user, text, threadTs, blocks) {
247
268
  return slackRetry(async () => {
248
269
  await this.webClient.chat.postEphemeral({
249
270
  channel,
250
271
  user,
251
272
  text,
273
+ ...(blocks !== undefined ? { blocks: blocks } : {}),
252
274
  ...(threadTs ? { thread_ts: threadTs } : {}),
253
275
  });
254
276
  });
255
277
  }
256
278
  async postEphemeralBlocks(channel, user, text, blocks, threadTs) {
279
+ return this.postEphemeral(channel, user, text, threadTs, blocks);
280
+ }
281
+ async postMessageBlocks(channel, text, blocks, threadTs) {
257
282
  return slackRetry(async () => {
258
- await this.webClient.chat.postEphemeral({
283
+ const payload = {
259
284
  channel,
260
- user,
261
285
  text,
262
286
  blocks: blocks,
263
- ...(threadTs ? { thread_ts: threadTs } : {}),
264
- });
265
- });
266
- }
267
- async postMessageBlocks(channel, text, blocks) {
268
- return slackRetry(async () => {
269
- const payload = { channel, text, blocks: blocks };
287
+ ...(threadTs !== undefined ? { thread_ts: threadTs } : {}),
288
+ };
270
289
  const result = await this.webClient.chat.postMessage(payload);
271
290
  return result.ts;
272
291
  });
@@ -442,13 +461,25 @@ export class SlackMessagingBot {
442
461
  // ==========================================================================
443
462
  /** Set the status for an assistant thread (shows "thinking" state) */
444
463
  async setAssistantStatus(channel, threadTs, status) {
445
- return slackRetry(async () => {
446
- await this.webClient.assistant.threads.setStatus({
464
+ const key = `${channel}:${threadTs}`;
465
+ const previous = this.statusUpdates.get(key) ?? Promise.resolve();
466
+ const update = previous
467
+ .catch(() => undefined)
468
+ .then(async () => {
469
+ await this.statusClient.assistant.threads.setStatus({
447
470
  channel_id: channel,
448
471
  thread_ts: threadTs,
449
472
  status,
450
473
  });
451
474
  });
475
+ this.statusUpdates.set(key, update);
476
+ try {
477
+ await update;
478
+ }
479
+ finally {
480
+ if (this.statusUpdates.get(key) === update)
481
+ this.statusUpdates.delete(key);
482
+ }
452
483
  }
453
484
  /** Offer starting points in a new assistant thread. */
454
485
  async setAssistantSuggestedPrompts(channel, threadTs, prompts) {
@@ -514,27 +545,10 @@ export class SlackMessagingBot {
514
545
  }
515
546
  }
516
547
  async postInThread(channel, threadTs, text) {
517
- return slackRetry(async () => {
518
- const payload = {
519
- channel,
520
- thread_ts: threadTs,
521
- ...renderSlackBlocks(this.resolveMentions(text)),
522
- };
523
- const result = await this.webClient.chat.postMessage(payload);
524
- return result.ts;
525
- });
548
+ return this.postMessage(channel, text, threadTs);
526
549
  }
527
550
  async postInThreadBlocks(channel, threadTs, text, blocks) {
528
- return slackRetry(async () => {
529
- const payload = {
530
- channel,
531
- thread_ts: threadTs,
532
- text, // fallback for notifications
533
- blocks: blocks,
534
- };
535
- const result = await this.webClient.chat.postMessage(payload);
536
- return result.ts;
537
- });
551
+ return this.postMessageBlocks(channel, text, blocks, threadTs);
538
552
  }
539
553
  async uploadFile(channel, filePath, title, threadTs) {
540
554
  return slackRetry(async () => {
@@ -745,8 +759,7 @@ export class SlackMessagingBot {
745
759
  };
746
760
  return processMessageIntake({
747
761
  eventBase: options.event,
748
- office: this.workspace.office(options.event.address),
749
- isAutoReplyCandidate: options.isAutoReplyCandidate,
762
+ addressed: options.addressed,
750
763
  magicWord: { addressed: options.addressed, scopeFallback: "top-level" },
751
764
  busyPolicy: "queue",
752
765
  logEntryBase: {},
@@ -903,29 +916,22 @@ export class SlackMessagingBot {
903
916
  text,
904
917
  attachments: [],
905
918
  });
906
- const respond = async (responseText) => {
919
+ const respond = async (responseText, blocks) => {
907
920
  if (options.ephemeralChannelId) {
908
- await this.postEphemeral(options.ephemeralChannelId, userId, responseText, options.threadTs);
921
+ await this.postEphemeral(options.ephemeralChannelId, userId, responseText, options.threadTs, blocks);
909
922
  return;
910
923
  }
911
- const messageTs = await this.postMessage(conversationId, responseText);
912
- this.logBotResponse(conversationId, responseText, messageTs);
913
- };
914
- const respondMuted = async (responseText) => {
915
- const blocks = [buildMrkdwnContextBlock(responseText)];
916
- if (options.ephemeralChannelId) {
917
- await this.postEphemeralBlocks(options.ephemeralChannelId, userId, responseText, blocks, options.threadTs);
918
- return;
919
- }
920
- const messageTs = await this.postMessageBlocks(conversationId, responseText, blocks);
924
+ const messageTs = blocks
925
+ ? await this.postMessageBlocks(conversationId, responseText, blocks)
926
+ : await this.postMessage(conversationId, responseText);
921
927
  this.logBotResponse(conversationId, responseText, messageTs);
922
928
  };
923
929
  const responder = {
924
930
  respond,
925
- replaceResponse: respond,
931
+ replaceResponse: (responseText) => respond(responseText),
926
932
  respondDiagnostic: async (responseText, responseOptions) => {
927
933
  if (responseOptions?.style === "muted") {
928
- await respondMuted(responseText);
934
+ await respond(responseText, [buildMrkdwnContextBlock(responseText)]);
929
935
  return;
930
936
  }
931
937
  await respond(responseOptions?.style === "error" ? `_${responseText}_` : responseText);
@@ -1094,17 +1100,13 @@ export class SlackMessagingBot {
1094
1100
  event: slackEvent,
1095
1101
  attachmentsPromise,
1096
1102
  queueKey: this.resolveQueueKey(e.channel, sessionKey),
1097
- isAutoReplyCandidate: false,
1098
1103
  addressed: true,
1099
1104
  });
1100
1105
  ack();
1101
1106
  await intake;
1102
1107
  }
1103
1108
  admitHumanMessage(event, ack) {
1104
- const hasSlackContent = !!event.text ||
1105
- !!event.files?.length ||
1106
- !!event.blocks?.length ||
1107
- !!event.attachments?.length;
1109
+ const hasSlackContent = hasMessageContent(event);
1108
1110
  const isOwnMessage = event.user === this.botUserId || (!!this.botId && event.bot_id === this.botId);
1109
1111
  if (isOwnMessage) {
1110
1112
  ack();
@@ -1115,9 +1117,7 @@ export class SlackMessagingBot {
1115
1117
  const authorIsKnownHuman = !!event.user && this.users.get(event.user)?.isBot === false;
1116
1118
  const isExternalMessage = event.subtype === "bot_message" || (!!event.bot_id && !authorIsKnownHuman);
1117
1119
  if (isExternalMessage) {
1118
- const supportedSubtype = event.subtype === undefined ||
1119
- event.subtype === "bot_message" ||
1120
- event.subtype === "file_share";
1120
+ const supportedSubtype = BOT_MESSAGE_SUBTYPES.has(event.subtype);
1121
1121
  if (supportedSubtype && hasSlackContent) {
1122
1122
  void this.logExternalMessagingBotMessage(event).catch((err) => {
1123
1123
  log.logWarning("Failed to log Slack bot message", String(err));
@@ -1126,9 +1126,7 @@ export class SlackMessagingBot {
1126
1126
  ack();
1127
1127
  return false;
1128
1128
  }
1129
- const isSupportedUserMessage = !!event.user &&
1130
- (event.subtype === undefined || event.subtype === "file_share") &&
1131
- hasSlackContent;
1129
+ const isSupportedUserMessage = !!event.user && USER_MESSAGE_SUBTYPES.has(event.subtype) && hasSlackContent;
1132
1130
  if (isSupportedUserMessage)
1133
1131
  return true;
1134
1132
  ack();
@@ -1140,8 +1138,8 @@ export class SlackMessagingBot {
1140
1138
  return;
1141
1139
  // message.im normally carries channel_type "im", but fall back to the
1142
1140
  // D-prefix convention (used by handleAppMention and session keys) so a
1143
- // missing channel_type cannot silently demote a DM to an auto-reply
1144
- // candidate that never triggers.
1141
+ // missing channel_type cannot silently classify a DM as an unaddressed
1142
+ // channel message that never triggers.
1145
1143
  const isDM = e.channel_type === "im" || e.channel.startsWith("D");
1146
1144
  const conversationKind = isDM ? "direct" : "shared";
1147
1145
  const isMessagingBotMention = e.text?.includes(`<@${this.botUserId}>`);
@@ -1199,7 +1197,6 @@ export class SlackMessagingBot {
1199
1197
  event: slackEvent,
1200
1198
  attachmentsPromise,
1201
1199
  queueKey: this.resolveQueueKey(e.channel, activeSessionKey),
1202
- isAutoReplyCandidate: !isDM,
1203
1200
  addressed: isDM,
1204
1201
  });
1205
1202
  ack();
@@ -1486,6 +1483,19 @@ export class SlackMessagingBot {
1486
1483
  }
1487
1484
  return timestamps;
1488
1485
  }
1486
+ isBackfillableMessage(message) {
1487
+ if (message.user === this.botUserId)
1488
+ return true;
1489
+ if (hasBotIdentity(message)) {
1490
+ if (this.botId && message.bot_id === this.botId)
1491
+ return false;
1492
+ return BOT_MESSAGE_SUBTYPES.has(message.subtype) && hasMessageContent(message);
1493
+ }
1494
+ // Unlike live intake, historical human posts need text or files, not just blocks.
1495
+ return (!!message.user &&
1496
+ USER_MESSAGE_SUBTYPES.has(message.subtype) &&
1497
+ hasMessageContent(message, false));
1498
+ }
1489
1499
  async backfillChannel(channelId, upperBoundTs) {
1490
1500
  const existingTs = await this.getExistingTimestamps(channelId);
1491
1501
  // Find the biggest ts in log.jsonl
@@ -1517,36 +1527,14 @@ export class SlackMessagingBot {
1517
1527
  const relevantMessages = allMessages.filter((msg) => {
1518
1528
  if (!msg.ts || existingTs.has(msg.ts))
1519
1529
  return false; // Skip duplicates
1520
- if (msg.user === this.botUserId)
1521
- return true;
1522
- const isExternalMessagingBotMessage = !!msg.bot_id || msg.subtype === "bot_message";
1523
- if (isExternalMessagingBotMessage) {
1524
- if (this.botId && msg.bot_id === this.botId)
1525
- return false;
1526
- if (msg.subtype !== undefined &&
1527
- msg.subtype !== "bot_message" &&
1528
- msg.subtype !== "file_share") {
1529
- return false;
1530
- }
1531
- return (!!msg.text ||
1532
- !!(msg.files && msg.files.length > 0) ||
1533
- !!msg.blocks?.length ||
1534
- !!msg.attachments?.length);
1535
- }
1536
- if (msg.subtype !== undefined && msg.subtype !== "file_share")
1537
- return false;
1538
- if (!msg.user)
1539
- return false;
1540
- if (!msg.text && (!msg.files || msg.files.length === 0))
1541
- return false;
1542
- return true;
1530
+ return this.isBackfillableMessage(msg);
1543
1531
  });
1544
1532
  // Reverse to chronological order
1545
1533
  relevantMessages.reverse();
1546
1534
  // Log each message to log.jsonl
1547
1535
  for (const msg of relevantMessages) {
1548
1536
  const isMikanMessage = msg.user === this.botUserId;
1549
- const isExternalMessagingBotMessage = !isMikanMessage && (!!msg.bot_id || msg.subtype === "bot_message");
1537
+ const isExternalMessagingBotMessage = !isMikanMessage && hasBotIdentity(msg);
1550
1538
  if (isExternalMessagingBotMessage) {
1551
1539
  await this.logExternalMessagingBotMessage({ ...msg, channel: channelId, ts: msg.ts });
1552
1540
  continue;
@@ -1608,17 +1596,15 @@ export class SlackMessagingBot {
1608
1596
  do {
1609
1597
  const result = await this.webClient.users.list({ limit: 200, cursor });
1610
1598
  const members = result.members;
1611
- if (members) {
1612
- for (const u of members) {
1613
- if (u.id && u.name && !u.deleted) {
1614
- this.users.set(u.id, {
1615
- id: u.id,
1616
- userName: u.name,
1617
- displayName: u.real_name || u.name,
1618
- isBot: !!u.is_bot,
1619
- });
1620
- }
1621
- }
1599
+ for (const u of members ?? []) {
1600
+ if (!u.id || !u.name || u.deleted)
1601
+ continue;
1602
+ this.users.set(u.id, {
1603
+ id: u.id,
1604
+ userName: u.name,
1605
+ displayName: u.real_name || u.name,
1606
+ isBot: !!u.is_bot,
1607
+ });
1622
1608
  }
1623
1609
  cursor = result.response_metadata?.next_cursor;
1624
1610
  } while (cursor);
@@ -1634,17 +1620,15 @@ export class SlackMessagingBot {
1634
1620
  cursor,
1635
1621
  });
1636
1622
  const channels = result.channels;
1637
- if (channels) {
1638
- for (const c of channels) {
1639
- if (c.id && c.name && c.is_member) {
1640
- this.channels.set(c.id, {
1641
- id: c.id,
1642
- name: c.name,
1643
- ...(typeof c.is_private === "boolean" ? { isPrivate: c.is_private } : {}),
1644
- ...(c.is_shared || c.is_ext_shared ? { isExternallyShared: true } : {}),
1645
- });
1646
- }
1647
- }
1623
+ for (const c of channels ?? []) {
1624
+ if (!c.id || !c.name || !c.is_member)
1625
+ continue;
1626
+ this.channels.set(c.id, {
1627
+ id: c.id,
1628
+ name: c.name,
1629
+ ...(typeof c.is_private === "boolean" ? { isPrivate: c.is_private } : {}),
1630
+ ...(c.is_shared || c.is_ext_shared ? { isExternallyShared: true } : {}),
1631
+ });
1648
1632
  }
1649
1633
  cursor = result.response_metadata?.next_cursor;
1650
1634
  } while (cursor);
@@ -1657,15 +1641,13 @@ export class SlackMessagingBot {
1657
1641
  cursor,
1658
1642
  });
1659
1643
  const ims = result.channels;
1660
- if (ims) {
1661
- for (const im of ims) {
1662
- if (im.id) {
1663
- // Use user's name as channel name for DMs
1664
- const user = im.user ? this.users.get(im.user) : undefined;
1665
- const name = user ? `DM:${user.userName}` : `DM:${im.id}`;
1666
- this.channels.set(im.id, { id: im.id, name });
1667
- }
1668
- }
1644
+ for (const im of ims ?? []) {
1645
+ if (!im.id)
1646
+ continue;
1647
+ // Use user's name as channel name for DMs
1648
+ const user = im.user ? this.users.get(im.user) : undefined;
1649
+ const name = user ? `DM:${user.userName}` : `DM:${im.id}`;
1650
+ this.channels.set(im.id, { id: im.id, name });
1669
1651
  }
1670
1652
  cursor = result.response_metadata?.next_cursor;
1671
1653
  } while (cursor);