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":"prompts.d.ts","sourceRoot":"","sources":["../../src/cli-ui/prompts.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAK,KAAK,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,eAAO,MAAM,IAAI,eAAiB,CAAA;AAClC,MAAM,MAAM,YAAY,GAAG,OAAO,IAAI,CAAA;AAEtC,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AASD,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,iDAAiD;IACjD,KAAK,EAAE,CAAC,CAAA;IACR,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC5B;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;IAClC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ,GAAG,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,CA0B5B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;IACxD,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CASf;AAED,yDAAyD;AACzD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;AAED,0CAA0C;AAC1C,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAA;CACxC,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;AAED,wCAAwC;AACxC,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1F"}
@@ -0,0 +1,125 @@
1
+ // cli-ui/prompts.ts — thin wrappers around @inquirer/prompts with two
2
+ // conveniences the underlying library doesn't bake in:
3
+ //
4
+ // 1. A standardized "← Back" choice that callers can detect by the
5
+ // sentinel return value `BACK`. This lets loops at any level handle
6
+ // navigation without each call site reaching into the prompt API.
7
+ // 2. Graceful exit on Ctrl-C — inquirer throws `ExitPromptError`; we
8
+ // catch + re-throw as our own `UserAbortError` so callers can decide
9
+ // whether to exit (top-level) or treat as Back (nested).
10
+ import { select, checkbox, input, password, confirm, Separator, } from '@inquirer/prompts';
11
+ import { t } from './i18n.js';
12
+ export const BACK = Symbol('back');
13
+ export class UserAbortError extends Error {
14
+ constructor() {
15
+ super('User pressed Ctrl-C');
16
+ this.name = 'UserAbortError';
17
+ }
18
+ }
19
+ function rethrowAbort(err) {
20
+ if (err && typeof err === 'object' && 'name' in err && err.name === 'ExitPromptError') {
21
+ throw new UserAbortError();
22
+ }
23
+ throw err;
24
+ }
25
+ /**
26
+ * Single-choice menu with arrow keys + Enter. If `back` is provided
27
+ * (a key from i18n.ts pointing at a `← Back`-style string), an extra
28
+ * back entry is appended; picking it returns the BACK sentinel.
29
+ */
30
+ export async function menu(opts) {
31
+ const choices = [];
32
+ for (const c of opts.choices) {
33
+ if (c.separatorBefore) {
34
+ // Statically imported above. require() doesn't exist in ESM modules,
35
+ // so an earlier lazy-import attempt crashed at runtime.
36
+ choices.push(new Separator());
37
+ }
38
+ choices.push({
39
+ value: c.value,
40
+ name: c.name,
41
+ description: c.description,
42
+ disabled: c.disabled,
43
+ });
44
+ }
45
+ if (opts.back) {
46
+ choices.push({ value: BACK, name: t(opts.lang, opts.back) });
47
+ }
48
+ try {
49
+ return await select({
50
+ message: opts.message,
51
+ choices: choices,
52
+ default: opts.default,
53
+ loop: false,
54
+ });
55
+ }
56
+ catch (err) {
57
+ rethrowAbort(err);
58
+ }
59
+ }
60
+ /**
61
+ * Multi-select with Space to toggle. Always returns an array (possibly
62
+ * empty). No back option — typical usage is "pick which IMs to enable";
63
+ * cancel is via Ctrl-C → UserAbortError.
64
+ */
65
+ export async function multiSelect(opts) {
66
+ try {
67
+ return await checkbox({
68
+ message: opts.message,
69
+ choices: opts.choices,
70
+ required: opts.required ?? false,
71
+ loop: false,
72
+ });
73
+ }
74
+ catch (err) {
75
+ rethrowAbort(err);
76
+ }
77
+ }
78
+ /** Free-text input with optional default + validator. */
79
+ export async function inputText(opts) {
80
+ try {
81
+ return await input({
82
+ message: opts.message,
83
+ default: opts.default,
84
+ validate: (v) => {
85
+ if (opts.required && !v.trim())
86
+ return 'Required';
87
+ if (opts.validate)
88
+ return opts.validate(v);
89
+ return true;
90
+ },
91
+ });
92
+ }
93
+ catch (err) {
94
+ rethrowAbort(err);
95
+ }
96
+ }
97
+ /** Hidden input for secrets (no echo). */
98
+ export async function inputSecret(opts) {
99
+ try {
100
+ return await password({
101
+ message: opts.message,
102
+ mask: '*',
103
+ validate: (v) => {
104
+ if (opts.required && !v)
105
+ return 'Required';
106
+ if (opts.validate)
107
+ return opts.validate(v);
108
+ return true;
109
+ },
110
+ });
111
+ }
112
+ catch (err) {
113
+ rethrowAbort(err);
114
+ }
115
+ }
116
+ /** Yes/no with arrow-key navigation. */
117
+ export async function yesNo(opts) {
118
+ try {
119
+ return await confirm({ message: opts.message, default: opts.default ?? false });
120
+ }
121
+ catch (err) {
122
+ rethrowAbort(err);
123
+ }
124
+ }
125
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli-ui/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export declare const PID_FILE: string;
2
+ export declare const LOG_FILE: string;
3
+ export type ServiceMode = 'systemd' | 'background' | 'foreground' | 'none';
4
+ export interface ServiceState {
5
+ mode: ServiceMode;
6
+ pid: number | null;
7
+ /** Approximate uptime in seconds — from systemd timestamp or proc start time. */
8
+ uptimeSec?: number;
9
+ }
10
+ /** Format seconds as e.g. "2h 15m" / "3d 4h" / "45s". */
11
+ export declare function formatUptime(sec: number): string;
12
+ /** Look up the running mode + pid. Order matters: systemd wins, then bg
13
+ * pid-file, then a foreground pgrep match. Returns `{mode:'none', pid:null}`
14
+ * when nothing is running. */
15
+ export declare function detectService(): ServiceState;
16
+ /**
17
+ * Spawn Agim detached with stdio redirected to ~/.im-hub/im-hub.log.
18
+ * Writes the pid to PID_FILE so subsequent `status` / `stop` find it.
19
+ *
20
+ * Cross-platform: setsid → new session, no controlling tty, parent can exit.
21
+ * On macOS where setsid isn't always reliable, fall through to a plain
22
+ * detached spawn (child still gets stdio: 'ignore' / 'pipe' redirected to
23
+ * the log file, which is enough to survive the parent).
24
+ */
25
+ export declare function spawnBackground(executable: string, args?: string[]): {
26
+ pid: number;
27
+ };
28
+ /** Stop whichever instance is running. Returns the mode that was stopped
29
+ * (or 'none' when there was nothing to do). */
30
+ export declare function stopService(): Promise<{
31
+ mode: ServiceMode;
32
+ pid: number | null;
33
+ }>;
34
+ /** Get the configured web bind+port from `<AGIM_HOME>/config.json` —
35
+ * used by `status` to print the URL. Returns null when config is
36
+ * absent / unparseable. */
37
+ export declare function readWebEndpoint(): {
38
+ bind: string;
39
+ port: number;
40
+ } | null;
41
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli-ui/service.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,QAAQ,QAAgC,CAAA;AACrD,eAAO,MAAM,QAAQ,QAAgC,CAAA;AAqBrD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,CAAA;AAE1E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA2BD,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;+BAE+B;AAC/B,wBAAgB,aAAa,IAAI,YAAY,CAmD5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAmB/F;AAED;gDACgD;AAChD,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiCtF;AAED;;4BAE4B;AAC5B,wBAAgB,eAAe,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQvE"}
@@ -0,0 +1,241 @@
1
+ // cli-ui/service.ts — cross-platform service detection + lifecycle for
2
+ // Agim (formerly im-hub-pro). Knows about three run modes:
3
+ //
4
+ // 1. systemd-managed — Linux + root, either /etc/systemd/system/agim.service
5
+ // (the v1.0+ unit) OR the legacy im-hub.service exists
6
+ // and `systemctl is-active <unit>` returns "active".
7
+ // New installs write agim.service; pre-v1.0 systems
8
+ // continue to be detected via the legacy name.
9
+ // 2. background daemon — `agim start --bg` writes ~/.im-hub/im-hub.pid
10
+ // and ~/.im-hub/im-hub.log (paths kept under the
11
+ // legacy ~/.im-hub/ for upgrade compatibility).
12
+ // nohup + setsid; survives shell exit. Works on
13
+ // Linux, macOS, WSL2.
14
+ // 3. foreground — a TTY-attached `agim start` (or the legacy
15
+ // `im-hub-pro start`) somewhere. We detect it via
16
+ // `pgrep -af` matching, but can't stop or restart
17
+ // it from outside the owning TTY.
18
+ //
19
+ // The detection helpers are all best-effort: a missing systemctl, a stale
20
+ // pid file, or a pgrep mismatch produces "not running" rather than an
21
+ // error, so the caller can decide what to ack.
22
+ import { execSync, spawn } from 'node:child_process';
23
+ import { readFileSync, existsSync, writeFileSync, unlinkSync, mkdirSync, openSync, closeSync } from 'node:fs';
24
+ import { join, dirname } from 'node:path';
25
+ import { AGIM_HOME } from '../core/agim-paths.js';
26
+ // Pid + log files live inside whatever AGIM_HOME resolved to. Filenames
27
+ // themselves stay `im-hub.*` for backwards compat with any external
28
+ // monitoring / log-collection that's tailing them.
29
+ export const PID_FILE = join(AGIM_HOME, 'im-hub.pid');
30
+ export const LOG_FILE = join(AGIM_HOME, 'im-hub.log');
31
+ /** Systemd unit candidates, checked in order. v1.0+ installers should
32
+ * write `agim.service`; older installs use `im-hub.service`. We accept
33
+ * either so users who upgraded across the rename don't lose detection.
34
+ * `getSystemdUnit()` resolves which one exists. */
35
+ const SYSTEMD_UNIT_CANDIDATES = [
36
+ '/etc/systemd/system/agim.service',
37
+ '/etc/systemd/system/im-hub.service',
38
+ ];
39
+ function getSystemdUnit() {
40
+ for (const path of SYSTEMD_UNIT_CANDIDATES) {
41
+ if (existsSync(path)) {
42
+ // e.g. "/etc/systemd/system/agim.service" → "agim.service"
43
+ return { path, name: path.split('/').pop() ?? '' };
44
+ }
45
+ }
46
+ return null;
47
+ }
48
+ /** Check if a unix pid is alive. */
49
+ function pidAlive(pid) {
50
+ try {
51
+ process.kill(pid, 0);
52
+ return true;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ /** Approximate uptime by reading /proc/<pid>/stat — Linux/WSL only.
59
+ * On macOS we'd need `ps -o etime`; not bothering for status display. */
60
+ function uptimeOfPid(pid) {
61
+ try {
62
+ const stat = readFileSync(`/proc/${pid}/stat`, 'utf-8');
63
+ // Field 22 (0-indexed 21) is start time in clock ticks since boot.
64
+ const fields = stat.slice(stat.lastIndexOf(')') + 2).split(' ');
65
+ const starttimeTicks = parseInt(fields[19], 10);
66
+ if (!Number.isFinite(starttimeTicks))
67
+ return undefined;
68
+ const ticksPerSec = parseInt(execSync('getconf CLK_TCK').toString().trim(), 10) || 100;
69
+ const bootTime = parseInt(execSync(`awk '/btime/ {print $2}' /proc/stat`).toString().trim(), 10);
70
+ if (!Number.isFinite(bootTime))
71
+ return undefined;
72
+ const startUnix = bootTime + starttimeTicks / ticksPerSec;
73
+ return Math.max(0, Math.floor(Date.now() / 1000 - startUnix));
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ }
79
+ /** Format seconds as e.g. "2h 15m" / "3d 4h" / "45s". */
80
+ export function formatUptime(sec) {
81
+ if (sec < 60)
82
+ return `${sec}s`;
83
+ const m = Math.floor(sec / 60);
84
+ if (m < 60)
85
+ return `${m}m`;
86
+ const h = Math.floor(m / 60);
87
+ if (h < 24)
88
+ return `${h}h ${m % 60}m`;
89
+ const d = Math.floor(h / 24);
90
+ return `${d}d ${h % 24}h`;
91
+ }
92
+ /** Look up the running mode + pid. Order matters: systemd wins, then bg
93
+ * pid-file, then a foreground pgrep match. Returns `{mode:'none', pid:null}`
94
+ * when nothing is running. */
95
+ export function detectService() {
96
+ // 1. systemd — check whichever unit name exists (agim.service first,
97
+ // im-hub.service fallback for pre-1.0 installs).
98
+ const unit = getSystemdUnit();
99
+ if (unit) {
100
+ try {
101
+ const active = execSync(`systemctl is-active ${unit.name} 2>&1`, { encoding: 'utf-8' }).trim();
102
+ if (active === 'active') {
103
+ let pid = null;
104
+ try {
105
+ const out = execSync(`systemctl show -p MainPID --value ${unit.name}`, { encoding: 'utf-8' }).trim();
106
+ const n = parseInt(out, 10);
107
+ if (Number.isFinite(n) && n > 0)
108
+ pid = n;
109
+ }
110
+ catch { /* keep null */ }
111
+ return {
112
+ mode: 'systemd',
113
+ pid,
114
+ uptimeSec: pid ? uptimeOfPid(pid) : undefined,
115
+ };
116
+ }
117
+ }
118
+ catch { /* systemctl not on PATH, e.g. macOS — fall through */ }
119
+ }
120
+ // 2. background pid file
121
+ if (existsSync(PID_FILE)) {
122
+ try {
123
+ const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim(), 10);
124
+ if (Number.isFinite(pid) && pidAlive(pid)) {
125
+ return { mode: 'background', pid, uptimeSec: uptimeOfPid(pid) };
126
+ }
127
+ }
128
+ catch { /* fall through */ }
129
+ }
130
+ // 3. foreground — pgrep for our CLI. Match `agim start`, the legacy
131
+ // `im-hub-pro start` (kept for users with old bin aliases), or
132
+ // `dist/cli.js start`. Excludes the current process (the CLI that's
133
+ // running this check).
134
+ try {
135
+ const out = execSync('pgrep -af "agim start|im-hub-pro start|dist/cli.js start"', {
136
+ encoding: 'utf-8',
137
+ }).trim();
138
+ const lines = out.split('\n').filter(Boolean);
139
+ for (const line of lines) {
140
+ const pid = parseInt(line.split(' ')[0], 10);
141
+ if (Number.isFinite(pid) && pid !== process.pid && pidAlive(pid)) {
142
+ return { mode: 'foreground', pid, uptimeSec: uptimeOfPid(pid) };
143
+ }
144
+ }
145
+ }
146
+ catch { /* pgrep found nothing — exit 1 */ }
147
+ return { mode: 'none', pid: null };
148
+ }
149
+ /**
150
+ * Spawn Agim detached with stdio redirected to ~/.im-hub/im-hub.log.
151
+ * Writes the pid to PID_FILE so subsequent `status` / `stop` find it.
152
+ *
153
+ * Cross-platform: setsid → new session, no controlling tty, parent can exit.
154
+ * On macOS where setsid isn't always reliable, fall through to a plain
155
+ * detached spawn (child still gets stdio: 'ignore' / 'pipe' redirected to
156
+ * the log file, which is enough to survive the parent).
157
+ */
158
+ export function spawnBackground(executable, args = ['start']) {
159
+ mkdirSync(dirname(LOG_FILE), { recursive: true });
160
+ // Open the log file (append) and use its fd for child stdout/stderr.
161
+ // openSync + closeSync are statically imported at the top — require() doesn't
162
+ // exist in ESM modules (package.json has "type": "module").
163
+ const fd = openSync(LOG_FILE, 'a');
164
+ try {
165
+ const child = spawn(executable, args, {
166
+ detached: true,
167
+ stdio: ['ignore', fd, fd],
168
+ env: process.env,
169
+ });
170
+ child.unref();
171
+ if (!child.pid)
172
+ throw new Error('spawn returned no pid');
173
+ writeFileSync(PID_FILE, `${child.pid}\n`);
174
+ return { pid: child.pid };
175
+ }
176
+ finally {
177
+ closeSync(fd);
178
+ }
179
+ }
180
+ /** Stop whichever instance is running. Returns the mode that was stopped
181
+ * (or 'none' when there was nothing to do). */
182
+ export async function stopService() {
183
+ const st = detectService();
184
+ if (st.mode === 'none')
185
+ return { mode: 'none', pid: null };
186
+ if (st.mode === 'systemd') {
187
+ const unit = getSystemdUnit();
188
+ if (unit) {
189
+ execSync(`systemctl stop ${unit.name}`, { stdio: 'inherit' });
190
+ }
191
+ return { mode: 'systemd', pid: st.pid };
192
+ }
193
+ if (st.mode === 'background' && st.pid) {
194
+ try {
195
+ process.kill(st.pid, 'SIGTERM');
196
+ }
197
+ catch { /* already gone */ }
198
+ // Wait up to 5s for clean exit, then SIGKILL.
199
+ for (let i = 0; i < 50; i++) {
200
+ if (!pidAlive(st.pid))
201
+ break;
202
+ await new Promise(r => setTimeout(r, 100));
203
+ }
204
+ if (pidAlive(st.pid)) {
205
+ try {
206
+ process.kill(st.pid, 'SIGKILL');
207
+ }
208
+ catch { /* ignore */ }
209
+ }
210
+ try {
211
+ unlinkSync(PID_FILE);
212
+ }
213
+ catch { /* ok if already gone */ }
214
+ return { mode: 'background', pid: st.pid };
215
+ }
216
+ if (st.mode === 'foreground' && st.pid) {
217
+ // Best-effort: try SIGTERM. The owning TTY may also see Ctrl-C.
218
+ try {
219
+ process.kill(st.pid, 'SIGTERM');
220
+ }
221
+ catch { /* ignore */ }
222
+ return { mode: 'foreground', pid: st.pid };
223
+ }
224
+ return { mode: 'none', pid: null };
225
+ }
226
+ /** Get the configured web bind+port from `<AGIM_HOME>/config.json` —
227
+ * used by `status` to print the URL. Returns null when config is
228
+ * absent / unparseable. */
229
+ export function readWebEndpoint() {
230
+ try {
231
+ const raw = readFileSync(join(AGIM_HOME, 'config.json'), 'utf-8');
232
+ const cfg = JSON.parse(raw);
233
+ const bind = typeof cfg.web?.bind === 'string' ? cfg.web.bind : '127.0.0.1';
234
+ const port = typeof cfg.web?.port === 'number' ? cfg.web.port : 3000;
235
+ return { bind, port };
236
+ }
237
+ catch {
238
+ return null;
239
+ }
240
+ }
241
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli-ui/service.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}