@xopcai/xopc 0.0.6 → 0.0.8

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 (291) hide show
  1. package/dist/extensions/telegram/src/plugin.js +1 -1
  2. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  3. package/dist/extensions/weixin/src/api/api.js +1 -1
  4. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  5. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  6. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  7. package/dist/extensions/weixin/src/plugin.js +1 -1
  8. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BSNzJWbQ.js} +2 -2
  9. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js.map → agents-BSNzJWbQ.js.map} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-BKk9SB4D.js} +2 -2
  11. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-BKk9SB4D.js.map} +1 -1
  12. package/dist/gateway/static/root/assets/attachment-load-DXcJLSWT.js +1 -0
  13. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-_J6cQN6G.js} +2 -2
  14. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-_J6cQN6G.js.map} +1 -1
  15. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-DPb_0O8M.js} +2 -2
  16. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-DPb_0O8M.js.map} +1 -1
  17. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-BUJOuuKX.js} +2 -2
  18. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-BUJOuuKX.js.map} +1 -1
  19. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Cn0YVg8x.js} +2 -2
  20. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Cn0YVg8x.js.map} +1 -1
  21. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js +2 -0
  22. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js.map +1 -0
  23. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-DTz4O5Ua.js} +2 -2
  24. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-DTz4O5Ua.js.map} +1 -1
  25. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-Cs1Kde9o.js} +2 -2
  26. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-Cs1Kde9o.js.map} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-G52iX0Bo.js} +2 -2
  28. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-G52iX0Bo.js.map} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-CO2jxBA9.js} +2 -2
  30. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-CO2jxBA9.js.map} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-D9Ul8uSt.js} +2 -2
  32. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-D9Ul8uSt.js.map} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Bc8SVD15.js} +2 -2
  34. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Bc8SVD15.js.map} +1 -1
  35. package/dist/gateway/static/root/assets/index-BXUJbteW.js +16 -0
  36. package/dist/gateway/static/root/assets/index-BXUJbteW.js.map +1 -0
  37. package/dist/gateway/static/root/assets/index-CQLMxWSA.css +2 -0
  38. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-5V25JkQY.js} +2 -2
  39. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-5V25JkQY.js.map} +1 -1
  40. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-he3aQfme.js} +2 -2
  41. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-he3aQfme.js.map} +1 -1
  42. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
  43. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
  44. package/dist/gateway/static/root/assets/page-header-store-DJHD9Ean.js +2 -0
  45. package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-DJHD9Ean.js.map} +1 -1
  46. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-n-4O5d9U.js} +2 -2
  47. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-n-4O5d9U.js.map} +1 -1
  48. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-B6dHLvbr.js} +3 -3
  49. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-B6dHLvbr.js.map} +1 -1
  50. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-rBUfTdm3.js} +2 -2
  51. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-rBUfTdm3.js.map} +1 -1
  52. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js +2 -0
  53. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js.map +1 -0
  54. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-vxtE8kI6.js} +2 -2
  55. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-vxtE8kI6.js.map} +1 -1
  56. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-D36_O2Ub.js} +2 -2
  57. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-D36_O2Ub.js.map} +1 -1
  58. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CmiSsYBd.js} +2 -2
  59. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CmiSsYBd.js.map} +1 -1
  60. package/dist/gateway/static/root/assets/url-CtSqjF9J.js +2 -0
  61. package/dist/gateway/static/root/assets/url-CtSqjF9J.js.map +1 -0
  62. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-DYORQ7x6.js} +2 -2
  63. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-DYORQ7x6.js.map} +1 -1
  64. package/dist/gateway/static/root/index.html +16 -16
  65. package/dist/package.js +1 -1
  66. package/dist/src/agent/agent-manager.js +4 -4
  67. package/dist/src/agent/context/workspace-seed.js +2 -2
  68. package/dist/src/agent/image/index.d.ts +0 -1
  69. package/dist/src/agent/image/index.js +1 -2
  70. package/dist/src/agent/ipc/bus.js +1 -1
  71. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  72. package/dist/src/agent/models/manager.js +1 -1
  73. package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
  74. package/dist/src/agent/service.js +3 -3
  75. package/dist/src/agent/skills/hub-hash.js +1 -1
  76. package/dist/src/agent/skills/hub-pull.js +1 -1
  77. package/dist/src/agent/skills/index.js +1 -1
  78. package/dist/src/agent/skills/skill-manager.js +1 -1
  79. package/dist/src/agent/tools/browser/tools.js +2 -2
  80. package/dist/src/agent/tools/browser/tools.js.map +1 -1
  81. package/dist/src/agent/tools/factory.js +1 -1
  82. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  83. package/dist/src/agent/tools/image-tool.js +2 -2
  84. package/dist/src/agent/tools/image-tool.js.map +1 -1
  85. package/dist/src/agent/tools/index.d.ts +1 -1
  86. package/dist/src/agent/tools/index.js +2 -2
  87. package/dist/src/agent/tools/read.d.ts +0 -2
  88. package/dist/src/agent/tools/read.js +1 -3
  89. package/dist/src/agent/tools/read.js.map +1 -1
  90. package/dist/src/agent/tools/send-media.js +1 -1
  91. package/dist/src/auth/sync-provider-auth.js +1 -1
  92. package/dist/src/channels/plugin-types.d.ts +14 -0
  93. package/dist/src/cli/commands/agent.js +1 -1
  94. package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
  95. package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
  96. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
  97. package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
  98. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
  99. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
  100. package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
  101. package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
  102. package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
  103. package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
  104. package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
  105. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
  106. package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
  107. package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
  108. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
  109. package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
  110. package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
  111. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
  112. package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
  113. package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
  114. package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
  115. package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
  116. package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
  117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
  118. package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
  119. package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
  120. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
  121. package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
  122. package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
  123. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
  124. package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
  125. package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
  126. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
  127. package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
  128. package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
  129. package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
  130. package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
  131. package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
  132. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
  133. package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
  134. package/dist/src/cli/commands/doctor/flow.js +51 -0
  135. package/dist/src/cli/commands/doctor/flow.js.map +1 -0
  136. package/dist/src/cli/commands/doctor/format.d.ts +6 -0
  137. package/dist/src/cli/commands/doctor/format.js +61 -0
  138. package/dist/src/cli/commands/doctor/format.js.map +1 -0
  139. package/dist/src/cli/commands/doctor/index.js +44 -0
  140. package/dist/src/cli/commands/doctor/index.js.map +1 -0
  141. package/dist/src/cli/commands/doctor/types.d.ts +20 -0
  142. package/dist/src/cli/commands/doctor/types.js +1 -0
  143. package/dist/src/cli/commands/init.js +2 -2
  144. package/dist/src/cli/index.d.ts +1 -1
  145. package/dist/src/cli/index.js +1 -1
  146. package/dist/src/cli/index.js.map +1 -1
  147. package/dist/src/cli/utils/init-workspace.js +1 -1
  148. package/dist/src/config/index.js +3 -3
  149. package/dist/src/config/loader.js +1 -1
  150. package/dist/src/config/models-json.d.ts +15 -15
  151. package/dist/src/config/models-json.js +1 -1
  152. package/dist/src/config/profile.js +1 -1
  153. package/dist/src/config/schema.d.ts +0 -105
  154. package/dist/src/config/schema.js +3 -40
  155. package/dist/src/config/schema.js.map +1 -1
  156. package/dist/src/cron/executor.js +2 -2
  157. package/dist/src/daemon/launchd.js +2 -2
  158. package/dist/src/daemon/launchd.js.map +1 -1
  159. package/dist/src/daemon/systemd.js +2 -2
  160. package/dist/src/daemon/systemd.js.map +1 -1
  161. package/dist/src/extensions/loader.js +1 -1
  162. package/dist/src/gateway/agents-admin.js +1 -1
  163. package/dist/src/gateway/hono/lib/static-ui.js +1 -1
  164. package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
  165. package/dist/src/gateway/hono/routes/doctor.js +35 -0
  166. package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
  167. package/dist/src/gateway/hono/routes/index.js +2 -0
  168. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  169. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  170. package/dist/src/gateway/hono/sse.js +2 -2
  171. package/dist/src/gateway/lock.js +1 -1
  172. package/dist/src/gateway/ports.js +98 -3
  173. package/dist/src/gateway/ports.js.map +1 -1
  174. package/dist/src/gateway/service.d.ts +0 -4
  175. package/dist/src/gateway/service.js +4 -23
  176. package/dist/src/gateway/service.js.map +1 -1
  177. package/dist/src/routing/bindings.js +1 -1
  178. package/dist/src/routing/index.d.ts +1 -1
  179. package/dist/src/routing/index.js +2 -2
  180. package/dist/src/routing/index.js.map +1 -1
  181. package/dist/src/routing/resolve-route.js +1 -1
  182. package/dist/src/routing/session-key.d.ts +0 -5
  183. package/dist/src/routing/session-key.js +1 -27
  184. package/dist/src/routing/session-key.js.map +1 -1
  185. package/dist/src/session/session-title.js +1 -1
  186. package/dist/src/session/store.js +2 -6
  187. package/dist/src/session/store.js.map +1 -1
  188. package/dist/src/session/types.d.ts +0 -10
  189. package/dist/src/session/types.js.map +1 -1
  190. package/package.json +1 -2
  191. package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
  192. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
  193. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
  194. package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
  195. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
  196. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
  197. package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
  198. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
  199. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
  200. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
  201. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
  202. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
  203. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
  204. package/dist/src/acp/commands.d.ts +0 -11
  205. package/dist/src/acp/commands.js +0 -17
  206. package/dist/src/acp/commands.js.map +0 -1
  207. package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
  208. package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
  209. package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
  210. package/dist/src/acp/control-plane/index.d.ts +0 -10
  211. package/dist/src/acp/control-plane/index.js +0 -6
  212. package/dist/src/acp/control-plane/manager.d.ts +0 -86
  213. package/dist/src/acp/control-plane/manager.js +0 -502
  214. package/dist/src/acp/control-plane/manager.js.map +0 -1
  215. package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
  216. package/dist/src/acp/control-plane/manager.types.js +0 -14
  217. package/dist/src/acp/control-plane/manager.types.js.map +0 -1
  218. package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
  219. package/dist/src/acp/control-plane/manager.utils.js +0 -46
  220. package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
  221. package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
  222. package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
  223. package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
  224. package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
  225. package/dist/src/acp/control-plane/runtime-cache.js +0 -58
  226. package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
  227. package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
  228. package/dist/src/acp/control-plane/runtime-options.js +0 -92
  229. package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
  230. package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
  231. package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
  232. package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
  233. package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
  234. package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
  235. package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
  236. package/dist/src/acp/control-plane/session-store.d.ts +0 -39
  237. package/dist/src/acp/control-plane/session-store.js +0 -149
  238. package/dist/src/acp/control-plane/session-store.js.map +0 -1
  239. package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
  240. package/dist/src/acp/control-plane/turn-manager.js +0 -134
  241. package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
  242. package/dist/src/acp/event-mapper.d.ts +0 -48
  243. package/dist/src/acp/event-mapper.js +0 -94
  244. package/dist/src/acp/event-mapper.js.map +0 -1
  245. package/dist/src/acp/index.d.ts +0 -10
  246. package/dist/src/acp/index.js +0 -5
  247. package/dist/src/acp/meta.d.ts +0 -15
  248. package/dist/src/acp/meta.js +0 -36
  249. package/dist/src/acp/meta.js.map +0 -1
  250. package/dist/src/acp/routing-integration.d.ts +0 -37
  251. package/dist/src/acp/routing-integration.js +0 -58
  252. package/dist/src/acp/routing-integration.js.map +0 -1
  253. package/dist/src/acp/runtime/backends/index.d.ts +0 -4
  254. package/dist/src/acp/runtime/backends/index.js +0 -2
  255. package/dist/src/acp/runtime/backends/local.d.ts +0 -136
  256. package/dist/src/acp/runtime/backends/local.js +0 -603
  257. package/dist/src/acp/runtime/backends/local.js.map +0 -1
  258. package/dist/src/acp/runtime/error-text.d.ts +0 -16
  259. package/dist/src/acp/runtime/error-text.js +0 -40
  260. package/dist/src/acp/runtime/error-text.js.map +0 -1
  261. package/dist/src/acp/runtime/errors.d.ts +0 -31
  262. package/dist/src/acp/runtime/errors.js +0 -47
  263. package/dist/src/acp/runtime/errors.js.map +0 -1
  264. package/dist/src/acp/runtime/index.d.ts +0 -7
  265. package/dist/src/acp/runtime/index.js +0 -4
  266. package/dist/src/acp/runtime/registry.d.ts +0 -35
  267. package/dist/src/acp/runtime/registry.js +0 -85
  268. package/dist/src/acp/runtime/registry.js.map +0 -1
  269. package/dist/src/acp/runtime/session-identity.d.ts +0 -35
  270. package/dist/src/acp/runtime/session-identity.js +0 -134
  271. package/dist/src/acp/runtime/session-identity.js.map +0 -1
  272. package/dist/src/acp/runtime/types.d.ts +0 -214
  273. package/dist/src/acp/secret-file.d.ts +0 -7
  274. package/dist/src/acp/secret-file.js +0 -19
  275. package/dist/src/acp/secret-file.js.map +0 -1
  276. package/dist/src/acp/server.d.ts +0 -48
  277. package/dist/src/acp/server.js +0 -300
  278. package/dist/src/acp/server.js.map +0 -1
  279. package/dist/src/acp/session.d.ts +0 -29
  280. package/dist/src/acp/session.js +0 -30
  281. package/dist/src/acp/session.js.map +0 -1
  282. package/dist/src/acp/types.d.ts +0 -39
  283. package/dist/src/acp/types.js +0 -13
  284. package/dist/src/acp/types.js.map +0 -1
  285. package/dist/src/agent/image/describe-images.d.ts +0 -18
  286. package/dist/src/agent/image/describe-images.js +0 -19
  287. package/dist/src/agent/image/describe-images.js.map +0 -1
  288. package/dist/src/cli/commands/acp.d.ts +0 -4
  289. package/dist/src/cli/commands/acp.js +0 -200
  290. package/dist/src/cli/commands/acp.js.map +0 -1
  291. /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
@@ -0,0 +1,71 @@
1
+ import { PACKAGE_VERSION, init_package_version } from "../../../../package-version.js";
2
+ //#region src/cli/commands/doctor/checks/version-check.ts
3
+ init_package_version();
4
+ const REGISTRY_URL = "https://registry.npmjs.org/@xopcai/xopc/latest";
5
+ const TIMEOUT_MS = 5e3;
6
+ /** Simple semver: 1 if a > b, -1 if a < b, 0 if equal. */
7
+ function compareSemver(a, b) {
8
+ const pa = a.split(".").map((x) => parseInt(x, 10) || 0);
9
+ const pb = b.split(".").map((x) => parseInt(x, 10) || 0);
10
+ const n = Math.max(pa.length, pb.length);
11
+ for (let i = 0; i < n; i++) {
12
+ const da = pa[i] ?? 0;
13
+ const db = pb[i] ?? 0;
14
+ if (da > db) return 1;
15
+ if (da < db) return -1;
16
+ }
17
+ return 0;
18
+ }
19
+ async function fetchLatestVersion() {
20
+ const controller = new AbortController();
21
+ const t = setTimeout(() => controller.abort(), TIMEOUT_MS);
22
+ try {
23
+ const res = await fetch(REGISTRY_URL, {
24
+ signal: controller.signal,
25
+ headers: { accept: "application/json" }
26
+ });
27
+ if (!res.ok) return null;
28
+ const data = await res.json();
29
+ return typeof data.version === "string" ? data.version : null;
30
+ } catch {
31
+ return null;
32
+ } finally {
33
+ clearTimeout(t);
34
+ }
35
+ }
36
+ async function checkVersionUpdate(_ctx) {
37
+ const local = PACKAGE_VERSION.trim() || "0.0.0";
38
+ const latest = await fetchLatestVersion();
39
+ if (!latest) return {
40
+ id: "version-check",
41
+ label: "Version",
42
+ status: "skip",
43
+ message: "Could not query npm for the latest version (offline or registry error).",
44
+ hints: []
45
+ };
46
+ if (compareSemver(latest, local) > 0) return {
47
+ id: "version-check",
48
+ label: "Version",
49
+ status: "warn",
50
+ message: `Running v${local}; npm latest is v${latest}.`,
51
+ hints: ["Upgrade: pnpm add -g @xopcai/xopc@latest", "Or: npm i -g @xopcai/xopc@latest"]
52
+ };
53
+ if (compareSemver(local, latest) > 0) return {
54
+ id: "version-check",
55
+ label: "Version",
56
+ status: "pass",
57
+ message: `Running v${local} (ahead of npm registry v${latest}; local/dev build is OK).`,
58
+ hints: []
59
+ };
60
+ return {
61
+ id: "version-check",
62
+ label: "Version",
63
+ status: "pass",
64
+ message: `Running v${local} (matches npm latest).`,
65
+ hints: []
66
+ };
67
+ }
68
+ //#endregion
69
+ export { checkVersionUpdate };
70
+
71
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","names":[],"sources":["../../../../../../src/cli/commands/doctor/checks/version-check.ts"],"sourcesContent":["import { PACKAGE_VERSION } from '../../../../package-version.js';\nimport type { CheckResult, DoctorContext } from '../types.js';\n\nconst REGISTRY_URL = 'https://registry.npmjs.org/@xopcai/xopc/latest';\nconst TIMEOUT_MS = 5000;\n\n/** Simple semver: 1 if a > b, -1 if a < b, 0 if equal. */\nfunction compareSemver(a: string, b: string): number {\n const pa = a.split('.').map((x) => parseInt(x, 10) || 0);\n const pb = b.split('.').map((x) => parseInt(x, 10) || 0);\n const n = Math.max(pa.length, pb.length);\n for (let i = 0; i < n; i++) {\n const da = pa[i] ?? 0;\n const db = pb[i] ?? 0;\n if (da > db) return 1;\n if (da < db) return -1;\n }\n return 0;\n}\n\nasync function fetchLatestVersion(): Promise<string | null> {\n const controller = new AbortController();\n const t = setTimeout(() => controller.abort(), TIMEOUT_MS);\n try {\n const res = await fetch(REGISTRY_URL, {\n signal: controller.signal,\n headers: { accept: 'application/json' },\n });\n if (!res.ok) return null;\n const data = (await res.json()) as { version?: string };\n return typeof data.version === 'string' ? data.version : null;\n } catch {\n return null;\n } finally {\n clearTimeout(t);\n }\n}\n\nexport async function checkVersionUpdate(_ctx: DoctorContext): Promise<CheckResult> {\n const local = PACKAGE_VERSION.trim() || '0.0.0';\n const latest = await fetchLatestVersion();\n if (!latest) {\n return {\n id: 'version-check',\n label: 'Version',\n status: 'skip',\n message: 'Could not query npm for the latest version (offline or registry error).',\n hints: [],\n };\n }\n\n if (compareSemver(latest, local) > 0) {\n return {\n id: 'version-check',\n label: 'Version',\n status: 'warn',\n message: `Running v${local}; npm latest is v${latest}.`,\n hints: ['Upgrade: pnpm add -g @xopcai/xopc@latest', 'Or: npm i -g @xopcai/xopc@latest'],\n };\n }\n\n if (compareSemver(local, latest) > 0) {\n return {\n id: 'version-check',\n label: 'Version',\n status: 'pass',\n message: `Running v${local} (ahead of npm registry v${latest}; local/dev build is OK).`,\n hints: [],\n };\n }\n\n return {\n id: 'version-check',\n label: 'Version',\n status: 'pass',\n message: `Running v${local} (matches npm latest).`,\n hints: [],\n };\n}\n"],"mappings":";;sBAAiE;AAGjE,MAAM,eAAe;AACrB,MAAM,aAAa;;AAGnB,SAAS,cAAc,GAAW,GAAmB;CACnD,MAAM,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,SAAS,GAAG,GAAG,IAAI,EAAE;CACxD,MAAM,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,SAAS,GAAG,GAAG,IAAI,EAAE;CACxD,MAAM,IAAI,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO;AACxC,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,KAAK,GAAG,MAAM;EACpB,MAAM,KAAK,GAAG,MAAM;AACpB,MAAI,KAAK,GAAI,QAAO;AACpB,MAAI,KAAK,GAAI,QAAO;;AAEtB,QAAO;;AAGT,eAAe,qBAA6C;CAC1D,MAAM,aAAa,IAAI,iBAAiB;CACxC,MAAM,IAAI,iBAAiB,WAAW,OAAO,EAAE,WAAW;AAC1D,KAAI;EACF,MAAM,MAAM,MAAM,MAAM,cAAc;GACpC,QAAQ,WAAW;GACnB,SAAS,EAAE,QAAQ,oBAAoB;GACxC,CAAC;AACF,MAAI,CAAC,IAAI,GAAI,QAAO;EACpB,MAAM,OAAQ,MAAM,IAAI,MAAM;AAC9B,SAAO,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;SACnD;AACN,SAAO;WACC;AACR,eAAa,EAAE;;;AAInB,eAAsB,mBAAmB,MAA2C;CAClF,MAAM,QAAQ,gBAAgB,MAAM,IAAI;CACxC,MAAM,SAAS,MAAM,oBAAoB;AACzC,KAAI,CAAC,OACH,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS;EACT,OAAO,EAAE;EACV;AAGH,KAAI,cAAc,QAAQ,MAAM,GAAG,EACjC,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS,YAAY,MAAM,mBAAmB,OAAO;EACrD,OAAO,CAAC,4CAA4C,mCAAmC;EACxF;AAGH,KAAI,cAAc,OAAO,OAAO,GAAG,EACjC,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS,YAAY,MAAM,2BAA2B,OAAO;EAC7D,OAAO,EAAE;EACV;AAGH,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS,YAAY,MAAM;EAC3B,OAAO,EAAE;EACV"}
@@ -0,0 +1,2 @@
1
+ import type { CheckResult, DoctorContext } from '../types.js';
2
+ export declare function checkWorkspaceStatus(ctx: DoctorContext): Promise<CheckResult>;
@@ -0,0 +1,73 @@
1
+ import { init_agent_scope, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../../../../agent/agent-scope.js";
2
+ import { WORKSPACE_FILES, init_paths } from "../../../../config/paths.js";
3
+ import { init_loader, loadConfig } from "../../../../config/loader.js";
4
+ import { join } from "node:path";
5
+ import { existsSync } from "node:fs";
6
+ //#region src/cli/commands/doctor/checks/workspace-status.ts
7
+ init_agent_scope();
8
+ init_loader();
9
+ init_paths();
10
+ async function checkWorkspaceStatus(ctx) {
11
+ if (!existsSync(ctx.configPath)) return {
12
+ id: "workspace-status",
13
+ label: "Workspace",
14
+ status: "skip",
15
+ message: "No config file; skipped.",
16
+ hints: []
17
+ };
18
+ let config;
19
+ try {
20
+ config = loadConfig(ctx.configPath);
21
+ } catch {
22
+ return {
23
+ id: "workspace-status",
24
+ label: "Workspace",
25
+ status: "skip",
26
+ message: "Config could not be loaded; skipped.",
27
+ hints: []
28
+ };
29
+ }
30
+ const agentId = resolveDefaultAgentId(config);
31
+ const root = resolveAgentWorkspaceDir(config, agentId);
32
+ const hints = [];
33
+ if (!existsSync(root)) return {
34
+ id: "workspace-status",
35
+ label: "Workspace",
36
+ status: "warn",
37
+ message: "Agent workspace directory is missing.",
38
+ hints: [root, "Run: xopc onboard"]
39
+ };
40
+ const soul = join(root, WORKSPACE_FILES.SOUL);
41
+ const identity = join(root, WORKSPACE_FILES.IDENTITY);
42
+ const missing = [];
43
+ if (!existsSync(soul)) missing.push(WORKSPACE_FILES.SOUL);
44
+ if (!existsSync(identity)) missing.push(WORKSPACE_FILES.IDENTITY);
45
+ if (missing.length > 0) return {
46
+ id: "workspace-status",
47
+ label: "Workspace",
48
+ status: "warn",
49
+ message: `Essential workspace files missing: ${missing.join(", ")}.`,
50
+ hints: [root, "Run: xopc onboard"]
51
+ };
52
+ if (!existsSync(join(root, WORKSPACE_FILES.USER))) hints.push(`${WORKSPACE_FILES.USER} is optional; add a user profile for better context.`);
53
+ if (!existsSync(join(root, WORKSPACE_FILES.TOOLS))) hints.push(`${WORKSPACE_FILES.TOOLS} is optional; add tool notes if you use many tools.`);
54
+ if (!existsSync(join(root, ".git"))) hints.push("No .git in workspace; version control is recommended for backup and history.");
55
+ if (hints.length > 0) return {
56
+ id: "workspace-status",
57
+ label: "Workspace",
58
+ status: "pass",
59
+ message: "Essential workspace files are present.",
60
+ hints
61
+ };
62
+ return {
63
+ id: "workspace-status",
64
+ label: "Workspace",
65
+ status: "pass",
66
+ message: "Workspace directory and essential files look good.",
67
+ hints: [root]
68
+ };
69
+ }
70
+ //#endregion
71
+ export { checkWorkspaceStatus };
72
+
73
+ //# sourceMappingURL=workspace-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-status.js","names":[],"sources":["../../../../../../src/cli/commands/doctor/checks/workspace-status.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { resolveDefaultAgentId, resolveAgentWorkspaceDir } from '../../../../agent/agent-scope.js';\nimport { loadConfig } from '../../../../config/loader.js';\nimport { WORKSPACE_FILES } from '../../../../config/paths.js';\nimport type { CheckResult, DoctorContext } from '../types.js';\n\nexport async function checkWorkspaceStatus(ctx: DoctorContext): Promise<CheckResult> {\n if (!existsSync(ctx.configPath)) {\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'skip',\n message: 'No config file; skipped.',\n hints: [],\n };\n }\n\n let config;\n try {\n config = loadConfig(ctx.configPath);\n } catch {\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'skip',\n message: 'Config could not be loaded; skipped.',\n hints: [],\n };\n }\n\n const agentId = resolveDefaultAgentId(config);\n const root = resolveAgentWorkspaceDir(config, agentId);\n const hints: string[] = [];\n\n if (!existsSync(root)) {\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'warn',\n message: 'Agent workspace directory is missing.',\n hints: [root, 'Run: xopc onboard'],\n };\n }\n\n const soul = join(root, WORKSPACE_FILES.SOUL);\n const identity = join(root, WORKSPACE_FILES.IDENTITY);\n const missing: string[] = [];\n if (!existsSync(soul)) missing.push(WORKSPACE_FILES.SOUL);\n if (!existsSync(identity)) missing.push(WORKSPACE_FILES.IDENTITY);\n\n if (missing.length > 0) {\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'warn',\n message: `Essential workspace files missing: ${missing.join(', ')}.`,\n hints: [root, 'Run: xopc onboard'],\n };\n }\n\n if (!existsSync(join(root, WORKSPACE_FILES.USER))) {\n hints.push(`${WORKSPACE_FILES.USER} is optional; add a user profile for better context.`);\n }\n if (!existsSync(join(root, WORKSPACE_FILES.TOOLS))) {\n hints.push(`${WORKSPACE_FILES.TOOLS} is optional; add tool notes if you use many tools.`);\n }\n\n if (!existsSync(join(root, '.git'))) {\n hints.push('No .git in workspace; version control is recommended for backup and history.');\n }\n\n if (hints.length > 0) {\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'pass',\n message: 'Essential workspace files are present.',\n hints,\n };\n }\n\n return {\n id: 'workspace-status',\n label: 'Workspace',\n status: 'pass',\n message: 'Workspace directory and essential files look good.',\n hints: [root],\n };\n}\n"],"mappings":";;;;;;kBAGmG;aACzC;YACI;AAG9D,eAAsB,qBAAqB,KAA0C;AACnF,KAAI,CAAC,WAAW,IAAI,WAAW,CAC7B,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS;EACT,OAAO,EAAE;EACV;CAGH,IAAI;AACJ,KAAI;AACF,WAAS,WAAW,IAAI,WAAW;SAC7B;AACN,SAAO;GACL,IAAI;GACJ,OAAO;GACP,QAAQ;GACR,SAAS;GACT,OAAO,EAAE;GACV;;CAGH,MAAM,UAAU,sBAAsB,OAAO;CAC7C,MAAM,OAAO,yBAAyB,QAAQ,QAAQ;CACtD,MAAM,QAAkB,EAAE;AAE1B,KAAI,CAAC,WAAW,KAAK,CACnB,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS;EACT,OAAO,CAAC,MAAM,oBAAoB;EACnC;CAGH,MAAM,OAAO,KAAK,MAAM,gBAAgB,KAAK;CAC7C,MAAM,WAAW,KAAK,MAAM,gBAAgB,SAAS;CACrD,MAAM,UAAoB,EAAE;AAC5B,KAAI,CAAC,WAAW,KAAK,CAAE,SAAQ,KAAK,gBAAgB,KAAK;AACzD,KAAI,CAAC,WAAW,SAAS,CAAE,SAAQ,KAAK,gBAAgB,SAAS;AAEjE,KAAI,QAAQ,SAAS,EACnB,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS,sCAAsC,QAAQ,KAAK,KAAK,CAAC;EAClE,OAAO,CAAC,MAAM,oBAAoB;EACnC;AAGH,KAAI,CAAC,WAAW,KAAK,MAAM,gBAAgB,KAAK,CAAC,CAC/C,OAAM,KAAK,GAAG,gBAAgB,KAAK,sDAAsD;AAE3F,KAAI,CAAC,WAAW,KAAK,MAAM,gBAAgB,MAAM,CAAC,CAChD,OAAM,KAAK,GAAG,gBAAgB,MAAM,qDAAqD;AAG3F,KAAI,CAAC,WAAW,KAAK,MAAM,OAAO,CAAC,CACjC,OAAM,KAAK,+EAA+E;AAG5F,KAAI,MAAM,SAAS,EACjB,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS;EACT;EACD;AAGH,QAAO;EACL,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,SAAS;EACT,OAAO,CAAC,KAAK;EACd"}
@@ -0,0 +1,9 @@
1
+ import type { CheckResult, DoctorContext } from './types.js';
2
+ /**
3
+ * Headless data collection — used by both CLI and gateway API.
4
+ */
5
+ export declare function collectDoctorResults(ctx: DoctorContext): Promise<CheckResult[]>;
6
+ /**
7
+ * CLI entry point — collect and print.
8
+ */
9
+ export declare function runDoctor(ctx: DoctorContext): Promise<CheckResult[]>;
@@ -0,0 +1,51 @@
1
+ import { printJsonResults, printResults } from "./format.js";
2
+ import { checkNodeVersion } from "./checks/node-version.js";
3
+ import { checkConfigHealth } from "./checks/config-health.js";
4
+ import { checkStateIntegrity } from "./checks/state-integrity.js";
5
+ import { checkProviderAuth } from "./checks/provider-auth.js";
6
+ import { checkChannelConfig } from "./checks/channel-config.js";
7
+ import { checkGatewayHealth } from "./checks/gateway-health.js";
8
+ import { checkSessionIntegrity } from "./checks/session-integrity.js";
9
+ import { checkGatewayService } from "./checks/gateway-service.js";
10
+ import { checkSecurityAudit } from "./checks/security-audit.js";
11
+ import { checkWorkspaceStatus } from "./checks/workspace-status.js";
12
+ import { checkCronHealth } from "./checks/cron-health.js";
13
+ import { checkVersionUpdate } from "./checks/version-check.js";
14
+ import { checkChannelPlugins } from "./checks/channel-plugins.js";
15
+ //#region src/cli/commands/doctor/flow.ts
16
+ const DOCTOR_CHECKS = [
17
+ checkVersionUpdate,
18
+ checkNodeVersion,
19
+ checkConfigHealth,
20
+ checkStateIntegrity,
21
+ checkProviderAuth,
22
+ checkChannelConfig,
23
+ checkSecurityAudit,
24
+ checkWorkspaceStatus,
25
+ checkGatewayService,
26
+ checkGatewayHealth,
27
+ checkCronHealth,
28
+ checkSessionIntegrity
29
+ ];
30
+ /**
31
+ * Headless data collection — used by both CLI and gateway API.
32
+ */
33
+ async function collectDoctorResults(ctx) {
34
+ const results = [];
35
+ for (const check of DOCTOR_CHECKS) results.push(await check(ctx));
36
+ results.push(...await checkChannelPlugins(ctx));
37
+ return results;
38
+ }
39
+ /**
40
+ * CLI entry point — collect and print.
41
+ */
42
+ async function runDoctor(ctx) {
43
+ const results = await collectDoctorResults(ctx);
44
+ if (ctx.options.json) printJsonResults(results);
45
+ else printResults(results);
46
+ return results;
47
+ }
48
+ //#endregion
49
+ export { collectDoctorResults, runDoctor };
50
+
51
+ //# sourceMappingURL=flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.js","names":[],"sources":["../../../../../src/cli/commands/doctor/flow.ts"],"sourcesContent":["import { printJsonResults, printResults } from './format.js';\nimport type { CheckResult, DoctorCheck, DoctorContext } from './types.js';\nimport { checkNodeVersion } from './checks/node-version.js';\nimport { checkConfigHealth } from './checks/config-health.js';\nimport { checkStateIntegrity } from './checks/state-integrity.js';\nimport { checkProviderAuth } from './checks/provider-auth.js';\nimport { checkChannelConfig } from './checks/channel-config.js';\nimport { checkGatewayHealth } from './checks/gateway-health.js';\nimport { checkSessionIntegrity } from './checks/session-integrity.js';\nimport { checkGatewayService } from './checks/gateway-service.js';\nimport { checkSecurityAudit } from './checks/security-audit.js';\nimport { checkWorkspaceStatus } from './checks/workspace-status.js';\nimport { checkCronHealth } from './checks/cron-health.js';\nimport { checkVersionUpdate } from './checks/version-check.js';\nimport { checkChannelPlugins } from './checks/channel-plugins.js';\n\nconst DOCTOR_CHECKS: DoctorCheck[] = [\n checkVersionUpdate,\n checkNodeVersion,\n checkConfigHealth,\n checkStateIntegrity,\n checkProviderAuth,\n checkChannelConfig,\n checkSecurityAudit,\n checkWorkspaceStatus,\n checkGatewayService,\n checkGatewayHealth,\n checkCronHealth,\n checkSessionIntegrity,\n];\n\n/**\n * Headless data collection — used by both CLI and gateway API.\n */\nexport async function collectDoctorResults(ctx: DoctorContext): Promise<CheckResult[]> {\n const results: CheckResult[] = [];\n\n for (const check of DOCTOR_CHECKS) {\n results.push(await check(ctx));\n }\n\n results.push(...(await checkChannelPlugins(ctx)));\n\n return results;\n}\n\n/**\n * CLI entry point — collect and print.\n */\nexport async function runDoctor(ctx: DoctorContext): Promise<CheckResult[]> {\n const results = await collectDoctorResults(ctx);\n\n if (ctx.options.json) {\n printJsonResults(results);\n } else {\n printResults(results);\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,gBAA+B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAKD,eAAsB,qBAAqB,KAA4C;CACrF,MAAM,UAAyB,EAAE;AAEjC,MAAK,MAAM,SAAS,cAClB,SAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;AAGhC,SAAQ,KAAK,GAAI,MAAM,oBAAoB,IAAI,CAAE;AAEjD,QAAO;;;;;AAMT,eAAsB,UAAU,KAA4C;CAC1E,MAAM,UAAU,MAAM,qBAAqB,IAAI;AAE/C,KAAI,IAAI,QAAQ,KACd,kBAAiB,QAAQ;KAEzB,cAAa,QAAQ;AAGvB,QAAO"}
@@ -0,0 +1,6 @@
1
+ import type { CheckResult } from './types.js';
2
+ export declare function formatCheckLine(result: CheckResult): string;
3
+ export declare function formatHints(hints: string[]): string[];
4
+ export declare function printSummary(results: CheckResult[]): void;
5
+ export declare function printResults(results: CheckResult[]): void;
6
+ export declare function printJsonResults(results: CheckResult[]): void;
@@ -0,0 +1,61 @@
1
+ import { colors } from "../../utils/colors.js";
2
+ //#region src/cli/commands/doctor/format.ts
3
+ const STATUS_ICONS = {
4
+ pass: "✓",
5
+ warn: "⚠",
6
+ fail: "✗",
7
+ skip: "–"
8
+ };
9
+ function statusColor(status, text) {
10
+ switch (status) {
11
+ case "pass": return colors.green(text);
12
+ case "warn": return colors.yellow(text);
13
+ case "fail": return colors.red(text);
14
+ default: return colors.gray(text);
15
+ }
16
+ }
17
+ function formatCheckLine(result) {
18
+ const icon = STATUS_ICONS[result.status];
19
+ const fixed = result.fixed ? " " + colors.cyan("[fixed]") : "";
20
+ return ` ${statusColor(result.status, icon)} ${result.label}: ${result.message}${fixed}`;
21
+ }
22
+ function formatHints(hints) {
23
+ return hints.map((h) => ` ${colors.gray("→")} ${h}`);
24
+ }
25
+ function printSummary(results) {
26
+ const passed = results.filter((r) => r.status === "pass").length;
27
+ const warnings = results.filter((r) => r.status === "warn").length;
28
+ const failed = results.filter((r) => r.status === "fail").length;
29
+ const skipped = results.filter((r) => r.status === "skip").length;
30
+ console.log("");
31
+ console.log(colors.bold(`${passed} passed, ${warnings} warnings, ${failed} failed` + (skipped ? `, ${skipped} skipped` : "")));
32
+ }
33
+ function printResults(results) {
34
+ console.log("");
35
+ console.log(colors.bold("xopc doctor"));
36
+ console.log("");
37
+ for (const r of results) {
38
+ console.log(formatCheckLine(r));
39
+ for (const line of formatHints(r.hints)) console.log(line);
40
+ }
41
+ printSummary(results);
42
+ console.log("");
43
+ }
44
+ function printJsonResults(results) {
45
+ const payload = {
46
+ ok: results.every((r) => r.status !== "fail"),
47
+ checks: results.map((r) => ({
48
+ id: r.id,
49
+ label: r.label,
50
+ status: r.status,
51
+ message: r.message,
52
+ hints: r.hints,
53
+ fixed: r.fixed ?? false
54
+ }))
55
+ };
56
+ console.log(JSON.stringify(payload, null, 2));
57
+ }
58
+ //#endregion
59
+ export { formatCheckLine, formatHints, printJsonResults, printResults, printSummary };
60
+
61
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","names":[],"sources":["../../../../../src/cli/commands/doctor/format.ts"],"sourcesContent":["import { colors } from '../../utils/colors.js';\nimport type { CheckResult, CheckStatus } from './types.js';\n\nconst STATUS_ICONS: Record<CheckStatus, string> = {\n pass: '✓',\n warn: '⚠',\n fail: '✗',\n skip: '–',\n};\n\nfunction statusColor(status: CheckStatus, text: string): string {\n switch (status) {\n case 'pass':\n return colors.green(text);\n case 'warn':\n return colors.yellow(text);\n case 'fail':\n return colors.red(text);\n default:\n return colors.gray(text);\n }\n}\n\nexport function formatCheckLine(result: CheckResult): string {\n const icon = STATUS_ICONS[result.status];\n const fixed = result.fixed ? ' ' + colors.cyan('[fixed]') : '';\n return ` ${statusColor(result.status, icon)} ${result.label}: ${result.message}${fixed}`;\n}\n\nexport function formatHints(hints: string[]): string[] {\n return hints.map((h) => ` ${colors.gray('→')} ${h}`);\n}\n\nexport function printSummary(results: CheckResult[]): void {\n const passed = results.filter((r) => r.status === 'pass').length;\n const warnings = results.filter((r) => r.status === 'warn').length;\n const failed = results.filter((r) => r.status === 'fail').length;\n const skipped = results.filter((r) => r.status === 'skip').length;\n console.log('');\n console.log(\n colors.bold(\n `${passed} passed, ${warnings} warnings, ${failed} failed` +\n (skipped ? `, ${skipped} skipped` : ''),\n ),\n );\n}\n\nexport function printResults(results: CheckResult[]): void {\n console.log('');\n console.log(colors.bold('xopc doctor'));\n console.log('');\n for (const r of results) {\n console.log(formatCheckLine(r));\n for (const line of formatHints(r.hints)) {\n console.log(line);\n }\n }\n printSummary(results);\n console.log('');\n}\n\nexport function printJsonResults(results: CheckResult[]): void {\n const ok = results.every((r) => r.status !== 'fail');\n const payload = {\n ok,\n checks: results.map((r) => ({\n id: r.id,\n label: r.label,\n status: r.status,\n message: r.message,\n hints: r.hints,\n fixed: r.fixed ?? false,\n })),\n };\n console.log(JSON.stringify(payload, null, 2));\n}\n"],"mappings":";;AAGA,MAAM,eAA4C;CAChD,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACP;AAED,SAAS,YAAY,QAAqB,MAAsB;AAC9D,SAAQ,QAAR;EACE,KAAK,OACH,QAAO,OAAO,MAAM,KAAK;EAC3B,KAAK,OACH,QAAO,OAAO,OAAO,KAAK;EAC5B,KAAK,OACH,QAAO,OAAO,IAAI,KAAK;EACzB,QACE,QAAO,OAAO,KAAK,KAAK;;;AAI9B,SAAgB,gBAAgB,QAA6B;CAC3D,MAAM,OAAO,aAAa,OAAO;CACjC,MAAM,QAAQ,OAAO,QAAQ,MAAM,OAAO,KAAK,UAAU,GAAG;AAC5D,QAAO,KAAK,YAAY,OAAO,QAAQ,KAAK,CAAC,GAAG,OAAO,MAAM,IAAI,OAAO,UAAU;;AAGpF,SAAgB,YAAY,OAA2B;AACrD,QAAO,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI;;AAGzD,SAAgB,aAAa,SAA8B;CACzD,MAAM,SAAS,QAAQ,QAAQ,MAAM,EAAE,WAAW,OAAO,CAAC;CAC1D,MAAM,WAAW,QAAQ,QAAQ,MAAM,EAAE,WAAW,OAAO,CAAC;CAC5D,MAAM,SAAS,QAAQ,QAAQ,MAAM,EAAE,WAAW,OAAO,CAAC;CAC1D,MAAM,UAAU,QAAQ,QAAQ,MAAM,EAAE,WAAW,OAAO,CAAC;AAC3D,SAAQ,IAAI,GAAG;AACf,SAAQ,IACN,OAAO,KACL,GAAG,OAAO,WAAW,SAAS,aAAa,OAAO,YAC/C,UAAU,KAAK,QAAQ,YAAY,IACvC,CACF;;AAGH,SAAgB,aAAa,SAA8B;AACzD,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,OAAO,KAAK,cAAc,CAAC;AACvC,SAAQ,IAAI,GAAG;AACf,MAAK,MAAM,KAAK,SAAS;AACvB,UAAQ,IAAI,gBAAgB,EAAE,CAAC;AAC/B,OAAK,MAAM,QAAQ,YAAY,EAAE,MAAM,CACrC,SAAQ,IAAI,KAAK;;AAGrB,cAAa,QAAQ;AACrB,SAAQ,IAAI,GAAG;;AAGjB,SAAgB,iBAAiB,SAA8B;CAE7D,MAAM,UAAU;EACd,IAFS,QAAQ,OAAO,MAAM,EAAE,WAAW,OAAO;EAGlD,QAAQ,QAAQ,KAAK,OAAO;GAC1B,IAAI,EAAE;GACN,OAAO,EAAE;GACT,QAAQ,EAAE;GACV,SAAS,EAAE;GACX,OAAO,EAAE;GACT,OAAO,EAAE,SAAS;GACnB,EAAE;EACJ;AACD,SAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { init_paths_state, resolveStateDir } from "../../../config/paths-state.js";
2
+ import { formatExamples, register } from "../../registry.js";
3
+ import { runDoctor } from "./flow.js";
4
+ import { Command } from "commander";
5
+ //#region src/cli/commands/doctor/index.ts
6
+ init_paths_state();
7
+ function createDoctorCommand(ctx) {
8
+ return new Command("doctor").description("Check xopc installation health and diagnose common issues").option("--fix", "Automatically apply safe fixes", false).option("--json", "Output results as JSON", false).option("--deep", "Run deeper / slower checks (e.g. session scan)", false).addHelpText("after", formatExamples([
9
+ "xopc doctor",
10
+ "xopc doctor --json",
11
+ "xopc doctor --deep",
12
+ "xopc doctor --fix"
13
+ ])).action(async (opts) => {
14
+ const configPath = ctx.configPath;
15
+ if ((await runDoctor({
16
+ configPath,
17
+ stateDir: resolveStateDir(),
18
+ options: {
19
+ fix: Boolean(opts.fix),
20
+ json: Boolean(opts.json),
21
+ deep: Boolean(opts.deep)
22
+ }
23
+ })).some((r) => r.status === "fail")) process.exitCode = 1;
24
+ });
25
+ }
26
+ register({
27
+ id: "doctor",
28
+ name: "doctor",
29
+ description: "Check xopc installation health and diagnose common issues",
30
+ factory: createDoctorCommand,
31
+ metadata: {
32
+ category: "maintenance",
33
+ examples: [
34
+ "xopc doctor",
35
+ "xopc doctor --json",
36
+ "xopc doctor --deep",
37
+ "xopc doctor --fix"
38
+ ]
39
+ }
40
+ });
41
+ //#endregion
42
+ export {};
43
+
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/cli/commands/doctor/index.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { register, formatExamples, type CLIContext } from '../../registry.js';\nimport { resolveStateDir } from '../../../config/paths-state.js';\nimport { runDoctor } from './flow.js';\nimport type { DoctorOptions } from './types.js';\n\nfunction createDoctorCommand(ctx: CLIContext): Command {\n return new Command('doctor')\n .description('Check xopc installation health and diagnose common issues')\n .option('--fix', 'Automatically apply safe fixes', false)\n .option('--json', 'Output results as JSON', false)\n .option('--deep', 'Run deeper / slower checks (e.g. session scan)', false)\n .addHelpText(\n 'after',\n formatExamples(['xopc doctor', 'xopc doctor --json', 'xopc doctor --deep', 'xopc doctor --fix']),\n )\n .action(async (opts: DoctorOptions) => {\n const configPath = ctx.configPath;\n const stateDir = resolveStateDir();\n const results = await runDoctor({\n configPath,\n stateDir,\n options: {\n fix: Boolean(opts.fix),\n json: Boolean(opts.json),\n deep: Boolean(opts.deep),\n },\n });\n const failed = results.some((r) => r.status === 'fail');\n if (failed) {\n process.exitCode = 1;\n }\n });\n}\n\nregister({\n id: 'doctor',\n name: 'doctor',\n description: 'Check xopc installation health and diagnose common issues',\n factory: createDoctorCommand,\n metadata: {\n category: 'maintenance',\n examples: ['xopc doctor', 'xopc doctor --json', 'xopc doctor --deep', 'xopc doctor --fix'],\n },\n});\n"],"mappings":";;;;;kBAEiE;AAIjE,SAAS,oBAAoB,KAA0B;AACrD,QAAO,IAAI,QAAQ,SAAS,CACzB,YAAY,4DAA4D,CACxE,OAAO,SAAS,kCAAkC,MAAM,CACxD,OAAO,UAAU,0BAA0B,MAAM,CACjD,OAAO,UAAU,kDAAkD,MAAM,CACzE,YACC,SACA,eAAe;EAAC;EAAe;EAAsB;EAAsB;EAAoB,CAAC,CACjG,CACA,OAAO,OAAO,SAAwB;EACrC,MAAM,aAAa,IAAI;AAYvB,OAVgB,MAAM,UAAU;GAC9B;GACA,UAHe,iBAAiB;GAIhC,SAAS;IACP,KAAK,QAAQ,KAAK,IAAI;IACtB,MAAM,QAAQ,KAAK,KAAK;IACxB,MAAM,QAAQ,KAAK,KAAK;IACzB;GACF,CAAC,EACqB,MAAM,MAAM,EAAE,WAAW,OAAO,CAErD,SAAQ,WAAW;GAErB;;AAGN,SAAS;CACP,IAAI;CACJ,MAAM;CACN,aAAa;CACb,SAAS;CACT,UAAU;EACR,UAAU;EACV,UAAU;GAAC;GAAe;GAAsB;GAAsB;GAAoB;EAC3F;CACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ export type CheckStatus = 'pass' | 'warn' | 'fail' | 'skip';
2
+ export interface CheckResult {
3
+ id: string;
4
+ label: string;
5
+ status: CheckStatus;
6
+ message: string;
7
+ hints: string[];
8
+ fixed?: boolean;
9
+ }
10
+ export interface DoctorOptions {
11
+ fix: boolean;
12
+ json: boolean;
13
+ deep: boolean;
14
+ }
15
+ export interface DoctorContext {
16
+ configPath: string;
17
+ stateDir: string;
18
+ options: DoctorOptions;
19
+ }
20
+ export type DoctorCheck = (ctx: DoctorContext) => Promise<CheckResult>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
- import { createLogger } from "../../utils/logger/index.js";
2
- import { init_logger } from "../../utils/logger.js";
3
1
  import { resolveStateDir } from "../../config/paths-state.js";
4
2
  import { resolveAgentBootstrapDir, resolveAgentWorkspaceDir } from "../../agent/agent-scope.js";
3
+ import { createLogger } from "../../utils/logger/index.js";
4
+ import { init_logger } from "../../utils/logger.js";
5
5
  import { WORKSPACE_FILES, init_paths, resolveAgentDir, resolveAgentHomeDir, resolveAgentMetadataPath, resolveBinDir, resolveConfigPath, resolveCredentialsDir, resolveCronDir, resolveExtensionsDir, resolveInboxDir, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogsDir, resolveSessionsDir, resolveSkillsDir, resolveToolsDir, resolveWorkspaceStateDir, resolveWorkspaceStatePath } from "../../config/paths.js";
6
6
  import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
7
7
  import { join } from "path";
@@ -7,6 +7,7 @@ import './commands/gateway.js';
7
7
  import './commands/session.js';
8
8
  import './commands/cron.js';
9
9
  import './commands/config.js';
10
+ import './commands/doctor/index.js';
10
11
  import './commands/image.js';
11
12
  import './commands/channels.js';
12
13
  import './commands/models.js';
@@ -14,7 +15,6 @@ import './commands/extension.js';
14
15
  import './commands/auth.js';
15
16
  import './commands/skills.js';
16
17
  import './commands/logs.js';
17
- import './commands/acp.js';
18
18
  export declare let parsedOpts: {
19
19
  config?: string;
20
20
  workspace?: string;
@@ -11,6 +11,7 @@ import "./commands/gateway.js";
11
11
  import "./commands/session.js";
12
12
  import "./commands/cron.js";
13
13
  import "./commands/config.js";
14
+ import "./commands/doctor/index.js";
14
15
  import "./commands/image.js";
15
16
  import "./commands/channels.js";
16
17
  import "./commands/models.js";
@@ -18,7 +19,6 @@ import "./commands/extension.js";
18
19
  import "./commands/auth.js";
19
20
  import "./commands/skills.js";
20
21
  import "./commands/logs.js";
21
- import "./commands/acp.js";
22
22
  import { registerAgentsCli } from "./commands/agents.js";
23
23
  import { Command } from "commander";
24
24
  //#region src/cli/index.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["pkg.version"],"sources":["../../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { registry, createDefaultContext, type CLIContext } from './registry.js';\nimport pkg from '../../package.json' with { type: 'json' };\nimport { flushAndClose } from '../utils/logger.js'; // Import flushAndClose for graceful shutdown\nimport { registerExtensionCliCommands } from './bootstrap-extensions.js';\n\n// Import order determines display order in help\nimport './commands/setup.js';\nimport './commands/onboard.js';\nimport './commands/agent.js';\nimport './commands/gateway.js';\nimport './commands/session.js';\nimport './commands/cron.js';\nimport './commands/config.js';\nimport './commands/image.js';\nimport './commands/channels.js';\nimport './commands/models.js';\nimport './commands/extension.js';\nimport './commands/auth.js';\nimport './commands/skills.js';\nimport './commands/logs.js';\nimport './commands/acp.js';\nimport { registerAgentsCli } from './commands/agents.js';\n\n// Global parsed options - updated before each command\nexport let parsedOpts: { config?: string; workspace?: string; verbose?: boolean } = {};\n\nexport function getContextWithOpts(argv: string[] = process.argv): CLIContext {\n return createDefaultContext(argv, parsedOpts);\n}\n\n// Long-running commands that should not auto-exit\nconst LONG_RUNNING_COMMANDS = new Set(['gateway', 'agent']);\n\nconst program = new Command()\n .name('xopc')\n .description('Ultra-Lightweight Personal AI Assistant')\n .version(pkg.version)\n .option('--verbose', 'Enable verbose logging', false)\n .option('--config <path>', 'Config file path')\n .option('--workspace <path>', 'Workspace directory');\n\n// Hook to capture parsed options before each command runs\nprogram.hook('preAction', (thisCommand) => {\n parsedOpts = thisCommand.opts();\n});\n\n// Hook to ensure process exits after command completion\nprogram.hook('postAction', async (thisCommand) => {\n // Get the actual subcommand being executed (not the root program name)\n const args = thisCommand.args;\n const subCommandName = args.length > 0 ? args[0] : thisCommand.name();\n\n // Skip long-running commands (gateway foreground, agent interactive mode)\n if (LONG_RUNNING_COMMANDS.has(subCommandName)) {\n // For agent command, only skip exit if interactive mode (-i) is used\n if (subCommandName === 'agent') {\n const hasInteractiveFlag = process.argv.includes('-i') || process.argv.includes('--interactive');\n if (!hasInteractiveFlag) {\n // Agent in non-interactive mode should exit normally\n await flushAndClose();\n process.exit(0);\n }\n }\n // Gateway or agent -i: don't exit\n return;\n }\n // For all other commands, flush logs and exit\n await flushAndClose();\n process.exit(0);\n});\n\n// Create initial context (will use env vars and defaults)\nconst ctx = getContextWithOpts(process.argv);\nregistry.install(program, ctx);\nregisterAgentsCli(program);\n\n// Only parse if this is the main module being executed directly\n// Skip parsing when imported as module (e.g., in tests)\nconst isTestEnv = !!process.env.VITEST || !!process.env.TEST || !!process.env.NODE_ENV?.includes('test');\nconst isMainModule = !isTestEnv && import.meta.url.startsWith('file:');\n\nif (isMainModule) {\n // Filter out standalone '--' separator (passed by pnpm run -- <cmd>)\n // npm removes it automatically, pnpm passes it through\n const argv = process.argv.filter((arg, index) => {\n if (arg !== '--') return true;\n // Only filter '--' if it's the separator between script and command\n // (i.e., comes after the script name and before actual args)\n return index < 2; // Keep '--' if it's a script argument (index 0 or 1)\n });\n void registerExtensionCliCommands(program).then(() => {\n program.parse(argv);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;aAImD;AAsBnD,IAAW,aAAyE,EAAE;AAEtF,SAAgB,mBAAmB,OAAiB,QAAQ,MAAkB;AAC5E,QAAO,qBAAqB,MAAM,WAAW;;AAI/C,MAAM,wBAAwB,IAAI,IAAI,CAAC,WAAW,QAAQ,CAAC;AAE3D,MAAM,UAAU,IAAI,SAAS,CAC1B,KAAK,OAAO,CACZ,YAAY,0CAA0C,CACtD,QAAQA,QAAY,CACpB,OAAO,aAAa,0BAA0B,MAAM,CACpD,OAAO,mBAAmB,mBAAmB,CAC7C,OAAO,sBAAsB,sBAAsB;AAGtD,QAAQ,KAAK,cAAc,gBAAgB;AACzC,cAAa,YAAY,MAAM;EAC/B;AAGF,QAAQ,KAAK,cAAc,OAAO,gBAAgB;CAEhD,MAAM,OAAO,YAAY;CACzB,MAAM,iBAAiB,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,MAAM;AAGrE,KAAI,sBAAsB,IAAI,eAAe,EAAE;AAE7C,MAAI,mBAAmB;OAEjB,EADuB,QAAQ,KAAK,SAAS,KAAK,IAAI,QAAQ,KAAK,SAAS,gBAAgB,GACvE;AAEvB,UAAM,eAAe;AACrB,YAAQ,KAAK,EAAE;;;AAInB;;AAGF,OAAM,eAAe;AACrB,SAAQ,KAAK,EAAE;EACf;AAGF,MAAM,MAAM,mBAAmB,QAAQ,KAAK;AAC5C,SAAS,QAAQ,SAAS,IAAI;AAC9B,kBAAkB,QAAQ;AAO1B,IAFqB,EADH,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA,cAAuB,SAAS,OAAO,KACrE,OAAO,KAAK,IAAI,WAAW,QAAQ,EAEpD;CAGhB,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,UAAU;AAC/C,MAAI,QAAQ,KAAM,QAAO;AAGzB,SAAO,QAAQ;GACf;AACG,8BAA6B,QAAQ,CAAC,WAAW;AACpD,UAAQ,MAAM,KAAK;GACnB"}
1
+ {"version":3,"file":"index.js","names":["pkg.version"],"sources":["../../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { registry, createDefaultContext, type CLIContext } from './registry.js';\nimport pkg from '../../package.json' with { type: 'json' };\nimport { flushAndClose } from '../utils/logger.js'; // Import flushAndClose for graceful shutdown\nimport { registerExtensionCliCommands } from './bootstrap-extensions.js';\n\n// Import order determines display order in help\nimport './commands/setup.js';\nimport './commands/onboard.js';\nimport './commands/agent.js';\nimport './commands/gateway.js';\nimport './commands/session.js';\nimport './commands/cron.js';\nimport './commands/config.js';\nimport './commands/doctor/index.js';\nimport './commands/image.js';\nimport './commands/channels.js';\nimport './commands/models.js';\nimport './commands/extension.js';\nimport './commands/auth.js';\nimport './commands/skills.js';\nimport './commands/logs.js';\nimport { registerAgentsCli } from './commands/agents.js';\n\n// Global parsed options - updated before each command\nexport let parsedOpts: { config?: string; workspace?: string; verbose?: boolean } = {};\n\nexport function getContextWithOpts(argv: string[] = process.argv): CLIContext {\n return createDefaultContext(argv, parsedOpts);\n}\n\n// Long-running commands that should not auto-exit\nconst LONG_RUNNING_COMMANDS = new Set(['gateway', 'agent']);\n\nconst program = new Command()\n .name('xopc')\n .description('Ultra-Lightweight Personal AI Assistant')\n .version(pkg.version)\n .option('--verbose', 'Enable verbose logging', false)\n .option('--config <path>', 'Config file path')\n .option('--workspace <path>', 'Workspace directory');\n\n// Hook to capture parsed options before each command runs\nprogram.hook('preAction', (thisCommand) => {\n parsedOpts = thisCommand.opts();\n});\n\n// Hook to ensure process exits after command completion\nprogram.hook('postAction', async (thisCommand) => {\n // Get the actual subcommand being executed (not the root program name)\n const args = thisCommand.args;\n const subCommandName = args.length > 0 ? args[0] : thisCommand.name();\n\n // Skip long-running commands (gateway foreground, agent interactive mode)\n if (LONG_RUNNING_COMMANDS.has(subCommandName)) {\n // For agent command, only skip exit if interactive mode (-i) is used\n if (subCommandName === 'agent') {\n const hasInteractiveFlag = process.argv.includes('-i') || process.argv.includes('--interactive');\n if (!hasInteractiveFlag) {\n // Agent in non-interactive mode should exit normally\n await flushAndClose();\n process.exit(0);\n }\n }\n // Gateway or agent -i: don't exit\n return;\n }\n // For all other commands, flush logs and exit\n await flushAndClose();\n process.exit(0);\n});\n\n// Create initial context (will use env vars and defaults)\nconst ctx = getContextWithOpts(process.argv);\nregistry.install(program, ctx);\nregisterAgentsCli(program);\n\n// Only parse if this is the main module being executed directly\n// Skip parsing when imported as module (e.g., in tests)\nconst isTestEnv = !!process.env.VITEST || !!process.env.TEST || !!process.env.NODE_ENV?.includes('test');\nconst isMainModule = !isTestEnv && import.meta.url.startsWith('file:');\n\nif (isMainModule) {\n // Filter out standalone '--' separator (passed by pnpm run -- <cmd>)\n // npm removes it automatically, pnpm passes it through\n const argv = process.argv.filter((arg, index) => {\n if (arg !== '--') return true;\n // Only filter '--' if it's the separator between script and command\n // (i.e., comes after the script name and before actual args)\n return index < 2; // Keep '--' if it's a script argument (index 0 or 1)\n });\n void registerExtensionCliCommands(program).then(() => {\n program.parse(argv);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;aAImD;AAsBnD,IAAW,aAAyE,EAAE;AAEtF,SAAgB,mBAAmB,OAAiB,QAAQ,MAAkB;AAC5E,QAAO,qBAAqB,MAAM,WAAW;;AAI/C,MAAM,wBAAwB,IAAI,IAAI,CAAC,WAAW,QAAQ,CAAC;AAE3D,MAAM,UAAU,IAAI,SAAS,CAC1B,KAAK,OAAO,CACZ,YAAY,0CAA0C,CACtD,QAAQA,QAAY,CACpB,OAAO,aAAa,0BAA0B,MAAM,CACpD,OAAO,mBAAmB,mBAAmB,CAC7C,OAAO,sBAAsB,sBAAsB;AAGtD,QAAQ,KAAK,cAAc,gBAAgB;AACzC,cAAa,YAAY,MAAM;EAC/B;AAGF,QAAQ,KAAK,cAAc,OAAO,gBAAgB;CAEhD,MAAM,OAAO,YAAY;CACzB,MAAM,iBAAiB,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,MAAM;AAGrE,KAAI,sBAAsB,IAAI,eAAe,EAAE;AAE7C,MAAI,mBAAmB;OAEjB,EADuB,QAAQ,KAAK,SAAS,KAAK,IAAI,QAAQ,KAAK,SAAS,gBAAgB,GACvE;AAEvB,UAAM,eAAe;AACrB,YAAQ,KAAK,EAAE;;;AAInB;;AAGF,OAAM,eAAe;AACrB,SAAQ,KAAK,EAAE;EACf;AAGF,MAAM,MAAM,mBAAmB,QAAQ,KAAK;AAC5C,SAAS,QAAQ,SAAS,IAAI;AAC9B,kBAAkB,QAAQ;AAO1B,IAFqB,EADH,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA,cAAuB,SAAS,OAAO,KACrE,OAAO,KAAK,IAAI,WAAW,QAAQ,EAEpD;CAGhB,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,UAAU;AAC/C,MAAI,QAAQ,KAAM,QAAO;AAGzB,SAAO,QAAQ;GACf;AACG,8BAA6B,QAAQ,CAAC,WAAW;AACpD,UAAQ,MAAM,KAAK;GACnB"}
@@ -1,8 +1,8 @@
1
1
  import { ConfigSchema, init_schema } from "../../config/schema.js";
2
2
  import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
3
3
  import { dirname, join } from "node:path";
4
- import { randomBytes } from "node:crypto";
5
4
  import { existsSync, mkdirSync, readFileSync } from "node:fs";
5
+ import { randomBytes } from "node:crypto";
6
6
  //#region src/cli/utils/init-workspace.ts
7
7
  init_schema();
8
8
  init_loader();
@@ -4,10 +4,10 @@ import { resolveDefaultAgentWorkspaceDir } from "./workspace-defaults.js";
4
4
  import { resolveAgentBootstrapDir, resolveAgentDir as resolveAgentDir$1, resolveAgentHomeDir as resolveAgentHomeDir$1, resolveAgentWorkspaceDir, resolveSessionsDir as resolveSessionsDir$1 } from "../agent/agent-scope.js";
5
5
  import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema } from "../../extensions/telegram/src/config-schema.js";
6
6
  import { WeixinAccountConfigSchema, WeixinConfigSchema } from "../../extensions/weixin/src/config-schema.js";
7
- import { AcpConfigSchema, AcpDispatchConfigSchema, AcpRateLimitConfigSchema, AcpRuntimeConfigSchema, AcpStreamConfigSchema, AgentConfigSchema, AgentDefaultsSchema, AgentModelRefSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, ConfigSchema, CronConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayConfigSchema, HeartbeatConfigSchema, ModelsDevConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, ToolsConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, getAgentDefaultModelRef, getWorkspacePath, init_schema, parseModelRef } from "./schema.js";
7
+ import { AgentConfigSchema, AgentDefaultsSchema, AgentModelRefSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, ConfigSchema, CronConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayConfigSchema, HeartbeatConfigSchema, ModelsDevConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, ToolsConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, getAgentDefaultModelRef, getWorkspacePath, init_schema, parseModelRef } from "./schema.js";
8
+ import { extractProfileAgentId, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
8
9
  import { FILENAMES, WORKSPACE_FILES, existsSync, init_paths, resolveAgentAuthProfilesPath, resolveAgentCredentialsDir, resolveAgentDir, resolveAgentHomeDir, resolveAgentMetadataPath, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveCronDir, resolveCronJobsPath, resolveCronLogPath, resolveCronLogsDir, resolveCronRunsDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveMemoryDir, resolveMemoryPath, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSessionTranscriptPath, resolveSessionTranscriptPathInDir, resolveSessionsArchiveDir, resolveSessionsDir, resolveSessionsIndexPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath } from "./paths.js";
9
10
  import { init_loader, loadConfig, registerChannelConfigValidator, saveConfig } from "./loader.js";
10
- import { extractProfileAgentId, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
11
11
  import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
12
12
  import { CustomModelSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
13
13
  import { formatThinkingLevels, listThinkingLevels, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, thinkLevelToNumber } from "../agent/transcript/thinking-types.js";
@@ -24,6 +24,6 @@ init_workspace_path();
24
24
  init_models_json();
25
25
  init_resolve_config_value();
26
26
  //#endregion
27
- export { AcpConfigSchema, AcpDispatchConfigSchema, AcpRateLimitConfigSchema, AcpRuntimeConfigSchema, AcpStreamConfigSchema, AgentConfigSchema, AgentDefaultsSchema, AgentModelRefSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, ConfigHotReloader, ConfigSchema, CronConfigSchema, CustomModelSchema, ENV_VARS, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayConfigSchema, HeartbeatConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, VercelGatewayRoutingSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WeixinAccountConfigSchema, WeixinConfigSchema, buildReloadPlan, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, listAgentBootstrapDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, registerChannelConfigValidator, resolveAgentAuthProfilesPath, resolveAgentBootstrapDir, resolveAgentCredentialsDir, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentMetadataPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveCronDir, resolveCronJobsPath, resolveCronLogPath, resolveCronLogsDir, resolveCronRunsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveMemoryDir, resolveMemoryPath, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSessionTranscriptPath, resolveSessionTranscriptPathInDir, resolveSessionsArchiveDir, resolveSessionsDir, resolveSessionsDir$1 as resolveSessionsDirFromConfig, resolveSessionsIndexPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, saveConfig, saveModelsJson, testApiKeyResolution, thinkLevelToNumber, validateModelsConfig };
27
+ export { AgentConfigSchema, AgentDefaultsSchema, AgentModelRefSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, ConfigHotReloader, ConfigSchema, CronConfigSchema, CustomModelSchema, ENV_VARS, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayConfigSchema, HeartbeatConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, VercelGatewayRoutingSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WeixinAccountConfigSchema, WeixinConfigSchema, buildReloadPlan, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, listAgentBootstrapDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, registerChannelConfigValidator, resolveAgentAuthProfilesPath, resolveAgentBootstrapDir, resolveAgentCredentialsDir, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentMetadataPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveCronDir, resolveCronJobsPath, resolveCronLogPath, resolveCronLogsDir, resolveCronRunsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveMemoryDir, resolveMemoryPath, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSessionTranscriptPath, resolveSessionTranscriptPathInDir, resolveSessionsArchiveDir, resolveSessionsDir, resolveSessionsDir$1 as resolveSessionsDirFromConfig, resolveSessionsIndexPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, saveConfig, saveModelsJson, testApiKeyResolution, thinkLevelToNumber, validateModelsConfig };
28
28
 
29
29
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { ConfigSchema, init_schema } from "./schema.js";
2
3
  import { createLogger } from "../utils/logger/index.js";
3
4
  import { init_logger } from "../utils/logger.js";
4
- import { ConfigSchema, init_schema } from "./schema.js";
5
5
  import { init_paths, resolveConfigPath } from "./paths.js";
6
6
  import { dirname } from "path";
7
7
  import { existsSync, mkdirSync, promises, readFileSync } from "fs";
@@ -78,11 +78,11 @@ export declare const CustomModelSchema: z.ZodObject<{
78
78
  api: z.ZodOptional<z.ZodEnum<{
79
79
  "openai-completions": "openai-completions";
80
80
  "openai-responses": "openai-responses";
81
- "azure-openai-responses": "azure-openai-responses";
82
- "openai-codex-responses": "openai-codex-responses";
83
81
  "anthropic-messages": "anthropic-messages";
84
- "bedrock-converse-stream": "bedrock-converse-stream";
85
82
  "google-generative-ai": "google-generative-ai";
83
+ "azure-openai-responses": "azure-openai-responses";
84
+ "bedrock-converse-stream": "bedrock-converse-stream";
85
+ "openai-codex-responses": "openai-codex-responses";
86
86
  "google-gemini-cli": "google-gemini-cli";
87
87
  "google-vertex": "google-vertex";
88
88
  }>>;
@@ -180,11 +180,11 @@ export declare const ProviderConfigSchema: z.ZodObject<{
180
180
  api: z.ZodOptional<z.ZodEnum<{
181
181
  "openai-completions": "openai-completions";
182
182
  "openai-responses": "openai-responses";
183
- "azure-openai-responses": "azure-openai-responses";
184
- "openai-codex-responses": "openai-codex-responses";
185
183
  "anthropic-messages": "anthropic-messages";
186
- "bedrock-converse-stream": "bedrock-converse-stream";
187
184
  "google-generative-ai": "google-generative-ai";
185
+ "azure-openai-responses": "azure-openai-responses";
186
+ "bedrock-converse-stream": "bedrock-converse-stream";
187
+ "openai-codex-responses": "openai-codex-responses";
188
188
  "google-gemini-cli": "google-gemini-cli";
189
189
  "google-vertex": "google-vertex";
190
190
  }>>;
@@ -196,11 +196,11 @@ export declare const ProviderConfigSchema: z.ZodObject<{
196
196
  api: z.ZodOptional<z.ZodEnum<{
197
197
  "openai-completions": "openai-completions";
198
198
  "openai-responses": "openai-responses";
199
- "azure-openai-responses": "azure-openai-responses";
200
- "openai-codex-responses": "openai-codex-responses";
201
199
  "anthropic-messages": "anthropic-messages";
202
- "bedrock-converse-stream": "bedrock-converse-stream";
203
200
  "google-generative-ai": "google-generative-ai";
201
+ "azure-openai-responses": "azure-openai-responses";
202
+ "bedrock-converse-stream": "bedrock-converse-stream";
203
+ "openai-codex-responses": "openai-codex-responses";
204
204
  "google-gemini-cli": "google-gemini-cli";
205
205
  "google-vertex": "google-vertex";
206
206
  }>>;
@@ -300,11 +300,11 @@ export declare const ModelsJsonSchema: z.ZodObject<{
300
300
  api: z.ZodOptional<z.ZodEnum<{
301
301
  "openai-completions": "openai-completions";
302
302
  "openai-responses": "openai-responses";
303
- "azure-openai-responses": "azure-openai-responses";
304
- "openai-codex-responses": "openai-codex-responses";
305
303
  "anthropic-messages": "anthropic-messages";
306
- "bedrock-converse-stream": "bedrock-converse-stream";
307
304
  "google-generative-ai": "google-generative-ai";
305
+ "azure-openai-responses": "azure-openai-responses";
306
+ "bedrock-converse-stream": "bedrock-converse-stream";
307
+ "openai-codex-responses": "openai-codex-responses";
308
308
  "google-gemini-cli": "google-gemini-cli";
309
309
  "google-vertex": "google-vertex";
310
310
  }>>;
@@ -316,11 +316,11 @@ export declare const ModelsJsonSchema: z.ZodObject<{
316
316
  api: z.ZodOptional<z.ZodEnum<{
317
317
  "openai-completions": "openai-completions";
318
318
  "openai-responses": "openai-responses";
319
- "azure-openai-responses": "azure-openai-responses";
320
- "openai-codex-responses": "openai-codex-responses";
321
319
  "anthropic-messages": "anthropic-messages";
322
- "bedrock-converse-stream": "bedrock-converse-stream";
323
320
  "google-generative-ai": "google-generative-ai";
321
+ "azure-openai-responses": "azure-openai-responses";
322
+ "bedrock-converse-stream": "bedrock-converse-stream";
323
+ "openai-codex-responses": "openai-codex-responses";
324
324
  "google-gemini-cli": "google-gemini-cli";
325
325
  "google-vertex": "google-vertex";
326
326
  }>>;
@@ -1,8 +1,8 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { init_paths, resolveModelsJsonPath } from "./paths.js";
3
+ import { z } from "zod";
3
4
  import { dirname } from "path";
4
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
5
- import { z } from "zod";
6
6
  //#region src/config/models-json.ts
7
7
  /**
8
8
  * Models.json configuration types and schema