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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) hide show
  1. package/CHANGELOG.md +1052 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +11 -8
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +166 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +37 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +155 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +15 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +153 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +41 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +5 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +43 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  30. package/dist/adapters/commands/sandbox.js +125 -0
  31. package/dist/adapters/commands/sandbox.js.map +1 -0
  32. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  33. package/dist/{commands → adapters/commands}/session-view.js +23 -16
  34. package/dist/adapters/commands/session-view.js.map +1 -0
  35. package/dist/adapters/commands/types.d.ts +145 -0
  36. package/dist/adapters/commands/types.d.ts.map +1 -0
  37. package/dist/adapters/commands/types.js.map +1 -0
  38. package/dist/adapters/commands/utils.d.ts +14 -0
  39. package/dist/adapters/commands/utils.d.ts.map +1 -0
  40. package/dist/{commands → adapters/commands}/utils.js +18 -1
  41. package/dist/adapters/commands/utils.js.map +1 -0
  42. package/dist/adapters/discord/bot.d.ts +11 -8
  43. package/dist/adapters/discord/bot.d.ts.map +1 -1
  44. package/dist/adapters/discord/bot.js +223 -256
  45. package/dist/adapters/discord/bot.js.map +1 -1
  46. package/dist/adapters/discord/components.d.ts +28 -0
  47. package/dist/adapters/discord/components.d.ts.map +1 -0
  48. package/dist/adapters/discord/components.js +32 -0
  49. package/dist/adapters/discord/components.js.map +1 -0
  50. package/dist/adapters/discord/context.d.ts +2 -6
  51. package/dist/adapters/discord/context.d.ts.map +1 -1
  52. package/dist/adapters/discord/context.js +64 -218
  53. package/dist/adapters/discord/context.js.map +1 -1
  54. package/dist/adapters/discord/format.d.ts +3 -0
  55. package/dist/adapters/discord/format.d.ts.map +1 -0
  56. package/dist/adapters/discord/format.js +84 -0
  57. package/dist/adapters/discord/format.js.map +1 -0
  58. package/dist/adapters/discord/types.d.ts +8 -1
  59. package/dist/adapters/discord/types.d.ts.map +1 -1
  60. package/dist/adapters/discord/types.js.map +1 -1
  61. package/dist/adapters/github/bot.d.ts +102 -0
  62. package/dist/adapters/github/bot.d.ts.map +1 -0
  63. package/dist/adapters/github/bot.js +720 -0
  64. package/dist/adapters/github/bot.js.map +1 -0
  65. package/dist/adapters/github/client.d.ts +122 -0
  66. package/dist/adapters/github/client.d.ts.map +1 -0
  67. package/dist/adapters/github/client.js +301 -0
  68. package/dist/adapters/github/client.js.map +1 -0
  69. package/dist/adapters/github/context.d.ts +5 -0
  70. package/dist/adapters/github/context.d.ts.map +1 -0
  71. package/dist/adapters/github/context.js +101 -0
  72. package/dist/adapters/github/context.js.map +1 -0
  73. package/dist/adapters/github/github-ops.d.ts +78 -0
  74. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  75. package/dist/adapters/github/github-ops.js +337 -0
  76. package/dist/adapters/github/github-ops.js.map +1 -0
  77. package/dist/adapters/github/ids.d.ts +34 -0
  78. package/dist/adapters/github/ids.d.ts.map +1 -0
  79. package/dist/adapters/github/ids.js +57 -0
  80. package/dist/adapters/github/ids.js.map +1 -0
  81. package/dist/adapters/github/repo.d.ts +33 -0
  82. package/dist/adapters/github/repo.d.ts.map +1 -0
  83. package/dist/adapters/github/repo.js +141 -0
  84. package/dist/adapters/github/repo.js.map +1 -0
  85. package/dist/adapters/github/tool-pack.d.ts +14 -0
  86. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  87. package/dist/adapters/github/tool-pack.js +55 -0
  88. package/dist/adapters/github/tool-pack.js.map +1 -0
  89. package/dist/adapters/github/tools/checks.d.ts +18 -0
  90. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  91. package/dist/adapters/github/tools/checks.js +86 -0
  92. package/dist/adapters/github/tools/checks.js.map +1 -0
  93. package/dist/adapters/github/tools/issue.d.ts +21 -0
  94. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  95. package/dist/adapters/github/tools/issue.js +48 -0
  96. package/dist/adapters/github/tools/issue.js.map +1 -0
  97. package/dist/adapters/github/tools/pr.d.ts +22 -0
  98. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  99. package/dist/adapters/github/tools/pr.js +48 -0
  100. package/dist/adapters/github/tools/pr.js.map +1 -0
  101. package/dist/adapters/github/tools/read.d.ts +21 -0
  102. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  103. package/dist/adapters/github/tools/read.js +141 -0
  104. package/dist/adapters/github/tools/read.js.map +1 -0
  105. package/dist/adapters/github/tools/review-reply.d.ts +17 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  107. package/dist/adapters/github/tools/review-reply.js +38 -0
  108. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  109. package/dist/adapters/github/tools/sync.d.ts +17 -0
  110. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  111. package/dist/adapters/github/tools/sync.js +34 -0
  112. package/dist/adapters/github/tools/sync.js.map +1 -0
  113. package/dist/adapters/github/types.d.ts +345 -0
  114. package/dist/adapters/github/types.d.ts.map +1 -0
  115. package/dist/adapters/github/types.js.map +1 -0
  116. package/dist/adapters/github/webhook.d.ts +20 -0
  117. package/dist/adapters/github/webhook.d.ts.map +1 -0
  118. package/dist/adapters/github/webhook.js +78 -0
  119. package/dist/adapters/github/webhook.js.map +1 -0
  120. package/dist/adapters/index.d.ts +12 -0
  121. package/dist/adapters/index.d.ts.map +1 -0
  122. package/dist/adapters/index.js +19 -0
  123. package/dist/adapters/index.js.map +1 -0
  124. package/dist/adapters/intake.d.ts +17 -6
  125. package/dist/adapters/intake.d.ts.map +1 -1
  126. package/dist/adapters/intake.js +96 -27
  127. package/dist/adapters/intake.js.map +1 -1
  128. package/dist/adapters/markdown-tables.d.ts +19 -0
  129. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  130. package/dist/adapters/markdown-tables.js +152 -0
  131. package/dist/adapters/markdown-tables.js.map +1 -0
  132. package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  133. package/dist/adapters/messages.d.ts.map +1 -0
  134. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  135. package/dist/adapters/messages.js.map +1 -0
  136. package/dist/adapters/progressive-renderer.d.ts +7 -0
  137. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  138. package/dist/adapters/progressive-renderer.js +443 -0
  139. package/dist/adapters/progressive-renderer.js.map +1 -0
  140. package/dist/adapters/shared.d.ts +37 -11
  141. package/dist/adapters/shared.d.ts.map +1 -1
  142. package/dist/adapters/shared.js +130 -24
  143. package/dist/adapters/shared.js.map +1 -1
  144. package/dist/adapters/slack/assistant.d.ts +73 -0
  145. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  146. package/dist/adapters/slack/assistant.js +205 -0
  147. package/dist/adapters/slack/assistant.js.map +1 -0
  148. package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
  149. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  150. package/dist/adapters/slack/auto-reply-context.js +28 -0
  151. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  152. package/dist/adapters/slack/blocks.d.ts +14 -0
  153. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  154. package/dist/adapters/slack/blocks.js +104 -148
  155. package/dist/adapters/slack/blocks.js.map +1 -1
  156. package/dist/adapters/slack/bot.d.ts +154 -21
  157. package/dist/adapters/slack/bot.d.ts.map +1 -1
  158. package/dist/adapters/slack/bot.js +1037 -484
  159. package/dist/adapters/slack/bot.js.map +1 -1
  160. package/dist/adapters/slack/context.d.ts +2 -6
  161. package/dist/adapters/slack/context.d.ts.map +1 -1
  162. package/dist/adapters/slack/context.js +11 -17
  163. package/dist/adapters/slack/context.js.map +1 -1
  164. package/dist/adapters/slack/jev-context.d.ts +30 -0
  165. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  166. package/dist/adapters/slack/jev-context.js +67 -0
  167. package/dist/adapters/slack/jev-context.js.map +1 -0
  168. package/dist/adapters/slack/markdown.d.ts +3 -0
  169. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  170. package/dist/adapters/slack/markdown.js +48 -0
  171. package/dist/adapters/slack/markdown.js.map +1 -0
  172. package/dist/adapters/slack/persona.d.ts +15 -0
  173. package/dist/adapters/slack/persona.d.ts.map +1 -0
  174. package/dist/adapters/slack/persona.js +22 -0
  175. package/dist/adapters/slack/persona.js.map +1 -0
  176. package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
  177. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  178. package/dist/adapters/slack/response-lifecycle.js +261 -345
  179. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  180. package/dist/adapters/slack/session.d.ts.map +1 -1
  181. package/dist/adapters/slack/session.js +7 -11
  182. package/dist/adapters/slack/session.js.map +1 -1
  183. package/dist/adapters/slack/stream-limits.d.ts +35 -0
  184. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  185. package/dist/adapters/slack/stream-limits.js +56 -0
  186. package/dist/adapters/slack/stream-limits.js.map +1 -0
  187. package/dist/adapters/slack/task-intent.d.ts +32 -0
  188. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  189. package/dist/adapters/slack/task-intent.js +72 -0
  190. package/dist/adapters/slack/task-intent.js.map +1 -0
  191. package/dist/adapters/slack/task-status.d.ts +7 -0
  192. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  193. package/dist/adapters/slack/task-status.js +107 -0
  194. package/dist/adapters/slack/task-status.js.map +1 -0
  195. package/dist/adapters/slack/tool-pack.d.ts +11 -0
  196. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  197. package/dist/adapters/slack/tool-pack.js +45 -0
  198. package/dist/adapters/slack/tool-pack.js.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
  200. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  201. package/dist/adapters/slack/tools/blockkit.js +106 -0
  202. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  203. package/dist/adapters/slack/types.d.ts +73 -2
  204. package/dist/adapters/slack/types.d.ts.map +1 -1
  205. package/dist/adapters/slack/types.js.map +1 -1
  206. package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
  207. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  208. package/dist/adapters/slack/update-diagnostics.js +134 -0
  209. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  210. package/dist/adapters/telegram/bot.d.ts +10 -9
  211. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  212. package/dist/adapters/telegram/bot.js +133 -202
  213. package/dist/adapters/telegram/bot.js.map +1 -1
  214. package/dist/adapters/telegram/context.d.ts +2 -6
  215. package/dist/adapters/telegram/context.d.ts.map +1 -1
  216. package/dist/adapters/telegram/context.js +53 -190
  217. package/dist/adapters/telegram/context.js.map +1 -1
  218. package/dist/adapters/telegram/types.d.ts +1 -1
  219. package/dist/adapters/telegram/types.d.ts.map +1 -1
  220. package/dist/adapters/telegram/types.js.map +1 -1
  221. package/dist/adapters/types.d.ts +144 -13
  222. package/dist/adapters/types.d.ts.map +1 -1
  223. package/dist/adapters/types.js.map +1 -1
  224. package/dist/adapters/web/admin/portal.d.ts +44 -0
  225. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  226. package/dist/adapters/web/admin/portal.js +3207 -0
  227. package/dist/adapters/web/admin/portal.js.map +1 -0
  228. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  229. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  231. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  232. package/dist/adapters/web/admin/types.d.ts +53 -0
  233. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  234. package/dist/adapters/web/admin/types.js.map +1 -0
  235. package/dist/adapters/web/login/oauth.d.ts +5 -0
  236. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  237. package/dist/{web → adapters/web}/login/oauth.js +50 -85
  238. package/dist/adapters/web/login/oauth.js.map +1 -0
  239. package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
  240. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  241. package/dist/{web → adapters/web}/login/portal.js +161 -119
  242. package/dist/adapters/web/login/portal.js.map +1 -0
  243. package/dist/{web → adapters/web}/login/types.d.ts +1 -12
  244. package/dist/adapters/web/login/types.d.ts.map +1 -0
  245. package/dist/adapters/web/login/types.js.map +1 -0
  246. package/dist/adapters/web/portal-shell.d.ts +22 -0
  247. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  248. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
  249. package/dist/adapters/web/portal-shell.js.map +1 -0
  250. package/dist/{web → adapters/web}/server.d.ts +14 -8
  251. package/dist/adapters/web/server.d.ts.map +1 -0
  252. package/dist/{web → adapters/web}/server.js +14 -7
  253. package/dist/adapters/web/server.js.map +1 -0
  254. package/dist/adapters/web/session-view/portal.d.ts +20 -0
  255. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  256. package/dist/{web → adapters/web}/session-view/portal.js +633 -162
  257. package/dist/adapters/web/session-view/portal.js.map +1 -0
  258. package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
  259. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  260. package/dist/adapters/web/session-view/types.js.map +1 -0
  261. package/dist/adapters/web/token-store.d.ts.map +1 -0
  262. package/dist/{web → adapters/web}/token-store.js +1 -1
  263. package/dist/adapters/web/token-store.js.map +1 -0
  264. package/dist/adapters/web/types.d.ts.map +1 -0
  265. package/dist/adapters/web/types.js.map +1 -0
  266. package/dist/cli/arg-grammar.d.ts +11 -0
  267. package/dist/cli/arg-grammar.d.ts.map +1 -0
  268. package/dist/cli/arg-grammar.js +50 -0
  269. package/dist/cli/arg-grammar.js.map +1 -0
  270. package/dist/cli/boot.d.ts +5 -0
  271. package/dist/cli/boot.d.ts.map +1 -0
  272. package/dist/cli/boot.js +90 -0
  273. package/dist/cli/boot.js.map +1 -0
  274. package/dist/cli/download.d.ts.map +1 -0
  275. package/dist/cli/download.js +88 -0
  276. package/dist/cli/download.js.map +1 -0
  277. package/dist/cli/office.d.ts +2 -0
  278. package/dist/cli/office.d.ts.map +1 -0
  279. package/dist/cli/office.js +181 -0
  280. package/dist/cli/office.js.map +1 -0
  281. package/dist/cli/onboard.d.ts +10 -0
  282. package/dist/cli/onboard.d.ts.map +1 -0
  283. package/dist/cli/onboard.js +225 -0
  284. package/dist/cli/onboard.js.map +1 -0
  285. package/dist/cli/process-lifecycle.d.ts +19 -0
  286. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  287. package/dist/cli/process-lifecycle.js +67 -0
  288. package/dist/cli/process-lifecycle.js.map +1 -0
  289. package/dist/cli/sessions.d.ts +2 -0
  290. package/dist/cli/sessions.d.ts.map +1 -0
  291. package/dist/cli/sessions.js +88 -0
  292. package/dist/cli/sessions.js.map +1 -0
  293. package/dist/cli/types.d.ts +25 -0
  294. package/dist/cli/types.d.ts.map +1 -0
  295. package/dist/cli/types.js.map +1 -0
  296. package/dist/dream/index.d.ts +20 -0
  297. package/dist/dream/index.d.ts.map +1 -0
  298. package/dist/dream/index.js +264 -0
  299. package/dist/dream/index.js.map +1 -0
  300. package/dist/dream/types.d.ts +30 -0
  301. package/dist/dream/types.d.ts.map +1 -0
  302. package/dist/dream/types.js +2 -0
  303. package/dist/dream/types.js.map +1 -0
  304. package/dist/env-manifest.d.ts +38 -0
  305. package/dist/env-manifest.d.ts.map +1 -0
  306. package/dist/env-manifest.js +260 -0
  307. package/dist/env-manifest.js.map +1 -0
  308. package/dist/events/index.d.ts +172 -0
  309. package/dist/events/index.d.ts.map +1 -0
  310. package/dist/events/index.js +340 -0
  311. package/dist/events/index.js.map +1 -0
  312. package/dist/events/scheduler.d.ts +34 -0
  313. package/dist/events/scheduler.d.ts.map +1 -0
  314. package/dist/events/scheduler.js +231 -0
  315. package/dist/events/scheduler.js.map +1 -0
  316. package/dist/file-guards.d.ts +26 -0
  317. package/dist/file-guards.d.ts.map +1 -0
  318. package/dist/file-guards.js +133 -0
  319. package/dist/file-guards.js.map +1 -0
  320. package/dist/harness/execution-env.d.ts +19 -0
  321. package/dist/harness/execution-env.d.ts.map +1 -0
  322. package/dist/harness/execution-env.js +262 -0
  323. package/dist/harness/execution-env.js.map +1 -0
  324. package/dist/harness/execution-resolver.d.ts +25 -0
  325. package/dist/harness/execution-resolver.d.ts.map +1 -0
  326. package/dist/harness/execution-resolver.js +156 -0
  327. package/dist/harness/execution-resolver.js.map +1 -0
  328. package/dist/harness/index.d.ts +18 -13
  329. package/dist/harness/index.d.ts.map +1 -1
  330. package/dist/harness/index.js +11 -11
  331. package/dist/harness/index.js.map +1 -1
  332. package/dist/harness/jev.d.ts +86 -0
  333. package/dist/harness/jev.d.ts.map +1 -0
  334. package/dist/harness/jev.js +167 -0
  335. package/dist/harness/jev.js.map +1 -0
  336. package/dist/harness/mcp.d.ts +38 -0
  337. package/dist/harness/mcp.d.ts.map +1 -0
  338. package/dist/harness/mcp.js +304 -0
  339. package/dist/harness/mcp.js.map +1 -0
  340. package/dist/harness/models.d.ts +7 -4
  341. package/dist/harness/models.d.ts.map +1 -1
  342. package/dist/harness/models.js +54 -55
  343. package/dist/harness/models.js.map +1 -1
  344. package/dist/harness/open-connector.d.ts +25 -0
  345. package/dist/harness/open-connector.d.ts.map +1 -0
  346. package/dist/harness/open-connector.js +178 -0
  347. package/dist/harness/open-connector.js.map +1 -0
  348. package/dist/harness/presenter.d.ts +31 -0
  349. package/dist/harness/presenter.d.ts.map +1 -0
  350. package/dist/harness/presenter.js +859 -0
  351. package/dist/harness/presenter.js.map +1 -0
  352. package/dist/harness/prompt.d.ts +30 -0
  353. package/dist/harness/prompt.d.ts.map +1 -0
  354. package/dist/harness/prompt.js +420 -0
  355. package/dist/harness/prompt.js.map +1 -0
  356. package/dist/harness/runner.d.ts +2 -123
  357. package/dist/harness/runner.d.ts.map +1 -1
  358. package/dist/harness/runner.js +551 -416
  359. package/dist/harness/runner.js.map +1 -1
  360. package/dist/harness/session.d.ts +122 -0
  361. package/dist/harness/session.d.ts.map +1 -0
  362. package/dist/harness/session.js +581 -0
  363. package/dist/harness/session.js.map +1 -0
  364. package/dist/harness/skills.d.ts +17 -28
  365. package/dist/harness/skills.d.ts.map +1 -1
  366. package/dist/harness/skills.js +104 -39
  367. package/dist/harness/skills.js.map +1 -1
  368. package/dist/harness/subagent-profiles.d.ts +8 -0
  369. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  370. package/dist/harness/subagent-profiles.js +293 -0
  371. package/dist/harness/subagent-profiles.js.map +1 -0
  372. package/dist/harness/subagent.d.ts +64 -0
  373. package/dist/harness/subagent.d.ts.map +1 -0
  374. package/dist/harness/subagent.js +687 -0
  375. package/dist/harness/subagent.js.map +1 -0
  376. package/dist/harness/tools/attach.d.ts.map +1 -0
  377. package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
  378. package/dist/harness/tools/attach.js.map +1 -0
  379. package/dist/{tools → harness/tools}/event.d.ts +4 -33
  380. package/dist/harness/tools/event.d.ts.map +1 -0
  381. package/dist/harness/tools/event.js +175 -0
  382. package/dist/harness/tools/event.js.map +1 -0
  383. package/dist/harness/tools/generate-image.d.ts +23 -0
  384. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  385. package/dist/harness/tools/generate-image.js +65 -0
  386. package/dist/harness/tools/generate-image.js.map +1 -0
  387. package/dist/harness/tools/host-fn-tool.d.ts +21 -0
  388. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  389. package/dist/harness/tools/host-fn-tool.js +32 -0
  390. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  391. package/dist/harness/tools/index.d.ts +41 -0
  392. package/dist/harness/tools/index.d.ts.map +1 -0
  393. package/dist/harness/tools/index.js +51 -0
  394. package/dist/harness/tools/index.js.map +1 -0
  395. package/dist/harness/tools/jev.d.ts +21 -0
  396. package/dist/harness/tools/jev.d.ts.map +1 -0
  397. package/dist/harness/tools/jev.js +109 -0
  398. package/dist/harness/tools/jev.js.map +1 -0
  399. package/dist/harness/tools/pi-tools.d.ts +18 -0
  400. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  401. package/dist/harness/tools/pi-tools.js +84 -0
  402. package/dist/harness/tools/pi-tools.js.map +1 -0
  403. package/dist/harness/tools/react.d.ts.map +1 -0
  404. package/dist/{tools → harness/tools}/react.js +6 -17
  405. package/dist/harness/tools/react.js.map +1 -0
  406. package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
  407. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  408. package/dist/{tools → harness/tools}/sandbox.js +12 -8
  409. package/dist/harness/tools/sandbox.js.map +1 -0
  410. package/dist/harness/tools/subagent.d.ts +85 -0
  411. package/dist/harness/tools/subagent.d.ts.map +1 -0
  412. package/dist/harness/tools/subagent.js +677 -0
  413. package/dist/harness/tools/subagent.js.map +1 -0
  414. package/dist/harness/tools/task.d.ts +20 -0
  415. package/dist/harness/tools/task.d.ts.map +1 -0
  416. package/dist/harness/tools/task.js +79 -0
  417. package/dist/harness/tools/task.js.map +1 -0
  418. package/dist/harness/tools/types.d.ts +29 -0
  419. package/dist/harness/tools/types.d.ts.map +1 -0
  420. package/dist/harness/tools/types.js +2 -0
  421. package/dist/harness/tools/types.js.map +1 -0
  422. package/dist/harness/types.d.ts +384 -25
  423. package/dist/harness/types.d.ts.map +1 -1
  424. package/dist/harness/types.js +1 -1
  425. package/dist/harness/types.js.map +1 -1
  426. package/dist/index.d.ts +33 -9
  427. package/dist/index.d.ts.map +1 -1
  428. package/dist/index.js +19 -6
  429. package/dist/index.js.map +1 -1
  430. package/dist/log.d.ts.map +1 -1
  431. package/dist/log.js +4 -1
  432. package/dist/log.js.map +1 -1
  433. package/dist/main.js +357 -198
  434. package/dist/main.js.map +1 -1
  435. package/dist/observability/index.d.ts +33 -0
  436. package/dist/observability/index.d.ts.map +1 -0
  437. package/dist/observability/index.js +257 -0
  438. package/dist/observability/index.js.map +1 -0
  439. package/dist/observability/instrument.js +14 -6
  440. package/dist/observability/instrument.js.map +1 -1
  441. package/dist/observability/otel.d.ts +10 -0
  442. package/dist/observability/otel.d.ts.map +1 -0
  443. package/dist/observability/otel.js +183 -0
  444. package/dist/observability/otel.js.map +1 -0
  445. package/dist/observability/sentry.d.ts +40 -7
  446. package/dist/observability/sentry.d.ts.map +1 -1
  447. package/dist/observability/sentry.js +176 -32
  448. package/dist/observability/sentry.js.map +1 -1
  449. package/dist/observability/types.d.ts +24 -3
  450. package/dist/observability/types.d.ts.map +1 -1
  451. package/dist/observability/types.js.map +1 -1
  452. package/dist/office/index.d.ts +139 -0
  453. package/dist/office/index.d.ts.map +1 -0
  454. package/dist/office/index.js +1084 -0
  455. package/dist/office/index.js.map +1 -0
  456. package/dist/office/projection.d.ts +42 -0
  457. package/dist/office/projection.d.ts.map +1 -0
  458. package/dist/office/projection.js +182 -0
  459. package/dist/office/projection.js.map +1 -0
  460. package/dist/office/types.d.ts +116 -0
  461. package/dist/office/types.d.ts.map +1 -0
  462. package/dist/office/types.js +2 -0
  463. package/dist/office/types.js.map +1 -0
  464. package/dist/runtime/conversation-runtime.d.ts +1 -1
  465. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  466. package/dist/runtime/conversation-runtime.js +423 -152
  467. package/dist/runtime/conversation-runtime.js.map +1 -1
  468. package/dist/runtime/session-lifecycle.d.ts +76 -0
  469. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  470. package/dist/runtime/session-lifecycle.js +404 -0
  471. package/dist/runtime/session-lifecycle.js.map +1 -0
  472. package/dist/runtime/types.d.ts +63 -15
  473. package/dist/runtime/types.d.ts.map +1 -1
  474. package/dist/runtime/types.js.map +1 -1
  475. package/dist/sandbox/cloudflare.d.ts +4 -0
  476. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  477. package/dist/sandbox/cloudflare.js +54 -52
  478. package/dist/sandbox/cloudflare.js.map +1 -1
  479. package/dist/sandbox/container.d.ts +3 -0
  480. package/dist/sandbox/container.d.ts.map +1 -1
  481. package/dist/sandbox/container.js +19 -7
  482. package/dist/sandbox/container.js.map +1 -1
  483. package/dist/sandbox/host.d.ts +3 -0
  484. package/dist/sandbox/host.d.ts.map +1 -1
  485. package/dist/sandbox/host.js +44 -35
  486. package/dist/sandbox/host.js.map +1 -1
  487. package/dist/sandbox/identity.d.ts +42 -0
  488. package/dist/sandbox/identity.d.ts.map +1 -0
  489. package/dist/sandbox/identity.js +77 -0
  490. package/dist/sandbox/identity.js.map +1 -0
  491. package/dist/sandbox/index.d.ts +24 -6
  492. package/dist/sandbox/index.d.ts.map +1 -1
  493. package/dist/sandbox/index.js +77 -17
  494. package/dist/sandbox/index.js.map +1 -1
  495. package/dist/sandbox/provisioner.d.ts +139 -0
  496. package/dist/sandbox/provisioner.d.ts.map +1 -0
  497. package/dist/{provisioner.js → sandbox/provisioner.js} +378 -24
  498. package/dist/sandbox/provisioner.js.map +1 -0
  499. package/dist/sandbox/types.d.ts +43 -9
  500. package/dist/sandbox/types.d.ts.map +1 -1
  501. package/dist/sandbox/types.js.map +1 -1
  502. package/dist/sandbox/utils.d.ts +24 -0
  503. package/dist/sandbox/utils.d.ts.map +1 -1
  504. package/dist/sandbox/utils.js +92 -1
  505. package/dist/sandbox/utils.js.map +1 -1
  506. package/dist/sessions/chat-history-sync.d.ts +23 -0
  507. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  508. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
  509. package/dist/sessions/chat-history-sync.js.map +1 -0
  510. package/dist/sessions/history-line.d.ts +29 -0
  511. package/dist/sessions/history-line.d.ts.map +1 -0
  512. package/dist/sessions/history-line.js +45 -0
  513. package/dist/sessions/history-line.js.map +1 -0
  514. package/dist/sessions/migrate-common.d.ts +43 -0
  515. package/dist/sessions/migrate-common.d.ts.map +1 -0
  516. package/dist/sessions/migrate-common.js +99 -0
  517. package/dist/sessions/migrate-common.js.map +1 -0
  518. package/dist/sessions/migrate-pi-084.d.ts +8 -0
  519. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  520. package/dist/sessions/migrate-pi-084.js +302 -0
  521. package/dist/sessions/migrate-pi-084.js.map +1 -0
  522. package/dist/sessions/migrate-v3.d.ts +15 -0
  523. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  524. package/dist/sessions/migrate-v3.js +419 -0
  525. package/dist/sessions/migrate-v3.js.map +1 -0
  526. package/dist/sessions/session-key.d.ts +33 -0
  527. package/dist/sessions/session-key.d.ts.map +1 -0
  528. package/dist/sessions/session-key.js +115 -0
  529. package/dist/sessions/session-key.js.map +1 -0
  530. package/dist/sessions/session-store.d.ts +61 -0
  531. package/dist/sessions/session-store.d.ts.map +1 -0
  532. package/dist/sessions/session-store.js +684 -0
  533. package/dist/sessions/session-store.js.map +1 -0
  534. package/dist/sessions/store.d.ts +17 -10
  535. package/dist/sessions/store.d.ts.map +1 -1
  536. package/dist/sessions/store.js +182 -47
  537. package/dist/sessions/store.js.map +1 -1
  538. package/dist/sessions/types.d.ts +74 -8
  539. package/dist/sessions/types.d.ts.map +1 -1
  540. package/dist/sessions/types.js +1 -1
  541. package/dist/sessions/types.js.map +1 -1
  542. package/dist/settings/apply.d.ts +16 -0
  543. package/dist/settings/apply.d.ts.map +1 -0
  544. package/dist/settings/apply.js +60 -0
  545. package/dist/settings/apply.js.map +1 -0
  546. package/dist/settings/index.d.ts +126 -0
  547. package/dist/settings/index.d.ts.map +1 -0
  548. package/dist/settings/index.js +422 -0
  549. package/dist/settings/index.js.map +1 -0
  550. package/dist/settings/migrate.d.ts +21 -0
  551. package/dist/settings/migrate.d.ts.map +1 -0
  552. package/dist/settings/migrate.js +86 -0
  553. package/dist/settings/migrate.js.map +1 -0
  554. package/dist/types.d.ts +330 -141
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +2 -2
  557. package/dist/types.js.map +1 -1
  558. package/dist/vault/index.d.ts +52 -2
  559. package/dist/vault/index.d.ts.map +1 -1
  560. package/dist/vault/index.js +218 -86
  561. package/dist/vault/index.js.map +1 -1
  562. package/dist/vault/types.d.ts +6 -2
  563. package/dist/vault/types.d.ts.map +1 -1
  564. package/dist/vault/types.js.map +1 -1
  565. package/package.json +79 -40
  566. package/dist/adapter.d.ts +0 -2
  567. package/dist/adapter.d.ts.map +0 -1
  568. package/dist/adapter.js +0 -2
  569. package/dist/adapter.js.map +0 -1
  570. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  571. package/dist/adapters/slack/tools/attach.js.map +0 -1
  572. package/dist/adapters/streaming.d.ts +0 -18
  573. package/dist/adapters/streaming.d.ts.map +0 -1
  574. package/dist/adapters/streaming.js +0 -44
  575. package/dist/adapters/streaming.js.map +0 -1
  576. package/dist/adapters/telegram/html.d.ts +0 -3
  577. package/dist/adapters/telegram/html.d.ts.map +0 -1
  578. package/dist/adapters/telegram/html.js +0 -98
  579. package/dist/adapters/telegram/html.js.map +0 -1
  580. package/dist/agent-events.d.ts +0 -5
  581. package/dist/agent-events.d.ts.map +0 -1
  582. package/dist/agent-events.js +0 -26
  583. package/dist/agent-events.js.map +0 -1
  584. package/dist/agent.d.ts +0 -39
  585. package/dist/agent.d.ts.map +0 -1
  586. package/dist/agent.js +0 -1291
  587. package/dist/agent.js.map +0 -1
  588. package/dist/cli/ext-git.d.ts +0 -22
  589. package/dist/cli/ext-git.d.ts.map +0 -1
  590. package/dist/cli/ext-git.js +0 -76
  591. package/dist/cli/ext-git.js.map +0 -1
  592. package/dist/cli/ext.d.ts +0 -2
  593. package/dist/cli/ext.d.ts.map +0 -1
  594. package/dist/cli/ext.js +0 -217
  595. package/dist/cli/ext.js.map +0 -1
  596. package/dist/commands/admin.d.ts.map +0 -1
  597. package/dist/commands/admin.js.map +0 -1
  598. package/dist/commands/auto-reply.d.ts.map +0 -1
  599. package/dist/commands/auto-reply.js +0 -76
  600. package/dist/commands/auto-reply.js.map +0 -1
  601. package/dist/commands/extensions.d.ts +0 -14
  602. package/dist/commands/extensions.d.ts.map +0 -1
  603. package/dist/commands/extensions.js +0 -55
  604. package/dist/commands/extensions.js.map +0 -1
  605. package/dist/commands/login.d.ts +0 -5
  606. package/dist/commands/login.d.ts.map +0 -1
  607. package/dist/commands/login.js +0 -115
  608. package/dist/commands/login.js.map +0 -1
  609. package/dist/commands/model.d.ts +0 -10
  610. package/dist/commands/model.d.ts.map +0 -1
  611. package/dist/commands/model.js +0 -102
  612. package/dist/commands/model.js.map +0 -1
  613. package/dist/commands/new.d.ts.map +0 -1
  614. package/dist/commands/new.js +0 -25
  615. package/dist/commands/new.js.map +0 -1
  616. package/dist/commands/parse.d.ts +0 -7
  617. package/dist/commands/parse.d.ts.map +0 -1
  618. package/dist/commands/parse.js +0 -14
  619. package/dist/commands/parse.js.map +0 -1
  620. package/dist/commands/registry.d.ts +0 -5
  621. package/dist/commands/registry.d.ts.map +0 -1
  622. package/dist/commands/registry.js +0 -31
  623. package/dist/commands/registry.js.map +0 -1
  624. package/dist/commands/sandbox.d.ts.map +0 -1
  625. package/dist/commands/sandbox.js +0 -78
  626. package/dist/commands/sandbox.js.map +0 -1
  627. package/dist/commands/session-view.d.ts.map +0 -1
  628. package/dist/commands/session-view.js.map +0 -1
  629. package/dist/commands/types.d.ts +0 -66
  630. package/dist/commands/types.d.ts.map +0 -1
  631. package/dist/commands/types.js.map +0 -1
  632. package/dist/commands/utils.d.ts +0 -11
  633. package/dist/commands/utils.d.ts.map +0 -1
  634. package/dist/commands/utils.js.map +0 -1
  635. package/dist/config.d.ts +0 -78
  636. package/dist/config.d.ts.map +0 -1
  637. package/dist/config.js +0 -450
  638. package/dist/config.js.map +0 -1
  639. package/dist/download.d.ts.map +0 -1
  640. package/dist/download.js +0 -89
  641. package/dist/download.js.map +0 -1
  642. package/dist/events.d.ts +0 -43
  643. package/dist/events.d.ts.map +0 -1
  644. package/dist/events.js +0 -456
  645. package/dist/events.js.map +0 -1
  646. package/dist/execution-resolver.d.ts +0 -21
  647. package/dist/execution-resolver.d.ts.map +0 -1
  648. package/dist/execution-resolver.js +0 -170
  649. package/dist/execution-resolver.js.map +0 -1
  650. package/dist/harness/auth.d.ts +0 -16
  651. package/dist/harness/auth.d.ts.map +0 -1
  652. package/dist/harness/auth.js +0 -86
  653. package/dist/harness/auth.js.map +0 -1
  654. package/dist/harness/extensions/loader.d.ts +0 -86
  655. package/dist/harness/extensions/loader.d.ts.map +0 -1
  656. package/dist/harness/extensions/loader.js +0 -525
  657. package/dist/harness/extensions/loader.js.map +0 -1
  658. package/dist/harness/extensions/registry.d.ts +0 -23
  659. package/dist/harness/extensions/registry.d.ts.map +0 -1
  660. package/dist/harness/extensions/registry.js +0 -45
  661. package/dist/harness/extensions/registry.js.map +0 -1
  662. package/dist/harness/extensions/types.d.ts +0 -248
  663. package/dist/harness/extensions/types.d.ts.map +0 -1
  664. package/dist/harness/extensions/types.js.map +0 -1
  665. package/dist/harness/session-store.d.ts +0 -77
  666. package/dist/harness/session-store.d.ts.map +0 -1
  667. package/dist/harness/session-store.js +0 -248
  668. package/dist/harness/session-store.js.map +0 -1
  669. package/dist/harness/settings.d.ts +0 -47
  670. package/dist/harness/settings.d.ts.map +0 -1
  671. package/dist/harness/settings.js +0 -29
  672. package/dist/harness/settings.js.map +0 -1
  673. package/dist/model-registry.d.ts +0 -4
  674. package/dist/model-registry.d.ts.map +0 -1
  675. package/dist/model-registry.js +0 -7
  676. package/dist/model-registry.js.map +0 -1
  677. package/dist/platform-messages.d.ts.map +0 -1
  678. package/dist/platform-messages.js.map +0 -1
  679. package/dist/portal-shell.d.ts +0 -4
  680. package/dist/portal-shell.d.ts.map +0 -1
  681. package/dist/portal-shell.js.map +0 -1
  682. package/dist/provisioner.d.ts +0 -61
  683. package/dist/provisioner.d.ts.map +0 -1
  684. package/dist/provisioner.js.map +0 -1
  685. package/dist/runtime/agent-run-controller.d.ts +0 -31
  686. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  687. package/dist/runtime/agent-run-controller.js +0 -195
  688. package/dist/runtime/agent-run-controller.js.map +0 -1
  689. package/dist/sandbox/errors.d.ts +0 -6
  690. package/dist/sandbox/errors.d.ts.map +0 -1
  691. package/dist/sandbox/errors.js +0 -11
  692. package/dist/sandbox/errors.js.map +0 -1
  693. package/dist/sandbox/firecracker.d.ts +0 -15
  694. package/dist/sandbox/firecracker.d.ts.map +0 -1
  695. package/dist/sandbox/firecracker.js +0 -212
  696. package/dist/sandbox/firecracker.js.map +0 -1
  697. package/dist/sandbox/image.d.ts +0 -3
  698. package/dist/sandbox/image.d.ts.map +0 -1
  699. package/dist/sandbox/image.js +0 -27
  700. package/dist/sandbox/image.js.map +0 -1
  701. package/dist/sandbox/path-context.d.ts +0 -3
  702. package/dist/sandbox/path-context.d.ts.map +0 -1
  703. package/dist/sandbox/path-context.js +0 -20
  704. package/dist/sandbox/path-context.js.map +0 -1
  705. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  706. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  707. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  708. package/dist/sessions/metadata.d.ts +0 -3
  709. package/dist/sessions/metadata.d.ts.map +0 -1
  710. package/dist/sessions/metadata.js +0 -11
  711. package/dist/sessions/metadata.js.map +0 -1
  712. package/dist/sessions/policy.d.ts +0 -6
  713. package/dist/sessions/policy.d.ts.map +0 -1
  714. package/dist/sessions/policy.js +0 -23
  715. package/dist/sessions/policy.js.map +0 -1
  716. package/dist/store.d.ts +0 -46
  717. package/dist/store.d.ts.map +0 -1
  718. package/dist/store.js +0 -177
  719. package/dist/store.js.map +0 -1
  720. package/dist/tools/bash.d.ts +0 -10
  721. package/dist/tools/bash.d.ts.map +0 -1
  722. package/dist/tools/bash.js +0 -80
  723. package/dist/tools/bash.js.map +0 -1
  724. package/dist/tools/edit.d.ts +0 -11
  725. package/dist/tools/edit.d.ts.map +0 -1
  726. package/dist/tools/edit.js +0 -131
  727. package/dist/tools/edit.js.map +0 -1
  728. package/dist/tools/event.d.ts.map +0 -1
  729. package/dist/tools/event.js +0 -252
  730. package/dist/tools/event.js.map +0 -1
  731. package/dist/tools/index.d.ts +0 -24
  732. package/dist/tools/index.d.ts.map +0 -1
  733. package/dist/tools/index.js +0 -31
  734. package/dist/tools/index.js.map +0 -1
  735. package/dist/tools/react.d.ts.map +0 -1
  736. package/dist/tools/react.js.map +0 -1
  737. package/dist/tools/read.d.ts +0 -11
  738. package/dist/tools/read.d.ts.map +0 -1
  739. package/dist/tools/read.js +0 -134
  740. package/dist/tools/read.js.map +0 -1
  741. package/dist/tools/sandbox.d.ts.map +0 -1
  742. package/dist/tools/sandbox.js.map +0 -1
  743. package/dist/tools/truncate.d.ts +0 -33
  744. package/dist/tools/truncate.d.ts.map +0 -1
  745. package/dist/tools/truncate.js +0 -184
  746. package/dist/tools/truncate.js.map +0 -1
  747. package/dist/tools/types.d.ts +0 -54
  748. package/dist/tools/types.d.ts.map +0 -1
  749. package/dist/tools/types.js.map +0 -1
  750. package/dist/tools/write.d.ts +0 -10
  751. package/dist/tools/write.d.ts.map +0 -1
  752. package/dist/tools/write.js +0 -29
  753. package/dist/tools/write.js.map +0 -1
  754. package/dist/trigger.d.ts +0 -22
  755. package/dist/trigger.d.ts.map +0 -1
  756. package/dist/trigger.js +0 -100
  757. package/dist/trigger.js.map +0 -1
  758. package/dist/utils/date.d.ts +0 -10
  759. package/dist/utils/date.d.ts.map +0 -1
  760. package/dist/utils/date.js +0 -23
  761. package/dist/utils/date.js.map +0 -1
  762. package/dist/utils/env.d.ts +0 -3
  763. package/dist/utils/env.d.ts.map +0 -1
  764. package/dist/utils/env.js +0 -12
  765. package/dist/utils/env.js.map +0 -1
  766. package/dist/utils/file-guards.d.ts +0 -9
  767. package/dist/utils/file-guards.d.ts.map +0 -1
  768. package/dist/utils/file-guards.js +0 -59
  769. package/dist/utils/file-guards.js.map +0 -1
  770. package/dist/utils/fs-atomic.d.ts +0 -10
  771. package/dist/utils/fs-atomic.d.ts.map +0 -1
  772. package/dist/utils/fs-atomic.js +0 -45
  773. package/dist/utils/fs-atomic.js.map +0 -1
  774. package/dist/utils/html.d.ts +0 -2
  775. package/dist/utils/html.d.ts.map +0 -1
  776. package/dist/utils/html.js +0 -4
  777. package/dist/utils/html.js.map +0 -1
  778. package/dist/utils/http-body.d.ts +0 -10
  779. package/dist/utils/http-body.d.ts.map +0 -1
  780. package/dist/utils/http-body.js +0 -34
  781. package/dist/utils/http-body.js.map +0 -1
  782. package/dist/vault/routing.d.ts +0 -3
  783. package/dist/vault/routing.d.ts.map +0 -1
  784. package/dist/vault/routing.js +0 -13
  785. package/dist/vault/routing.js.map +0 -1
  786. package/dist/web/admin/portal.d.ts +0 -5
  787. package/dist/web/admin/portal.d.ts.map +0 -1
  788. package/dist/web/admin/portal.js +0 -2572
  789. package/dist/web/admin/portal.js.map +0 -1
  790. package/dist/web/admin/provider-models.d.ts.map +0 -1
  791. package/dist/web/admin/provider-models.js.map +0 -1
  792. package/dist/web/admin/store.d.ts +0 -13
  793. package/dist/web/admin/store.d.ts.map +0 -1
  794. package/dist/web/admin/store.js +0 -14
  795. package/dist/web/admin/store.js.map +0 -1
  796. package/dist/web/admin/types.d.ts +0 -30
  797. package/dist/web/admin/types.d.ts.map +0 -1
  798. package/dist/web/admin/types.js.map +0 -1
  799. package/dist/web/agent-events/portal.d.ts +0 -3
  800. package/dist/web/agent-events/portal.d.ts.map +0 -1
  801. package/dist/web/agent-events/portal.js +0 -18
  802. package/dist/web/agent-events/portal.js.map +0 -1
  803. package/dist/web/login/oauth.d.ts +0 -6
  804. package/dist/web/login/oauth.d.ts.map +0 -1
  805. package/dist/web/login/oauth.js.map +0 -1
  806. package/dist/web/login/portal.d.ts.map +0 -1
  807. package/dist/web/login/portal.js.map +0 -1
  808. package/dist/web/login/store.d.ts +0 -8
  809. package/dist/web/login/store.d.ts.map +0 -1
  810. package/dist/web/login/store.js +0 -15
  811. package/dist/web/login/store.js.map +0 -1
  812. package/dist/web/login/types.d.ts.map +0 -1
  813. package/dist/web/login/types.js.map +0 -1
  814. package/dist/web/request.d.ts +0 -3
  815. package/dist/web/request.d.ts.map +0 -1
  816. package/dist/web/request.js +0 -13
  817. package/dist/web/request.js.map +0 -1
  818. package/dist/web/server.d.ts.map +0 -1
  819. package/dist/web/server.js.map +0 -1
  820. package/dist/web/session-view/command.d.ts +0 -4
  821. package/dist/web/session-view/command.d.ts.map +0 -1
  822. package/dist/web/session-view/command.js +0 -7
  823. package/dist/web/session-view/command.js.map +0 -1
  824. package/dist/web/session-view/portal.d.ts +0 -13
  825. package/dist/web/session-view/portal.d.ts.map +0 -1
  826. package/dist/web/session-view/portal.js.map +0 -1
  827. package/dist/web/session-view/service.d.ts +0 -6
  828. package/dist/web/session-view/service.d.ts.map +0 -1
  829. package/dist/web/session-view/service.js +0 -498
  830. package/dist/web/session-view/service.js.map +0 -1
  831. package/dist/web/session-view/store.d.ts +0 -8
  832. package/dist/web/session-view/store.d.ts.map +0 -1
  833. package/dist/web/session-view/store.js +0 -15
  834. package/dist/web/session-view/store.js.map +0 -1
  835. package/dist/web/session-view/types.d.ts.map +0 -1
  836. package/dist/web/session-view/types.js.map +0 -1
  837. package/dist/web/token-store.d.ts.map +0 -1
  838. package/dist/web/token-store.js.map +0 -1
  839. package/dist/web/types.d.ts.map +0 -1
  840. package/dist/web/types.js.map +0 -1
  841. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  842. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  843. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  844. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  845. /package/dist/{commands → adapters/commands}/types.js +0 -0
  846. /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
  847. /package/dist/{tools → adapters/web/admin}/types.js +0 -0
  848. /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
  849. /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
  850. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  851. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  852. /package/dist/{web/session-view → adapters/web}/types.js +0 -0
  853. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  854. /package/dist/{web → cli}/types.js +0 -0
  855. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  856. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
@@ -1,10 +1,14 @@
1
1
  import { ApplicationCommandOptionType, Client, Events, GatewayIntentBits, Partials, } from "discord.js";
2
- import { readFileSync } from "fs";
3
- import { basename, join } from "path";
2
+ import { readFileSync } from "node:fs";
3
+ import { basename } from "node:path";
4
+ import { discordTextPayload } from "./components.js";
5
+ import { createConversationEvent, createConversationMessage, } from "../index.js";
4
6
  import * as log from "../../log.js";
5
- import { resolveChatSessionKey } from "../../sessions/policy.js";
6
- import { formatNothingRunning } from "../../platform-messages.js";
7
- import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, downloadUrlToFile, resolveOnlyScopedStopTarget, resolveStopTarget, withRetry, } from "../shared.js";
7
+ import { createOfficeAddress } from "../../office/index.js";
8
+ import { resolveChatSessionKey } from "../../sessions/session-key.js";
9
+ import { formatNothingRunning } from "../messages.js";
10
+ import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, MessagingIntakeTracker, downloadUrlToFile, resolveOnlyScopedStopTarget, resolveStopTarget, saveIncomingAttachments, shortNameToUnicodeEmoji, withRetry, } from "../shared.js";
11
+ import { COMMAND_MANIFEST } from "../commands/manifest.js";
8
12
  import { processMessageIntake } from "../intake.js";
9
13
  import { createDiscordAdapters } from "./context.js";
10
14
  // discord.js: DiscordAPIError exposes `.status` (HTTP status) and a `.code`.
@@ -25,13 +29,15 @@ const discordRetry = (fn) => withRetry(fn, { isRateLimited: discordIsRateLimited
25
29
  export class DiscordMessagingBot {
26
30
  constructor(handler, config) {
27
31
  this.botUserId = null;
32
+ this.stopped = false;
28
33
  this.queues = new Map();
34
+ this.intake = new MessagingIntakeTracker("Discord");
29
35
  this.startupTime = 0;
30
36
  this.channels = new Map();
31
37
  this.users = new Map();
32
38
  this.handler = handler;
33
39
  this.token = config.token;
34
- this.workingDir = config.workingDir;
40
+ this.workspace = config.workspace;
35
41
  this.client = new Client({
36
42
  intents: [
37
43
  GatewayIntentBits.Guilds,
@@ -46,8 +52,13 @@ export class DiscordMessagingBot {
46
52
  // Public API (implements MessagingBot)
47
53
  // ==========================================================================
48
54
  async start() {
55
+ this.stopped = false;
49
56
  await new Promise((resolve, reject) => {
50
57
  this.client.once(Events.ClientReady, async (readyClient) => {
58
+ if (this.stopped) {
59
+ resolve();
60
+ return;
61
+ }
51
62
  this.botUserId = readyClient.user.id;
52
63
  this.startupTime = Date.now();
53
64
  log.logConnected("Discord");
@@ -55,48 +66,23 @@ export class DiscordMessagingBot {
55
66
  this.loadCachedGuildData();
56
67
  this.setupEventHandlers();
57
68
  try {
58
- await readyClient.application.commands.set([
59
- {
60
- name: "login",
61
- description: "Store credentials in your private vault",
62
- },
63
- {
64
- name: "session",
65
- description: "Open the current session in the web viewer",
66
- },
67
- {
68
- name: "new",
69
- description: "Reset conversation history and start fresh",
70
- },
71
- {
72
- name: "stop",
73
- description: "Stop the current conversation",
74
- },
75
- {
76
- name: "model",
77
- description: "Switch this conversation's LLM model",
78
- options: [
79
- {
80
- name: "model",
81
- description: "provider/model[:thinking], e.g. anthropic/claude-sonnet-4-6:off",
82
- type: ApplicationCommandOptionType.String,
83
- required: false,
84
- },
85
- ],
86
- },
87
- {
88
- name: "sandbox",
89
- description: "Show or temporarily boost this conversation's sandbox limits",
69
+ // Registration derives from the command manifest; routing below
70
+ // handles new/stop natively and the rest through one generic path.
71
+ await readyClient.application.commands.set(COMMAND_MANIFEST.filter((entry) => entry.discord).map((entry) => Object.assign({
72
+ name: entry.name,
73
+ description: entry.description,
74
+ }, entry.arg
75
+ ? {
90
76
  options: [
91
77
  {
92
- name: "action",
93
- description: "Use 'boost' to temporarily apply the configured boost limits",
78
+ name: entry.arg.name,
79
+ description: entry.arg.description,
94
80
  type: ApplicationCommandOptionType.String,
95
- required: false,
81
+ required: entry.arg.required,
96
82
  },
97
83
  ],
98
- },
99
- ]);
84
+ }
85
+ : {})));
100
86
  }
101
87
  catch (err) {
102
88
  log.logWarning("Failed to register Discord slash commands", err instanceof Error ? err.message : String(err));
@@ -107,10 +93,20 @@ export class DiscordMessagingBot {
107
93
  this.client.login(this.token).catch(reject);
108
94
  });
109
95
  }
96
+ async stop() {
97
+ this.stopped = true;
98
+ try {
99
+ this.client.destroy();
100
+ }
101
+ finally {
102
+ await this.intake.close();
103
+ await Promise.all([...this.queues.values()].map((queue) => queue.close()));
104
+ }
105
+ }
110
106
  async postMessage(channel, text) {
111
107
  return discordRetry(async () => {
112
108
  const ch = await this.fetchTextChannel(channel);
113
- const msg = await ch.send(text);
109
+ const msg = await ch.send(discordTextPayload(text));
114
110
  return msg.id;
115
111
  });
116
112
  }
@@ -118,15 +114,18 @@ export class DiscordMessagingBot {
118
114
  await this.updateMessageRaw(channel, ts, text);
119
115
  }
120
116
  async addReaction(channel, messageTs, emoji) {
121
- // Discord uses Unicode emoji directly (e.g. "👀"); accept a bare name too
122
- // but Slack-style short names won't resolve, so pass through as-is.
117
+ // Discord's reaction API takes a Unicode character (or a custom emoji
118
+ // id); the `react` tool and prompt speak Slack-style short names, so
119
+ // translate here rather than push that mapping onto every caller.
123
120
  await discordRetry(async () => {
124
121
  const ch = await this.fetchTextChannel(channel);
125
122
  const msg = await ch.messages.fetch(messageTs);
126
- await msg.react(emoji.replace(/^:|:$/g, ""));
123
+ await msg.react(shortNameToUnicodeEmoji(emoji));
127
124
  });
128
125
  }
129
126
  enqueueEvent(event) {
127
+ if (this.stopped)
128
+ return false;
130
129
  const conversationId = event.conversationId;
131
130
  const queue = this.getQueue(conversationId);
132
131
  if (queue.size() >= 5) {
@@ -134,16 +133,16 @@ export class DiscordMessagingBot {
134
133
  return false;
135
134
  }
136
135
  log.logInfo(`Enqueueing event for ${conversationId}: ${event.text.substring(0, 50)}`);
137
- queue.enqueue(() => {
136
+ return queue.enqueue(() => {
138
137
  const context = createDiscordAdapters(event, this);
139
138
  return this.handler.handleEvent(event, this, context);
140
139
  });
141
- return true;
142
140
  }
143
141
  getMessagingInfo() {
144
142
  return {
145
143
  name: "discord",
146
- formattingGuide: "## Discord Formatting (Markdown)\nBold: **text**, Italic: *text*, Code: `code`, Block: ```language\ncode```\nLinks: [text](url)",
144
+ trustModel: "membership",
145
+ formattingGuide: "## Discord Formatting (Markdown)\nBold: **text**, Italic: *text*, Code: `code`, Block: ```language\ncode```\nLinks: [text](url), Spoiler: ||text||, Headings: # ## ###\nWrite ordinary Markdown, including tables — the adapter converts anything Discord cannot render. Use code blocks for code.",
147
146
  channels: this.getAllChannels(),
148
147
  users: this.getAllUsers(),
149
148
  diagnostics: {
@@ -158,14 +157,14 @@ export class DiscordMessagingBot {
158
157
  return discordRetry(async () => {
159
158
  const ch = await this.fetchTextChannel(channelId);
160
159
  const msg = await ch.messages.fetch(messageId);
161
- await msg.edit(text);
160
+ await msg.edit(discordTextPayload(text));
162
161
  });
163
162
  }
164
163
  async postReply(channelId, replyToId, text) {
165
164
  return discordRetry(async () => {
166
165
  const ch = await this.fetchTextChannel(channelId);
167
166
  const replyTarget = await ch.messages.fetch(replyToId);
168
- const sent = await replyTarget.reply(text);
167
+ const sent = await replyTarget.reply(discordTextPayload(text));
169
168
  return sent.id;
170
169
  });
171
170
  }
@@ -175,7 +174,7 @@ export class DiscordMessagingBot {
175
174
  const thread = await this.client.channels.fetch(threadOrMessageId);
176
175
  if (thread && (thread.isThread() || thread.isTextBased())) {
177
176
  return discordRetry(async () => {
178
- const msg = await thread.send(text);
177
+ const msg = await thread.send(discordTextPayload(text));
179
178
  return msg.id;
180
179
  });
181
180
  }
@@ -215,7 +214,7 @@ export class DiscordMessagingBot {
215
214
  async sendDirectMessage(userId, text) {
216
215
  return discordRetry(async () => {
217
216
  const user = await this.client.users.fetch(userId);
218
- const msg = await user.send(text);
217
+ const msg = await user.send(discordTextPayload(text));
219
218
  return msg.id;
220
219
  });
221
220
  }
@@ -229,54 +228,33 @@ export class DiscordMessagingBot {
229
228
  return Array.from(this.users.values());
230
229
  }
231
230
  logToFile(channelId, entry) {
232
- appendChannelLog(this.workingDir, channelId, entry);
231
+ appendChannelLog(this.workspace.office(createOfficeAddress("discord", channelId)), entry);
233
232
  }
234
233
  logBotResponse(channelId, text, ts) {
235
- appendBotResponseLog(this.workingDir, channelId, text, ts);
234
+ appendBotResponseLog(this.workspace.office(createOfficeAddress("discord", channelId)), text, ts);
236
235
  }
237
236
  /**
238
237
  * Process attachments from a Discord message.
239
238
  * Downloads files before returning so the agent can read them immediately.
240
239
  */
241
- async processAttachments(channelId, attachments, _messageId) {
242
- const downloads = [];
243
- // Discord attachments Collection - iterate over values
240
+ async processAttachments(channelId, attachments) {
241
+ const items = [];
244
242
  for (const attachment of attachments.values()) {
245
243
  if (!attachment.name) {
246
244
  log.logWarning("Discord attachment missing name, skipping", attachment.url);
247
245
  continue;
248
246
  }
249
- const ts = Date.now();
250
- const sanitizedName = attachment.name.replace(/[^a-zA-Z0-9._-]/g, "_");
251
- const filename = `${ts}_${sanitizedName}`;
252
- const localPath = `${channelId}/attachments/${filename}`;
253
- const fullDir = join(this.workingDir, channelId, "attachments");
254
- const result = {
247
+ items.push({
255
248
  name: attachment.name,
256
- localPath,
257
- };
258
- downloads.push(this.downloadAttachment(fullDir, filename, attachment.url)
259
- .then(() => result)
260
- .catch((err) => {
261
- log.logWarning(`Failed to download Discord attachment`, `${filename}: ${err}`);
262
- return null;
263
- }));
264
- }
265
- const results = await Promise.all(downloads);
266
- return results.filter((attachment) => attachment !== null);
267
- }
268
- /**
269
- * Download an attachment from URL to local file
270
- */
271
- async downloadAttachment(dir, filename, url) {
272
- try {
273
- await downloadUrlToFile(url, join(dir, filename));
274
- }
275
- catch (err) {
276
- throw new Error(`Download failed: ${err instanceof Error ? err.message : String(err)}`, {
277
- cause: err,
249
+ download: (destPath) => downloadUrlToFile(attachment.url, destPath),
278
250
  });
279
251
  }
252
+ const office = this.workspace.office(createOfficeAddress("discord", channelId));
253
+ const { saved, failed } = await saveIncomingAttachments(office, items);
254
+ for (const failure of failed) {
255
+ log.logWarning(`Failed to download Discord attachment`, `${failure.name}: ${failure.error}`);
256
+ }
257
+ return saved.map((item) => ({ name: item.original, localPath: item.localPath }));
280
258
  }
281
259
  // ==========================================================================
282
260
  // Private - Event Handlers
@@ -290,16 +268,13 @@ export class DiscordMessagingBot {
290
268
  return queue;
291
269
  }
292
270
  resolveStopTarget(channelId, sessionKey) {
293
- const directTarget = resolveStopTarget({
294
- handler: this.handler,
295
- conversationId: channelId,
296
- sessionKey,
297
- });
271
+ const address = createOfficeAddress("discord", channelId);
272
+ const directTarget = resolveStopTarget({ handler: this.handler, address, sessionKey });
298
273
  if (directTarget)
299
274
  return directTarget;
300
275
  if (sessionKey !== channelId)
301
276
  return null;
302
- return resolveOnlyScopedStopTarget(this.handler, channelId);
277
+ return resolveOnlyScopedStopTarget(this.handler, address);
303
278
  }
304
279
  loadCachedGuildData() {
305
280
  for (const guild of this.client.guilds.cache.values()) {
@@ -346,7 +321,9 @@ export class DiscordMessagingBot {
346
321
  const userName = interaction.user.username;
347
322
  const platform = this.getMessagingInfo();
348
323
  const shouldUseEphemeral = !isDM;
349
- const message = {
324
+ const message = createConversationMessage({
325
+ platform: "discord",
326
+ conversationId,
350
327
  id: interaction.id,
351
328
  sessionKey,
352
329
  conversationKind: isDM ? "direct" : "shared",
@@ -354,7 +331,7 @@ export class DiscordMessagingBot {
354
331
  userName,
355
332
  text: commandText,
356
333
  attachments: [],
357
- };
334
+ });
358
335
  const respondPrivately = async (text, replace = false) => {
359
336
  if (interaction.replied || interaction.deferred) {
360
337
  if (replace) {
@@ -383,189 +360,179 @@ export class DiscordMessagingBot {
383
360
  await respondPrivately(formatted);
384
361
  },
385
362
  setTyping: async () => { },
386
- setWorking: async () => { },
363
+ setWorking: async (working) => {
364
+ if (working && !interaction.replied && !interaction.deferred) {
365
+ await interaction.deferReply({ ephemeral: shouldUseEphemeral });
366
+ }
367
+ },
387
368
  uploadFile: async (filePath, title) => {
388
369
  await this.uploadFile(conversationId, filePath, title);
389
370
  },
390
371
  deleteResponse: async () => { },
391
372
  };
392
- return { message, responder, platform };
373
+ return { address: message.address, message, responder, platform };
393
374
  }
394
375
  setupEventHandlers() {
395
- this.client.on(Events.InteractionCreate, async (interaction) => {
396
- if (!interaction.isChatInputCommand())
397
- return;
398
- if (interaction.commandName !== "login" &&
399
- interaction.commandName !== "session" &&
400
- interaction.commandName !== "new" &&
401
- interaction.commandName !== "stop" &&
402
- interaction.commandName !== "model" &&
403
- interaction.commandName !== "sandbox") {
376
+ this.client.on(Events.InteractionCreate, (interaction) => {
377
+ void this.intake.run(() => this.handleInteractionCreate(interaction));
378
+ });
379
+ this.client.on(Events.MessageCreate, (message) => {
380
+ void this.intake.run(() => this.handleMessageCreate(message));
381
+ });
382
+ }
383
+ async handleInteractionCreate(interaction) {
384
+ if (!interaction.isChatInputCommand())
385
+ return;
386
+ const manifestEntry = COMMAND_MANIFEST.find((entry) => entry.discord && entry.name === interaction.commandName);
387
+ if (!manifestEntry)
388
+ return;
389
+ const isDM = !interaction.inGuild();
390
+ const { conversationId, threadTs } = this.resolveConversationContext({
391
+ channelId: interaction.channelId,
392
+ inGuild: interaction.inGuild(),
393
+ isThread: interaction.channel?.isThread() ?? false,
394
+ parentChannelId: interaction.channel && "parentId" in interaction.channel
395
+ ? interaction.channel.parentId
396
+ : null,
397
+ });
398
+ const sessionKey = resolveChatSessionKey({
399
+ conversationId,
400
+ conversationKind: isDM ? "direct" : "shared",
401
+ messageId: interaction.id,
402
+ persistentTopLevel: true,
403
+ threadTs,
404
+ });
405
+ const commandArg = manifestEntry.arg
406
+ ? interaction.options.getString(manifestEntry.arg.name)?.trim()
407
+ : undefined;
408
+ const commandText = commandArg
409
+ ? `/${interaction.commandName} ${commandArg}`
410
+ : `/${interaction.commandName}`;
411
+ this.logToFile(conversationId, {
412
+ date: new Date(interaction.createdTimestamp).toISOString(),
413
+ ts: interaction.id,
414
+ ...(threadTs ? { threadTs } : {}),
415
+ user: interaction.user.id,
416
+ userName: interaction.user.username,
417
+ text: commandText,
418
+ attachments: [],
419
+ isMessagingBot: false,
420
+ });
421
+ const context = this.createSlashCommandAdapters(interaction, commandText, sessionKey, conversationId);
422
+ try {
423
+ // Magic words are conversation-intake controls, not command handlers;
424
+ // the manifest's metadata routes them (today only `stop`).
425
+ if (manifestEntry.magicWord) {
426
+ const stopTarget = this.resolveStopTarget(conversationId, sessionKey);
427
+ if (stopTarget) {
428
+ await this.handler.handleStop(createOfficeAddress("discord", conversationId), stopTarget, this);
429
+ await context.responder.respond("Stopped the current conversation.");
430
+ }
431
+ else {
432
+ await context.responder.respond(formatNothingRunning("discord"));
433
+ }
404
434
  return;
405
435
  }
406
- const isDM = !interaction.inGuild();
407
- const { conversationId, threadTs } = this.resolveConversationContext({
408
- channelId: interaction.channelId,
409
- inGuild: interaction.inGuild(),
410
- isThread: interaction.channel?.isThread() ?? false,
411
- parentChannelId: interaction.channel && "parentId" in interaction.channel
412
- ? interaction.channel.parentId
413
- : null,
414
- });
415
- const sessionKey = resolveChatSessionKey({
436
+ const event = createConversationEvent({
437
+ platform: "discord",
438
+ type: "dm",
416
439
  conversationId,
417
440
  conversationKind: isDM ? "direct" : "shared",
418
- messageId: interaction.id,
419
- persistentTopLevel: true,
420
- threadTs,
421
- });
422
- const modelOption = interaction.commandName === "model"
423
- ? interaction.options.getString("model")?.trim()
424
- : undefined;
425
- const sandboxAction = interaction.commandName === "sandbox"
426
- ? interaction.options.getString("action")?.trim()
427
- : undefined;
428
- const commandArg = modelOption ?? sandboxAction;
429
- const commandText = commandArg
430
- ? `/${interaction.commandName} ${commandArg}`
431
- : `/${interaction.commandName}`;
432
- this.logToFile(conversationId, {
433
- date: new Date(interaction.createdTimestamp).toISOString(),
434
441
  ts: interaction.id,
435
- ...(threadTs ? { threadTs } : {}),
442
+ thread_ts: threadTs,
443
+ sessionKey,
436
444
  user: interaction.user.id,
437
- userName: interaction.user.username,
438
445
  text: commandText,
439
446
  attachments: [],
440
- isMessagingBot: false,
441
447
  });
442
- const context = this.createSlashCommandAdapters(interaction, commandText, sessionKey, conversationId);
443
- try {
444
- if (interaction.commandName === "new") {
445
- await this.handler.handleNewCommand(sessionKey, conversationId, this);
446
- await context.responder.respond("Started a new conversation.");
447
- return;
448
- }
449
- if (interaction.commandName === "stop") {
450
- const stopTarget = this.resolveStopTarget(conversationId, sessionKey);
451
- if (stopTarget) {
452
- await this.handler.handleStop(stopTarget, conversationId, this);
453
- await context.responder.respond("Stopped the current conversation.");
454
- }
455
- else {
456
- await context.responder.respond(formatNothingRunning("discord"));
457
- }
458
- return;
459
- }
460
- const event = {
461
- type: "dm",
462
- conversationId,
463
- conversationKind: isDM ? "direct" : "shared",
464
- ts: interaction.id,
465
- thread_ts: threadTs,
466
- sessionKey,
467
- user: interaction.user.id,
468
- text: commandText,
469
- attachments: [],
470
- };
471
- await this.handler.handleEvent(event, this, context);
472
- }
473
- catch (err) {
474
- log.logWarning("Discord slash command error", err instanceof Error ? err.message : String(err));
475
- if (!interaction.replied && !interaction.deferred) {
476
- await interaction.reply({
477
- content: `${interaction.commandName} command failed. Please try again later.`,
478
- ephemeral: !isDM,
479
- });
480
- }
448
+ await this.handler.handleEvent(event, this, context);
449
+ }
450
+ catch (err) {
451
+ log.logWarning("Discord slash command error", err instanceof Error ? err.message : String(err));
452
+ if (!interaction.replied && !interaction.deferred) {
453
+ await interaction.reply({
454
+ content: `${interaction.commandName} command failed. Please try again later.`,
455
+ ephemeral: !isDM,
456
+ });
481
457
  }
458
+ }
459
+ }
460
+ async handleMessageCreate(msg) {
461
+ // Skip messages from before startup
462
+ if (msg.createdTimestamp < this.startupTime)
463
+ return;
464
+ // Skip bot messages
465
+ if (msg.author.bot)
466
+ return;
467
+ const isDM = msg.channel.type === 1; // ChannelType.DM = 1
468
+ const isInThread = msg.channel.isThread();
469
+ const referencedMsgId = msg.reference?.messageId;
470
+ const isThreadReply = isInThread || !!referencedMsgId;
471
+ const isMentioned = msg.mentions.users.has(this.botUserId ?? "");
472
+ const addressed = isDM || isMentioned || isThreadReply;
473
+ const { conversationId, threadTs } = this.resolveConversationContext({
474
+ channelId: msg.channelId,
475
+ inGuild: !isDM,
476
+ isThread: isInThread,
477
+ parentChannelId: "parentId" in msg.channel ? msg.channel.parentId : null,
478
+ referencedMsgId,
482
479
  });
483
- this.client.on(Events.MessageCreate, async (msg) => {
484
- // Skip messages from before startup
485
- if (msg.createdTimestamp < this.startupTime)
486
- return;
487
- // Skip bot messages
488
- if (msg.author.bot)
489
- return;
490
- const isDM = msg.channel.type === 1; // ChannelType.DM = 1
491
- const isInThread = msg.channel.isThread();
492
- const referencedMsgId = msg.reference?.messageId;
493
- const isThreadReply = isInThread || !!referencedMsgId;
494
- const isMentioned = msg.mentions.users.has(this.botUserId ?? "");
495
- const isAutoReplyCandidate = !isDM && !isMentioned && !isThreadReply;
496
- const { conversationId, threadTs } = this.resolveConversationContext({
497
- channelId: msg.channelId,
498
- inGuild: !isDM,
499
- isThread: isInThread,
500
- parentChannelId: "parentId" in msg.channel ? msg.channel.parentId : null,
501
- referencedMsgId,
502
- });
503
- const userId = msg.author.id;
504
- const userName = msg.author.username;
505
- const msgId = msg.id;
506
- // Track user
507
- this.users.set(userId, {
508
- id: userId,
509
- userName,
510
- displayName: msg.member?.displayName ?? userName,
511
- });
512
- // Track channel
513
- if (!this.channels.has(conversationId) && "name" in msg.channel) {
514
- const ch = msg.channel;
515
- this.channels.set(conversationId, { id: conversationId, name: ch.name });
516
- }
517
- const conversationKind = isDM ? "direct" : "shared";
518
- const sessionKey = resolveChatSessionKey({
519
- conversationId,
520
- conversationKind,
521
- messageId: msgId,
522
- persistentTopLevel: true,
523
- threadTs,
524
- });
525
- const cleanedText = this.stripMessagingBotMention(msg.content);
526
- const eventBase = {
527
- type: isDM ? "dm" : "mention",
528
- conversationId,
529
- conversationKind,
480
+ const userId = msg.author.id;
481
+ const userName = msg.author.username;
482
+ const msgId = msg.id;
483
+ // Track user
484
+ this.users.set(userId, {
485
+ id: userId,
486
+ userName,
487
+ displayName: msg.member?.displayName ?? userName,
488
+ });
489
+ // Track channel
490
+ if (!this.channels.has(conversationId) && "name" in msg.channel) {
491
+ const ch = msg.channel;
492
+ this.channels.set(conversationId, { id: conversationId, name: ch.name });
493
+ }
494
+ const conversationKind = isDM ? "direct" : "shared";
495
+ const sessionKey = resolveChatSessionKey({
496
+ conversationId,
497
+ conversationKind,
498
+ messageId: msgId,
499
+ persistentTopLevel: true,
500
+ threadTs,
501
+ });
502
+ const cleanedText = this.stripMessagingBotMention(msg.content);
503
+ const eventBase = createConversationEvent({
504
+ platform: "discord",
505
+ type: isDM ? "dm" : "mention",
506
+ conversationId,
507
+ conversationKind,
508
+ ts: msgId,
509
+ thread_ts: threadTs,
510
+ sessionKey,
511
+ user: userId,
512
+ userName,
513
+ text: cleanedText,
514
+ });
515
+ await processMessageIntake({
516
+ eventBase,
517
+ addressed,
518
+ magicWord: { addressed, scopeFallback: "top-level" },
519
+ busyPolicy: "queue",
520
+ logEntryBase: {
521
+ date: msg.createdAt.toISOString(),
530
522
  ts: msgId,
531
- thread_ts: threadTs,
532
- sessionKey,
523
+ ...(!isDM && threadTs ? { threadTs } : {}),
533
524
  user: userId,
534
525
  userName,
535
526
  text: cleanedText,
536
- };
537
- // Handle stop before trigger gate — "stop" should never be auto-reply judged.
538
- if (cleanedText.toLowerCase() === "stop" || cleanedText.toLowerCase() === "/stop") {
539
- const stopTarget = this.resolveStopTarget(conversationId, sessionKey);
540
- if (stopTarget) {
541
- await this.handler.handleStop(stopTarget, conversationId, this);
542
- }
543
- else if (!isAutoReplyCandidate) {
544
- await this.postMessage(conversationId, formatNothingRunning("discord"));
545
- }
546
- return;
547
- }
548
- await processMessageIntake({
549
- eventBase,
550
- workingDir: this.workingDir,
551
- isAutoReplyCandidate,
552
- logEntryBase: {
553
- date: msg.createdAt.toISOString(),
554
- ts: msgId,
555
- ...(!isDM && threadTs ? { threadTs } : {}),
556
- user: userId,
557
- userName,
558
- text: cleanedText,
559
- isMessagingBot: false,
560
- },
561
- log: (entry) => this.logToFile(conversationId, entry),
562
- processAttachments: () => this.processAttachments(conversationId, msg.attachments, msgId),
563
- queueKey: sessionKey,
564
- enqueue: (queueKey, work) => this.getQueue(queueKey).enqueue(work),
565
- handler: this.handler,
566
- bot: this,
567
- createContext: (event) => createDiscordAdapters(event, this),
568
- });
527
+ isMessagingBot: false,
528
+ },
529
+ log: (entry) => this.logToFile(conversationId, entry),
530
+ processAttachments: () => this.processAttachments(conversationId, msg.attachments),
531
+ queueKey: sessionKey,
532
+ enqueue: (queueKey, work) => this.getQueue(queueKey).enqueue(work),
533
+ handler: this.handler,
534
+ bot: this,
535
+ createContext: (event) => createDiscordAdapters(event, this),
569
536
  });
570
537
  }
571
538
  async fetchTextChannel(channelId) {