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 @@
1
+ {"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/adapter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { AgentBase, type SpawnPlan } from '../../../core/agent-base.js';
2
+ import type { AgentSendOpts } from '../../../core/types.js';
3
+ export declare class CodexAdapter extends AgentBase {
4
+ readonly name = "codex";
5
+ readonly aliases: string[];
6
+ /**
7
+ * Override to bypass the codex wrapper's broken stdio handling — see
8
+ * resolveCodexBinary() above. Falls back to "codex" (PATH lookup) if
9
+ * native binary resolution fails.
10
+ *
11
+ * commandName drives `isAvailable()` (--version probe) AND the spawn binary,
12
+ * so resolving here gets us both at once.
13
+ */
14
+ protected get commandName(): string;
15
+ protected buildArgs(prompt: string, opts: AgentSendOpts): string[];
16
+ /**
17
+ * codex reads its project-level AGENTS.md from spawn cwd, so for IM calls we
18
+ * pin to ~/.im-hub-workspaces/codex/. Non-IM calls (web/scheduler) keep
19
+ * cwd undefined and inherit im-hub's cwd. See agent-cwd.ts for rationale.
20
+ */
21
+ protected prepareCommand(prompt: string, opts: AgentSendOpts): Promise<SpawnPlan>;
22
+ protected extractText(event: unknown): string;
23
+ /**
24
+ * Side-channel hook: capture session id (`thread.started`) and usage
25
+ * (`turn.completed.usage`) without disrupting the text stream.
26
+ */
27
+ protected inspectEvent(event: unknown, opts: AgentSendOpts): void;
28
+ protected handleError(_code: number, _stderr: string, errorMessage: string): string | null;
29
+ }
30
+ export declare const codexAdapter: CodexAdapter;
31
+ export declare const _testInternals: {
32
+ buildArgs(adapter: CodexAdapter, prompt: string, opts?: AgentSendOpts): string[];
33
+ prepareCommand(adapter: CodexAdapter, prompt: string, opts: AgentSendOpts): Promise<SpawnPlan>;
34
+ extractText(adapter: CodexAdapter, event: unknown): string;
35
+ inspectEvent(adapter: CodexAdapter, event: unknown, opts: AgentSendOpts): void;
36
+ };
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/index.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AA4H3D,qBAAa,YAAa,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,OAAO,WAA+B;IAE/C;;;;;;;OAOG;IACH,SAAS,KAAK,WAAW,IAAI,MAAM,CAElC;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAelE;;;;OAIG;cACa,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAOvF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAW7C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAqBjE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAS3F;AAED,eAAO,MAAM,YAAY,cAAqB,CAAA;AAI9C,eAAO,MAAM,cAAc;uBACN,YAAY,UAAU,MAAM,SAAQ,aAAa,GAAQ,MAAM,EAAE;4BAItD,YAAY,UAAU,MAAM,QAAQ,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;yBAI/E,YAAY,SAAS,OAAO,GAAG,MAAM;0BAIpC,YAAY,SAAS,OAAO,QAAQ,aAAa,GAAG,IAAI;CAI/E,CAAA"}
@@ -0,0 +1,254 @@
1
+ // OpenAI Codex CLI agent adapter — `codex exec --json` driver.
2
+ //
3
+ // Multi-turn continuity (mirrors the opencode pattern):
4
+ //
5
+ // First turn — no opts.agentSessionId yet. Spawn `codex exec --json …`.
6
+ // The adapter watches for `thread.started.thread_id` and
7
+ // reports it back via opts.onAgentSessionId so cli persists
8
+ // it on the im-hub Session row (codexSessionId).
9
+ // Later turns — opts.agentSessionId is the captured UUID. We spawn
10
+ // `codex exec resume <id> --json …` so codex continues from
11
+ // its own ~/.codex/sessions store. router.callAgentWithHistory
12
+ // honours agentSessionResume by zeroing effectiveHistory so
13
+ // we don't double-feed prior turns.
14
+ //
15
+ // Cwd: pinned to ~/.im-hub-workspaces/codex/ for IM calls (per agent-cwd.ts);
16
+ // codex reads its project AGENTS.md from cwd just like opencode.
17
+ //
18
+ // Usage roll-up: `turn.completed.usage` carries token counts (no cost). We
19
+ // forward input/output tokens via opts.onUsage so /stats reflects real codex
20
+ // usage. costUsd stays undefined until codex surfaces pricing.
21
+ //
22
+ // Approval / sandbox model (current):
23
+ // - `codex exec` has NO external approval hook (no --ask-for-approval
24
+ // equivalent). Confirmed against codex CLI 0.x — only `-s` sandbox
25
+ // mode + `--dangerously-bypass-approvals-and-sandbox` exist. So we
26
+ // CANNOT route per-tool approvals through approval-bus the way
27
+ // claude-code (MCP sidecar) and opencode (SSE bus) do.
28
+ // - Best we can do today: pin sandbox to `workspace-write` by default
29
+ // (cwd-scoped writes only, NO auto-approval — codex's internal policy
30
+ // decides each call), and flip to `read-only` when session.planMode
31
+ // is on. This gives us a "safety floor" rather than a true gate.
32
+ // - True per-tool approval would require running codex via `codex
33
+ // mcp-server` (stdio MCP) and putting our own approval-bus shim
34
+ // between the MCP client and codex. Tracked as a future iteration.
35
+ import { execSync } from 'child_process';
36
+ import { existsSync, realpathSync } from 'fs';
37
+ import { dirname, join } from 'path';
38
+ import { AgentBase } from '../../../core/agent-base.js';
39
+ import { resolveAgentCwd } from '../../../core/agent-cwd.js';
40
+ import { logger as rootLogger } from '../../../core/logger.js';
41
+ const log = rootLogger.child({ component: 'agent.codex' });
42
+ /**
43
+ * Codex's `bin/codex.js` wrapper (npm install -g @openai/codex) drops all
44
+ * stdout when the parent spawns it with `stdio: ['ignore', 'pipe', 'pipe']`
45
+ * — the wrapper relays its own stdio to the native binary via
46
+ * `stdio: 'inherit'`, and that handoff fails to forward data through a
47
+ * piped fd back to the grandparent. The native binary works fine when
48
+ * called directly.
49
+ *
50
+ * Resolution: at startup, follow `which codex` → real path of wrapper →
51
+ * `<codex-pkg>/node_modules/@openai/codex-<triple>/vendor/<triple>/codex/codex`.
52
+ * Cache the result. If anything in the chain is missing (different install
53
+ * layout, unsupported triple), fall back to the wrapper name and hope for
54
+ * the best — at least the user sees a failure rather than silent 0-byte.
55
+ *
56
+ * Probed once per process; the cache lives module-level.
57
+ */
58
+ let cachedBinary = null;
59
+ let probed = false;
60
+ function resolveCodexBinary() {
61
+ if (probed)
62
+ return cachedBinary ?? 'codex';
63
+ probed = true;
64
+ try {
65
+ const wrapper = execSync('command -v codex', { encoding: 'utf8' }).trim();
66
+ if (!wrapper)
67
+ return 'codex';
68
+ const wrapperReal = realpathSync(wrapper);
69
+ // wrapperReal e.g. /usr/local/lib/node_modules/@openai/codex/bin/codex.js
70
+ const codexPkgRoot = dirname(dirname(wrapperReal));
71
+ const triple = pickTriple(process.platform, process.arch);
72
+ if (!triple) {
73
+ log.warn({ platform: process.platform, arch: process.arch }, 'codex: unsupported platform, falling back to wrapper (stdio pipe bug applies)');
74
+ return 'codex';
75
+ }
76
+ const platformPkg = pickPlatformPackage(process.platform, process.arch);
77
+ if (!platformPkg)
78
+ return 'codex';
79
+ const candidates = [
80
+ join(codexPkgRoot, 'node_modules', platformPkg, 'vendor', triple, 'codex', 'codex'),
81
+ join(codexPkgRoot, 'vendor', triple, 'codex', 'codex'),
82
+ ];
83
+ for (const cand of candidates) {
84
+ if (existsSync(cand)) {
85
+ cachedBinary = cand;
86
+ log.info({ binary: cand }, 'codex: resolved native binary, bypassing wrapper');
87
+ return cand;
88
+ }
89
+ }
90
+ log.warn({ tried: candidates }, 'codex: native binary not found, using wrapper (may break in IM)');
91
+ }
92
+ catch (err) {
93
+ log.warn({ err: String(err) }, 'codex: binary resolution failed, using wrapper');
94
+ }
95
+ return 'codex';
96
+ }
97
+ function pickTriple(platform, arch) {
98
+ if (platform === 'linux') {
99
+ if (arch === 'x64')
100
+ return 'x86_64-unknown-linux-musl';
101
+ if (arch === 'arm64')
102
+ return 'aarch64-unknown-linux-musl';
103
+ }
104
+ if (platform === 'darwin') {
105
+ if (arch === 'x64')
106
+ return 'x86_64-apple-darwin';
107
+ if (arch === 'arm64')
108
+ return 'aarch64-apple-darwin';
109
+ }
110
+ if (platform === 'win32') {
111
+ if (arch === 'x64')
112
+ return 'x86_64-pc-windows-msvc';
113
+ if (arch === 'arm64')
114
+ return 'aarch64-pc-windows-msvc';
115
+ }
116
+ return null;
117
+ }
118
+ function pickPlatformPackage(platform, arch) {
119
+ const archKey = arch === 'arm64' ? 'arm64' : arch === 'x64' ? 'x64' : null;
120
+ if (!archKey)
121
+ return null;
122
+ if (platform === 'linux')
123
+ return `@openai/codex-linux-${archKey}`;
124
+ if (platform === 'darwin')
125
+ return `@openai/codex-darwin-${archKey}`;
126
+ if (platform === 'win32')
127
+ return `@openai/codex-win32-${archKey}`;
128
+ return null;
129
+ }
130
+ /**
131
+ * Common flags every spawn carries. Sandbox mode is intentionally absent
132
+ * here — it's added per-spawn by buildArgs based on opts.planMode so plan
133
+ * runs go read-only and normal runs land at workspace-write.
134
+ *
135
+ * Why not `--full-auto`? --full-auto = `-s workspace-write` + auto-approval
136
+ * of every internal prompt. That's stronger than we want for an IM-driven
137
+ * agent — codex's own policy engine can still ask the user "do this risky
138
+ * thing?" and we'd rather see those prompts surface (codex emits them as
139
+ * `turn.message` events on the JSON stream) than have them silently
140
+ * answered yes. workspace-write WITHOUT --full-auto preserves codex's
141
+ * internal decisioning while keeping the OS-level write fence.
142
+ */
143
+ const BASE_FLAGS = ['--json', '--skip-git-repo-check'];
144
+ export class CodexAdapter extends AgentBase {
145
+ name = 'codex';
146
+ aliases = ['cx', 'openai', 'codexcli'];
147
+ /**
148
+ * Override to bypass the codex wrapper's broken stdio handling — see
149
+ * resolveCodexBinary() above. Falls back to "codex" (PATH lookup) if
150
+ * native binary resolution fails.
151
+ *
152
+ * commandName drives `isAvailable()` (--version probe) AND the spawn binary,
153
+ * so resolving here gets us both at once.
154
+ */
155
+ get commandName() {
156
+ return resolveCodexBinary();
157
+ }
158
+ buildArgs(prompt, opts) {
159
+ // session.planMode → -s read-only sandbox. Best-available approximation
160
+ // of "agent only plans, doesn't act"; codex still emits write attempts
161
+ // as events but the OS layer rejects them. See file header for the
162
+ // approval-model discussion.
163
+ const sandboxMode = opts.planMode ? 'read-only' : 'workspace-write';
164
+ const sandboxFlags = ['-s', sandboxMode];
165
+ if (opts.agentSessionId && opts.agentSessionResume) {
166
+ // `codex exec resume <UUID> [OPTIONS] [PROMPT]` — the SESSION_ID
167
+ // positional has to come immediately after `resume`, before flags.
168
+ return ['exec', 'resume', opts.agentSessionId, ...BASE_FLAGS, ...sandboxFlags, prompt];
169
+ }
170
+ return ['exec', ...BASE_FLAGS, ...sandboxFlags, prompt];
171
+ }
172
+ /**
173
+ * codex reads its project-level AGENTS.md from spawn cwd, so for IM calls we
174
+ * pin to ~/.im-hub-workspaces/codex/. Non-IM calls (web/scheduler) keep
175
+ * cwd undefined and inherit im-hub's cwd. See agent-cwd.ts for rationale.
176
+ */
177
+ async prepareCommand(prompt, opts) {
178
+ return {
179
+ args: this.buildArgs(prompt, opts),
180
+ cwd: resolveAgentCwd(this.name, opts),
181
+ };
182
+ }
183
+ extractText(event) {
184
+ const e = event;
185
+ // codex 0.128 emits assistant text inside item.completed where item.type
186
+ // is "agent_message". The pre-v1 adapter looked for {type:"message"},
187
+ // which never fires, so all output was being dropped on the floor.
188
+ if (e.type === 'item.completed' && e.item?.type === 'agent_message' && e.item.text) {
189
+ return e.item.text;
190
+ }
191
+ return '';
192
+ }
193
+ /**
194
+ * Side-channel hook: capture session id (`thread.started`) and usage
195
+ * (`turn.completed.usage`) without disrupting the text stream.
196
+ */
197
+ inspectEvent(event, opts) {
198
+ const e = event;
199
+ if (e.type === 'thread.started' && e.thread_id && opts.onAgentSessionId) {
200
+ try {
201
+ opts.onAgentSessionId(e.thread_id);
202
+ }
203
+ catch { /* userland callback safety */ }
204
+ }
205
+ if (e.type === 'turn.completed' && e.usage && opts.onUsage) {
206
+ const u = e.usage;
207
+ const delta = {};
208
+ if (typeof u.input_tokens === 'number' && Number.isFinite(u.input_tokens)) {
209
+ delta.tokensInput = u.input_tokens;
210
+ }
211
+ if (typeof u.output_tokens === 'number' && Number.isFinite(u.output_tokens)) {
212
+ delta.tokensOutput = u.output_tokens;
213
+ }
214
+ // codex doesn't surface cost; leave delta.costUsd undefined.
215
+ if (delta.tokensInput !== undefined || delta.tokensOutput !== undefined) {
216
+ try {
217
+ opts.onUsage(delta);
218
+ }
219
+ catch { /* userland callback safety */ }
220
+ }
221
+ }
222
+ }
223
+ handleError(_code, _stderr, errorMessage) {
224
+ if (errorMessage.includes('expired') || errorMessage.includes('过期')) {
225
+ return '❌ Codex 账号已过期\n\n请运行 `codex login` 重新登录。';
226
+ }
227
+ if (errorMessage.includes('not found') || errorMessage.includes('不存在')) {
228
+ return '❌ Codex 用户不存在,请重新登录\n\n请运行 `codex login` 重新登录。';
229
+ }
230
+ return null;
231
+ }
232
+ }
233
+ export const codexAdapter = new CodexAdapter();
234
+ // Test-only escape hatch — drives the protected hooks without going through
235
+ // the spawnStream pipeline.
236
+ export const _testInternals = {
237
+ buildArgs(adapter, prompt, opts = {}) {
238
+ // @ts-expect-error — protected; tests reach in deliberately
239
+ return adapter.buildArgs(prompt, opts);
240
+ },
241
+ async prepareCommand(adapter, prompt, opts) {
242
+ // @ts-expect-error
243
+ return adapter.prepareCommand(prompt, opts);
244
+ },
245
+ extractText(adapter, event) {
246
+ // @ts-expect-error
247
+ return adapter.extractText(event);
248
+ },
249
+ inspectEvent(adapter, event, opts) {
250
+ // @ts-expect-error
251
+ adapter.inspectEvent(event, opts);
252
+ },
253
+ };
254
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { AgentBase } from '../../../core/agent-base.js';
2
+ /**
3
+ * Copilot adapter built on AgentBase. Differs from the other CLI agents
4
+ * in two ways:
5
+ * 1. The binary path is discovered async (gh / standalone / VSCode)
6
+ * 2. The CLI is not JSONL — its stdout is plain text
7
+ *
8
+ * AgentBase already handles plain text via the JSON.parse fallback (yields
9
+ * the line verbatim). We override commandName/buildArgs/extractText after
10
+ * resolving the install, and use isAvailable() to short-circuit when no
11
+ * install was found.
12
+ */
13
+ declare class CopilotAdapter extends AgentBase {
14
+ readonly name = "copilot";
15
+ readonly aliases: string[];
16
+ /** Resolved install, populated by isAvailable() and reused by spawn calls. */
17
+ private resolvedInstall;
18
+ protected get commandName(): string;
19
+ protected buildArgs(prompt: string): string[];
20
+ protected extractText(event: unknown): string;
21
+ isAvailable(): Promise<boolean>;
22
+ healthCheck(): Promise<{
23
+ ok: boolean;
24
+ latencyMs?: number;
25
+ }>;
26
+ protected handleError(_code: number, stderr: string, _errorMessage: string): string | null;
27
+ protected notAvailableMessage(): string;
28
+ sendPrompt(sessionId: string, prompt: string, history?: import('../../../core/types.js').ChatMessage[], _opts?: {
29
+ model?: string;
30
+ variant?: string;
31
+ }): AsyncGenerator<string>;
32
+ }
33
+ export declare const copilotAdapter: CopilotAdapter;
34
+ export {};
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/copilot/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAgGvD;;;;;;;;;;GAUG;AACH,cAAM,cAAe,SAAQ,SAAS;IACpC,QAAQ,CAAC,IAAI,aAAY;IACzB,QAAQ,CAAC,OAAO,WAAyC;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,eAAe,CAA8B;IAErD,SAAS,KAAK,WAAW,IAAI,MAAM,CAQlC;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAS7C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAYvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,WAAW,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAY1F,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAchC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,wBAAwB,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC,MAAM,CAAC;CAQrL;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
@@ -0,0 +1,182 @@
1
+ // GitHub Copilot CLI agent adapter
2
+ // Supports multiple installation methods:
3
+ // 1. GitHub CLI extension: `gh copilot` (recommended)
4
+ // 2. Standalone npm: `copilot` command
5
+ // 3. VS Code extension: bundled copilot CLI
6
+ // 4. Homebrew (macOS): `brew install copilot-cli`
7
+ // 5. WinGet (Windows): `winget install GitHub.Copilot`
8
+ import { access, constants, readdir } from 'fs/promises';
9
+ import { homedir } from 'os';
10
+ import { join } from 'path';
11
+ import { AgentBase } from '../../../core/agent-base.js';
12
+ import { crossSpawn, isWindows, isMac } from '../../../utils/cross-platform.js';
13
+ import { logger as rootLogger } from '../../../core/logger.js';
14
+ /** Check if a command exists and can be executed */
15
+ async function commandExists(cmd) {
16
+ return new Promise((resolve) => {
17
+ const proc = crossSpawn(cmd, ['--version'], { stdio: 'ignore' });
18
+ proc.on('error', () => resolve(false));
19
+ proc.on('close', (code) => resolve(code === 0));
20
+ });
21
+ }
22
+ async function checkGHCopilot() {
23
+ if (!(await commandExists('gh')))
24
+ return null;
25
+ return new Promise((resolve) => {
26
+ const proc = crossSpawn('gh', ['copilot', '--version'], { stdio: 'ignore' });
27
+ proc.on('error', () => resolve(null));
28
+ proc.on('close', (code) => {
29
+ if (code === 0) {
30
+ resolve({ type: 'gh-ext', command: 'gh', argsPrefix: ['copilot'] });
31
+ }
32
+ else {
33
+ resolve(null);
34
+ }
35
+ });
36
+ });
37
+ }
38
+ async function checkStandaloneCopilot() {
39
+ if (await commandExists('copilot')) {
40
+ return { type: 'standalone', command: 'copilot', argsPrefix: [] };
41
+ }
42
+ return null;
43
+ }
44
+ async function findVSCodeCopilot() {
45
+ if (isMac) {
46
+ const macPath = join(homedir(), 'Library/Application Support/Code/User/globalStorage/github.copilot-chat/copilotCli/copilot');
47
+ try {
48
+ await access(macPath, constants.X_OK);
49
+ return { type: 'vscode', command: macPath, argsPrefix: [] };
50
+ }
51
+ catch { /* fall through */ }
52
+ }
53
+ if (isWindows) {
54
+ const extensionsDir = join(homedir(), '.vscode', 'extensions');
55
+ try {
56
+ const entries = await readdir(extensionsDir, { withFileTypes: true });
57
+ const copilotDir = entries.find((entry) => entry.isDirectory() && entry.name.startsWith('github.copilot-chat-'));
58
+ if (copilotDir) {
59
+ const copilotBin = join(extensionsDir, copilotDir.name, 'copilotCli', 'copilot.exe');
60
+ try {
61
+ await access(copilotBin, constants.X_OK);
62
+ return { type: 'vscode', command: copilotBin, argsPrefix: [] };
63
+ }
64
+ catch { /* fall through */ }
65
+ }
66
+ }
67
+ catch { /* ignore readdir errors */ }
68
+ }
69
+ const linuxPath = join(homedir(), '.vscode/extensions/github.copilot-chat/copilotCli/copilot');
70
+ try {
71
+ await access(linuxPath, constants.X_OK);
72
+ return { type: 'vscode', command: linuxPath, argsPrefix: [] };
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ /** TTL'd installation cache so a fresh install is picked up within 2min. */
79
+ const INSTALL_CACHE_TTL = 2 * 60 * 1000;
80
+ let cachedInstall = null;
81
+ let cachedAt = 0;
82
+ async function detectCopilotInstall() {
83
+ if (cachedInstall && Date.now() - cachedAt < INSTALL_CACHE_TTL)
84
+ return cachedInstall;
85
+ cachedInstall =
86
+ (await checkGHCopilot()) ||
87
+ (await checkStandaloneCopilot()) ||
88
+ (await findVSCodeCopilot());
89
+ cachedAt = Date.now();
90
+ return cachedInstall;
91
+ }
92
+ /**
93
+ * Copilot adapter built on AgentBase. Differs from the other CLI agents
94
+ * in two ways:
95
+ * 1. The binary path is discovered async (gh / standalone / VSCode)
96
+ * 2. The CLI is not JSONL — its stdout is plain text
97
+ *
98
+ * AgentBase already handles plain text via the JSON.parse fallback (yields
99
+ * the line verbatim). We override commandName/buildArgs/extractText after
100
+ * resolving the install, and use isAvailable() to short-circuit when no
101
+ * install was found.
102
+ */
103
+ class CopilotAdapter extends AgentBase {
104
+ name = 'copilot';
105
+ aliases = ['gh', 'github', 'copilotcli', 'ghcp'];
106
+ /** Resolved install, populated by isAvailable() and reused by spawn calls. */
107
+ resolvedInstall = null;
108
+ get commandName() {
109
+ if (!this.resolvedInstall) {
110
+ // Should never happen — sendPrompt awaits isAvailable() first. But if
111
+ // someone calls spawnAndCollect directly we degrade by using a
112
+ // sentinel that the spawn will fail on, surfaced via handleError.
113
+ return 'copilot';
114
+ }
115
+ return this.resolvedInstall.command;
116
+ }
117
+ buildArgs(prompt) {
118
+ const install = this.resolvedInstall;
119
+ if (!install)
120
+ return ['-p', prompt, '-s'];
121
+ if (install.type === 'gh-ext') {
122
+ return [...install.argsPrefix, 'suggest', prompt, '--prompt-only'];
123
+ }
124
+ return [...install.argsPrefix, '-p', prompt, '-s'];
125
+ }
126
+ extractText(event) {
127
+ // Copilot CLI is not JSONL; AgentBase's fallback already yields the
128
+ // raw line. extractText is only consulted on successfully-parsed JSON,
129
+ // which Copilot never emits.
130
+ if (event && typeof event === 'object') {
131
+ const e = event;
132
+ if (typeof e.content === 'string')
133
+ return e.content;
134
+ if (typeof e.text === 'string')
135
+ return e.text;
136
+ }
137
+ return '';
138
+ }
139
+ async isAvailable() {
140
+ this.resolvedInstall = await detectCopilotInstall();
141
+ return this.resolvedInstall !== null;
142
+ }
143
+ async healthCheck() {
144
+ const start = Date.now();
145
+ const ok = await this.isAvailable();
146
+ return { ok, latencyMs: Date.now() - start };
147
+ }
148
+ handleError(_code, stderr, _errorMessage) {
149
+ if (stderr.includes('402') || stderr.includes('no quota') || stderr.includes('insufficient')) {
150
+ return `❌ Copilot 额度不足,请检查您的 GitHub Copilot 订阅。
151
+
152
+ 💡 可以使用以下命令切换到其他 Agent:
153
+ • /claude - 切换到 Claude Code
154
+ • /codex - 切换到 OpenAI Codex
155
+ • /agents - 查看所有可用 Agent`;
156
+ }
157
+ return null;
158
+ }
159
+ notAvailableMessage() {
160
+ return `❌ Copilot CLI 未找到。
161
+
162
+ 安装方式 (选择其一):
163
+ npm i -g @github/copilot
164
+ gh extension install github/gh-copilot
165
+ brew install copilot-cli (macOS)
166
+ winget install GitHub.Copilot (Windows)
167
+
168
+ 或安装 VS Code Copilot Chat 扩展。`;
169
+ }
170
+ // Override sendPrompt to short-circuit when not installed — gives a
171
+ // friendlier message than spawnStream would after spawn failure.
172
+ async *sendPrompt(sessionId, prompt, history, _opts) {
173
+ if (!(await this.isAvailable())) {
174
+ yield this.notAvailableMessage();
175
+ return;
176
+ }
177
+ rootLogger.info({ component: `agent.${this.name}`, agent: this.name, install: this.resolvedInstall?.type }, '[copilot] sendPrompt');
178
+ yield* super.sendPrompt(sessionId, prompt, history, _opts);
179
+ }
180
+ }
181
+ export const copilotAdapter = new CopilotAdapter();
182
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/copilot/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.test.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/adapter.test.ts"],"names":[],"mappings":""}