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":"circuit-breaker.js","sourceRoot":"","sources":["../../src/core/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RouteContext } from '../router.js';
2
+ import { callAgentWithHistory } from '../router.js';
3
+ export declare function handleAgentCommand(command: string, prompt: string, ctx: RouteContext): Promise<string | ReturnType<typeof callAgentWithHistory>>;
4
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/core/commands/agent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAKhD,OAAO,EAAE,oBAAoB,EAAkC,MAAM,cAAc,CAAA;AAEnF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CA8C3D"}
@@ -0,0 +1,40 @@
1
+ // Agent commands: /test /review /commit /push /diff /shell /bug /explain
2
+ // These are forwarded to the active agent with the command prefix
3
+ import { registry } from '../registry.js';
4
+ import { sessionManager } from '../session.js';
5
+ import { isAgentAvailableCached, formatAgentNotAvailableError } from '../onboarding.js';
6
+ import { getJob } from '../job-board.js';
7
+ import { callAgentWithHistory, prepareSubtaskAgentCallOptions } from '../router.js';
8
+ export async function handleAgentCommand(command, prompt, ctx) {
9
+ const existingSession = await sessionManager.getExistingSession(ctx.platform, ctx.channelId, ctx.threadId);
10
+ const fullPrompt = `/${command} ${prompt}`.trim();
11
+ if (existingSession?.activeSubtaskId) {
12
+ const tid = existingSession.activeSubtaskId;
13
+ const job = getJob(tid) ?? existingSession.subtasks?.find((subtask) => subtask.id === tid);
14
+ if (!job) {
15
+ return `❌ 任务 #${tid} 已不存在。使用 /job switch main 返回主会话。`;
16
+ }
17
+ const subtaskAgent = registry.findAgent(job.agent);
18
+ if (!subtaskAgent) {
19
+ return `❌ 任务 #${tid} 的 Agent "${job.agent}" 不可用。`;
20
+ }
21
+ if (!(await isAgentAvailableCached(subtaskAgent.name))) {
22
+ return formatAgentNotAvailableError(subtaskAgent.name);
23
+ }
24
+ const subThreadId = `${ctx.threadId}:sub:${tid}`;
25
+ const subSession = await sessionManager.getOrCreateSubSession(ctx.platform, ctx.channelId, ctx.threadId, tid, subtaskAgent.name);
26
+ const callOptions = await prepareSubtaskAgentCallOptions(subtaskAgent.name, ctx, subThreadId, subSession);
27
+ return callAgentWithHistory(subtaskAgent, subSession.id, fullPrompt, subSession.messages, ctx, subSession.model, subSession.variant, subSession.planMode, callOptions);
28
+ }
29
+ const agentName = existingSession?.agent || ctx.defaultAgent;
30
+ const agent = registry.findAgent(agentName);
31
+ if (!agent) {
32
+ return `❌ Agent "${agentName}" not found. Use /agents to see available agents.`;
33
+ }
34
+ if (!(await isAgentAvailableCached(agent.name))) {
35
+ return formatAgentNotAvailableError(agent.name);
36
+ }
37
+ const session = await sessionManager.getOrCreateSession(ctx.platform, ctx.channelId, ctx.threadId, agent.name);
38
+ return callAgentWithHistory(agent, session.id, fullPrompt, session.messages, ctx, session.model, session.variant, session.planMode);
39
+ }
40
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/core/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleApprovalCommand(args: string, ctx: RouteContext): Promise<string>;
3
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/core/commands/approval.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAYhD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
@@ -0,0 +1,85 @@
1
+ // /approval command — list or clear in-session auto-approval rules.
2
+ //
3
+ // /approval — list current auto-allow rules + readonly status
4
+ // /approval clear — drop every auto-allow rule for this thread
5
+ // /approval readonly — show readonly auto-allow status for this thread
6
+ // /approval readonly on — enable readonly auto-allow for this thread (default)
7
+ // /approval readonly off — disable readonly auto-allow for this thread
8
+ //
9
+ // Auto-allow "all" rules are scoped per (platform, channelId, threadId).
10
+ // Readonly auto-allow has a global env switch (IMHUB_AUTOALLOW_READONLY) +
11
+ // per-thread opt-out — both also keyed by the same composite.
12
+ import { approvalBus, threadKey } from '../approval-bus.js';
13
+ function formatRuleKey(key) {
14
+ // Keys are stored as `${toolName}::${prefix}` — split for prettier rendering.
15
+ const sep = key.indexOf('::');
16
+ if (sep < 0)
17
+ return key;
18
+ const tool = key.slice(0, sep);
19
+ const prefix = key.slice(sep + 2);
20
+ return `• ${tool} 前缀 "${prefix}"`;
21
+ }
22
+ export async function handleApprovalCommand(args, ctx) {
23
+ const trimmed = args.trim();
24
+ const lower = trimmed.toLowerCase();
25
+ const tKey = threadKey(ctx.platform, ctx.channelId, ctx.threadId);
26
+ if (lower === 'clear' || lower === 'reset') {
27
+ const before = approvalBus.getAutoAllowKeys(tKey);
28
+ approvalBus.clearAutoAllowForThread(tKey);
29
+ if (before.length === 0)
30
+ return '🧹 当前没有自动放行规则,无需清空。';
31
+ return `🧹 已清空本会话的 ${before.length} 条自动放行规则。`;
32
+ }
33
+ // /approval readonly [on|off]
34
+ const roMatch = lower.match(/^(?:readonly|ro)(?:\s+(on|off|enable|disable))?$/);
35
+ if (roMatch) {
36
+ const action = roMatch[1];
37
+ const tools = approvalBus.getReadonlyTools().join(' / ');
38
+ if (action === 'on' || action === 'enable') {
39
+ const ok = approvalBus.setReadonlyAutoAllowEnabled(tKey, true);
40
+ if (!ok) {
41
+ return '⚠️ 全局已通过 IMHUB_AUTOALLOW_READONLY=0 关闭只读自动放行;本线程开关已置 on,但需运维同时撤销环境变量后才生效。';
42
+ }
43
+ return `✅ 本会话已开启「只读工具自动放行」(${tools})。`;
44
+ }
45
+ if (action === 'off' || action === 'disable') {
46
+ approvalBus.setReadonlyAutoAllowEnabled(tKey, false);
47
+ return `🔒 本会话已关闭「只读工具自动放行」。后续 ${tools} 调用都会弹审批卡片。`;
48
+ }
49
+ // bare /approval readonly → status
50
+ const enabled = approvalBus.isReadonlyAutoAllowEnabled(tKey);
51
+ return [
52
+ enabled ? '✅ 只读自动放行:开启' : '🔒 只读自动放行:关闭',
53
+ ` 覆盖工具:${tools}`,
54
+ '',
55
+ '`/approval readonly on` 开启(默认)',
56
+ '`/approval readonly off` 关闭,后续读类操作恢复审批',
57
+ ].join('\n');
58
+ }
59
+ const keys = approvalBus.getAutoAllowKeys(tKey);
60
+ const roEnabled = approvalBus.isReadonlyAutoAllowEnabled(tKey);
61
+ const tools = approvalBus.getReadonlyTools().join(' / ');
62
+ const roLine = roEnabled
63
+ ? `🛡 只读自动放行:开启(${tools})— /approval readonly off 关闭`
64
+ : '🔒 只读自动放行:关闭 — /approval readonly on 开启';
65
+ if (keys.length === 0) {
66
+ return [
67
+ '📋 本会话当前没有自动放行规则。',
68
+ '',
69
+ '在审批提示出现时回复 all(或 全部 / 总是)即可启用:',
70
+ '将以 (工具, 入参前 5 字符) 为粒度,命中后 5s 内自动放行。',
71
+ '',
72
+ roLine,
73
+ ].join('\n');
74
+ }
75
+ return [
76
+ `📋 本会话自动放行规则 (${keys.length})`,
77
+ '',
78
+ ...keys.map(formatRuleKey),
79
+ '',
80
+ '撤销:触发审批后回 n(仅撤销该条规则) / /approval clear(全部清空)',
81
+ '',
82
+ roLine,
83
+ ].join('\n');
84
+ }
85
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/core/commands/approval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleAuditCommand(args: string, ctx: RouteContext): Promise<string>;
3
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/core/commands/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAehD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CAmEjB"}
@@ -0,0 +1,84 @@
1
+ // /audit command — query recent agent invocations
2
+ import { queryInvocations, getStats } from '../audit-log.js';
3
+ function formatDuration(ms) {
4
+ if (ms < 1000)
5
+ return `${ms}ms`;
6
+ if (ms < 60000)
7
+ return `${(ms / 1000).toFixed(1)}s`;
8
+ return `${Math.round(ms / 60000)}min`;
9
+ }
10
+ function formatCost(c) {
11
+ if (c === 0)
12
+ return '-';
13
+ return `$${c.toFixed(4)}`;
14
+ }
15
+ export async function handleAuditCommand(args, ctx) {
16
+ const parts = args.trim().split(/\s+/).filter(Boolean);
17
+ const opts = { limit: 10 };
18
+ let userOverrideAttempted = false;
19
+ for (const p of parts) {
20
+ if (p.startsWith('agent='))
21
+ opts.agent = p.slice(6);
22
+ else if (p.startsWith('platform='))
23
+ opts.platform = p.slice(9);
24
+ else if (p.startsWith('user=')) {
25
+ // H5: a user can't query another user's audit log via this command.
26
+ // We accept the syntax (so existing scripts don't choke) but will
27
+ // overwrite the value below to the caller's own userId. The flag lets
28
+ // us include a one-line note in the response so misuse is visible
29
+ // instead of silently rewritten.
30
+ const requested = p.slice(5);
31
+ if (ctx.userId && requested && requested !== ctx.userId) {
32
+ userOverrideAttempted = true;
33
+ }
34
+ else {
35
+ opts.userId = requested;
36
+ }
37
+ }
38
+ else if (p.startsWith('intent='))
39
+ opts.intent = p.slice(7);
40
+ else if (p.startsWith('days=')) {
41
+ const n = parseInt(p.slice(5), 10);
42
+ if (Number.isFinite(n) && n > 0)
43
+ opts.days = n;
44
+ }
45
+ else {
46
+ const n = parseInt(p, 10);
47
+ if (Number.isFinite(n) && n > 0)
48
+ opts.limit = Math.min(n, 1000);
49
+ }
50
+ }
51
+ // Default to caller's own userId. Leaves ctx.userId === undefined paths
52
+ // (REST / ACP / web) unrestricted, matching every other command's policy.
53
+ if (ctx.userId) {
54
+ opts.userId = ctx.userId;
55
+ }
56
+ const rows = queryInvocations(opts);
57
+ const stats = getStats();
58
+ if (rows.length === 0) {
59
+ const note = userOverrideAttempted
60
+ ? '\n\n⚠️ user=<other> 已忽略:审计查询仅展示自己的调用记录。'
61
+ : '';
62
+ return `📊 暂无审计记录。${note}`;
63
+ }
64
+ const lines = rows.map((r) => {
65
+ const icon = r.success ? '✅' : '❌';
66
+ const intentTag = r.intent && r.intent !== 'default' ? ` ⟨${r.intent}⟩` : '';
67
+ return `${icon} \`${r.trace_id.slice(0, 8)}\` ${r.platform}/${r.agent}${intentTag} · ${formatDuration(r.duration_ms)} ← ${r.prompt_len}c → ${r.response_len}c · ${formatCost(r.cost)}`;
68
+ });
69
+ const overrideNote = userOverrideAttempted
70
+ ? '\n\n⚠️ user=<other> 已忽略:审计查询仅展示自己的调用记录。'
71
+ : '';
72
+ return `📊 **最近 ${rows.length} 次调用**
73
+
74
+ ${lines.join('\n')}
75
+
76
+ 总计: ${stats.total} 次 · 总花费 ${formatCost(stats.totalCost)}
77
+ ${Object.entries(stats.byAgent).map(([k, v]) => ` ${k}: ${v} 次`).join('\n')}${overrideNote}
78
+
79
+ /audit <n> 最近 n 条
80
+ /audit agent=opencode 按 agent 过滤
81
+ /audit intent=topic 按路由原因过滤 (explicit / topic / keyword / sticky / fallback)
82
+ /audit days=7 最近 7 天`;
83
+ }
84
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/core/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleBuiltInCommand(command: 'start' | 'status' | 'help' | 'agents' | 'new', ctx: RouteContext, args?: string): Promise<string>;
3
+ //# sourceMappingURL=builtin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../../src/core/commands/builtin.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AA0QhD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,EACvD,GAAG,EAAE,YAAY,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
@@ -0,0 +1,304 @@
1
+ // Built-in commands: /start /status /help /agents /new
2
+ //
3
+ // /help and /start are i18n-aware (default zh, /help en or /start en for English).
4
+ // /help also accepts a topic: /help remind, /help cron, /help job, /help approval,
5
+ // /help workspaces, /help model, /help think, /help stats, /help sessions, /help plan.
6
+ // Topic aliases (`/help tasks` → job, `/help auto` → approval, etc.) are resolved
7
+ // via TOPIC_ALIAS before delegation/dict lookup.
8
+ import { registry } from '../registry.js';
9
+ import { sessionManager } from '../session.js';
10
+ import { handleRemindCommand } from './remind.js';
11
+ import { handleMemoCommand } from './memo.js';
12
+ const EN_TOKENS = new Set(['en', 'english', 'eng', '英文']);
13
+ const ZH_TOKENS = new Set(['zh', 'cn', 'chinese', '中文', '中', 'zh-cn']);
14
+ /** Strip a leading lang token if present, returning {lang, rest}. Default zh. */
15
+ function detectLang(args) {
16
+ const raw = (args ?? '').trim();
17
+ if (!raw)
18
+ return { lang: 'zh', rest: '' };
19
+ const head = raw.split(/\s+/)[0].toLowerCase();
20
+ if (EN_TOKENS.has(head))
21
+ return { lang: 'en', rest: raw.slice(head.length).trim() };
22
+ if (ZH_TOKENS.has(head))
23
+ return { lang: 'zh', rest: raw.slice(head.length).trim() };
24
+ return { lang: 'zh', rest: raw };
25
+ }
26
+ const HELP_ZH = [
27
+ 'im-hub 命令速查',
28
+ '',
29
+ '/new 开新会话',
30
+ '/agents 列出可用 agent',
31
+ '/[agent] 向指定 agent 发消息',
32
+ '/help [cmd] 查看帮助(/help en 英文)',
33
+ '/remind … 提醒(一次性/周期/邮件)',
34
+ '/memo … 5W1H 持久记录(自然语言交给 agent 自动拆解)',
35
+ '/cron … 定时跑 agent(旧名 /schedule)',
36
+ '/job 后台长任务管理',
37
+ '/tasks 列出我的任务',
38
+ '/check <id> 查看任务进度',
39
+ '/cancel <id> 取消任务',
40
+ '/switch <id> 切换会话到任务',
41
+ '/collect <id> 拉取结果',
42
+ '/model 查看或切换模型',
43
+ '/models 列出可用模型',
44
+ '/think on|off 切换深度思考',
45
+ '/plan on|off 切换 plan 模式',
46
+ '/approval 审批规则(别名 /auto)',
47
+ '/status 连接状态',
48
+ '/audit [n] 查看调用记录',
49
+ '/stats 用量统计(/usage /cost)',
50
+ '/sessions 最近会话',
51
+ '/workspaces 工作区管理(别名 /ws)',
52
+ '/router 查看路由决策',
53
+ '/test -> agent: 测试',
54
+ '/review -> agent: 审查',
55
+ '/commit -> agent: 提交',
56
+ '/push -> agent: 推送',
57
+ '/diff -> agent: 差异',
58
+ '/shell -> agent: shell',
59
+ '/bug -> agent: bug',
60
+ '/explain -> agent: 解释',
61
+ ].join('\n');
62
+ const HELP_EN = [
63
+ 'im-hub Commands',
64
+ '',
65
+ '/new start a new session',
66
+ '/agents list available agents',
67
+ '/[agent] send message to agent',
68
+ '/help [cmd] show help (/help zh for Chinese)',
69
+ '/remind … reminders (one-shot/recurring/email)',
70
+ '/memo … 5W1H persistent memos (let agent parse natural language)',
71
+ '/cron … scheduled agent runs (legacy /schedule)',
72
+ '/job manage background jobs',
73
+ '/tasks list your jobs',
74
+ '/check <id> inspect job progress',
75
+ '/cancel <id> cancel a job',
76
+ '/switch <id> switch session to job',
77
+ '/collect <id> collect job result',
78
+ '/model view or switch model',
79
+ '/models list available models',
80
+ '/think on|off toggle extended thinking',
81
+ '/plan on|off toggle plan mode',
82
+ '/approval tool approval rules (alias /auto)',
83
+ '/status connectivity status',
84
+ '/audit [n] show invocations',
85
+ '/stats usage stats (/usage /cost)',
86
+ '/sessions list recent sessions',
87
+ '/workspaces workspace management (alias /ws)',
88
+ '/router show routing decisions',
89
+ '/test -> agent: test',
90
+ '/review -> agent: review',
91
+ '/commit -> agent: commit',
92
+ '/push -> agent: push',
93
+ '/diff -> agent: diff',
94
+ '/shell -> agent: shell',
95
+ '/bug -> agent: bug',
96
+ '/explain -> agent: explain',
97
+ ].join('\n');
98
+ // Topic-help section separator. Plain ASCII — non-ASCII line-drawing
99
+ // characters (─) seem to confuse iLink/WeChat reflow on some messages.
100
+ const SEP = '---';
101
+ const START_ZH = [
102
+ '欢迎使用 im-hub',
103
+ '我是你的 AI 助手中枢——发消息我就路由给合适的 agent。',
104
+ '/help 命令速查',
105
+ '/agents 可用 agent',
106
+ '/help en switch to English',
107
+ ].join('\n');
108
+ const START_EN = [
109
+ 'Welcome to im-hub',
110
+ "I'm your AI assistant hub — send a message and I'll route it to the right agent.",
111
+ '/help command reference',
112
+ '/agents available agents',
113
+ '/help zh 切换中文',
114
+ ].join('\n');
115
+ /**
116
+ * Topic-name aliases — resolved to canonical names BEFORE delegation/dict lookup.
117
+ * Lets `/help tasks` show the same content as `/help job`, etc. Slash-command
118
+ * aliases (`/tasks`, `/auto`, `/ws`, `/reminder`) are listed in the master HELP
119
+ * but had no per-topic detail before this map.
120
+ */
121
+ const TOPIC_ALIAS = {
122
+ reminder: 'remind',
123
+ tasks: 'job',
124
+ check: 'job',
125
+ cancel: 'job',
126
+ switch: 'job',
127
+ collect: 'job',
128
+ auto: 'approval',
129
+ models: 'model',
130
+ ws: 'workspaces',
131
+ '记': 'memo',
132
+ note: 'memo',
133
+ };
134
+ /** Brief help for commands that don't have their own help subcommand. */
135
+ const TOPIC_HELP_ZH = {
136
+ cron: [
137
+ '/cron — cron 表达式驱动 agent 跑预设 prompt',
138
+ SEP,
139
+ '/cron list 列出我的定时任务',
140
+ '/cron create <name> <agent> "<cron>" <prompt> 创建',
141
+ '/cron check <id> 详情',
142
+ '/cron enable|disable <id> 启停',
143
+ '/cron delete <id> 删除',
144
+ SEP,
145
+ '例: /cron create daily-report opencode "0 9 * * 1-5" 生成销售日报',
146
+ 'cron 5 字段: 分 时 日 月 周 (POSIX)',
147
+ '旧名 /schedule 仍可用 (v0.4.0 移除)',
148
+ ].join('\n'),
149
+ job: [
150
+ '/job — 后台长任务 (基于 job-board)',
151
+ SEP,
152
+ '/job create <agent> <prompt> 创建任务',
153
+ '/job list (/tasks) 列我的任务',
154
+ '/job check <id> (/check <id>) 看进度/结果',
155
+ '/job cancel <id> (/cancel <id>) 取消',
156
+ '/job switch <id> (/switch <id>) 把当前会话切到任务',
157
+ '/job collect <id> (/collect <id>) 拉一次结果',
158
+ ].join('\n'),
159
+ approval: [
160
+ '/approval (别名 /auto) — 工具调用审批规则',
161
+ SEP,
162
+ '/approval 列出本会话当前的自动放行规则',
163
+ '/approval clear 清空',
164
+ SEP,
165
+ '审批卡片回复',
166
+ 'y 同意 · n 拒绝 · all 本会话同类自动放行',
167
+ '(5 分钟未回 = 拒绝)',
168
+ ].join('\n'),
169
+ workspaces: [
170
+ '/workspaces (别名 /ws) — workspace 管理',
171
+ SEP,
172
+ '/ws list 列所有 workspace',
173
+ '/ws current 看当前',
174
+ '/ws use <name> 切换',
175
+ ].join('\n'),
176
+ model: [
177
+ '/model — 查或切当前 agent 的模型',
178
+ SEP,
179
+ '/model 看当前',
180
+ '/model <provider/model> 切换',
181
+ '/models 列所有可用',
182
+ ].join('\n'),
183
+ think: '/think on|off — 切换 extended thinking (深度思考)',
184
+ stats: '/stats — 用量统计 (别名 /usage /cost)',
185
+ sessions: '/sessions — 列出最近的会话',
186
+ plan: '/plan on|off — 切换 plan 模式 (agent 只能读、不能写/执行)',
187
+ router: '/router status|explain — 看路由决策 (哪条 agent、为什么)',
188
+ audit: '/audit [n] — 看最近 n 条调用记录',
189
+ agents: '/agents — 列出已注册的 agent',
190
+ new: '/new — 开新会话 (清当前 thread 的上下文)',
191
+ status: '/status — 连接状态',
192
+ };
193
+ const TOPIC_HELP_EN = {
194
+ cron: [
195
+ '/cron — cron-driven scheduled agent runs',
196
+ SEP,
197
+ '/cron list list your schedules',
198
+ '/cron create <name> <agent> "<cron>" <prompt> create',
199
+ '/cron check <id> details',
200
+ '/cron enable|disable <id> toggle',
201
+ '/cron delete <id> remove',
202
+ SEP,
203
+ 'Example: /cron create daily-report opencode "0 9 * * 1-5" Generate today\'s report',
204
+ 'cron: 5-field POSIX format (min hour dom mon dow)',
205
+ 'Legacy /schedule alias still works (removed in v0.4.0)',
206
+ ].join('\n'),
207
+ job: [
208
+ '/job — background long-running tasks',
209
+ SEP,
210
+ '/job create <agent> <prompt> create',
211
+ '/job list (/tasks) list yours',
212
+ '/job check <id> (/check <id>) inspect',
213
+ '/job cancel <id> (/cancel <id>) cancel',
214
+ '/job switch <id> (/switch <id>) switch session to that job',
215
+ '/job collect <id> (/collect <id>) collect once',
216
+ ].join('\n'),
217
+ approval: [
218
+ '/approval (alias /auto) — tool-call approval rules',
219
+ SEP,
220
+ '/approval list current auto-allow rules in this session',
221
+ '/approval clear clear them',
222
+ SEP,
223
+ 'Approval card replies',
224
+ 'y allow · n deny · all auto-allow same kind in this session',
225
+ '(5 min no reply = deny)',
226
+ ].join('\n'),
227
+ workspaces: [
228
+ '/workspaces (alias /ws) — workspace management',
229
+ SEP,
230
+ '/ws list list all',
231
+ '/ws current show current',
232
+ '/ws use <name> switch',
233
+ ].join('\n'),
234
+ model: [
235
+ '/model — view or switch the active agent\'s model',
236
+ SEP,
237
+ '/model show current',
238
+ '/model <provider/model> switch',
239
+ '/models list available',
240
+ ].join('\n'),
241
+ think: '/think on|off — toggle extended thinking',
242
+ stats: '/stats — usage stats (aliases /usage /cost)',
243
+ sessions: '/sessions — list recent sessions',
244
+ plan: '/plan on|off — toggle plan (read-only) mode',
245
+ router: '/router status|explain — show routing decisions',
246
+ audit: '/audit [n] — show last n invocations',
247
+ agents: '/agents — list registered agents',
248
+ new: '/new — start a new conversation (clear current thread\'s context)',
249
+ status: '/status — connectivity status',
250
+ };
251
+ /** Topics that delegate to the command's own `help` subcommand. Topic is canonical
252
+ * here — aliases (e.g. 'reminder') are resolved by TOPIC_ALIAS before this runs. */
253
+ async function delegatedTopic(topic, ctx) {
254
+ if (topic === 'remind') {
255
+ return handleRemindCommand('help', ctx);
256
+ }
257
+ if (topic === 'memo') {
258
+ return handleMemoCommand('help', ctx);
259
+ }
260
+ return null;
261
+ }
262
+ export async function handleBuiltInCommand(command, ctx, args) {
263
+ switch (command) {
264
+ case 'start': {
265
+ const { lang } = detectLang(args);
266
+ return lang === 'en' ? START_EN : START_ZH;
267
+ }
268
+ case 'status':
269
+ return `📊 IM hub Status\n\nPlatform: Connected\nAgent: Ready\n\nSend a message to start!`;
270
+ case 'help': {
271
+ const { lang, rest } = detectLang(args);
272
+ const raw = rest.split(/\s+/)[0]?.toLowerCase().replace(/^\//, '') || '';
273
+ if (!raw)
274
+ return lang === 'en' ? HELP_EN : HELP_ZH;
275
+ const topic = TOPIC_ALIAS[raw] ?? raw;
276
+ const delegated = await delegatedTopic(topic, ctx);
277
+ if (delegated)
278
+ return delegated;
279
+ const dict = lang === 'en' ? TOPIC_HELP_EN : TOPIC_HELP_ZH;
280
+ const body = dict[topic];
281
+ if (body)
282
+ return body;
283
+ const unknown = lang === 'en'
284
+ ? `Unknown topic "${raw}". Try \`/help\` for the full list.`
285
+ : `没有 \`${raw}\` 这个主题。试试 \`/help\` 看完整列表。`;
286
+ return unknown;
287
+ }
288
+ case 'agents': {
289
+ const agents = registry.listAgents();
290
+ if (agents.length === 0) {
291
+ return '⚠️ No agents registered yet.';
292
+ }
293
+ return `🤖 Available Agents\n\n${agents.map(a => `• ${a}`).join('\n')}\n\nUse /<agent> to switch.`;
294
+ }
295
+ case 'new': {
296
+ const session = await sessionManager.resetConversation(ctx.platform, ctx.channelId, ctx.threadId);
297
+ if (session) {
298
+ return `🆕 New conversation started with ${session.agent}.\n\nPrevious context has been cleared.`;
299
+ }
300
+ return `🆕 Ready to start a new conversation.\n\nSend a message to begin.`;
301
+ }
302
+ }
303
+ }
304
+ //# sourceMappingURL=builtin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../src/core/commands/builtin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleCronCommand(args: string, ctx: RouteContext): Promise<string>;
3
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/core/commands/cron.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAQhD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CA2GjB"}