agim-cli 1.0.1

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 (453) hide show
  1. package/CHANGELOG.md +1234 -0
  2. package/LICENSE +21 -0
  3. package/README.md +422 -0
  4. package/README.zh-CN.md +414 -0
  5. package/dist/cli-ui/cmd-handlers.d.ts +11 -0
  6. package/dist/cli-ui/cmd-handlers.d.ts.map +1 -0
  7. package/dist/cli-ui/cmd-handlers.js +240 -0
  8. package/dist/cli-ui/cmd-handlers.js.map +1 -0
  9. package/dist/cli-ui/config-wizard.d.ts +3 -0
  10. package/dist/cli-ui/config-wizard.d.ts.map +1 -0
  11. package/dist/cli-ui/config-wizard.js +851 -0
  12. package/dist/cli-ui/config-wizard.js.map +1 -0
  13. package/dist/cli-ui/entry-menu.d.ts +28 -0
  14. package/dist/cli-ui/entry-menu.d.ts.map +1 -0
  15. package/dist/cli-ui/entry-menu.js +50 -0
  16. package/dist/cli-ui/entry-menu.js.map +1 -0
  17. package/dist/cli-ui/env-file.d.ts +35 -0
  18. package/dist/cli-ui/env-file.d.ts.map +1 -0
  19. package/dist/cli-ui/env-file.js +163 -0
  20. package/dist/cli-ui/env-file.js.map +1 -0
  21. package/dist/cli-ui/i18n.d.ts +204 -0
  22. package/dist/cli-ui/i18n.d.ts.map +1 -0
  23. package/dist/cli-ui/i18n.js +455 -0
  24. package/dist/cli-ui/i18n.js.map +1 -0
  25. package/dist/cli-ui/lang-picker.d.ts +10 -0
  26. package/dist/cli-ui/lang-picker.d.ts.map +1 -0
  27. package/dist/cli-ui/lang-picker.js +33 -0
  28. package/dist/cli-ui/lang-picker.js.map +1 -0
  29. package/dist/cli-ui/paths.d.ts +4 -0
  30. package/dist/cli-ui/paths.d.ts.map +1 -0
  31. package/dist/cli-ui/paths.js +11 -0
  32. package/dist/cli-ui/paths.js.map +1 -0
  33. package/dist/cli-ui/prompts.d.ts +65 -0
  34. package/dist/cli-ui/prompts.d.ts.map +1 -0
  35. package/dist/cli-ui/prompts.js +125 -0
  36. package/dist/cli-ui/prompts.js.map +1 -0
  37. package/dist/cli-ui/service.d.ts +41 -0
  38. package/dist/cli-ui/service.d.ts.map +1 -0
  39. package/dist/cli-ui/service.js +241 -0
  40. package/dist/cli-ui/service.js.map +1 -0
  41. package/dist/cli.d.ts +3 -0
  42. package/dist/cli.d.ts.map +1 -0
  43. package/dist/cli.js +1143 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/core/acp-server.d.ts +8 -0
  46. package/dist/core/acp-server.d.ts.map +1 -0
  47. package/dist/core/acp-server.js +266 -0
  48. package/dist/core/acp-server.js.map +1 -0
  49. package/dist/core/agent-base.d.ts +94 -0
  50. package/dist/core/agent-base.d.ts.map +1 -0
  51. package/dist/core/agent-base.js +373 -0
  52. package/dist/core/agent-base.js.map +1 -0
  53. package/dist/core/agent-cwd.d.ts +48 -0
  54. package/dist/core/agent-cwd.d.ts.map +1 -0
  55. package/dist/core/agent-cwd.js +181 -0
  56. package/dist/core/agent-cwd.js.map +1 -0
  57. package/dist/core/agent-helper.d.ts +65 -0
  58. package/dist/core/agent-helper.d.ts.map +1 -0
  59. package/dist/core/agent-helper.js +150 -0
  60. package/dist/core/agent-helper.js.map +1 -0
  61. package/dist/core/agim-paths.d.ts +10 -0
  62. package/dist/core/agim-paths.d.ts.map +1 -0
  63. package/dist/core/agim-paths.js +64 -0
  64. package/dist/core/agim-paths.js.map +1 -0
  65. package/dist/core/approval-bus.d.ts +300 -0
  66. package/dist/core/approval-bus.d.ts.map +1 -0
  67. package/dist/core/approval-bus.js +990 -0
  68. package/dist/core/approval-bus.js.map +1 -0
  69. package/dist/core/approval-router.d.ts +101 -0
  70. package/dist/core/approval-router.d.ts.map +1 -0
  71. package/dist/core/approval-router.js +540 -0
  72. package/dist/core/approval-router.js.map +1 -0
  73. package/dist/core/audit-log.d.ts +55 -0
  74. package/dist/core/audit-log.d.ts.map +1 -0
  75. package/dist/core/audit-log.js +203 -0
  76. package/dist/core/audit-log.js.map +1 -0
  77. package/dist/core/bgjob-reader.d.ts +65 -0
  78. package/dist/core/bgjob-reader.d.ts.map +1 -0
  79. package/dist/core/bgjob-reader.js +212 -0
  80. package/dist/core/bgjob-reader.js.map +1 -0
  81. package/dist/core/circuit-breaker.d.ts +37 -0
  82. package/dist/core/circuit-breaker.d.ts.map +1 -0
  83. package/dist/core/circuit-breaker.js +115 -0
  84. package/dist/core/circuit-breaker.js.map +1 -0
  85. package/dist/core/commands/agent.d.ts +4 -0
  86. package/dist/core/commands/agent.d.ts.map +1 -0
  87. package/dist/core/commands/agent.js +40 -0
  88. package/dist/core/commands/agent.js.map +1 -0
  89. package/dist/core/commands/approval.d.ts +3 -0
  90. package/dist/core/commands/approval.d.ts.map +1 -0
  91. package/dist/core/commands/approval.js +85 -0
  92. package/dist/core/commands/approval.js.map +1 -0
  93. package/dist/core/commands/audit.d.ts +3 -0
  94. package/dist/core/commands/audit.d.ts.map +1 -0
  95. package/dist/core/commands/audit.js +84 -0
  96. package/dist/core/commands/audit.js.map +1 -0
  97. package/dist/core/commands/builtin.d.ts +3 -0
  98. package/dist/core/commands/builtin.d.ts.map +1 -0
  99. package/dist/core/commands/builtin.js +304 -0
  100. package/dist/core/commands/builtin.js.map +1 -0
  101. package/dist/core/commands/cron.d.ts +3 -0
  102. package/dist/core/commands/cron.d.ts.map +1 -0
  103. package/dist/core/commands/cron.js +128 -0
  104. package/dist/core/commands/cron.js.map +1 -0
  105. package/dist/core/commands/job.d.ts +3 -0
  106. package/dist/core/commands/job.d.ts.map +1 -0
  107. package/dist/core/commands/job.js +195 -0
  108. package/dist/core/commands/job.js.map +1 -0
  109. package/dist/core/commands/memo.d.ts +3 -0
  110. package/dist/core/commands/memo.d.ts.map +1 -0
  111. package/dist/core/commands/memo.js +151 -0
  112. package/dist/core/commands/memo.js.map +1 -0
  113. package/dist/core/commands/model.d.ts +9 -0
  114. package/dist/core/commands/model.d.ts.map +1 -0
  115. package/dist/core/commands/model.js +183 -0
  116. package/dist/core/commands/model.js.map +1 -0
  117. package/dist/core/commands/plan.d.ts +3 -0
  118. package/dist/core/commands/plan.d.ts.map +1 -0
  119. package/dist/core/commands/plan.js +75 -0
  120. package/dist/core/commands/plan.js.map +1 -0
  121. package/dist/core/commands/remind.d.ts +3 -0
  122. package/dist/core/commands/remind.d.ts.map +1 -0
  123. package/dist/core/commands/remind.js +271 -0
  124. package/dist/core/commands/remind.js.map +1 -0
  125. package/dist/core/commands/router.d.ts +3 -0
  126. package/dist/core/commands/router.d.ts.map +1 -0
  127. package/dist/core/commands/router.js +71 -0
  128. package/dist/core/commands/router.js.map +1 -0
  129. package/dist/core/commands/sessions.d.ts +3 -0
  130. package/dist/core/commands/sessions.d.ts.map +1 -0
  131. package/dist/core/commands/sessions.js +88 -0
  132. package/dist/core/commands/sessions.js.map +1 -0
  133. package/dist/core/commands/stats.d.ts +3 -0
  134. package/dist/core/commands/stats.d.ts.map +1 -0
  135. package/dist/core/commands/stats.js +73 -0
  136. package/dist/core/commands/stats.js.map +1 -0
  137. package/dist/core/commands/think.d.ts +3 -0
  138. package/dist/core/commands/think.d.ts.map +1 -0
  139. package/dist/core/commands/think.js +28 -0
  140. package/dist/core/commands/think.js.map +1 -0
  141. package/dist/core/commands/workspaces.d.ts +3 -0
  142. package/dist/core/commands/workspaces.d.ts.map +1 -0
  143. package/dist/core/commands/workspaces.js +47 -0
  144. package/dist/core/commands/workspaces.js.map +1 -0
  145. package/dist/core/config-schema.d.ts +60 -0
  146. package/dist/core/config-schema.d.ts.map +1 -0
  147. package/dist/core/config-schema.js +75 -0
  148. package/dist/core/config-schema.js.map +1 -0
  149. package/dist/core/coord-systems.d.ts +65 -0
  150. package/dist/core/coord-systems.d.ts.map +1 -0
  151. package/dist/core/coord-systems.js +229 -0
  152. package/dist/core/coord-systems.js.map +1 -0
  153. package/dist/core/cron.d.ts +29 -0
  154. package/dist/core/cron.d.ts.map +1 -0
  155. package/dist/core/cron.js +184 -0
  156. package/dist/core/cron.js.map +1 -0
  157. package/dist/core/event-bus.d.ts +80 -0
  158. package/dist/core/event-bus.d.ts.map +1 -0
  159. package/dist/core/event-bus.js +62 -0
  160. package/dist/core/event-bus.js.map +1 -0
  161. package/dist/core/intent-llm.d.ts +27 -0
  162. package/dist/core/intent-llm.d.ts.map +1 -0
  163. package/dist/core/intent-llm.js +170 -0
  164. package/dist/core/intent-llm.js.map +1 -0
  165. package/dist/core/intent.d.ts +12 -0
  166. package/dist/core/intent.d.ts.map +1 -0
  167. package/dist/core/intent.js +187 -0
  168. package/dist/core/intent.js.map +1 -0
  169. package/dist/core/job-board.d.ts +82 -0
  170. package/dist/core/job-board.d.ts.map +1 -0
  171. package/dist/core/job-board.js +379 -0
  172. package/dist/core/job-board.js.map +1 -0
  173. package/dist/core/location-context.d.ts +32 -0
  174. package/dist/core/location-context.d.ts.map +1 -0
  175. package/dist/core/location-context.js +69 -0
  176. package/dist/core/location-context.js.map +1 -0
  177. package/dist/core/location-token.d.ts +57 -0
  178. package/dist/core/location-token.d.ts.map +1 -0
  179. package/dist/core/location-token.js +128 -0
  180. package/dist/core/location-token.js.map +1 -0
  181. package/dist/core/logger.d.ts +6 -0
  182. package/dist/core/logger.d.ts.map +1 -0
  183. package/dist/core/logger.js +54 -0
  184. package/dist/core/logger.js.map +1 -0
  185. package/dist/core/memo-rpc.d.ts +13 -0
  186. package/dist/core/memo-rpc.d.ts.map +1 -0
  187. package/dist/core/memo-rpc.js +288 -0
  188. package/dist/core/memo-rpc.js.map +1 -0
  189. package/dist/core/memos.d.ts +163 -0
  190. package/dist/core/memos.d.ts.map +1 -0
  191. package/dist/core/memos.js +502 -0
  192. package/dist/core/memos.js.map +1 -0
  193. package/dist/core/metrics.d.ts +55 -0
  194. package/dist/core/metrics.d.ts.map +1 -0
  195. package/dist/core/metrics.js +291 -0
  196. package/dist/core/metrics.js.map +1 -0
  197. package/dist/core/onboarding.d.ts +99 -0
  198. package/dist/core/onboarding.d.ts.map +1 -0
  199. package/dist/core/onboarding.js +426 -0
  200. package/dist/core/onboarding.js.map +1 -0
  201. package/dist/core/pending-reminder.d.ts +25 -0
  202. package/dist/core/pending-reminder.d.ts.map +1 -0
  203. package/dist/core/pending-reminder.js +53 -0
  204. package/dist/core/pending-reminder.js.map +1 -0
  205. package/dist/core/rate-limiter.d.ts +44 -0
  206. package/dist/core/rate-limiter.d.ts.map +1 -0
  207. package/dist/core/rate-limiter.js +115 -0
  208. package/dist/core/rate-limiter.js.map +1 -0
  209. package/dist/core/registry.d.ts +32 -0
  210. package/dist/core/registry.d.ts.map +1 -0
  211. package/dist/core/registry.js +126 -0
  212. package/dist/core/registry.js.map +1 -0
  213. package/dist/core/remind-intent.d.ts +25 -0
  214. package/dist/core/remind-intent.d.ts.map +1 -0
  215. package/dist/core/remind-intent.js +196 -0
  216. package/dist/core/remind-intent.js.map +1 -0
  217. package/dist/core/reminder-rpc.d.ts +17 -0
  218. package/dist/core/reminder-rpc.d.ts.map +1 -0
  219. package/dist/core/reminder-rpc.js +169 -0
  220. package/dist/core/reminder-rpc.js.map +1 -0
  221. package/dist/core/reminders.d.ts +159 -0
  222. package/dist/core/reminders.d.ts.map +1 -0
  223. package/dist/core/reminders.js +977 -0
  224. package/dist/core/reminders.js.map +1 -0
  225. package/dist/core/router.d.ts +55 -0
  226. package/dist/core/router.d.ts.map +1 -0
  227. package/dist/core/router.js +497 -0
  228. package/dist/core/router.js.map +1 -0
  229. package/dist/core/schedule.d.ts +65 -0
  230. package/dist/core/schedule.d.ts.map +1 -0
  231. package/dist/core/schedule.js +323 -0
  232. package/dist/core/schedule.js.map +1 -0
  233. package/dist/core/session.d.ts +182 -0
  234. package/dist/core/session.d.ts.map +1 -0
  235. package/dist/core/session.js +807 -0
  236. package/dist/core/session.js.map +1 -0
  237. package/dist/core/sqlite-helper.d.ts +37 -0
  238. package/dist/core/sqlite-helper.d.ts.map +1 -0
  239. package/dist/core/sqlite-helper.js +79 -0
  240. package/dist/core/sqlite-helper.js.map +1 -0
  241. package/dist/core/transcribe.d.ts +25 -0
  242. package/dist/core/transcribe.d.ts.map +1 -0
  243. package/dist/core/transcribe.js +217 -0
  244. package/dist/core/transcribe.js.map +1 -0
  245. package/dist/core/types.d.ts +360 -0
  246. package/dist/core/types.d.ts.map +1 -0
  247. package/dist/core/types.js +3 -0
  248. package/dist/core/types.js.map +1 -0
  249. package/dist/core/workspace.d.ts +67 -0
  250. package/dist/core/workspace.d.ts.map +1 -0
  251. package/dist/core/workspace.js +113 -0
  252. package/dist/core/workspace.js.map +1 -0
  253. package/dist/index.d.ts +5 -0
  254. package/dist/index.d.ts.map +1 -0
  255. package/dist/index.js +6 -0
  256. package/dist/index.js.map +1 -0
  257. package/dist/plugins/agents/acp/acp-adapter.d.ts +16 -0
  258. package/dist/plugins/agents/acp/acp-adapter.d.ts.map +1 -0
  259. package/dist/plugins/agents/acp/acp-adapter.js +49 -0
  260. package/dist/plugins/agents/acp/acp-adapter.js.map +1 -0
  261. package/dist/plugins/agents/acp/acp-client.d.ts +32 -0
  262. package/dist/plugins/agents/acp/acp-client.d.ts.map +1 -0
  263. package/dist/plugins/agents/acp/acp-client.js +177 -0
  264. package/dist/plugins/agents/acp/acp-client.js.map +1 -0
  265. package/dist/plugins/agents/acp/discovery.d.ts +19 -0
  266. package/dist/plugins/agents/acp/discovery.d.ts.map +1 -0
  267. package/dist/plugins/agents/acp/discovery.js +111 -0
  268. package/dist/plugins/agents/acp/discovery.js.map +1 -0
  269. package/dist/plugins/agents/acp/index.d.ts +4 -0
  270. package/dist/plugins/agents/acp/index.d.ts.map +1 -0
  271. package/dist/plugins/agents/acp/index.js +4 -0
  272. package/dist/plugins/agents/acp/index.js.map +1 -0
  273. package/dist/plugins/agents/acp/types.d.ts +62 -0
  274. package/dist/plugins/agents/acp/types.d.ts.map +1 -0
  275. package/dist/plugins/agents/acp/types.js +5 -0
  276. package/dist/plugins/agents/acp/types.js.map +1 -0
  277. package/dist/plugins/agents/claude-code/index.d.ts +25 -0
  278. package/dist/plugins/agents/claude-code/index.d.ts.map +1 -0
  279. package/dist/plugins/agents/claude-code/index.js +184 -0
  280. package/dist/plugins/agents/claude-code/index.js.map +1 -0
  281. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +59 -0
  282. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -0
  283. package/dist/plugins/agents/claude-code/mcp-approval-server.js +645 -0
  284. package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -0
  285. package/dist/plugins/agents/codex/build-mcp-cli-args.d.ts +28 -0
  286. package/dist/plugins/agents/codex/build-mcp-cli-args.d.ts.map +1 -0
  287. package/dist/plugins/agents/codex/build-mcp-cli-args.js +74 -0
  288. package/dist/plugins/agents/codex/build-mcp-cli-args.js.map +1 -0
  289. package/dist/plugins/agents/codex/index.d.ts +53 -0
  290. package/dist/plugins/agents/codex/index.d.ts.map +1 -0
  291. package/dist/plugins/agents/codex/index.js +341 -0
  292. package/dist/plugins/agents/codex/index.js.map +1 -0
  293. package/dist/plugins/agents/copilot/index.d.ts +35 -0
  294. package/dist/plugins/agents/copilot/index.d.ts.map +1 -0
  295. package/dist/plugins/agents/copilot/index.js +182 -0
  296. package/dist/plugins/agents/copilot/index.js.map +1 -0
  297. package/dist/plugins/agents/opencode/ensure-mcp-config.d.ts +11 -0
  298. package/dist/plugins/agents/opencode/ensure-mcp-config.d.ts.map +1 -0
  299. package/dist/plugins/agents/opencode/ensure-mcp-config.js +100 -0
  300. package/dist/plugins/agents/opencode/ensure-mcp-config.js.map +1 -0
  301. package/dist/plugins/agents/opencode/index.d.ts +5 -0
  302. package/dist/plugins/agents/opencode/index.d.ts.map +1 -0
  303. package/dist/plugins/agents/opencode/index.js +30 -0
  304. package/dist/plugins/agents/opencode/index.js.map +1 -0
  305. package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts +166 -0
  306. package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -0
  307. package/dist/plugins/agents/opencode/opencode-http-adapter.js +682 -0
  308. package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -0
  309. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts +32 -0
  310. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -0
  311. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +137 -0
  312. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -0
  313. package/dist/plugins/agents/opencode/serve-manager.d.ts +27 -0
  314. package/dist/plugins/agents/opencode/serve-manager.d.ts.map +1 -0
  315. package/dist/plugins/agents/opencode/serve-manager.js +194 -0
  316. package/dist/plugins/agents/opencode/serve-manager.js.map +1 -0
  317. package/dist/plugins/messengers/dingtalk/dingtalk-adapter.d.ts +57 -0
  318. package/dist/plugins/messengers/dingtalk/dingtalk-adapter.d.ts.map +1 -0
  319. package/dist/plugins/messengers/dingtalk/dingtalk-adapter.js +409 -0
  320. package/dist/plugins/messengers/dingtalk/dingtalk-adapter.js.map +1 -0
  321. package/dist/plugins/messengers/dingtalk/dingtalk-client.d.ts +48 -0
  322. package/dist/plugins/messengers/dingtalk/dingtalk-client.d.ts.map +1 -0
  323. package/dist/plugins/messengers/dingtalk/dingtalk-client.js +236 -0
  324. package/dist/plugins/messengers/dingtalk/dingtalk-client.js.map +1 -0
  325. package/dist/plugins/messengers/dingtalk/index.d.ts +3 -0
  326. package/dist/plugins/messengers/dingtalk/index.d.ts.map +1 -0
  327. package/dist/plugins/messengers/dingtalk/index.js +3 -0
  328. package/dist/plugins/messengers/dingtalk/index.js.map +1 -0
  329. package/dist/plugins/messengers/dingtalk/link-coords.d.ts +23 -0
  330. package/dist/plugins/messengers/dingtalk/link-coords.d.ts.map +1 -0
  331. package/dist/plugins/messengers/dingtalk/link-coords.js +89 -0
  332. package/dist/plugins/messengers/dingtalk/link-coords.js.map +1 -0
  333. package/dist/plugins/messengers/dingtalk/media-store.d.ts +16 -0
  334. package/dist/plugins/messengers/dingtalk/media-store.d.ts.map +1 -0
  335. package/dist/plugins/messengers/dingtalk/media-store.js +77 -0
  336. package/dist/plugins/messengers/dingtalk/media-store.js.map +1 -0
  337. package/dist/plugins/messengers/dingtalk/types.d.ts +82 -0
  338. package/dist/plugins/messengers/dingtalk/types.d.ts.map +1 -0
  339. package/dist/plugins/messengers/dingtalk/types.js +14 -0
  340. package/dist/plugins/messengers/dingtalk/types.js.map +1 -0
  341. package/dist/plugins/messengers/discord/discord-adapter.d.ts +21 -0
  342. package/dist/plugins/messengers/discord/discord-adapter.d.ts.map +1 -0
  343. package/dist/plugins/messengers/discord/discord-adapter.js +238 -0
  344. package/dist/plugins/messengers/discord/discord-adapter.js.map +1 -0
  345. package/dist/plugins/messengers/discord/index.d.ts +4 -0
  346. package/dist/plugins/messengers/discord/index.d.ts.map +1 -0
  347. package/dist/plugins/messengers/discord/index.js +4 -0
  348. package/dist/plugins/messengers/discord/index.js.map +1 -0
  349. package/dist/plugins/messengers/discord/markdown-to-discord.d.ts +11 -0
  350. package/dist/plugins/messengers/discord/markdown-to-discord.d.ts.map +1 -0
  351. package/dist/plugins/messengers/discord/markdown-to-discord.js +59 -0
  352. package/dist/plugins/messengers/discord/markdown-to-discord.js.map +1 -0
  353. package/dist/plugins/messengers/discord/types.d.ts +9 -0
  354. package/dist/plugins/messengers/discord/types.d.ts.map +1 -0
  355. package/dist/plugins/messengers/discord/types.js +3 -0
  356. package/dist/plugins/messengers/discord/types.js.map +1 -0
  357. package/dist/plugins/messengers/email/email-adapter.d.ts +33 -0
  358. package/dist/plugins/messengers/email/email-adapter.d.ts.map +1 -0
  359. package/dist/plugins/messengers/email/email-adapter.js +137 -0
  360. package/dist/plugins/messengers/email/email-adapter.js.map +1 -0
  361. package/dist/plugins/messengers/feishu/card-builder.d.ts +23 -0
  362. package/dist/plugins/messengers/feishu/card-builder.d.ts.map +1 -0
  363. package/dist/plugins/messengers/feishu/card-builder.js +89 -0
  364. package/dist/plugins/messengers/feishu/card-builder.js.map +1 -0
  365. package/dist/plugins/messengers/feishu/feishu-adapter.d.ts +23 -0
  366. package/dist/plugins/messengers/feishu/feishu-adapter.d.ts.map +1 -0
  367. package/dist/plugins/messengers/feishu/feishu-adapter.js +250 -0
  368. package/dist/plugins/messengers/feishu/feishu-adapter.js.map +1 -0
  369. package/dist/plugins/messengers/feishu/feishu-client.d.ts +43 -0
  370. package/dist/plugins/messengers/feishu/feishu-client.d.ts.map +1 -0
  371. package/dist/plugins/messengers/feishu/feishu-client.js +118 -0
  372. package/dist/plugins/messengers/feishu/feishu-client.js.map +1 -0
  373. package/dist/plugins/messengers/feishu/index.d.ts +4 -0
  374. package/dist/plugins/messengers/feishu/index.d.ts.map +1 -0
  375. package/dist/plugins/messengers/feishu/index.js +4 -0
  376. package/dist/plugins/messengers/feishu/index.js.map +1 -0
  377. package/dist/plugins/messengers/feishu/types.d.ts +113 -0
  378. package/dist/plugins/messengers/feishu/types.d.ts.map +1 -0
  379. package/dist/plugins/messengers/feishu/types.js +4 -0
  380. package/dist/plugins/messengers/feishu/types.js.map +1 -0
  381. package/dist/plugins/messengers/telegram/index.d.ts +4 -0
  382. package/dist/plugins/messengers/telegram/index.d.ts.map +1 -0
  383. package/dist/plugins/messengers/telegram/index.js +4 -0
  384. package/dist/plugins/messengers/telegram/index.js.map +1 -0
  385. package/dist/plugins/messengers/telegram/markdown-to-html.d.ts +5 -0
  386. package/dist/plugins/messengers/telegram/markdown-to-html.d.ts.map +1 -0
  387. package/dist/plugins/messengers/telegram/markdown-to-html.js +186 -0
  388. package/dist/plugins/messengers/telegram/markdown-to-html.js.map +1 -0
  389. package/dist/plugins/messengers/telegram/media-download.d.ts +59 -0
  390. package/dist/plugins/messengers/telegram/media-download.d.ts.map +1 -0
  391. package/dist/plugins/messengers/telegram/media-download.js +228 -0
  392. package/dist/plugins/messengers/telegram/media-download.js.map +1 -0
  393. package/dist/plugins/messengers/telegram/telegram-adapter.d.ts +77 -0
  394. package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -0
  395. package/dist/plugins/messengers/telegram/telegram-adapter.js +880 -0
  396. package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -0
  397. package/dist/plugins/messengers/telegram/types.d.ts +47 -0
  398. package/dist/plugins/messengers/telegram/types.d.ts.map +1 -0
  399. package/dist/plugins/messengers/telegram/types.js +3 -0
  400. package/dist/plugins/messengers/telegram/types.js.map +1 -0
  401. package/dist/plugins/messengers/wechat/context-store.d.ts +18 -0
  402. package/dist/plugins/messengers/wechat/context-store.d.ts.map +1 -0
  403. package/dist/plugins/messengers/wechat/context-store.js +105 -0
  404. package/dist/plugins/messengers/wechat/context-store.js.map +1 -0
  405. package/dist/plugins/messengers/wechat/ilink-adapter.d.ts +71 -0
  406. package/dist/plugins/messengers/wechat/ilink-adapter.d.ts.map +1 -0
  407. package/dist/plugins/messengers/wechat/ilink-adapter.js +664 -0
  408. package/dist/plugins/messengers/wechat/ilink-adapter.js.map +1 -0
  409. package/dist/plugins/messengers/wechat/ilink-client.d.ts +75 -0
  410. package/dist/plugins/messengers/wechat/ilink-client.d.ts.map +1 -0
  411. package/dist/plugins/messengers/wechat/ilink-client.js +331 -0
  412. package/dist/plugins/messengers/wechat/ilink-client.js.map +1 -0
  413. package/dist/plugins/messengers/wechat/ilink-types.d.ts +181 -0
  414. package/dist/plugins/messengers/wechat/ilink-types.d.ts.map +1 -0
  415. package/dist/plugins/messengers/wechat/ilink-types.js +22 -0
  416. package/dist/plugins/messengers/wechat/ilink-types.js.map +1 -0
  417. package/dist/plugins/messengers/wechat/media-download.d.ts +32 -0
  418. package/dist/plugins/messengers/wechat/media-download.d.ts.map +1 -0
  419. package/dist/plugins/messengers/wechat/media-download.js +78 -0
  420. package/dist/plugins/messengers/wechat/media-download.js.map +1 -0
  421. package/dist/scripts/migrate-gcj02-to-wgs84.d.ts +3 -0
  422. package/dist/scripts/migrate-gcj02-to-wgs84.d.ts.map +1 -0
  423. package/dist/scripts/migrate-gcj02-to-wgs84.js +52 -0
  424. package/dist/scripts/migrate-gcj02-to-wgs84.js.map +1 -0
  425. package/dist/utils/backoff.d.ts +35 -0
  426. package/dist/utils/backoff.d.ts.map +1 -0
  427. package/dist/utils/backoff.js +59 -0
  428. package/dist/utils/backoff.js.map +1 -0
  429. package/dist/utils/cross-platform.d.ts +26 -0
  430. package/dist/utils/cross-platform.d.ts.map +1 -0
  431. package/dist/utils/cross-platform.js +58 -0
  432. package/dist/utils/cross-platform.js.map +1 -0
  433. package/dist/utils/message-split.d.ts +14 -0
  434. package/dist/utils/message-split.d.ts.map +1 -0
  435. package/dist/utils/message-split.js +65 -0
  436. package/dist/utils/message-split.js.map +1 -0
  437. package/dist/utils/safe-equal.d.ts +2 -0
  438. package/dist/utils/safe-equal.d.ts.map +1 -0
  439. package/dist/utils/safe-equal.js +11 -0
  440. package/dist/utils/safe-equal.js.map +1 -0
  441. package/dist/web/public/_app.js +196 -0
  442. package/dist/web/public/index.html +936 -0
  443. package/dist/web/public/loc.html +305 -0
  444. package/dist/web/public/login.html +106 -0
  445. package/dist/web/public/memos.html +271 -0
  446. package/dist/web/public/reminders.html +234 -0
  447. package/dist/web/public/settings.html +1355 -0
  448. package/dist/web/public/tasks.html +1835 -0
  449. package/dist/web/server.d.ts +12 -0
  450. package/dist/web/server.d.ts.map +1 -0
  451. package/dist/web/server.js +2399 -0
  452. package/dist/web/server.js.map +1 -0
  453. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-http-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-http-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { AgentBase, type SpawnPlan } from '../../../core/agent-base.js';
2
+ import type { AgentSendOpts } from '../../../core/types.js';
3
+ export declare class OpenCodeAdapter extends AgentBase {
4
+ readonly name = "opencode";
5
+ readonly aliases: string[];
6
+ protected buildArgs(prompt: string, opts: AgentSendOpts): string[];
7
+ /**
8
+ * opencode keys its per-project AGENTS.md and memory off the spawn cwd,
9
+ * so for IM calls we pin to ~/.im-hub-workspaces/opencode/. Non-IM calls
10
+ * (web/scheduler) keep cwd undefined and inherit im-hub's cwd, preserving
11
+ * the prior behavior. See agent-cwd.ts for full rationale.
12
+ *
13
+ * MCP context (for the imhub reminder tools): when we have a real IM
14
+ * thread + the bus is running, register a unique runId and inject
15
+ * IMHUB_APPROVAL_SOCK + IMHUB_RUN_ID into the spawn env. opencode forwards
16
+ * its env to MCP server children (per opencode/src/mcp/index.ts:384), so
17
+ * the sidecar inherits these and can route reminder.* RPCs back to the
18
+ * right RunContext. No env injection → sidecar still launches but
19
+ * connects to nothing → reminder tools deny gracefully ("bus unavailable").
20
+ */
21
+ protected prepareCommand(prompt: string, opts: AgentSendOpts): Promise<SpawnPlan>;
22
+ protected extractText(event: unknown): string;
23
+ /**
24
+ * Pull metadata out of every event:
25
+ * - `sessionID` on any event → bubble up via opts.onAgentSessionId so cli
26
+ * can persist it. Idempotent (the callback handles dedup).
27
+ * - `cost` / `tokens` on `step_finish` → bubble up via opts.onUsage so
28
+ * callAgentWithHistory can roll into /stats.
29
+ */
30
+ protected inspectEvent(event: unknown, opts: AgentSendOpts): void;
31
+ }
32
+ //# sourceMappingURL=opencode-stdio-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-stdio-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-stdio-adapter.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AA2B3D,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,QAAQ,CAAC,IAAI,cAAa;IAC1B,QAAQ,CAAC,OAAO,WAAuB;IAEvC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAelE;;;;;;;;;;;;;OAaG;cACa,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAiCvF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAO7C;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;CAiBlE"}
@@ -0,0 +1,137 @@
1
+ // OpenCode CLI agent adapter — stdio (JSONL) driver.
2
+ // Uses `opencode run --format json` for programmatic interaction.
3
+ //
4
+ // Two flavors of multi-turn continuity, mirroring the claude-code adapter:
5
+ //
6
+ // First turn — no opts.agentSessionId yet. Spawn `opencode run …` plain.
7
+ // The adapter watches for `sessionID` on the very first event
8
+ // and reports it back via opts.onAgentSessionId so cli can
9
+ // persist it on the im-hub Session row.
10
+ // Later turns — opts.agentSessionId is the captured ses_… id. We pass
11
+ // `--session <id>` so opencode reads the conversation from
12
+ // its own DB instead of relying on im-hub stitching the
13
+ // history into the prompt. router.callAgentWithHistory
14
+ // honours this by zeroing out `effectiveHistory` whenever
15
+ // `agentSessionResume` is true.
16
+ //
17
+ // Cost accounting: opencode emits `cost` and `tokens.{input,output}` in
18
+ // `step_finish` events. We forward those as opts.onUsage deltas so /stats
19
+ // reflects opencode reality (it had been hard-coded to 0 before).
20
+ //
21
+ // Known limitation (the reason OpenCodeHttpAdapter exists): `opencode run`'s
22
+ // stdout JSON stream does NOT emit `permission.asked`, and its inline auto-
23
+ // reject logic occasionally fails to release the prompt deferred. Result:
24
+ // process hangs until the 30-min hard timeout fires. The HTTP driver fixes
25
+ // this at the root by driving opencode via its REST + SSE API instead.
26
+ import { randomUUID } from 'node:crypto';
27
+ import { AgentBase } from '../../../core/agent-base.js';
28
+ import { resolveAgentCwd } from '../../../core/agent-cwd.js';
29
+ import { approvalBus } from '../../../core/approval-bus.js';
30
+ import { logger as rootLogger } from '../../../core/logger.js';
31
+ const log = rootLogger.child({ component: 'agent.opencode' });
32
+ export class OpenCodeAdapter extends AgentBase {
33
+ name = 'opencode';
34
+ aliases = ['oc', 'opencodeai'];
35
+ buildArgs(prompt, opts) {
36
+ const args = ['run', '--format', 'json'];
37
+ if (opts.agentSessionId)
38
+ args.push('--session', opts.agentSessionId);
39
+ if (opts.model)
40
+ args.push('--model', opts.model);
41
+ if (opts.variant)
42
+ args.push('--variant', opts.variant);
43
+ // planMode → opencode's built-in `plan` agent. Its policy denies edit/
44
+ // write outside .opencode/plans/*.md and allows the LLM to call
45
+ // `plan_exit` when it's done — but we intentionally do NOT auto-flip
46
+ // session.planMode on plan_exit (see docs/architecture/plan-mode.md);
47
+ // the user keeps control of the toggle via /plan off.
48
+ if (opts.planMode)
49
+ args.push('--agent', 'plan');
50
+ args.push(prompt);
51
+ return args;
52
+ }
53
+ /**
54
+ * opencode keys its per-project AGENTS.md and memory off the spawn cwd,
55
+ * so for IM calls we pin to ~/.im-hub-workspaces/opencode/. Non-IM calls
56
+ * (web/scheduler) keep cwd undefined and inherit im-hub's cwd, preserving
57
+ * the prior behavior. See agent-cwd.ts for full rationale.
58
+ *
59
+ * MCP context (for the imhub reminder tools): when we have a real IM
60
+ * thread + the bus is running, register a unique runId and inject
61
+ * IMHUB_APPROVAL_SOCK + IMHUB_RUN_ID into the spawn env. opencode forwards
62
+ * its env to MCP server children (per opencode/src/mcp/index.ts:384), so
63
+ * the sidecar inherits these and can route reminder.* RPCs back to the
64
+ * right RunContext. No env injection → sidecar still launches but
65
+ * connects to nothing → reminder tools deny gracefully ("bus unavailable").
66
+ */
67
+ async prepareCommand(prompt, opts) {
68
+ const args = this.buildArgs(prompt, opts);
69
+ const cwd = resolveAgentCwd(this.name, opts);
70
+ const sockPath = approvalBus.getSocketPath();
71
+ const haveImCtx = !!(opts.threadId && opts.platform && opts.channelId);
72
+ if (!sockPath || !haveImCtx) {
73
+ return { args, cwd };
74
+ }
75
+ const runId = randomUUID();
76
+ approvalBus.registerRun(runId, {
77
+ threadId: opts.threadId,
78
+ platform: opts.platform,
79
+ userId: opts.userId ?? '',
80
+ channelId: opts.channelId,
81
+ });
82
+ log.info({ event: 'opencode.mcp.run_registered', runId, threadId: opts.threadId }, 'opencode run registered with bus for MCP reminder tools');
83
+ return {
84
+ args,
85
+ cwd,
86
+ extraEnv: {
87
+ IMHUB_APPROVAL_SOCK: sockPath,
88
+ IMHUB_RUN_ID: runId,
89
+ },
90
+ cleanup: () => {
91
+ approvalBus.unregisterRun(runId);
92
+ },
93
+ };
94
+ }
95
+ extractText(event) {
96
+ const e = event;
97
+ if (e.type === 'text' && e.part?.text)
98
+ return e.part.text;
99
+ if (e.type === 'content' && e.content)
100
+ return e.content;
101
+ return '';
102
+ }
103
+ /**
104
+ * Pull metadata out of every event:
105
+ * - `sessionID` on any event → bubble up via opts.onAgentSessionId so cli
106
+ * can persist it. Idempotent (the callback handles dedup).
107
+ * - `cost` / `tokens` on `step_finish` → bubble up via opts.onUsage so
108
+ * callAgentWithHistory can roll into /stats.
109
+ */
110
+ inspectEvent(event, opts) {
111
+ const e = event;
112
+ if (e.sessionID && opts.onAgentSessionId) {
113
+ try {
114
+ opts.onAgentSessionId(e.sessionID);
115
+ }
116
+ catch { /* don't let userland callbacks kill the stream */ }
117
+ }
118
+ if (e.type === 'step_finish' && opts.onUsage) {
119
+ // cost / tokens are NESTED inside event.part, not on the event itself.
120
+ const part = e.part;
121
+ const delta = {};
122
+ if (typeof part?.cost === 'number' && Number.isFinite(part.cost))
123
+ delta.costUsd = part.cost;
124
+ if (typeof part?.tokens?.input === 'number')
125
+ delta.tokensInput = part.tokens.input;
126
+ if (typeof part?.tokens?.output === 'number')
127
+ delta.tokensOutput = part.tokens.output;
128
+ if (delta.costUsd !== undefined || delta.tokensInput !== undefined || delta.tokensOutput !== undefined) {
129
+ try {
130
+ opts.onUsage(delta);
131
+ }
132
+ catch { /* same — user callback safety */ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ //# sourceMappingURL=opencode-stdio-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-stdio-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-stdio-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface ServeOptions {
2
+ /** Port to bind. Default: env IMHUB_OPENCODE_PORT or 14199. */
3
+ port?: number;
4
+ /** Host to bind. Default: 127.0.0.1. */
5
+ hostname?: string;
6
+ /** cwd for the spawn. Has no effect on per-session directory (sessions are
7
+ * created with their own directory) but determines where opencode looks
8
+ * for its global config. Default: process.cwd(). */
9
+ cwd?: string;
10
+ }
11
+ export declare class OpencodeServeManager {
12
+ private child;
13
+ private baseUrl;
14
+ private startPromise;
15
+ private readonly opts;
16
+ constructor(opts?: ServeOptions);
17
+ /** Start the daemon if needed and return the base URL once ready. Idempotent. */
18
+ ensureRunning(): Promise<string>;
19
+ isRunning(): boolean;
20
+ getBaseUrl(): string | null;
21
+ /** Stop the daemon. Used by tests and on im-hub shutdown. */
22
+ stop(): Promise<void>;
23
+ private spawnAndWait;
24
+ }
25
+ /** Process-wide singleton. Tests can `new OpencodeServeManager()` on their own. */
26
+ export declare const opencodeServe: OpencodeServeManager;
27
+ //# sourceMappingURL=serve-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-manager.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/serve-manager.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;yDAEqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkE;gBAE3E,IAAI,GAAE,YAAiB;IASnC,iFAAiF;IACjF,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAWhC,SAAS,IAAI,OAAO;IAIpB,UAAU,IAAI,MAAM,GAAG,IAAI;IAE3B,6DAA6D;IACvD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBb,YAAY;CAmG3B;AAuBD,mFAAmF;AACnF,eAAO,MAAM,aAAa,sBAA6B,CAAA"}
@@ -0,0 +1,194 @@
1
+ // OpencodeServeManager — lazy-launches and supervises a single
2
+ // `opencode serve` daemon that the HTTP adapter and the IM permission
3
+ // bridge talk to.
4
+ //
5
+ // Design notes:
6
+ // - Singleton per im-hub process. Multiple IM threads share one daemon —
7
+ // opencode's session model is per-session anyway, so collisions don't
8
+ // happen on the wire.
9
+ // - First call to ensureRunning() starts the child; readiness is detected
10
+ // by watching stderr for "listening on http://…" (the line opencode emits
11
+ // unconditionally) and falling back to an HTTP probe if that's missed.
12
+ // - If the child dies, the next ensureRunning() respawns. We don't
13
+ // auto-restart in the background — silent restart loops hide problems.
14
+ // - Bound to 127.0.0.1 by default. The server warns about
15
+ // OPENCODE_SERVER_PASSWORD being unset; we silence that intentionally
16
+ // since the surface is loopback only. Set it via env if you expose the
17
+ // port off-host.
18
+ import { crossSpawn } from '../../../utils/cross-platform.js';
19
+ import { logger as rootLogger } from '../../../core/logger.js';
20
+ const log = rootLogger.child({ component: 'opencode.serve' });
21
+ const READY_TIMEOUT_MS = 15_000;
22
+ const READY_REGEX = /listening on (https?:\/\/[^\s]+)/i;
23
+ export class OpencodeServeManager {
24
+ child = null;
25
+ baseUrl = null;
26
+ startPromise = null;
27
+ opts;
28
+ constructor(opts = {}) {
29
+ const envPort = process.env.IMHUB_OPENCODE_PORT;
30
+ this.opts = {
31
+ port: opts.port ?? (envPort ? parseInt(envPort, 10) : 14199),
32
+ hostname: opts.hostname ?? '127.0.0.1',
33
+ cwd: opts.cwd,
34
+ };
35
+ }
36
+ /** Start the daemon if needed and return the base URL once ready. Idempotent. */
37
+ ensureRunning() {
38
+ if (this.baseUrl && this.child && !this.child.killed) {
39
+ return Promise.resolve(this.baseUrl);
40
+ }
41
+ if (this.startPromise)
42
+ return this.startPromise;
43
+ this.startPromise = this.spawnAndWait().finally(() => {
44
+ this.startPromise = null;
45
+ });
46
+ return this.startPromise;
47
+ }
48
+ isRunning() {
49
+ return this.child !== null && !this.child.killed && this.baseUrl !== null;
50
+ }
51
+ getBaseUrl() { return this.baseUrl; }
52
+ /** Stop the daemon. Used by tests and on im-hub shutdown. */
53
+ async stop() {
54
+ const child = this.child;
55
+ if (!child)
56
+ return;
57
+ this.child = null;
58
+ this.baseUrl = null;
59
+ return new Promise((resolve) => {
60
+ const kill = setTimeout(() => {
61
+ try {
62
+ child.kill('SIGKILL');
63
+ }
64
+ catch { /* ignore */ }
65
+ }, 2000);
66
+ child.once('close', () => {
67
+ clearTimeout(kill);
68
+ resolve();
69
+ });
70
+ try {
71
+ child.kill('SIGTERM');
72
+ }
73
+ catch { /* ignore */ }
74
+ });
75
+ }
76
+ async spawnAndWait() {
77
+ const { port, hostname, cwd } = this.opts;
78
+ const candidateUrl = `http://${hostname}:${port}`;
79
+ // Probe before spawn: a previous im-hub run (or our own restart) may have
80
+ // left a healthy `opencode serve` on the same port. Spawning a second one
81
+ // would just bind-fail with code=1 and break the next user message — we
82
+ // saw exactly that in audit row 309 on 2026-05-04. If the port answers
83
+ // and the response looks like opencode, reuse it instead.
84
+ if (await probeOpencodeServe(candidateUrl)) {
85
+ this.baseUrl = candidateUrl;
86
+ log.info({ event: 'opencode.serve.reused', baseUrl: candidateUrl }, 'reusing existing opencode serve on configured port');
87
+ return candidateUrl;
88
+ }
89
+ log.info({ event: 'opencode.serve.starting', port, hostname }, 'starting opencode serve');
90
+ const child = crossSpawn('opencode', ['serve', '--port', String(port), '--hostname', hostname], {
91
+ stdio: ['ignore', 'pipe', 'pipe'],
92
+ cwd,
93
+ env: process.env,
94
+ });
95
+ this.child = child;
96
+ let resolved = false;
97
+ const ready = new Promise((resolve, reject) => {
98
+ const timer = setTimeout(() => {
99
+ if (resolved)
100
+ return;
101
+ resolved = true;
102
+ log.error({ event: 'opencode.serve.timeout' }, 'opencode serve did not become ready in time');
103
+ try {
104
+ child.kill('SIGTERM');
105
+ }
106
+ catch { /* ignore */ }
107
+ reject(new Error(`opencode serve did not become ready within ${READY_TIMEOUT_MS}ms`));
108
+ }, READY_TIMEOUT_MS);
109
+ const onLine = (line) => {
110
+ const m = line.match(READY_REGEX);
111
+ if (m && !resolved) {
112
+ resolved = true;
113
+ clearTimeout(timer);
114
+ this.baseUrl = m[1].replace(/\/+$/, '');
115
+ log.info({ event: 'opencode.serve.ready', baseUrl: this.baseUrl }, 'opencode serve ready');
116
+ resolve(this.baseUrl);
117
+ }
118
+ };
119
+ const stderr = child.stderr;
120
+ const stdout = child.stdout;
121
+ let stderrBuf = '';
122
+ let stdoutBuf = '';
123
+ stderr?.on('data', (data) => {
124
+ stderrBuf += data.toString('utf8');
125
+ while (true) {
126
+ const nl = stderrBuf.indexOf('\n');
127
+ if (nl === -1)
128
+ break;
129
+ const line = stderrBuf.slice(0, nl);
130
+ stderrBuf = stderrBuf.slice(nl + 1);
131
+ if (line.trim())
132
+ onLine(line);
133
+ }
134
+ });
135
+ stdout?.on('data', (data) => {
136
+ stdoutBuf += data.toString('utf8');
137
+ while (true) {
138
+ const nl = stdoutBuf.indexOf('\n');
139
+ if (nl === -1)
140
+ break;
141
+ const line = stdoutBuf.slice(0, nl);
142
+ stdoutBuf = stdoutBuf.slice(nl + 1);
143
+ if (line.trim())
144
+ onLine(line);
145
+ }
146
+ });
147
+ child.on('error', (err) => {
148
+ if (resolved)
149
+ return;
150
+ resolved = true;
151
+ clearTimeout(timer);
152
+ reject(err);
153
+ });
154
+ child.on('close', (code, signal) => {
155
+ log.warn({ event: 'opencode.serve.exited', code, signal }, 'opencode serve exited');
156
+ if (this.child === child) {
157
+ this.child = null;
158
+ this.baseUrl = null;
159
+ }
160
+ if (!resolved) {
161
+ resolved = true;
162
+ clearTimeout(timer);
163
+ reject(new Error(`opencode serve exited before ready (code=${code}, signal=${signal})`));
164
+ }
165
+ });
166
+ });
167
+ return ready;
168
+ }
169
+ }
170
+ /**
171
+ * Probe a candidate URL: if `GET /` returns 2xx within ~500ms, treat the
172
+ * port as already serving an opencode instance we can reuse. We don't try
173
+ * to fingerprint the response body — the localhost-only attack surface
174
+ * doesn't justify it; if some other service happens to listen on the
175
+ * configured port the reuse path will fail later when /event is hit and
176
+ * the adapter surfaces a clear error to the user.
177
+ */
178
+ async function probeOpencodeServe(baseUrl) {
179
+ const controller = new AbortController();
180
+ const timer = setTimeout(() => controller.abort(), 500);
181
+ try {
182
+ const res = await fetch(`${baseUrl}/`, { signal: controller.signal });
183
+ return res.ok;
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ finally {
189
+ clearTimeout(timer);
190
+ }
191
+ }
192
+ /** Process-wide singleton. Tests can `new OpencodeServeManager()` on their own. */
193
+ export const opencodeServe = new OpencodeServeManager();
194
+ //# sourceMappingURL=serve-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-manager.js","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/serve-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { MessengerAdapter, MessageContext } from '../../../core/types.js';
2
+ export declare class DingTalkAdapter implements MessengerAdapter {
3
+ readonly name = "dingtalk";
4
+ private client;
5
+ private config;
6
+ private messageHandler?;
7
+ private seenMessages;
8
+ start(): Promise<void>;
9
+ stop(): Promise<void>;
10
+ onMessage(handler: (ctx: MessageContext) => Promise<void>): void;
11
+ sendMessage(threadId: string, text: string): Promise<void>;
12
+ /** Returns true on duplicate; otherwise records and prunes. Same shape
13
+ * as the Feishu adapter's dedup helper. */
14
+ private isDuplicate;
15
+ /** Build the threadId we expose to the rest of im-hub. 1:1 routes by
16
+ * sender staffId; group chats route by openConversationId so any
17
+ * member triggers a shared session in that group. */
18
+ private threadIdFor;
19
+ private handleInbound;
20
+ /** Image inbound: exchange downloadCode → CDN bytes → save under
21
+ * ~/.im-hub/media/dingtalk/<thread>/, then dispatch a Message whose
22
+ * text contains an `[图片附件:<path>]` marker. claude-code's Read
23
+ * tool already understands that marker — it'll fetch the file off
24
+ * disk and pass it to the multimodal model the user is talking to.
25
+ *
26
+ * On download failure we still dispatch (with a `[图片附件下载失败]`
27
+ * marker) so the user's interaction isn't silently dropped. */
28
+ private handleImageInbound;
29
+ /** Voice inbound: download AMR (or whatever the CDN serves) → transcribe
30
+ * via the shared whisper provider → dispatch the transcript as the
31
+ * user's text. The saved source file path is appended so the agent can
32
+ * reference it (replay, archive, etc.) — same shape as the Telegram
33
+ * voice path so claude-code's prompts work uniformly.
34
+ *
35
+ * Surfaces failures inline so the user gets feedback:
36
+ * - no downloadCode → `[语音附件无下载凭据]`
37
+ * - download failed → `[语音附件下载失败:…]`
38
+ * - no provider set → `[语音附件未转写(未配置 OPENAI_API_KEY 或 IMHUB_WHISPERCPP_BIN):path]`
39
+ * - transcribe threw → `[语音转写失败(provider: reason)\n源文件:path]` */
40
+ private handleVoiceInbound;
41
+ /** Build a filesystem-safe sub-path under MEDIA_ROOT/dingtalk/.
42
+ * Uses senderStaffId for 1:1 and openConversationId for groups; both
43
+ * are alphanumeric+`=` from DingTalk so we sanitise the `=` (and any
44
+ * other path-unsafe chars) to `_` to avoid surprises on Windows ports
45
+ * or shell quoting. */
46
+ private subPathFor;
47
+ /** DingTalk msgIds are base64-shaped (`msgABC/DEF+xyz==`) and contain
48
+ * `/` + `+` + `=` — all reserved for path or shell quoting. Replace
49
+ * every non-[A-Za-z0-9_-] char with `_` so the resulting filename
50
+ * passes saveDingTalkMedia's safety check and is portable. */
51
+ private safeFilenameStem;
52
+ /** Shared text-dispatch path used by text / markdown msgtypes. */
53
+ private dispatchText;
54
+ }
55
+ export { tryExtractLatLng, type MapUrlSource } from './link-coords.js';
56
+ export declare const dingtalkAdapter: DingTalkAdapter;
57
+ //# sourceMappingURL=dingtalk-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dingtalk-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/messengers/dingtalk/dingtalk-adapter.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAW,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAoBvF,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,IAAI,cAAa;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAwC;IAC/D,OAAO,CAAC,YAAY,CAA4B;IAE1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE;gDAC4C;IAC5C,OAAO,CAAC,WAAW;IAoBnB;;0DAEsD;IACtD,OAAO,CAAC,WAAW;YAML,aAAa;IAuI3B;;;;;;;oEAOgE;YAClD,kBAAkB;IA6ChC;;;;;;;;;;4EAUwE;YAC1D,kBAAkB;IAyEhC;;;;4BAIwB;IACxB,OAAO,CAAC,UAAU;IAKlB;;;mEAG+D;IAC/D,OAAO,CAAC,gBAAgB;IAIxB,kEAAkE;YACpD,YAAY;CA4B3B;AAOD,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEtE,eAAO,MAAM,eAAe,iBAAwB,CAAA"}