@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,8 +1,4 @@
1
- import type { ConversationMessage, ConversationResponder, MessagingInfo } from "../../adapter.js";
1
+ import type { ConversationContext } from "../index.js";
2
2
  import type { TelegramMessagingBot, TelegramEvent } from "./bot.js";
3
- export declare function createTelegramAdapters(event: TelegramEvent, bot: TelegramMessagingBot): {
4
- message: ConversationMessage;
5
- responder: ConversationResponder;
6
- platform: MessagingInfo;
7
- };
3
+ export declare function createTelegramAdapters(event: TelegramEvent, bot: TelegramMessagingBot): ConversationContext;
8
4
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/adapters/telegram/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EAErB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAqCpE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,oBAAoB,GACxB;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,qBAAqB,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;CACzB,CAyOA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/adapters/telegram/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAcpE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,oBAAoB,GACxB,mBAAmB,CAiErB"}
@@ -1,26 +1,11 @@
1
- import * as log from "../../log.js";
2
- import { createChatResponseErrorReporter, formatToolArgs, splitText } from "../shared.js";
3
- import { BufferedResponseStream } from "../streaming.js";
4
- import { sanitizeTelegramHtml } from "./html.js";
5
- const TELEGRAM_FORMATTING_GUIDE = `## Telegram Formatting (HTML mode)
6
- Bold: <b>text</b>, Italic: <i>text</i>, Code: <code>code</code>, Pre: <pre>code</pre>
7
- Links: <a href="url">text</a>
8
- Do NOT use Markdown asterisks or backtick syntax.
9
- Do NOT use <table> tags — they are unsupported. Use <pre> with ASCII art for tables instead.`;
10
- // Telegram message length limit is 4096 chars; 3800 leaves headroom for HTML escapes.
11
- const MAX_LENGTH = 3800;
12
- const formatTelegramContinuation = (partNum) => `(continued ${partNum})`;
13
- async function notifyError(bot, chatId, label, err, report) {
14
- const errMsg = err instanceof Error ? err.message : String(err);
15
- log.logWarning(`Telegram ${label} error`, errMsg);
16
- report?.();
17
- try {
18
- await bot.postPlainMessage(chatId, `⚠️ 發送失敗:${errMsg}`);
19
- }
20
- catch {
21
- // ignore secondary failure
22
- }
23
- }
1
+ import { createConversationMessage } from "../index.js";
2
+ import { deriveSessionKey } from "../../sessions/session-key.js";
3
+ import { createProgressiveRenderer } from "../progressive-renderer.js";
4
+ import { formatToolArgs } from "../shared.js";
5
+ // A rich message allows far more than the 4096 a plain message did; this stays
6
+ // well inside it, and the headroom is now for the continuation marker alone
7
+ // rather than for HTML escapes that no longer happen.
8
+ const MAX_LENGTH = 30000;
24
9
  function formatToolResult(result) {
25
10
  const argsFormatted = formatToolArgs(result.args);
26
11
  const duration = (result.durationMs / 1000).toFixed(1);
@@ -28,186 +13,64 @@ function formatToolResult(result) {
28
13
  return [title, argsFormatted, result.result].filter(Boolean).join("\n\n");
29
14
  }
30
15
  export function createTelegramAdapters(event, bot) {
31
- let messageId = null;
32
- let accumulatedText = "";
33
- let updatePromise = Promise.resolve();
34
- let typingInterval = null;
35
- let typingFailureWarned = false;
36
- function stopTyping() {
37
- if (typingInterval !== null) {
38
- clearInterval(typingInterval);
39
- typingInterval = null;
40
- }
41
- }
42
16
  const conversationId = event.conversationId;
43
17
  const chatId = parseInt(conversationId);
44
18
  const replyToId = event.thread_ts ? parseInt(event.thread_ts) : null;
45
- const message = {
19
+ const message = createConversationMessage({
20
+ platform: "telegram",
21
+ conversationId,
22
+ address: event.address,
46
23
  id: event.ts,
47
- sessionKey: event.sessionKey ?? `${conversationId}:${event.thread_ts ?? event.ts}`,
24
+ sessionKey: deriveSessionKey(event),
48
25
  conversationKind: event.conversationKind,
49
26
  userId: event.user,
50
27
  userName: event.userName,
51
28
  text: event.text,
52
29
  attachments: event.attachments,
53
30
  threadTs: event.thread_ts,
54
- };
55
- const platform = {
56
- name: "telegram",
57
- formattingGuide: TELEGRAM_FORMATTING_GUIDE,
58
- channels: [],
59
- users: [],
60
- };
61
- async function sendContinuation(text) {
62
- await bot.postMessageRaw(chatId, text);
63
- }
64
- async function sendOrUpdate(displayText) {
65
- if (messageId !== null) {
66
- await bot.updateMessage(conversationId, String(messageId), displayText);
67
- }
68
- else if (replyToId !== null) {
69
- messageId = await bot.postReply(chatId, replyToId, displayText);
70
- }
71
- else {
72
- messageId = await bot.postMessageRaw(chatId, displayText);
73
- }
74
- }
75
- const reportResponseError = createChatResponseErrorReporter(() => ({
76
- platform: "telegram",
77
- conversationId,
78
- chatId,
79
- messageId: message.id,
80
- sessionKey: message.sessionKey,
81
- responseMessageId: messageId,
82
- replyToId,
83
- conversationKind: message.conversationKind,
84
- }));
85
- const sendSplitText = async (text, firstPart) => {
86
- const [head, ...tail] = splitText(text, MAX_LENGTH, formatTelegramContinuation);
87
- await firstPart(head);
88
- for (const part of tail) {
89
- await sendContinuation(part);
90
- }
91
- };
92
- const stream = new BufferedResponseStream({
93
- flush: async (text) => {
94
- await sendSplitText(text, sendOrUpdate);
95
- },
96
- finish: async (text) => {
97
- stopTyping();
98
- await sendSplitText(text, sendOrUpdate);
99
- },
100
31
  });
101
- const queueTelegramSend = async (label, work, report) => {
102
- updatePromise = updatePromise.then(async () => {
103
- try {
104
- await work();
105
- }
106
- catch (err) {
107
- await notifyError(bot, chatId, label, err, () => report(err));
108
- }
109
- });
110
- await updatePromise;
111
- };
112
- const responder = {
113
- respond: async (text) => {
114
- await queueTelegramSend("respond", async () => {
115
- const sanitized = sanitizeTelegramHtml(text);
116
- accumulatedText = accumulatedText ? `${accumulatedText}\n${sanitized}` : sanitized;
117
- stream.setText(accumulatedText);
118
- await sendSplitText(accumulatedText, sendOrUpdate);
119
- if (messageId !== null) {
120
- bot.logBotResponse(conversationId, text, String(messageId));
121
- }
122
- }, (err) => reportResponseError(err, "respond", {
123
- phase: messageId ? "update" : "initial_post",
124
- textLength: text.length,
125
- accumulatedLength: accumulatedText.length,
126
- }));
127
- },
128
- appendResponseDelta: async (delta) => {
129
- await queueTelegramSend("appendResponseDelta", async () => {
130
- const sanitized = sanitizeTelegramHtml(delta);
131
- await stream.append(sanitized);
132
- accumulatedText = stream.getText();
133
- if (messageId !== null) {
134
- bot.logBotResponse(conversationId, delta, String(messageId));
135
- }
136
- }, (err) => reportResponseError(err, "respond", {
137
- textLength: delta.length,
138
- accumulatedLength: stream.getText().length,
139
- }));
32
+ // The bot's getMessagingInfo() is the single authority for platform info.
33
+ const platform = bot.getMessagingInfo();
34
+ const { responder } = createProgressiveRenderer({
35
+ label: "Telegram",
36
+ maxLength: MAX_LENGTH,
37
+ formatContinuation: (partNum) => `(continued ${partNum})`,
38
+ errorPrefix: "Error: ",
39
+ supportsDeltas: true,
40
+ typing: {
41
+ // Send immediately and repeat every 4s (Telegram clears indicator after ~5s)
42
+ send: () => bot.sendTyping(chatId),
43
+ intervalMs: 4000,
140
44
  },
141
- finishResponse: async (finalText) => {
142
- await queueTelegramSend("finishResponse", async () => {
143
- await stream.finish(finalText === undefined ? undefined : sanitizeTelegramHtml(finalText));
144
- accumulatedText = stream.getText();
145
- }, (err) => reportResponseError(err, "set_working", {
146
- finalTextLength: finalText?.length,
147
- }));
45
+ formatToolResult,
46
+ responseErrorContext: (responseId) => ({
47
+ platform: "telegram",
48
+ conversationId,
49
+ chatId,
50
+ messageId: message.id,
51
+ sessionKey: message.sessionKey,
52
+ responseMessageId: responseId,
53
+ replyToId,
54
+ conversationKind: message.conversationKind,
55
+ }),
56
+ notifySendFailure: async (errorMessage) => {
57
+ await bot.postPlainMessage(chatId, `⚠️ 發送失敗:${errorMessage}`);
148
58
  },
149
- replaceResponse: async (text) => {
150
- await queueTelegramSend("replaceResponse", async () => {
151
- accumulatedText = sanitizeTelegramHtml(text);
152
- stream.setText(accumulatedText);
153
- await sendSplitText(accumulatedText, sendOrUpdate);
154
- }, (err) => reportResponseError(err, "replace_response", {
155
- textLength: text.length,
156
- hadExistingResponse: Boolean(messageId),
157
- }));
59
+ post: async (text) => {
60
+ const id = replyToId !== null
61
+ ? await bot.postReply(chatId, replyToId, text)
62
+ : await bot.postMessageRaw(chatId, text);
63
+ return String(id);
158
64
  },
159
- respondDiagnostic: async (text, options) => {
160
- await queueTelegramSend("respondDiagnostic", async () => {
161
- const prefix = options?.style === "error" ? "Error: " : "";
162
- await sendSplitText(sanitizeTelegramHtml(`${prefix}${text}`), sendContinuation);
163
- }, (err) => reportResponseError(err, "respond_diagnostic", {
164
- textLength: text.length,
165
- style: options?.style,
166
- }));
167
- },
168
- respondToolResult: async (result) => {
169
- await responder.respondDiagnostic(formatToolResult(result));
170
- },
171
- setTyping: async (isTyping) => {
172
- const onTypingError = (err) => {
173
- if (typingFailureWarned)
174
- return;
175
- typingFailureWarned = true;
176
- log.logWarning("Telegram sendTyping failed (further occurrences suppressed for this session)", err instanceof Error ? err.message : String(err));
177
- };
178
- if (isTyping && typingInterval === null) {
179
- // Send immediately and repeat every 4s (Telegram clears indicator after ~5s)
180
- bot.sendTyping(chatId).catch(onTypingError);
181
- typingInterval = setInterval(() => {
182
- bot.sendTyping(chatId).catch(onTypingError);
183
- }, 4000);
184
- }
185
- else if (!isTyping) {
186
- stopTyping();
187
- }
188
- },
189
- setWorking: async (working) => {
190
- if (!working)
191
- stopTyping();
192
- },
193
- uploadFile: async (filePath, title) => {
194
- await bot.uploadFile(conversationId, filePath, title);
195
- },
196
- deleteResponse: async () => {
197
- updatePromise = updatePromise.then(async () => {
198
- if (messageId !== null) {
199
- try {
200
- await bot.deleteMessageRaw(chatId, messageId);
201
- }
202
- catch {
203
- // Ignore errors
204
- }
205
- messageId = null;
206
- }
207
- });
208
- await updatePromise;
209
- },
210
- };
211
- return { message, responder, platform };
65
+ update: (id, text) => bot.updateMessage(conversationId, id, text),
66
+ // Returns the id so the renderer can edit this overflow message on the
67
+ // next redraw instead of posting another copy of the tail.
68
+ postExtra: (text) => bot.postMessageRaw(chatId, text),
69
+ delete: (id) => bot.deleteMessageRaw(chatId, Number(id)),
70
+ logBotResponse: (text, id) => bot.logBotResponse(conversationId, text, id),
71
+ uploadFile: (filePath, title) => bot.uploadFile(conversationId, filePath, title),
72
+ react: (emoji) => bot.addReaction(conversationId, event.ts, emoji),
73
+ });
74
+ return { address: message.address, message, responder, platform };
212
75
  }
213
76
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/adapters/telegram/context.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ConversationMessage,\n ConversationResponder,\n ChatToolResult,\n MessagingInfo,\n} from \"../../adapter.js\";\nimport * as log from \"../../log.js\";\nimport { createChatResponseErrorReporter, formatToolArgs, splitText } from \"../shared.js\";\nimport { BufferedResponseStream } from \"../streaming.js\";\nimport { sanitizeTelegramHtml } from \"./html.js\";\nimport type { TelegramMessagingBot, TelegramEvent } from \"./bot.js\";\n\nconst TELEGRAM_FORMATTING_GUIDE = `## Telegram Formatting (HTML mode)\nBold: <b>text</b>, Italic: <i>text</i>, Code: <code>code</code>, Pre: <pre>code</pre>\nLinks: <a href=\"url\">text</a>\nDo NOT use Markdown asterisks or backtick syntax.\nDo NOT use <table> tags — they are unsupported. Use <pre> with ASCII art for tables instead.`;\n\n// Telegram message length limit is 4096 chars; 3800 leaves headroom for HTML escapes.\nconst MAX_LENGTH = 3800;\n\nconst formatTelegramContinuation = (partNum: number): string => `(continued ${partNum})`;\n\nasync function notifyError(\n bot: TelegramMessagingBot,\n chatId: number,\n label: string,\n err: unknown,\n report?: () => void,\n): Promise<void> {\n const errMsg = err instanceof Error ? err.message : String(err);\n log.logWarning(`Telegram ${label} error`, errMsg);\n report?.();\n try {\n await bot.postPlainMessage(chatId, `⚠️ 發送失敗:${errMsg}`);\n } catch {\n // ignore secondary failure\n }\n}\n\nfunction formatToolResult(result: ChatToolResult): string {\n const argsFormatted = formatToolArgs(result.args);\n const duration = (result.durationMs / 1000).toFixed(1);\n const title = `${result.isError ? \"Error\" : \"Done\"} ${result.toolName}${result.label ? `: ${result.label}` : \"\"} (${duration}s)`;\n return [title, argsFormatted, result.result].filter(Boolean).join(\"\\n\\n\");\n}\n\nexport function createTelegramAdapters(\n event: TelegramEvent,\n bot: TelegramMessagingBot,\n): {\n message: ConversationMessage;\n responder: ConversationResponder;\n platform: MessagingInfo;\n} {\n let messageId: number | null = null;\n let accumulatedText = \"\";\n let updatePromise = Promise.resolve();\n let typingInterval: ReturnType<typeof setInterval> | null = null;\n let typingFailureWarned = false;\n\n function stopTyping() {\n if (typingInterval !== null) {\n clearInterval(typingInterval);\n typingInterval = null;\n }\n }\n\n const conversationId = event.conversationId;\n const chatId = parseInt(conversationId);\n const replyToId = event.thread_ts ? parseInt(event.thread_ts) : null;\n\n const message: ConversationMessage = {\n id: event.ts,\n sessionKey: event.sessionKey ?? `${conversationId}:${event.thread_ts ?? event.ts}`,\n conversationKind: event.conversationKind,\n userId: event.user,\n userName: event.userName,\n text: event.text,\n attachments: event.attachments,\n threadTs: event.thread_ts,\n };\n\n const platform: MessagingInfo = {\n name: \"telegram\",\n formattingGuide: TELEGRAM_FORMATTING_GUIDE,\n channels: [],\n users: [],\n };\n\n async function sendContinuation(text: string): Promise<void> {\n await bot.postMessageRaw(chatId, text);\n }\n\n async function sendOrUpdate(displayText: string): Promise<void> {\n if (messageId !== null) {\n await bot.updateMessage(conversationId, String(messageId), displayText);\n } else if (replyToId !== null) {\n messageId = await bot.postReply(chatId, replyToId, displayText);\n } else {\n messageId = await bot.postMessageRaw(chatId, displayText);\n }\n }\n\n const reportResponseError = createChatResponseErrorReporter(() => ({\n platform: \"telegram\",\n conversationId,\n chatId,\n messageId: message.id,\n sessionKey: message.sessionKey,\n responseMessageId: messageId,\n replyToId,\n conversationKind: message.conversationKind,\n }));\n\n const sendSplitText = async (\n text: string,\n firstPart: (part: string) => Promise<void>,\n ): Promise<void> => {\n const [head, ...tail] = splitText(text, MAX_LENGTH, formatTelegramContinuation);\n await firstPart(head);\n for (const part of tail) {\n await sendContinuation(part);\n }\n };\n\n const stream = new BufferedResponseStream({\n flush: async (text) => {\n await sendSplitText(text, sendOrUpdate);\n },\n finish: async (text) => {\n stopTyping();\n await sendSplitText(text, sendOrUpdate);\n },\n });\n\n const queueTelegramSend = async (\n label: string,\n work: () => Promise<void>,\n report: (err: unknown) => void,\n ): Promise<void> => {\n updatePromise = updatePromise.then(async () => {\n try {\n await work();\n } catch (err) {\n await notifyError(bot, chatId, label, err, () => report(err));\n }\n });\n await updatePromise;\n };\n\n const responder: ConversationResponder = {\n respond: async (text: string) => {\n await queueTelegramSend(\n \"respond\",\n async () => {\n const sanitized = sanitizeTelegramHtml(text);\n accumulatedText = accumulatedText ? `${accumulatedText}\\n${sanitized}` : sanitized;\n stream.setText(accumulatedText);\n await sendSplitText(accumulatedText, sendOrUpdate);\n if (messageId !== null) {\n bot.logBotResponse(conversationId, text, String(messageId));\n }\n },\n (err) =>\n reportResponseError(err, \"respond\", {\n phase: messageId ? \"update\" : \"initial_post\",\n textLength: text.length,\n accumulatedLength: accumulatedText.length,\n }),\n );\n },\n\n appendResponseDelta: async (delta: string) => {\n await queueTelegramSend(\n \"appendResponseDelta\",\n async () => {\n const sanitized = sanitizeTelegramHtml(delta);\n await stream.append(sanitized);\n accumulatedText = stream.getText();\n if (messageId !== null) {\n bot.logBotResponse(conversationId, delta, String(messageId));\n }\n },\n (err) =>\n reportResponseError(err, \"respond\", {\n textLength: delta.length,\n accumulatedLength: stream.getText().length,\n }),\n );\n },\n\n finishResponse: async (finalText?: string) => {\n await queueTelegramSend(\n \"finishResponse\",\n async () => {\n await stream.finish(\n finalText === undefined ? undefined : sanitizeTelegramHtml(finalText),\n );\n accumulatedText = stream.getText();\n },\n (err) =>\n reportResponseError(err, \"set_working\", {\n finalTextLength: finalText?.length,\n }),\n );\n },\n\n replaceResponse: async (text: string) => {\n await queueTelegramSend(\n \"replaceResponse\",\n async () => {\n accumulatedText = sanitizeTelegramHtml(text);\n stream.setText(accumulatedText);\n await sendSplitText(accumulatedText, sendOrUpdate);\n },\n (err) =>\n reportResponseError(err, \"replace_response\", {\n textLength: text.length,\n hadExistingResponse: Boolean(messageId),\n }),\n );\n },\n\n respondDiagnostic: async (text: string, options?: { style?: \"muted\" | \"error\" }) => {\n await queueTelegramSend(\n \"respondDiagnostic\",\n async () => {\n const prefix = options?.style === \"error\" ? \"Error: \" : \"\";\n await sendSplitText(sanitizeTelegramHtml(`${prefix}${text}`), sendContinuation);\n },\n (err) =>\n reportResponseError(err, \"respond_diagnostic\", {\n textLength: text.length,\n style: options?.style,\n }),\n );\n },\n\n respondToolResult: async (result: ChatToolResult) => {\n await responder.respondDiagnostic(formatToolResult(result));\n },\n\n setTyping: async (isTyping: boolean) => {\n const onTypingError = (err: unknown): void => {\n if (typingFailureWarned) return;\n typingFailureWarned = true;\n log.logWarning(\n \"Telegram sendTyping failed (further occurrences suppressed for this session)\",\n err instanceof Error ? err.message : String(err),\n );\n };\n if (isTyping && typingInterval === null) {\n // Send immediately and repeat every 4s (Telegram clears indicator after ~5s)\n bot.sendTyping(chatId).catch(onTypingError);\n typingInterval = setInterval(() => {\n bot.sendTyping(chatId).catch(onTypingError);\n }, 4000);\n } else if (!isTyping) {\n stopTyping();\n }\n },\n\n setWorking: async (working: boolean) => {\n if (!working) stopTyping();\n },\n\n uploadFile: async (filePath: string, title?: string) => {\n await bot.uploadFile(conversationId, filePath, title);\n },\n\n deleteResponse: async () => {\n updatePromise = updatePromise.then(async () => {\n if (messageId !== null) {\n try {\n await bot.deleteMessageRaw(chatId, messageId);\n } catch {\n // Ignore errors\n }\n messageId = null;\n }\n });\n await updatePromise;\n },\n };\n\n return { message, responder, platform };\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/adapters/telegram/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { createConversationMessage } from \"../index.js\";\nimport type { ChatToolResult, ConversationContext } from \"../index.js\";\nimport { deriveSessionKey } from \"../../sessions/session-key.js\";\nimport { createProgressiveRenderer } from \"../progressive-renderer.js\";\nimport { formatToolArgs } from \"../shared.js\";\nimport type { TelegramMessagingBot, TelegramEvent } from \"./bot.js\";\n\n// A rich message allows far more than the 4096 a plain message did; this stays\n// well inside it, and the headroom is now for the continuation marker alone\n// rather than for HTML escapes that no longer happen.\nconst MAX_LENGTH = 30000;\n\nfunction formatToolResult(result: ChatToolResult): string {\n const argsFormatted = formatToolArgs(result.args);\n const duration = (result.durationMs / 1000).toFixed(1);\n const title = `${result.isError ? \"Error\" : \"Done\"} ${result.toolName}${result.label ? `: ${result.label}` : \"\"} (${duration}s)`;\n return [title, argsFormatted, result.result].filter(Boolean).join(\"\\n\\n\");\n}\n\nexport function createTelegramAdapters(\n event: TelegramEvent,\n bot: TelegramMessagingBot,\n): ConversationContext {\n const conversationId = event.conversationId;\n const chatId = parseInt(conversationId);\n const replyToId = event.thread_ts ? parseInt(event.thread_ts) : null;\n\n const message = createConversationMessage({\n platform: \"telegram\",\n conversationId,\n address: event.address,\n id: event.ts,\n sessionKey: deriveSessionKey(event),\n conversationKind: event.conversationKind,\n userId: event.user,\n userName: event.userName,\n text: event.text,\n attachments: event.attachments,\n threadTs: event.thread_ts,\n });\n\n // The bot's getMessagingInfo() is the single authority for platform info.\n const platform = bot.getMessagingInfo();\n\n const { responder } = createProgressiveRenderer({\n label: \"Telegram\",\n maxLength: MAX_LENGTH,\n formatContinuation: (partNum: number): string => `(continued ${partNum})`,\n errorPrefix: \"Error: \",\n supportsDeltas: true,\n typing: {\n // Send immediately and repeat every 4s (Telegram clears indicator after ~5s)\n send: () => bot.sendTyping(chatId),\n intervalMs: 4000,\n },\n formatToolResult,\n responseErrorContext: (responseId) => ({\n platform: \"telegram\",\n conversationId,\n chatId,\n messageId: message.id,\n sessionKey: message.sessionKey,\n responseMessageId: responseId,\n replyToId,\n conversationKind: message.conversationKind,\n }),\n notifySendFailure: async (errorMessage) => {\n await bot.postPlainMessage(chatId, `⚠️ 發送失敗:${errorMessage}`);\n },\n post: async (text) => {\n const id =\n replyToId !== null\n ? await bot.postReply(chatId, replyToId, text)\n : await bot.postMessageRaw(chatId, text);\n return String(id);\n },\n update: (id, text) => bot.updateMessage(conversationId, id, text),\n // Returns the id so the renderer can edit this overflow message on the\n // next redraw instead of posting another copy of the tail.\n postExtra: (text) => bot.postMessageRaw(chatId, text),\n delete: (id) => bot.deleteMessageRaw(chatId, Number(id)),\n logBotResponse: (text, id) => bot.logBotResponse(conversationId, text, id),\n uploadFile: (filePath, title) => bot.uploadFile(conversationId, filePath, title),\n react: (emoji) => bot.addReaction(conversationId, event.ts, emoji),\n });\n\n return { address: message.address, message, responder, platform };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ConversationEvent } from "../../adapter.js";
1
+ import type { ConversationEvent } from "../index.js";
2
2
  export interface TelegramEvent extends ConversationEvent {
3
3
  type: "message" | "command";
4
4
  userName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/telegram/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/telegram/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/telegram/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ConversationEvent } from \"../../adapter.js\";\n\nexport interface TelegramEvent extends ConversationEvent {\n type: \"message\" | \"command\";\n userName?: string;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/telegram/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ConversationEvent } from \"../index.js\";\n\nexport interface TelegramEvent extends ConversationEvent {\n type: \"message\" | \"command\";\n userName?: string;\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { MessagingBot, ConversationContext, ConversationEvent, MessagingEventHandler } from "../adapter.js";
1
+ import type { ChatToolResult, MessagingBot, ConversationContext, ConversationEvent, MessagingEventHandler, OfficeAddress, SubagentProgressSnapshot } from "./index.js";
2
+ import type { Attachment } from "../types.js";
2
3
  export type ChatResponseErrorOperation = "respond" | "replace_response" | "respond_diagnostic" | "set_working";
3
4
  export interface ChatResponseErrorContext {
4
5
  platform: string;
@@ -26,23 +27,147 @@ export interface RetryOptions {
26
27
  }
27
28
  export interface ResolveStopTargetInput {
28
29
  handler: MessagingEventHandler;
29
- conversationId: string;
30
+ /** The office whose runtime state may be stopped. */
31
+ address: OfficeAddress;
30
32
  /** Session key derived from the current message; checked first when present. */
31
33
  sessionKey?: string;
32
34
  }
33
- export interface BufferedResponseStreamOptions {
34
- minFlushIntervalMs?: number;
35
- minFlushChars?: number;
36
- now?: () => number;
35
+ export interface HandleTooLongInput {
36
+ text: string;
37
+ operation: "render" | "replace";
38
+ options: {
39
+ createOverflowLink?: () => string;
40
+ } | undefined;
41
+ responseId: string | null;
42
+ write: (text: string) => Promise<void>;
43
+ getResponseId: () => string | null;
44
+ }
45
+ interface ProgressiveStreamTransport {
46
+ start(text: string): Promise<string>;
47
+ append(messageId: string, delta: string): Promise<void>;
48
+ stop(messageId: string): Promise<void>;
49
+ /**
50
+ * Withhold an append until this many characters have accumulated. A
51
+ * streaming transport is usually rate-limited per call rather than per byte,
52
+ * so forwarding every token spends the budget on latency nobody perceives.
53
+ * The final render flushes whatever is left before stopping, so buffering
54
+ * can never drop text. Omit for no buffering.
55
+ */
56
+ minDeltaChars?: number;
57
+ }
58
+ export interface ProgressiveRendererPlatform {
59
+ label: string;
60
+ maxLength: number;
61
+ /**
62
+ * Shortest gap between redraws of a streaming response, measured from the
63
+ * end of the previous one. Platforms meter edits per channel at different
64
+ * rates; the default suits the tightest of them. Zero redraws on every
65
+ * delta, which only a platform with no such limit can afford.
66
+ */
67
+ flushIntervalMs?: number;
68
+ initialResponseId?: string | null;
69
+ formatContinuation: (partNum: number) => string;
70
+ errorPrefix: string;
71
+ sanitize?: (text: string) => string;
72
+ workingIndicator?: string;
73
+ formatProvisional?: (text: string, working: boolean) => string;
74
+ prepareSource?: (text: string, working: boolean) => string;
75
+ onWorkingChanged?: (working: boolean, responseId: string | null) => Promise<void>;
76
+ setTyping?: (isTyping: boolean, responseId: string | null) => Promise<void>;
77
+ /** Terminal hook. Awaited, so it may finish sending before the run ends. */
78
+ onFinish?: (text: string, responseId: string | null) => void | Promise<void>;
79
+ /** Whether `respond` calls are complete messages that should be logged immediately. */
80
+ logIntermediateResponses?: boolean;
81
+ /** Whether the platform accepts incremental response deltas. */
82
+ supportsDeltas?: boolean;
83
+ /** Native stream operations, when this reply target supports them. */
84
+ stream?: ProgressiveStreamTransport;
85
+ /** Re-render a finished response when the provisional stream lacked structure. */
86
+ needsCanonicalRender?: (text: string) => boolean;
87
+ formatSubagentProgress?: (progress: SubagentProgressSnapshot) => string;
88
+ typing?: {
89
+ send: () => Promise<unknown>;
90
+ intervalMs: number;
91
+ stopOnSend?: boolean;
92
+ };
93
+ formatToolResult: (result: ChatToolResult) => string;
94
+ /** Stable platform context plus the current response identity for error reporting. */
95
+ responseErrorContext?: (responseId: string | null) => Omit<ChatResponseErrorContext, "operation" | "extra">;
96
+ notifySendFailure?: (errorMessage: string) => Promise<void>;
97
+ post: (text: string) => Promise<string>;
98
+ update: (id: string, text: string) => Promise<void>;
99
+ postExtra: (text: string, responseId: string | null) => Promise<string | number | void>;
100
+ postDiagnostic?: (text: string, options: {
101
+ style?: "muted" | "error";
102
+ }, responseId: string | null) => Promise<Array<string | number>>;
103
+ delete?: (id: string) => Promise<void>;
104
+ deleteExtra?: (id: string | number) => Promise<void>;
105
+ logBotResponse?: (text: string, id: string) => void;
106
+ uploadFile?: (filePath: string, title?: string) => Promise<void>;
107
+ uploadFallbackNote?: (name: string) => string;
108
+ react?: (emoji: string) => Promise<void>;
109
+ /**
110
+ * Whether a send failure is a length rejection, as opposed to a rate limit
111
+ * or an outage. Without this the fallback swallows every error, so a
112
+ * transient 429 gets reported to the reader as "message too long" and the
113
+ * response is truncated for no reason.
114
+ */
115
+ isTooLongError?: (err: unknown) => boolean;
116
+ /** Handle a Slack-style length rejection and return the canonical fallback text. */
117
+ handleTooLong?: (input: HandleTooLongInput) => Promise<{
118
+ text: string;
119
+ prefixLength?: number;
120
+ }>;
37
121
  }
38
- export interface BufferedResponseStreamSink {
39
- flush(text: string): Promise<void>;
40
- finish(text: string): Promise<void>;
122
+ /** How intake resolved a message. Callers branch on this instead of passing callbacks. */
123
+ export type MessageIntakeOutcome = "magic-word" | "not-triggered" | "rejected-busy" | "enqueued";
124
+ /** Platform policy for the magic-word step, stated as data. */
125
+ export interface MagicWordIntakeOptions {
126
+ /**
127
+ * Raw user-typed text to match when `eventBase.text` is decorated for the
128
+ * agent (e.g. GitHub review-comment framing). Defaults to `eventBase.text`.
129
+ */
130
+ text?: string;
131
+ /**
132
+ * Whether the message addressed the bot (mention, DM, slash form). The idle
133
+ * "Nothing running." reply is suppressed for unaddressed messages.
134
+ */
135
+ addressed: boolean;
136
+ /**
137
+ * How far a stop may widen when the direct session key is not running:
138
+ * "top-level" widens to the single running scoped session only from the
139
+ * persistent conversation session, "always" widens unconditionally,
140
+ * "never" stops only exact matches.
141
+ */
142
+ scopeFallback: "top-level" | "always" | "never";
143
+ }
144
+ /** One platform file to save into an office's attachments directory. */
145
+ export interface IncomingAttachment {
146
+ /** Original file name as the platform reports it. */
147
+ name: string;
148
+ /** Epoch ms used in the stored filename; defaults to the time of saving. */
149
+ timestampMs?: number;
150
+ /** Fetch the file and write it to destPath (the parent directory exists). */
151
+ download(destPath: string): Promise<void>;
152
+ }
153
+ /** Outcome of saving incoming attachments; error policy stays with the adapter. */
154
+ export interface SavedAttachments {
155
+ saved: Attachment[];
156
+ failed: {
157
+ name: string;
158
+ error: unknown;
159
+ }[];
41
160
  }
42
161
  export interface MessageIntakeOptions<TEvent extends ConversationEvent> {
43
162
  eventBase: TEvent;
44
- workingDir: string | undefined;
45
- isAutoReplyCandidate: boolean;
163
+ /** Explicit DM, mention, command or supported thread continuation. */
164
+ addressed: boolean;
165
+ magicWord: MagicWordIntakeOptions;
166
+ /**
167
+ * "reject" bounces a new message while its session is already running
168
+ * (with an "Already working" reply); "queue" lines it up behind the run.
169
+ */
170
+ busyPolicy: "queue" | "reject";
46
171
  logEntryBase: Record<string, unknown>;
47
172
  log?: (entry: Record<string, unknown>) => void;
48
173
  processAttachments: () => Promise<unknown[]>;
@@ -51,8 +176,14 @@ export interface MessageIntakeOptions<TEvent extends ConversationEvent> {
51
176
  handler: MessagingEventHandler;
52
177
  bot: MessagingBot;
53
178
  createContext: (event: TEvent) => ConversationContext;
54
- beforeEnqueue?: (event: TEvent) => Promise<boolean> | boolean;
55
- onNotTriggered?: () => void;
56
179
  deferAttachmentsUntilRun?: boolean;
57
180
  }
181
+ export interface MarkdownTable {
182
+ headers: string[];
183
+ rows: string[][];
184
+ /** Source line span, so a caller can slice the prose around it. */
185
+ startLine: number;
186
+ endLine: number;
187
+ }
188
+ export {};
58
189
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n MessagingBot,\n ConversationContext,\n ConversationEvent,\n MessagingEventHandler,\n} from \"../adapter.js\";\n\nexport type ChatResponseErrorOperation =\n | \"respond\"\n | \"replace_response\"\n | \"respond_diagnostic\"\n | \"set_working\";\n\nexport interface ChatResponseErrorContext {\n platform: string;\n conversationId: string;\n messageId: string;\n sessionKey: string;\n conversationKind: string;\n operation: ChatResponseErrorOperation;\n channelId?: string;\n chatId?: number;\n responseMessageId?: string | number | null;\n threadTs?: string;\n replyTargetId?: string;\n replyToId?: number | null;\n isThreaded?: boolean;\n extra?: Record<string, unknown>;\n}\n\nexport type ChatResponseErrorReporter = (\n err: unknown,\n operation: ChatResponseErrorOperation,\n extra?: Record<string, unknown>,\n) => void;\n\nexport interface RetryOptions {\n /** Predicate that returns true when an error is worth retrying (rate limit, transient 5xx, etc.). */\n isRateLimited: (err: Error) => boolean;\n /** Total attempts including the first call. */\n maxAttempts?: number;\n baseDelayMs?: number;\n}\n\nexport interface ResolveStopTargetInput {\n handler: MessagingEventHandler;\n conversationId: string;\n /** Session key derived from the current message; checked first when present. */\n sessionKey?: string;\n}\n\nexport interface BufferedResponseStreamOptions {\n minFlushIntervalMs?: number;\n minFlushChars?: number;\n now?: () => number;\n}\n\nexport interface BufferedResponseStreamSink {\n flush(text: string): Promise<void>;\n finish(text: string): Promise<void>;\n}\n\nexport interface MessageIntakeOptions<TEvent extends ConversationEvent> {\n eventBase: TEvent;\n workingDir: string | undefined;\n isAutoReplyCandidate: boolean;\n logEntryBase: Record<string, unknown>;\n log?: (entry: Record<string, unknown>) => void;\n processAttachments: () => Promise<unknown[]>;\n queueKey: string;\n enqueue: (queueKey: string, work: () => Promise<void>) => void;\n handler: MessagingEventHandler;\n bot: MessagingBot;\n createContext: (event: TEvent) => ConversationContext;\n beforeEnqueue?: (event: TEvent) => Promise<boolean> | boolean;\n onNotTriggered?: () => void;\n deferAttachmentsUntilRun?: boolean;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ChatToolResult,\n MessagingBot,\n ConversationContext,\n ConversationEvent,\n MessagingEventHandler,\n OfficeAddress,\n SubagentProgressSnapshot,\n} from \"./index.js\";\nimport type { Attachment } from \"../types.js\";\n\nexport type ChatResponseErrorOperation =\n | \"respond\"\n | \"replace_response\"\n | \"respond_diagnostic\"\n | \"set_working\";\n\nexport interface ChatResponseErrorContext {\n platform: string;\n conversationId: string;\n messageId: string;\n sessionKey: string;\n conversationKind: string;\n operation: ChatResponseErrorOperation;\n channelId?: string;\n chatId?: number;\n responseMessageId?: string | number | null;\n threadTs?: string;\n replyTargetId?: string;\n replyToId?: number | null;\n isThreaded?: boolean;\n extra?: Record<string, unknown>;\n}\n\nexport type ChatResponseErrorReporter = (\n err: unknown,\n operation: ChatResponseErrorOperation,\n extra?: Record<string, unknown>,\n) => void;\n\nexport interface RetryOptions {\n /** Predicate that returns true when an error is worth retrying (rate limit, transient 5xx, etc.). */\n isRateLimited: (err: Error) => boolean;\n /** Total attempts including the first call. */\n maxAttempts?: number;\n baseDelayMs?: number;\n}\n\nexport interface ResolveStopTargetInput {\n handler: MessagingEventHandler;\n /** The office whose runtime state may be stopped. */\n address: OfficeAddress;\n /** Session key derived from the current message; checked first when present. */\n sessionKey?: string;\n}\n\nexport interface HandleTooLongInput {\n text: string;\n operation: \"render\" | \"replace\";\n options: { createOverflowLink?: () => string } | undefined;\n responseId: string | null;\n write: (text: string) => Promise<void>;\n getResponseId: () => string | null;\n}\n\ninterface ProgressiveStreamTransport {\n start(text: string): Promise<string>;\n append(messageId: string, delta: string): Promise<void>;\n stop(messageId: string): Promise<void>;\n /**\n * Withhold an append until this many characters have accumulated. A\n * streaming transport is usually rate-limited per call rather than per byte,\n * so forwarding every token spends the budget on latency nobody perceives.\n * The final render flushes whatever is left before stopping, so buffering\n * can never drop text. Omit for no buffering.\n */\n minDeltaChars?: number;\n}\n\nexport interface ProgressiveRendererPlatform {\n label: string;\n maxLength: number;\n /**\n * Shortest gap between redraws of a streaming response, measured from the\n * end of the previous one. Platforms meter edits per channel at different\n * rates; the default suits the tightest of them. Zero redraws on every\n * delta, which only a platform with no such limit can afford.\n */\n flushIntervalMs?: number;\n initialResponseId?: string | null;\n formatContinuation: (partNum: number) => string;\n errorPrefix: string;\n sanitize?: (text: string) => string;\n workingIndicator?: string;\n formatProvisional?: (text: string, working: boolean) => string;\n prepareSource?: (text: string, working: boolean) => string;\n onWorkingChanged?: (working: boolean, responseId: string | null) => Promise<void>;\n setTyping?: (isTyping: boolean, responseId: string | null) => Promise<void>;\n /** Terminal hook. Awaited, so it may finish sending before the run ends. */\n onFinish?: (text: string, responseId: string | null) => void | Promise<void>;\n /** Whether `respond` calls are complete messages that should be logged immediately. */\n logIntermediateResponses?: boolean;\n /** Whether the platform accepts incremental response deltas. */\n supportsDeltas?: boolean;\n /** Native stream operations, when this reply target supports them. */\n stream?: ProgressiveStreamTransport;\n /** Re-render a finished response when the provisional stream lacked structure. */\n needsCanonicalRender?: (text: string) => boolean;\n formatSubagentProgress?: (progress: SubagentProgressSnapshot) => string;\n typing?: {\n send: () => Promise<unknown>;\n intervalMs: number;\n stopOnSend?: boolean;\n };\n formatToolResult: (result: ChatToolResult) => string;\n /** Stable platform context plus the current response identity for error reporting. */\n responseErrorContext?: (\n responseId: string | null,\n ) => Omit<ChatResponseErrorContext, \"operation\" | \"extra\">;\n notifySendFailure?: (errorMessage: string) => Promise<void>;\n post: (text: string) => Promise<string>;\n update: (id: string, text: string) => Promise<void>;\n postExtra: (text: string, responseId: string | null) => Promise<string | number | void>;\n postDiagnostic?: (\n text: string,\n options: { style?: \"muted\" | \"error\" },\n responseId: string | null,\n ) => Promise<Array<string | number>>;\n delete?: (id: string) => Promise<void>;\n deleteExtra?: (id: string | number) => Promise<void>;\n logBotResponse?: (text: string, id: string) => void;\n uploadFile?: (filePath: string, title?: string) => Promise<void>;\n uploadFallbackNote?: (name: string) => string;\n react?: (emoji: string) => Promise<void>;\n /**\n * Whether a send failure is a length rejection, as opposed to a rate limit\n * or an outage. Without this the fallback swallows every error, so a\n * transient 429 gets reported to the reader as \"message too long\" and the\n * response is truncated for no reason.\n */\n isTooLongError?: (err: unknown) => boolean;\n /** Handle a Slack-style length rejection and return the canonical fallback text. */\n handleTooLong?: (input: HandleTooLongInput) => Promise<{ text: string; prefixLength?: number }>;\n}\n\n/** How intake resolved a message. Callers branch on this instead of passing callbacks. */\nexport type MessageIntakeOutcome = \"magic-word\" | \"not-triggered\" | \"rejected-busy\" | \"enqueued\";\n\n/** Platform policy for the magic-word step, stated as data. */\nexport interface MagicWordIntakeOptions {\n /**\n * Raw user-typed text to match when `eventBase.text` is decorated for the\n * agent (e.g. GitHub review-comment framing). Defaults to `eventBase.text`.\n */\n text?: string;\n /**\n * Whether the message addressed the bot (mention, DM, slash form). The idle\n * \"Nothing running.\" reply is suppressed for unaddressed messages.\n */\n addressed: boolean;\n /**\n * How far a stop may widen when the direct session key is not running:\n * \"top-level\" widens to the single running scoped session only from the\n * persistent conversation session, \"always\" widens unconditionally,\n * \"never\" stops only exact matches.\n */\n scopeFallback: \"top-level\" | \"always\" | \"never\";\n}\n\n/** One platform file to save into an office's attachments directory. */\nexport interface IncomingAttachment {\n /** Original file name as the platform reports it. */\n name: string;\n /** Epoch ms used in the stored filename; defaults to the time of saving. */\n timestampMs?: number;\n /** Fetch the file and write it to destPath (the parent directory exists). */\n download(destPath: string): Promise<void>;\n}\n\n/** Outcome of saving incoming attachments; error policy stays with the adapter. */\nexport interface SavedAttachments {\n saved: Attachment[];\n failed: { name: string; error: unknown }[];\n}\n\nexport interface MessageIntakeOptions<TEvent extends ConversationEvent> {\n eventBase: TEvent;\n /** Explicit DM, mention, command or supported thread continuation. */\n addressed: boolean;\n magicWord: MagicWordIntakeOptions;\n /**\n * \"reject\" bounces a new message while its session is already running\n * (with an \"Already working\" reply); \"queue\" lines it up behind the run.\n */\n busyPolicy: \"queue\" | \"reject\";\n logEntryBase: Record<string, unknown>;\n log?: (entry: Record<string, unknown>) => void;\n processAttachments: () => Promise<unknown[]>;\n queueKey: string;\n enqueue: (queueKey: string, work: () => Promise<void>) => void;\n handler: MessagingEventHandler;\n bot: MessagingBot;\n createContext: (event: TEvent) => ConversationContext;\n deferAttachmentsUntilRun?: boolean;\n}\n\nexport interface MarkdownTable {\n headers: string[];\n rows: string[][];\n /** Source line span, so a caller can slice the prose around it. */\n startLine: number;\n endLine: number;\n}\n"]}