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

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