im-hub-pro 0.2.29

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 (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +497 -0
  3. package/README.zh-CN.md +496 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +921 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/core/acp-server.d.ts +8 -0
  9. package/dist/core/acp-server.d.ts.map +1 -0
  10. package/dist/core/acp-server.js +266 -0
  11. package/dist/core/acp-server.js.map +1 -0
  12. package/dist/core/agent-base.d.ts +94 -0
  13. package/dist/core/agent-base.d.ts.map +1 -0
  14. package/dist/core/agent-base.js +374 -0
  15. package/dist/core/agent-base.js.map +1 -0
  16. package/dist/core/agent-cwd.d.ts +45 -0
  17. package/dist/core/agent-cwd.d.ts.map +1 -0
  18. package/dist/core/agent-cwd.js +178 -0
  19. package/dist/core/agent-cwd.js.map +1 -0
  20. package/dist/core/agent-cwd.test.d.ts +2 -0
  21. package/dist/core/agent-cwd.test.d.ts.map +1 -0
  22. package/dist/core/agent-cwd.test.js +149 -0
  23. package/dist/core/agent-cwd.test.js.map +1 -0
  24. package/dist/core/approval-bus.d.ts +232 -0
  25. package/dist/core/approval-bus.d.ts.map +1 -0
  26. package/dist/core/approval-bus.js +703 -0
  27. package/dist/core/approval-bus.js.map +1 -0
  28. package/dist/core/approval-bus.synthetic.test.d.ts +2 -0
  29. package/dist/core/approval-bus.synthetic.test.d.ts.map +1 -0
  30. package/dist/core/approval-bus.synthetic.test.js +182 -0
  31. package/dist/core/approval-bus.synthetic.test.js.map +1 -0
  32. package/dist/core/approval-bus.test.d.ts +2 -0
  33. package/dist/core/approval-bus.test.d.ts.map +1 -0
  34. package/dist/core/approval-bus.test.js +537 -0
  35. package/dist/core/approval-bus.test.js.map +1 -0
  36. package/dist/core/approval-router.d.ts +95 -0
  37. package/dist/core/approval-router.d.ts.map +1 -0
  38. package/dist/core/approval-router.js +450 -0
  39. package/dist/core/approval-router.js.map +1 -0
  40. package/dist/core/approval-router.test.d.ts +2 -0
  41. package/dist/core/approval-router.test.d.ts.map +1 -0
  42. package/dist/core/approval-router.test.js +413 -0
  43. package/dist/core/approval-router.test.js.map +1 -0
  44. package/dist/core/audit-log.d.ts +55 -0
  45. package/dist/core/audit-log.d.ts.map +1 -0
  46. package/dist/core/audit-log.js +203 -0
  47. package/dist/core/audit-log.js.map +1 -0
  48. package/dist/core/bgjob-reader.d.ts +65 -0
  49. package/dist/core/bgjob-reader.d.ts.map +1 -0
  50. package/dist/core/bgjob-reader.js +212 -0
  51. package/dist/core/bgjob-reader.js.map +1 -0
  52. package/dist/core/bgjob-reader.test.d.ts +2 -0
  53. package/dist/core/bgjob-reader.test.d.ts.map +1 -0
  54. package/dist/core/bgjob-reader.test.js +178 -0
  55. package/dist/core/bgjob-reader.test.js.map +1 -0
  56. package/dist/core/circuit-breaker.d.ts +37 -0
  57. package/dist/core/circuit-breaker.d.ts.map +1 -0
  58. package/dist/core/circuit-breaker.js +115 -0
  59. package/dist/core/circuit-breaker.js.map +1 -0
  60. package/dist/core/commands/agent.d.ts +4 -0
  61. package/dist/core/commands/agent.d.ts.map +1 -0
  62. package/dist/core/commands/agent.js +21 -0
  63. package/dist/core/commands/agent.js.map +1 -0
  64. package/dist/core/commands/approval.d.ts +3 -0
  65. package/dist/core/commands/approval.d.ts.map +1 -0
  66. package/dist/core/commands/approval.js +44 -0
  67. package/dist/core/commands/approval.js.map +1 -0
  68. package/dist/core/commands/approval.test.d.ts +2 -0
  69. package/dist/core/commands/approval.test.d.ts.map +1 -0
  70. package/dist/core/commands/approval.test.js +85 -0
  71. package/dist/core/commands/approval.test.js.map +1 -0
  72. package/dist/core/commands/audit.d.ts +3 -0
  73. package/dist/core/commands/audit.d.ts.map +1 -0
  74. package/dist/core/commands/audit.js +84 -0
  75. package/dist/core/commands/audit.js.map +1 -0
  76. package/dist/core/commands/builtin.d.ts +3 -0
  77. package/dist/core/commands/builtin.d.ts.map +1 -0
  78. package/dist/core/commands/builtin.js +26 -0
  79. package/dist/core/commands/builtin.js.map +1 -0
  80. package/dist/core/commands/job.d.ts +3 -0
  81. package/dist/core/commands/job.d.ts.map +1 -0
  82. package/dist/core/commands/job.js +195 -0
  83. package/dist/core/commands/job.js.map +1 -0
  84. package/dist/core/commands/model.d.ts +9 -0
  85. package/dist/core/commands/model.d.ts.map +1 -0
  86. package/dist/core/commands/model.js +183 -0
  87. package/dist/core/commands/model.js.map +1 -0
  88. package/dist/core/commands/plan.d.ts +3 -0
  89. package/dist/core/commands/plan.d.ts.map +1 -0
  90. package/dist/core/commands/plan.js +75 -0
  91. package/dist/core/commands/plan.js.map +1 -0
  92. package/dist/core/commands/plan.test.d.ts +2 -0
  93. package/dist/core/commands/plan.test.d.ts.map +1 -0
  94. package/dist/core/commands/plan.test.js +122 -0
  95. package/dist/core/commands/plan.test.js.map +1 -0
  96. package/dist/core/commands/router.d.ts +3 -0
  97. package/dist/core/commands/router.d.ts.map +1 -0
  98. package/dist/core/commands/router.js +71 -0
  99. package/dist/core/commands/router.js.map +1 -0
  100. package/dist/core/commands/schedule.d.ts +3 -0
  101. package/dist/core/commands/schedule.d.ts.map +1 -0
  102. package/dist/core/commands/schedule.js +123 -0
  103. package/dist/core/commands/schedule.js.map +1 -0
  104. package/dist/core/commands/sessions.d.ts +3 -0
  105. package/dist/core/commands/sessions.d.ts.map +1 -0
  106. package/dist/core/commands/sessions.js +88 -0
  107. package/dist/core/commands/sessions.js.map +1 -0
  108. package/dist/core/commands/stats.d.ts +3 -0
  109. package/dist/core/commands/stats.d.ts.map +1 -0
  110. package/dist/core/commands/stats.js +73 -0
  111. package/dist/core/commands/stats.js.map +1 -0
  112. package/dist/core/commands/think.d.ts +3 -0
  113. package/dist/core/commands/think.d.ts.map +1 -0
  114. package/dist/core/commands/think.js +28 -0
  115. package/dist/core/commands/think.js.map +1 -0
  116. package/dist/core/commands/workspaces.d.ts +3 -0
  117. package/dist/core/commands/workspaces.d.ts.map +1 -0
  118. package/dist/core/commands/workspaces.js +47 -0
  119. package/dist/core/commands/workspaces.js.map +1 -0
  120. package/dist/core/config-schema.d.ts +58 -0
  121. package/dist/core/config-schema.d.ts.map +1 -0
  122. package/dist/core/config-schema.js +63 -0
  123. package/dist/core/config-schema.js.map +1 -0
  124. package/dist/core/cron.d.ts +29 -0
  125. package/dist/core/cron.d.ts.map +1 -0
  126. package/dist/core/cron.js +184 -0
  127. package/dist/core/cron.js.map +1 -0
  128. package/dist/core/event-bus.d.ts +80 -0
  129. package/dist/core/event-bus.d.ts.map +1 -0
  130. package/dist/core/event-bus.js +62 -0
  131. package/dist/core/event-bus.js.map +1 -0
  132. package/dist/core/intent-llm.d.ts +27 -0
  133. package/dist/core/intent-llm.d.ts.map +1 -0
  134. package/dist/core/intent-llm.js +170 -0
  135. package/dist/core/intent-llm.js.map +1 -0
  136. package/dist/core/intent.d.ts +12 -0
  137. package/dist/core/intent.d.ts.map +1 -0
  138. package/dist/core/intent.js +187 -0
  139. package/dist/core/intent.js.map +1 -0
  140. package/dist/core/job-board.d.ts +84 -0
  141. package/dist/core/job-board.d.ts.map +1 -0
  142. package/dist/core/job-board.js +379 -0
  143. package/dist/core/job-board.js.map +1 -0
  144. package/dist/core/logger.d.ts +6 -0
  145. package/dist/core/logger.d.ts.map +1 -0
  146. package/dist/core/logger.js +54 -0
  147. package/dist/core/logger.js.map +1 -0
  148. package/dist/core/metrics.d.ts +55 -0
  149. package/dist/core/metrics.d.ts.map +1 -0
  150. package/dist/core/metrics.js +291 -0
  151. package/dist/core/metrics.js.map +1 -0
  152. package/dist/core/onboarding.d.ts +94 -0
  153. package/dist/core/onboarding.d.ts.map +1 -0
  154. package/dist/core/onboarding.js +426 -0
  155. package/dist/core/onboarding.js.map +1 -0
  156. package/dist/core/onboarding.test.d.ts +2 -0
  157. package/dist/core/onboarding.test.d.ts.map +1 -0
  158. package/dist/core/onboarding.test.js +112 -0
  159. package/dist/core/onboarding.test.js.map +1 -0
  160. package/dist/core/rate-limiter.d.ts +44 -0
  161. package/dist/core/rate-limiter.d.ts.map +1 -0
  162. package/dist/core/rate-limiter.js +115 -0
  163. package/dist/core/rate-limiter.js.map +1 -0
  164. package/dist/core/registry.d.ts +32 -0
  165. package/dist/core/registry.d.ts.map +1 -0
  166. package/dist/core/registry.js +122 -0
  167. package/dist/core/registry.js.map +1 -0
  168. package/dist/core/router.d.ts +41 -0
  169. package/dist/core/router.d.ts.map +1 -0
  170. package/dist/core/router.js +431 -0
  171. package/dist/core/router.js.map +1 -0
  172. package/dist/core/schedule.d.ts +65 -0
  173. package/dist/core/schedule.d.ts.map +1 -0
  174. package/dist/core/schedule.js +316 -0
  175. package/dist/core/schedule.js.map +1 -0
  176. package/dist/core/session-subtasks.test.d.ts +2 -0
  177. package/dist/core/session-subtasks.test.d.ts.map +1 -0
  178. package/dist/core/session-subtasks.test.js +88 -0
  179. package/dist/core/session-subtasks.test.js.map +1 -0
  180. package/dist/core/session.d.ts +182 -0
  181. package/dist/core/session.d.ts.map +1 -0
  182. package/dist/core/session.js +774 -0
  183. package/dist/core/session.js.map +1 -0
  184. package/dist/core/sqlite-helper.d.ts +37 -0
  185. package/dist/core/sqlite-helper.d.ts.map +1 -0
  186. package/dist/core/sqlite-helper.js +79 -0
  187. package/dist/core/sqlite-helper.js.map +1 -0
  188. package/dist/core/transcribe.d.ts +25 -0
  189. package/dist/core/transcribe.d.ts.map +1 -0
  190. package/dist/core/transcribe.js +217 -0
  191. package/dist/core/transcribe.js.map +1 -0
  192. package/dist/core/transcribe.test.d.ts +2 -0
  193. package/dist/core/transcribe.test.d.ts.map +1 -0
  194. package/dist/core/transcribe.test.js +163 -0
  195. package/dist/core/transcribe.test.js.map +1 -0
  196. package/dist/core/types.d.ts +352 -0
  197. package/dist/core/types.d.ts.map +1 -0
  198. package/dist/core/types.js +3 -0
  199. package/dist/core/types.js.map +1 -0
  200. package/dist/core/workspace.d.ts +67 -0
  201. package/dist/core/workspace.d.ts.map +1 -0
  202. package/dist/core/workspace.js +113 -0
  203. package/dist/core/workspace.js.map +1 -0
  204. package/dist/index.d.ts +5 -0
  205. package/dist/index.d.ts.map +1 -0
  206. package/dist/index.js +6 -0
  207. package/dist/index.js.map +1 -0
  208. package/dist/plugins/agents/acp/acp-adapter.d.ts +16 -0
  209. package/dist/plugins/agents/acp/acp-adapter.d.ts.map +1 -0
  210. package/dist/plugins/agents/acp/acp-adapter.js +49 -0
  211. package/dist/plugins/agents/acp/acp-adapter.js.map +1 -0
  212. package/dist/plugins/agents/acp/acp-client.d.ts +32 -0
  213. package/dist/plugins/agents/acp/acp-client.d.ts.map +1 -0
  214. package/dist/plugins/agents/acp/acp-client.js +175 -0
  215. package/dist/plugins/agents/acp/acp-client.js.map +1 -0
  216. package/dist/plugins/agents/acp/discovery.d.ts +19 -0
  217. package/dist/plugins/agents/acp/discovery.d.ts.map +1 -0
  218. package/dist/plugins/agents/acp/discovery.js +109 -0
  219. package/dist/plugins/agents/acp/discovery.js.map +1 -0
  220. package/dist/plugins/agents/acp/index.d.ts +4 -0
  221. package/dist/plugins/agents/acp/index.d.ts.map +1 -0
  222. package/dist/plugins/agents/acp/index.js +4 -0
  223. package/dist/plugins/agents/acp/index.js.map +1 -0
  224. package/dist/plugins/agents/acp/types.d.ts +62 -0
  225. package/dist/plugins/agents/acp/types.d.ts.map +1 -0
  226. package/dist/plugins/agents/acp/types.js +5 -0
  227. package/dist/plugins/agents/acp/types.js.map +1 -0
  228. package/dist/plugins/agents/claude-code/adapter.test.d.ts +2 -0
  229. package/dist/plugins/agents/claude-code/adapter.test.d.ts.map +1 -0
  230. package/dist/plugins/agents/claude-code/adapter.test.js +195 -0
  231. package/dist/plugins/agents/claude-code/adapter.test.js.map +1 -0
  232. package/dist/plugins/agents/claude-code/index.d.ts +25 -0
  233. package/dist/plugins/agents/claude-code/index.d.ts.map +1 -0
  234. package/dist/plugins/agents/claude-code/index.js +184 -0
  235. package/dist/plugins/agents/claude-code/index.js.map +1 -0
  236. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +42 -0
  237. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -0
  238. package/dist/plugins/agents/claude-code/mcp-approval-server.js +235 -0
  239. package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -0
  240. package/dist/plugins/agents/claude-code/mcp-approval-server.test.d.ts +2 -0
  241. package/dist/plugins/agents/claude-code/mcp-approval-server.test.d.ts.map +1 -0
  242. package/dist/plugins/agents/claude-code/mcp-approval-server.test.js +188 -0
  243. package/dist/plugins/agents/claude-code/mcp-approval-server.test.js.map +1 -0
  244. package/dist/plugins/agents/codex/adapter.test.d.ts +2 -0
  245. package/dist/plugins/agents/codex/adapter.test.d.ts.map +1 -0
  246. package/dist/plugins/agents/codex/adapter.test.js +192 -0
  247. package/dist/plugins/agents/codex/adapter.test.js.map +1 -0
  248. package/dist/plugins/agents/codex/index.d.ts +37 -0
  249. package/dist/plugins/agents/codex/index.d.ts.map +1 -0
  250. package/dist/plugins/agents/codex/index.js +254 -0
  251. package/dist/plugins/agents/codex/index.js.map +1 -0
  252. package/dist/plugins/agents/copilot/index.d.ts +35 -0
  253. package/dist/plugins/agents/copilot/index.d.ts.map +1 -0
  254. package/dist/plugins/agents/copilot/index.js +182 -0
  255. package/dist/plugins/agents/copilot/index.js.map +1 -0
  256. package/dist/plugins/agents/opencode/adapter.test.d.ts +2 -0
  257. package/dist/plugins/agents/opencode/adapter.test.d.ts.map +1 -0
  258. package/dist/plugins/agents/opencode/adapter.test.js +139 -0
  259. package/dist/plugins/agents/opencode/adapter.test.js.map +1 -0
  260. package/dist/plugins/agents/opencode/http-adapter.test.d.ts +2 -0
  261. package/dist/plugins/agents/opencode/http-adapter.test.d.ts.map +1 -0
  262. package/dist/plugins/agents/opencode/http-adapter.test.js +492 -0
  263. package/dist/plugins/agents/opencode/http-adapter.test.js.map +1 -0
  264. package/dist/plugins/agents/opencode/index.d.ts +5 -0
  265. package/dist/plugins/agents/opencode/index.d.ts.map +1 -0
  266. package/dist/plugins/agents/opencode/index.js +30 -0
  267. package/dist/plugins/agents/opencode/index.js.map +1 -0
  268. package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts +138 -0
  269. package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -0
  270. package/dist/plugins/agents/opencode/opencode-http-adapter.js +549 -0
  271. package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -0
  272. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts +24 -0
  273. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -0
  274. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +103 -0
  275. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -0
  276. package/dist/plugins/agents/opencode/serve-manager.d.ts +27 -0
  277. package/dist/plugins/agents/opencode/serve-manager.d.ts.map +1 -0
  278. package/dist/plugins/agents/opencode/serve-manager.js +190 -0
  279. package/dist/plugins/agents/opencode/serve-manager.js.map +1 -0
  280. package/dist/plugins/messengers/discord/discord-adapter.d.ts +22 -0
  281. package/dist/plugins/messengers/discord/discord-adapter.d.ts.map +1 -0
  282. package/dist/plugins/messengers/discord/discord-adapter.js +241 -0
  283. package/dist/plugins/messengers/discord/discord-adapter.js.map +1 -0
  284. package/dist/plugins/messengers/discord/discord-adapter.test.d.ts +2 -0
  285. package/dist/plugins/messengers/discord/discord-adapter.test.d.ts.map +1 -0
  286. package/dist/plugins/messengers/discord/discord-adapter.test.js +332 -0
  287. package/dist/plugins/messengers/discord/discord-adapter.test.js.map +1 -0
  288. package/dist/plugins/messengers/discord/index.d.ts +4 -0
  289. package/dist/plugins/messengers/discord/index.d.ts.map +1 -0
  290. package/dist/plugins/messengers/discord/index.js +4 -0
  291. package/dist/plugins/messengers/discord/index.js.map +1 -0
  292. package/dist/plugins/messengers/discord/markdown-to-discord.d.ts +11 -0
  293. package/dist/plugins/messengers/discord/markdown-to-discord.d.ts.map +1 -0
  294. package/dist/plugins/messengers/discord/markdown-to-discord.js +59 -0
  295. package/dist/plugins/messengers/discord/markdown-to-discord.js.map +1 -0
  296. package/dist/plugins/messengers/discord/types.d.ts +9 -0
  297. package/dist/plugins/messengers/discord/types.d.ts.map +1 -0
  298. package/dist/plugins/messengers/discord/types.js +3 -0
  299. package/dist/plugins/messengers/discord/types.js.map +1 -0
  300. package/dist/plugins/messengers/feishu/card-builder.d.ts +23 -0
  301. package/dist/plugins/messengers/feishu/card-builder.d.ts.map +1 -0
  302. package/dist/plugins/messengers/feishu/card-builder.js +89 -0
  303. package/dist/plugins/messengers/feishu/card-builder.js.map +1 -0
  304. package/dist/plugins/messengers/feishu/feishu-adapter.d.ts +33 -0
  305. package/dist/plugins/messengers/feishu/feishu-adapter.d.ts.map +1 -0
  306. package/dist/plugins/messengers/feishu/feishu-adapter.js +195 -0
  307. package/dist/plugins/messengers/feishu/feishu-adapter.js.map +1 -0
  308. package/dist/plugins/messengers/feishu/feishu-client.d.ts +44 -0
  309. package/dist/plugins/messengers/feishu/feishu-client.d.ts.map +1 -0
  310. package/dist/plugins/messengers/feishu/feishu-client.js +120 -0
  311. package/dist/plugins/messengers/feishu/feishu-client.js.map +1 -0
  312. package/dist/plugins/messengers/feishu/feishu-dedup.test.d.ts +2 -0
  313. package/dist/plugins/messengers/feishu/feishu-dedup.test.d.ts.map +1 -0
  314. package/dist/plugins/messengers/feishu/feishu-dedup.test.js +70 -0
  315. package/dist/plugins/messengers/feishu/feishu-dedup.test.js.map +1 -0
  316. package/dist/plugins/messengers/feishu/index.d.ts +4 -0
  317. package/dist/plugins/messengers/feishu/index.d.ts.map +1 -0
  318. package/dist/plugins/messengers/feishu/index.js +4 -0
  319. package/dist/plugins/messengers/feishu/index.js.map +1 -0
  320. package/dist/plugins/messengers/feishu/types.d.ts +113 -0
  321. package/dist/plugins/messengers/feishu/types.d.ts.map +1 -0
  322. package/dist/plugins/messengers/feishu/types.js +4 -0
  323. package/dist/plugins/messengers/feishu/types.js.map +1 -0
  324. package/dist/plugins/messengers/telegram/index.d.ts +4 -0
  325. package/dist/plugins/messengers/telegram/index.d.ts.map +1 -0
  326. package/dist/plugins/messengers/telegram/index.js +4 -0
  327. package/dist/plugins/messengers/telegram/index.js.map +1 -0
  328. package/dist/plugins/messengers/telegram/markdown-to-html.d.ts +5 -0
  329. package/dist/plugins/messengers/telegram/markdown-to-html.d.ts.map +1 -0
  330. package/dist/plugins/messengers/telegram/markdown-to-html.js +186 -0
  331. package/dist/plugins/messengers/telegram/markdown-to-html.js.map +1 -0
  332. package/dist/plugins/messengers/telegram/media-download.d.ts +51 -0
  333. package/dist/plugins/messengers/telegram/media-download.d.ts.map +1 -0
  334. package/dist/plugins/messengers/telegram/media-download.js +224 -0
  335. package/dist/plugins/messengers/telegram/media-download.js.map +1 -0
  336. package/dist/plugins/messengers/telegram/media-download.test.d.ts +2 -0
  337. package/dist/plugins/messengers/telegram/media-download.test.d.ts.map +1 -0
  338. package/dist/plugins/messengers/telegram/media-download.test.js +125 -0
  339. package/dist/plugins/messengers/telegram/media-download.test.js.map +1 -0
  340. package/dist/plugins/messengers/telegram/telegram-adapter.d.ts +62 -0
  341. package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -0
  342. package/dist/plugins/messengers/telegram/telegram-adapter.js +653 -0
  343. package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -0
  344. package/dist/plugins/messengers/telegram/types.d.ts +47 -0
  345. package/dist/plugins/messengers/telegram/types.d.ts.map +1 -0
  346. package/dist/plugins/messengers/telegram/types.js +3 -0
  347. package/dist/plugins/messengers/telegram/types.js.map +1 -0
  348. package/dist/plugins/messengers/wechat/ilink-adapter.d.ts +68 -0
  349. package/dist/plugins/messengers/wechat/ilink-adapter.d.ts.map +1 -0
  350. package/dist/plugins/messengers/wechat/ilink-adapter.js +483 -0
  351. package/dist/plugins/messengers/wechat/ilink-adapter.js.map +1 -0
  352. package/dist/plugins/messengers/wechat/ilink-client.d.ts +66 -0
  353. package/dist/plugins/messengers/wechat/ilink-client.d.ts.map +1 -0
  354. package/dist/plugins/messengers/wechat/ilink-client.js +288 -0
  355. package/dist/plugins/messengers/wechat/ilink-client.js.map +1 -0
  356. package/dist/plugins/messengers/wechat/ilink-types.d.ts +173 -0
  357. package/dist/plugins/messengers/wechat/ilink-types.d.ts.map +1 -0
  358. package/dist/plugins/messengers/wechat/ilink-types.js +12 -0
  359. package/dist/plugins/messengers/wechat/ilink-types.js.map +1 -0
  360. package/dist/utils/backoff.d.ts +35 -0
  361. package/dist/utils/backoff.d.ts.map +1 -0
  362. package/dist/utils/backoff.js +59 -0
  363. package/dist/utils/backoff.js.map +1 -0
  364. package/dist/utils/cross-platform.d.ts +26 -0
  365. package/dist/utils/cross-platform.d.ts.map +1 -0
  366. package/dist/utils/cross-platform.js +58 -0
  367. package/dist/utils/cross-platform.js.map +1 -0
  368. package/dist/utils/message-split.d.ts +14 -0
  369. package/dist/utils/message-split.d.ts.map +1 -0
  370. package/dist/utils/message-split.js +65 -0
  371. package/dist/utils/message-split.js.map +1 -0
  372. package/dist/utils/safe-equal.d.ts +2 -0
  373. package/dist/utils/safe-equal.d.ts.map +1 -0
  374. package/dist/utils/safe-equal.js +11 -0
  375. package/dist/utils/safe-equal.js.map +1 -0
  376. package/dist/web/public/_app.js +196 -0
  377. package/dist/web/public/index.html +935 -0
  378. package/dist/web/public/settings.html +1181 -0
  379. package/dist/web/public/tasks.html +1827 -0
  380. package/dist/web/server.d.ts +11 -0
  381. package/dist/web/server.d.ts.map +1 -0
  382. package/dist/web/server.js +1820 -0
  383. package/dist/web/server.js.map +1 -0
  384. package/package.json +73 -0
@@ -0,0 +1,291 @@
1
+ // Metrics — in-process counters + latency / cost histograms.
2
+ //
3
+ // Lightweight & dependency-free: a sliding sample ring per (agent, intent,
4
+ // success) bucket lets us compute p50/p95/p99 on demand. /api/metrics
5
+ // emits a Prometheus-compatible text body so scraping tools can ingest
6
+ // without us pulling in prom-client.
7
+ //
8
+ // This module is fed by audit-log.logInvocation (so every recorded request
9
+ // also updates metrics) — single source of truth, no duplicate observers.
10
+ const MAX_SAMPLES = 1024; // rolling window per metric label set
11
+ /**
12
+ * Bounded sliding window. Append-only writes overwrite the oldest entry
13
+ * once full, so memory is fixed regardless of traffic.
14
+ */
15
+ class SlidingWindow {
16
+ buf;
17
+ idx = 0;
18
+ full = false;
19
+ constructor(capacity = MAX_SAMPLES) {
20
+ this.buf = new Array(capacity);
21
+ }
22
+ push(v) {
23
+ this.buf[this.idx] = v;
24
+ this.idx = (this.idx + 1) % this.buf.length;
25
+ if (this.idx === 0)
26
+ this.full = true;
27
+ }
28
+ /** Copy the current sample set (unsorted). */
29
+ snapshot() {
30
+ const len = this.full ? this.buf.length : this.idx;
31
+ return this.buf.slice(0, len);
32
+ }
33
+ size() {
34
+ return this.full ? this.buf.length : this.idx;
35
+ }
36
+ }
37
+ /**
38
+ * Hoare-style partition. Returns an index `p` such that everything in
39
+ * [lo, p] is ≤ pivot and everything in [p+1, hi] is ≥ pivot.
40
+ */
41
+ function partition(arr, lo, hi) {
42
+ const pivot = arr[(lo + hi) >>> 1];
43
+ let i = lo - 1, j = hi + 1;
44
+ while (true) {
45
+ do {
46
+ i++;
47
+ } while (arr[i] < pivot);
48
+ do {
49
+ j--;
50
+ } while (arr[j] > pivot);
51
+ if (i >= j)
52
+ return j;
53
+ const tmp = arr[i];
54
+ arr[i] = arr[j];
55
+ arr[j] = tmp;
56
+ }
57
+ }
58
+ /**
59
+ * In-place quickselect: after the call, arr[k] is the value that would
60
+ * be at index k in a fully-sorted array. Average O(n).
61
+ */
62
+ function quickselect(arr, k, lo, hi) {
63
+ while (lo < hi) {
64
+ const p = partition(arr, lo, hi);
65
+ if (k <= p)
66
+ hi = p;
67
+ else
68
+ lo = p + 1;
69
+ }
70
+ }
71
+ /**
72
+ * Compute multiple quantiles in a single shared copy. Sorts the
73
+ * quantiles ascending, then runs quickselect with each successive
74
+ * `lo` bounded by the previous index — so we only re-partition the
75
+ * tail relevant to the higher quantile.
76
+ *
77
+ * For 3 quantiles on n=1024 this is ~3n comparisons vs n·log(n) ≈ 10n
78
+ * for a full sort.
79
+ */
80
+ function multiQuantile(buf, qs) {
81
+ if (buf.length === 0)
82
+ return qs.map(() => 0);
83
+ const arr = buf.slice();
84
+ const n = arr.length;
85
+ const ordered = qs.map((q, i) => ({
86
+ q,
87
+ i,
88
+ idx: Math.min(n - 1, Math.max(0, Math.floor(q * (n - 1)))),
89
+ }));
90
+ ordered.sort((a, b) => a.idx - b.idx);
91
+ const out = new Array(qs.length);
92
+ let lo = 0;
93
+ for (const { i, idx } of ordered) {
94
+ quickselect(arr, idx, lo, n - 1);
95
+ out[i] = arr[idx];
96
+ lo = idx; // next quantile is at or after this one
97
+ }
98
+ return out;
99
+ }
100
+ const agentBuckets = new Map();
101
+ const intentCounter = new Map();
102
+ const platformCounter = new Map();
103
+ const startedAt = Date.now();
104
+ /**
105
+ * Operational counters that aren't tied to a specific invocation. Today:
106
+ * - auditPruneFailures: every time pruneExpired() in audit-log catches.
107
+ * A non-zero value here means retention is silently failing — alert
108
+ * on `rate(im_hub_audit_prune_failed_total[1h]) > 0`.
109
+ * - agentCleanupFailures: every time AgentBase's per-spawn cleanup hook
110
+ * throws (mcp-config tmpdir unlink, etc.). Surfaces tmpdir leakage
111
+ * that would otherwise only appear in scattered warn lines.
112
+ */
113
+ const internalCounters = {
114
+ auditPruneFailures: 0,
115
+ agentCleanupFailures: 0,
116
+ };
117
+ /** Increment when audit-log retention sweep fails. Exposed as a Prometheus
118
+ * counter; ops should alert on any non-zero rate. */
119
+ export function recordAuditPruneFailure() {
120
+ internalCounters.auditPruneFailures++;
121
+ }
122
+ /** Increment when an agent's per-spawn cleanup hook throws. Exposed as a
123
+ * Prometheus counter so leaked tmpdirs (mcp-config etc.) become visible
124
+ * on /api/metrics rather than only in warn-level pino output. */
125
+ export function recordAgentCleanupFailure() {
126
+ internalCounters.agentCleanupFailures++;
127
+ }
128
+ /**
129
+ * Optional snapshot provider for the approval-bus. Set once at startup
130
+ * (cli wires it after instantiating ApprovalBus). Lazy decoupling avoids
131
+ * the metrics module importing approval-bus directly.
132
+ */
133
+ let approvalBusSnapshot = null;
134
+ export function setApprovalBusSnapshotProvider(fn) {
135
+ approvalBusSnapshot = fn;
136
+ }
137
+ /**
138
+ * Allowlist of intent names emitted as Prometheus labels. Anything outside
139
+ * this set buckets into 'other' so a malicious or buggy caller can't
140
+ * explode label cardinality (every distinct user-supplied intent string
141
+ * would otherwise produce a new metric series, growing memory and scrape
142
+ * cost without bound). Mirrors the values produced by router.ts and
143
+ * intent.ts; if you add a new triggeredBy reason there, add it here too.
144
+ */
145
+ const KNOWN_INTENTS = new Set([
146
+ 'default', 'explicit', 'fallback', 'llm',
147
+ 'topic', 'keyword', 'sticky',
148
+ ]);
149
+ /**
150
+ * Allowlist of platform names. Each adapter pins its own platform string
151
+ * (telegram / feishu / wechat / discord / web / acp / acp-server / rest /
152
+ * rest-msg). Anything else funnels to 'other' to bound cardinality.
153
+ */
154
+ const KNOWN_PLATFORMS = new Set([
155
+ 'telegram', 'feishu', 'wechat', 'discord',
156
+ 'web', 'acp', 'acp-server', 'rest', 'rest-msg',
157
+ ]);
158
+ function bucketLabel(known, value) {
159
+ if (!value)
160
+ return 'other';
161
+ return known.has(value) ? value : 'other';
162
+ }
163
+ function getBucket(agent) {
164
+ let b = agentBuckets.get(agent);
165
+ if (!b) {
166
+ b = { total: 0, success: 0, failure: 0, costSum: 0, latency: new SlidingWindow() };
167
+ agentBuckets.set(agent, b);
168
+ }
169
+ return b;
170
+ }
171
+ export function recordInvocation(rec) {
172
+ const b = getBucket(rec.agent);
173
+ b.total++;
174
+ if (rec.success)
175
+ b.success++;
176
+ else
177
+ b.failure++;
178
+ b.costSum += rec.cost || 0;
179
+ if (Number.isFinite(rec.durationMs) && rec.durationMs >= 0) {
180
+ b.latency.push(rec.durationMs);
181
+ }
182
+ const intentLabel = bucketLabel(KNOWN_INTENTS, rec.intent);
183
+ const platformLabel = bucketLabel(KNOWN_PLATFORMS, rec.platform);
184
+ intentCounter.set(intentLabel, (intentCounter.get(intentLabel) || 0) + 1);
185
+ platformCounter.set(platformLabel, (platformCounter.get(platformLabel) || 0) + 1);
186
+ }
187
+ export function snapshot() {
188
+ const now = Date.now();
189
+ const agents = [];
190
+ for (const [agent, b] of agentBuckets) {
191
+ const samples = b.latency.snapshot();
192
+ const [p50Ms, p95Ms, p99Ms] = multiQuantile(samples, [0.5, 0.95, 0.99]);
193
+ agents.push({
194
+ agent,
195
+ total: b.total,
196
+ success: b.success,
197
+ failure: b.failure,
198
+ successRate: b.total > 0 ? b.success / b.total : 0,
199
+ costSum: b.costSum,
200
+ sampleCount: samples.length,
201
+ p50Ms,
202
+ p95Ms,
203
+ p99Ms,
204
+ });
205
+ }
206
+ agents.sort((a, b) => a.agent.localeCompare(b.agent));
207
+ return {
208
+ uptimeSec: Math.round((now - startedAt) / 1000),
209
+ agents,
210
+ intentTotals: Object.fromEntries(intentCounter),
211
+ platformTotals: Object.fromEntries(platformCounter),
212
+ };
213
+ }
214
+ /**
215
+ * Render the snapshot in Prometheus text exposition format. Keeps line
216
+ * count low and uses bare metric names without a HELP/TYPE preamble per
217
+ * line family (we emit one preamble each).
218
+ */
219
+ export function toPrometheus() {
220
+ const snap = snapshot();
221
+ const lines = [];
222
+ lines.push('# HELP im_hub_uptime_seconds Process uptime in seconds');
223
+ lines.push('# TYPE im_hub_uptime_seconds gauge');
224
+ lines.push(`im_hub_uptime_seconds ${snap.uptimeSec}`);
225
+ lines.push('# HELP im_hub_agent_invocations_total Total agent invocations');
226
+ lines.push('# TYPE im_hub_agent_invocations_total counter');
227
+ for (const a of snap.agents) {
228
+ lines.push(`im_hub_agent_invocations_total{agent="${esc(a.agent)}",result="success"} ${a.success}`);
229
+ lines.push(`im_hub_agent_invocations_total{agent="${esc(a.agent)}",result="failure"} ${a.failure}`);
230
+ }
231
+ lines.push('# HELP im_hub_agent_cost_sum Sum of recorded cost per agent');
232
+ lines.push('# TYPE im_hub_agent_cost_sum counter');
233
+ for (const a of snap.agents) {
234
+ lines.push(`im_hub_agent_cost_sum{agent="${esc(a.agent)}"} ${a.costSum}`);
235
+ }
236
+ lines.push('# HELP im_hub_agent_latency_ms Latency quantiles (sliding window)');
237
+ lines.push('# TYPE im_hub_agent_latency_ms summary');
238
+ for (const a of snap.agents) {
239
+ lines.push(`im_hub_agent_latency_ms{agent="${esc(a.agent)}",quantile="0.5"} ${a.p50Ms}`);
240
+ lines.push(`im_hub_agent_latency_ms{agent="${esc(a.agent)}",quantile="0.95"} ${a.p95Ms}`);
241
+ lines.push(`im_hub_agent_latency_ms{agent="${esc(a.agent)}",quantile="0.99"} ${a.p99Ms}`);
242
+ lines.push(`im_hub_agent_latency_ms_count{agent="${esc(a.agent)}"} ${a.sampleCount}`);
243
+ }
244
+ lines.push('# HELP im_hub_intent_total Routing decisions by intent');
245
+ lines.push('# TYPE im_hub_intent_total counter');
246
+ for (const [intent, n] of Object.entries(snap.intentTotals)) {
247
+ lines.push(`im_hub_intent_total{intent="${esc(intent)}"} ${n}`);
248
+ }
249
+ lines.push('# HELP im_hub_platform_total Requests by platform');
250
+ lines.push('# TYPE im_hub_platform_total counter');
251
+ for (const [platform, n] of Object.entries(snap.platformTotals)) {
252
+ lines.push(`im_hub_platform_total{platform="${esc(platform)}"} ${n}`);
253
+ }
254
+ // Internal operational counters (M7).
255
+ lines.push('# HELP im_hub_audit_prune_failed_total Audit retention sweep failure count');
256
+ lines.push('# TYPE im_hub_audit_prune_failed_total counter');
257
+ lines.push(`im_hub_audit_prune_failed_total ${internalCounters.auditPruneFailures}`);
258
+ lines.push('# HELP im_hub_agent_cleanup_failed_total Per-spawn cleanup hook failures (e.g. mcp-config tmpdir unlink)');
259
+ lines.push('# TYPE im_hub_agent_cleanup_failed_total counter');
260
+ lines.push(`im_hub_agent_cleanup_failed_total ${internalCounters.agentCleanupFailures}`);
261
+ // Approval-bus snapshot (M14). Pulled lazily so metrics scrapes pick up
262
+ // the latest live counts. When no provider is wired (early startup,
263
+ // tests) we omit the family entirely instead of emitting zeros.
264
+ const ab = approvalBusSnapshot?.();
265
+ if (ab) {
266
+ lines.push('# HELP im_hub_approval_pending Currently pending approval requests');
267
+ lines.push('# TYPE im_hub_approval_pending gauge');
268
+ lines.push(`im_hub_approval_pending ${ab.pending}`);
269
+ lines.push('# HELP im_hub_approval_requests_total Lifetime approval requests received');
270
+ lines.push('# TYPE im_hub_approval_requests_total counter');
271
+ lines.push(`im_hub_approval_requests_total ${ab.totalRequests}`);
272
+ lines.push('# HELP im_hub_approval_resolved_total Lifetime approval resolutions');
273
+ lines.push('# TYPE im_hub_approval_resolved_total counter');
274
+ lines.push(`im_hub_approval_resolved_total{result="allow"} ${ab.totalAllowed}`);
275
+ lines.push(`im_hub_approval_resolved_total{result="deny"} ${ab.totalDenied}`);
276
+ lines.push(`im_hub_approval_resolved_total{result="timeout"} ${ab.totalTimedOut}`);
277
+ }
278
+ return lines.join('\n') + '\n';
279
+ }
280
+ /** Reset all counters. Test-only. */
281
+ export function reset() {
282
+ agentBuckets.clear();
283
+ intentCounter.clear();
284
+ platformCounter.clear();
285
+ internalCounters.auditPruneFailures = 0;
286
+ internalCounters.agentCleanupFailures = 0;
287
+ }
288
+ function esc(s) {
289
+ return String(s).replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
290
+ }
291
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,uEAAuE;AACvE,qCAAqC;AACrC,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAE1E,MAAM,WAAW,GAAG,IAAI,CAAA,CAAE,sCAAsC;AAEhE;;;GAGG;AACH,MAAM,aAAa;IACT,GAAG,CAAU;IACb,GAAG,GAAG,CAAC,CAAA;IACP,IAAI,GAAG,KAAK,CAAA;IAEpB,YAAY,QAAQ,GAAG,WAAW;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;QAC3C,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACtC,CAAC;IAED,8CAA8C;IAC9C,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;IAC/C,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAa,EAAE,EAAU,EAAE,EAAU;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,GAAG,CAAC;YAAC,CAAC,EAAE,CAAA;QAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAC;QACjC,GAAG,CAAC;YAAC,CAAC,EAAE,CAAA;QAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAC;QACjC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QACpB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAa,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU;IACnE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC;YAAE,EAAE,GAAG,CAAC,CAAA;;YACb,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,GAAa,EAAE,EAAY;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA;IACvB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAA;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,CAAC;QACD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3D,CAAC,CAAC,CAAA;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAErC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,MAAM,CAAC,CAAA;IACxC,IAAI,EAAE,GAAG,CAAC,CAAA;IACV,KAAK,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;QACjC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QAChC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACjB,EAAE,GAAG,GAAG,CAAA,CAAE,wCAAwC;IACpD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAUD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAA;AACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;AAC/C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAE5B;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG;IACvB,kBAAkB,EAAE,CAAC;IACrB,oBAAoB,EAAE,CAAC;CACxB,CAAA;AAED;sDACsD;AACtD,MAAM,UAAU,uBAAuB;IACrC,gBAAgB,CAAC,kBAAkB,EAAE,CAAA;AACvC,CAAC;AAED;;kEAEkE;AAClE,MAAM,UAAU,yBAAyB;IACvC,gBAAgB,CAAC,oBAAoB,EAAE,CAAA;AACzC,CAAC;AAcD;;;;GAIG;AACH,IAAI,mBAAmB,GAA0C,IAAI,CAAA;AACrE,MAAM,UAAU,8BAA8B,CAAC,EAAyC;IACtF,mBAAmB,GAAG,EAAE,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC;IACjD,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK;IACxC,OAAO,EAAE,SAAS,EAAE,QAAQ;CAC7B,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACzC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU;CAC/C,CAAC,CAAA;AAEF,SAAS,WAAW,CAAC,KAA0B,EAAE,KAAa;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAA;IAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,aAAa,EAAE,EAAE,CAAA;QAClF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CAAC,KAAK,EAAE,CAAA;IACT,IAAI,GAAG,CAAC,OAAO;QAAE,CAAC,CAAC,OAAO,EAAE,CAAA;;QACvB,CAAC,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;IAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IACD,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChE,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACzE,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACnF,CAAC;AAoBD,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,MAAM,GAA8B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QACpC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACvE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,KAAK;YACL,KAAK;YACL,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;QAC/C,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;QAC/C,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;KACpD,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAA;IACvB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACpE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAErD,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC3E,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC3D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACnG,KAAK,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACrG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACzE,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,gCAAgC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;IAC/E,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACxF,KAAK,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACzF,KAAK,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACzF,KAAK,CAAC,IAAI,CAAC,wCAAwC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACpE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;IAC/D,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;IACxF,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,mCAAmC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAEpF,KAAK,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAA;IACtH,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,qCAAqC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAExF,wEAAwE;IACxE,oEAAoE;IACpE,gEAAgE;IAChE,MAAM,EAAE,GAAG,mBAAmB,EAAE,EAAE,CAAA;IAClC,IAAI,EAAE,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;QAChF,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;QACvF,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAA;QAChE,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;QACjF,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,kDAAkD,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;QAC/E,KAAK,CAAC,IAAI,CAAC,iDAAiD,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7E,KAAK,CAAC,IAAI,CAAC,oDAAoD,EAAE,CAAC,aAAa,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAChC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,KAAK;IACnB,YAAY,CAAC,KAAK,EAAE,CAAA;IACpB,aAAa,CAAC,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,KAAK,EAAE,CAAA;IACvB,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAA;IACvC,gBAAgB,CAAC,oBAAoB,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpF,CAAC"}
@@ -0,0 +1,94 @@
1
+ export interface OnboardingResult {
2
+ needsOnboarding: boolean;
3
+ availableMessengers: MessengerInfo[];
4
+ warnings?: string[];
5
+ }
6
+ export interface MessengerInfo {
7
+ id: string;
8
+ displayName: string;
9
+ description: string;
10
+ }
11
+ export interface AgentCheckResult {
12
+ available: string[];
13
+ missing: string[];
14
+ allMissing: boolean;
15
+ }
16
+ export interface AgentInstallHint {
17
+ agent: string;
18
+ npmPackage: string;
19
+ command: string;
20
+ }
21
+ export interface Config {
22
+ messengers: string[];
23
+ agents: string[];
24
+ defaultAgent: string;
25
+ telegram?: {
26
+ botToken: string;
27
+ channelId?: string;
28
+ };
29
+ feishu?: {
30
+ appId: string;
31
+ appSecret: string;
32
+ channelId?: string;
33
+ };
34
+ discord?: {
35
+ botToken: string;
36
+ channelId?: string;
37
+ allowedGuilds?: string[];
38
+ allowedChannels?: string[];
39
+ };
40
+ acpAgents?: Array<{
41
+ name: string;
42
+ aliases?: string[];
43
+ endpoint: string;
44
+ auth?: {
45
+ type: 'none' | 'apikey' | 'bearer';
46
+ token?: string;
47
+ };
48
+ enabled?: boolean;
49
+ }>;
50
+ [key: string]: unknown;
51
+ }
52
+ export declare function loadConfig(): Promise<Config>;
53
+ export declare function saveConfig(config: Config): Promise<void>;
54
+ /**
55
+ * Check if messengers are configured.
56
+ * IMPORTANT: This checks the config.messengers array BEFORE any default fill.
57
+ */
58
+ export declare function checkMessengerConfig(config: Config): OnboardingResult;
59
+ /**
60
+ * Check which agents are available.
61
+ * Result is cached with a 2-minute TTL.
62
+ */
63
+ export declare function checkAgentAvailability(): Promise<AgentCheckResult>;
64
+ /**
65
+ * Check if a specific agent is available.
66
+ *
67
+ * Uses the bulk cache when present, but falls through to a one-off probe
68
+ * if the agent name isn't represented (e.g. agent registered after the
69
+ * last bulk refresh). The probe result is itself cached for the TTL.
70
+ */
71
+ export declare function isAgentAvailableCached(agentName: string): Promise<boolean>;
72
+ /**
73
+ * Clear the agent availability caches. Useful for tests that change the
74
+ * registry state, and for the future `/router refresh` ops command.
75
+ */
76
+ export declare function clearAgentCache(): void;
77
+ /**
78
+ * Generate friendly install message for missing agents
79
+ */
80
+ export declare function formatAgentInstallHint(missing: string[]): string;
81
+ /**
82
+ * Format error message when agent is not available
83
+ */
84
+ export declare function formatAgentNotAvailableError(agentName: string): string;
85
+ /**
86
+ * Interactive onboarding flow.
87
+ * Returns updated config on success, null on failure/cancel.
88
+ */
89
+ export declare function runMessengerOnboarding(config: Config): Promise<Config | null>;
90
+ /**
91
+ * Format a user-friendly error message for messenger startup failures
92
+ */
93
+ export declare function formatMessengerStartError(messengerName: string, error: unknown): string;
94
+ //# sourceMappingURL=onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/core/onboarding.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB,EAAE,aAAa,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACxG,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7D,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AA6BD,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAWlD;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAyBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAarE;AAiBD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA+BxE;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBhF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAehE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBtE;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgEnF;AA0KD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAWvF"}