@jsonstudio/rcc 0.89.1803 → 0.89.1959

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 (283) hide show
  1. package/configsamples/config.json +19 -0
  2. package/configsamples/provider/deepseek/config.v1.json +59 -0
  3. package/dist/build-info.js +2 -2
  4. package/dist/cli/commands/claude.d.ts +4 -0
  5. package/dist/cli/commands/claude.js +56 -0
  6. package/dist/cli/commands/claude.js.map +1 -0
  7. package/dist/cli/commands/clock-admin.d.ts +20 -0
  8. package/dist/cli/commands/clock-admin.js +234 -0
  9. package/dist/cli/commands/clock-admin.js.map +1 -0
  10. package/dist/cli/commands/code.d.ts +0 -42
  11. package/dist/cli/commands/code.js +4 -414
  12. package/dist/cli/commands/code.js.map +1 -1
  13. package/dist/cli/commands/codex.d.ts +4 -0
  14. package/dist/cli/commands/codex.js +43 -0
  15. package/dist/cli/commands/codex.js.map +1 -0
  16. package/dist/cli/commands/examples.js +13 -16
  17. package/dist/cli/commands/examples.js.map +1 -1
  18. package/dist/cli/commands/init/basic.d.ts +40 -0
  19. package/dist/cli/commands/init/basic.js +482 -0
  20. package/dist/cli/commands/init/basic.js.map +1 -0
  21. package/dist/cli/commands/init/camoufox.d.ts +7 -0
  22. package/dist/cli/commands/init/camoufox.js +59 -0
  23. package/dist/cli/commands/init/camoufox.js.map +1 -0
  24. package/dist/cli/commands/init/interactive.d.ts +18 -0
  25. package/dist/cli/commands/init/interactive.js +223 -0
  26. package/dist/cli/commands/init/interactive.js.map +1 -0
  27. package/dist/cli/commands/init/shared.d.ts +66 -0
  28. package/dist/cli/commands/init/shared.js +9 -0
  29. package/dist/cli/commands/init/shared.js.map +1 -0
  30. package/dist/cli/commands/init/workflows.d.ts +29 -0
  31. package/dist/cli/commands/init/workflows.js +341 -0
  32. package/dist/cli/commands/init/workflows.js.map +1 -0
  33. package/dist/cli/commands/init.d.ts +2 -26
  34. package/dist/cli/commands/init.js +220 -53
  35. package/dist/cli/commands/init.js.map +1 -1
  36. package/dist/cli/commands/launcher-kernel.d.ts +78 -0
  37. package/dist/cli/commands/launcher-kernel.js +1194 -0
  38. package/dist/cli/commands/launcher-kernel.js.map +1 -0
  39. package/dist/cli/commands/start.js +27 -1
  40. package/dist/cli/commands/start.js.map +1 -1
  41. package/dist/cli/commands/status.d.ts +2 -0
  42. package/dist/cli/commands/status.js +24 -1
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/commands/stop.d.ts +1 -0
  45. package/dist/cli/commands/stop.js +201 -4
  46. package/dist/cli/commands/stop.js.map +1 -1
  47. package/dist/cli/commands/tmux-inject.d.ts +20 -0
  48. package/dist/cli/commands/tmux-inject.js +212 -0
  49. package/dist/cli/commands/tmux-inject.js.map +1 -0
  50. package/dist/cli/config/init-provider-catalog.js +34 -0
  51. package/dist/cli/config/init-provider-catalog.js.map +1 -1
  52. package/dist/cli/register/claude-command.d.ts +3 -0
  53. package/dist/cli/register/claude-command.js +5 -0
  54. package/dist/cli/register/claude-command.js.map +1 -0
  55. package/dist/cli/register/clock-admin-command.d.ts +3 -0
  56. package/dist/cli/register/clock-admin-command.js +5 -0
  57. package/dist/cli/register/clock-admin-command.js.map +1 -0
  58. package/dist/cli/register/codex-command.d.ts +3 -0
  59. package/dist/cli/register/codex-command.js +5 -0
  60. package/dist/cli/register/codex-command.js.map +1 -0
  61. package/dist/cli/register/status-config-commands.d.ts +2 -0
  62. package/dist/cli/register/status-config-commands.js.map +1 -1
  63. package/dist/cli/register/tmux-inject-command.d.ts +3 -0
  64. package/dist/cli/register/tmux-inject-command.js +5 -0
  65. package/dist/cli/register/tmux-inject-command.js.map +1 -0
  66. package/dist/cli/server/port-utils.d.ts +3 -2
  67. package/dist/cli/server/port-utils.js +171 -32
  68. package/dist/cli/server/port-utils.js.map +1 -1
  69. package/dist/cli.js +45 -6
  70. package/dist/cli.js.map +1 -1
  71. package/dist/client/gemini/gemini-protocol-client.js +56 -5
  72. package/dist/client/gemini/gemini-protocol-client.js.map +1 -1
  73. package/dist/commands/token-daemon.js +59 -7
  74. package/dist/commands/token-daemon.js.map +1 -1
  75. package/dist/commands/validate.js +87 -15
  76. package/dist/commands/validate.js.map +1 -1
  77. package/dist/config/routecodex-config-loader.js +31 -2
  78. package/dist/config/routecodex-config-loader.js.map +1 -1
  79. package/dist/docs/daemon-admin-ui.html +948 -74
  80. package/dist/index.d.ts +1 -0
  81. package/dist/index.js +325 -37
  82. package/dist/index.js.map +1 -1
  83. package/dist/manager/quota/provider-quota-center.js +8 -14
  84. package/dist/manager/quota/provider-quota-center.js.map +1 -1
  85. package/dist/modules/llmswitch/bridge.d.ts +39 -0
  86. package/dist/modules/llmswitch/bridge.js +169 -0
  87. package/dist/modules/llmswitch/bridge.js.map +1 -1
  88. package/dist/modules/pipeline/utils/colored-logger.js +1 -1
  89. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  90. package/dist/providers/auth/deepseek-account-auth.d.ts +39 -0
  91. package/dist/providers/auth/deepseek-account-auth.js +329 -0
  92. package/dist/providers/auth/deepseek-account-auth.js.map +1 -0
  93. package/dist/providers/auth/deepseek-account-token-acquirer.d.ts +15 -0
  94. package/dist/providers/auth/deepseek-account-token-acquirer.js +644 -0
  95. package/dist/providers/auth/deepseek-account-token-acquirer.js.map +1 -0
  96. package/dist/providers/auth/oauth-lifecycle.js +26 -4
  97. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  98. package/dist/providers/auth/oauth-repair-cooldown.d.ts +5 -0
  99. package/dist/providers/auth/oauth-repair-cooldown.js +39 -0
  100. package/dist/providers/auth/oauth-repair-cooldown.js.map +1 -1
  101. package/dist/providers/auth/token-scanner/index.d.ts +6 -0
  102. package/dist/providers/auth/token-scanner/index.js +53 -0
  103. package/dist/providers/auth/token-scanner/index.js.map +1 -1
  104. package/dist/providers/core/api/provider-config.d.ts +17 -2
  105. package/dist/providers/core/api/provider-types.d.ts +6 -0
  106. package/dist/providers/core/api/provider-types.js.map +1 -1
  107. package/dist/providers/core/config/camoufox-launcher.d.ts +7 -0
  108. package/dist/providers/core/config/camoufox-launcher.js +68 -21
  109. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  110. package/dist/providers/core/config/service-profiles.js +19 -0
  111. package/dist/providers/core/config/service-profiles.js.map +1 -1
  112. package/dist/providers/core/contracts/deepseek-provider-contract.d.ts +34 -0
  113. package/dist/providers/core/contracts/deepseek-provider-contract.js +100 -0
  114. package/dist/providers/core/contracts/deepseek-provider-contract.js.map +1 -0
  115. package/dist/providers/core/runtime/anthropic-http-provider.d.ts +0 -5
  116. package/dist/providers/core/runtime/anthropic-http-provider.js +0 -26
  117. package/dist/providers/core/runtime/anthropic-http-provider.js.map +1 -1
  118. package/dist/providers/core/runtime/deepseek-http-provider.d.ts +35 -0
  119. package/dist/providers/core/runtime/deepseek-http-provider.js +373 -0
  120. package/dist/providers/core/runtime/deepseek-http-provider.js.map +1 -0
  121. package/dist/providers/core/runtime/deepseek-session-pow.d.ts +55 -0
  122. package/dist/providers/core/runtime/deepseek-session-pow.js +422 -0
  123. package/dist/providers/core/runtime/deepseek-session-pow.js.map +1 -0
  124. package/dist/providers/core/runtime/gemini-cli-http-provider.d.ts +0 -3
  125. package/dist/providers/core/runtime/gemini-cli-http-provider.js +0 -72
  126. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  127. package/dist/providers/core/runtime/gemini-http-provider.d.ts +1 -7
  128. package/dist/providers/core/runtime/gemini-http-provider.js +3 -110
  129. package/dist/providers/core/runtime/gemini-http-provider.js.map +1 -1
  130. package/dist/providers/core/runtime/http-request-executor.d.ts +1 -0
  131. package/dist/providers/core/runtime/http-request-executor.js +4 -0
  132. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  133. package/dist/providers/core/runtime/http-transport-provider.d.ts +10 -4
  134. package/dist/providers/core/runtime/http-transport-provider.js +308 -82
  135. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  136. package/dist/providers/core/runtime/iflow-http-provider.d.ts +0 -4
  137. package/dist/providers/core/runtime/iflow-http-provider.js +0 -28
  138. package/dist/providers/core/runtime/iflow-http-provider.js.map +1 -1
  139. package/dist/providers/core/runtime/provider-factory.d.ts +5 -0
  140. package/dist/providers/core/runtime/provider-factory.js +59 -6
  141. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  142. package/dist/providers/core/runtime/responses-provider.d.ts +0 -2
  143. package/dist/providers/core/runtime/responses-provider.js +0 -11
  144. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  145. package/dist/providers/core/strategies/oauth-device-flow.js +16 -1
  146. package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
  147. package/dist/providers/core/utils/provider-type-utils.js +2 -1
  148. package/dist/providers/core/utils/provider-type-utils.js.map +1 -1
  149. package/dist/providers/profile/families/anthropic-profile.d.ts +2 -0
  150. package/dist/providers/profile/families/anthropic-profile.js +32 -0
  151. package/dist/providers/profile/families/anthropic-profile.js.map +1 -0
  152. package/dist/providers/profile/families/antigravity-profile.d.ts +2 -0
  153. package/dist/providers/profile/families/antigravity-profile.js +109 -0
  154. package/dist/providers/profile/families/antigravity-profile.js.map +1 -0
  155. package/dist/providers/profile/families/glm-profile.d.ts +2 -0
  156. package/dist/providers/profile/families/glm-profile.js +48 -0
  157. package/dist/providers/profile/families/glm-profile.js.map +1 -0
  158. package/dist/providers/profile/families/iflow-profile.d.ts +2 -0
  159. package/dist/providers/profile/families/iflow-profile.js +232 -0
  160. package/dist/providers/profile/families/iflow-profile.js.map +1 -0
  161. package/dist/providers/profile/families/qwen-profile.d.ts +2 -0
  162. package/dist/providers/profile/families/qwen-profile.js +14 -0
  163. package/dist/providers/profile/families/qwen-profile.js.map +1 -0
  164. package/dist/providers/profile/families/responses-profile.d.ts +2 -0
  165. package/dist/providers/profile/families/responses-profile.js +28 -0
  166. package/dist/providers/profile/families/responses-profile.js.map +1 -0
  167. package/dist/providers/profile/profile-contracts.d.ts +74 -0
  168. package/dist/providers/profile/profile-contracts.js +2 -0
  169. package/dist/providers/profile/profile-contracts.js.map +1 -0
  170. package/dist/providers/profile/profile-registry.d.ts +3 -0
  171. package/dist/providers/profile/profile-registry.js +40 -0
  172. package/dist/providers/profile/profile-registry.js.map +1 -0
  173. package/dist/providers/profile/provider-directory.d.ts +2 -0
  174. package/dist/providers/profile/provider-directory.js +55 -0
  175. package/dist/providers/profile/provider-directory.js.map +1 -0
  176. package/dist/providers/profile/provider-profile-loader.js +43 -3
  177. package/dist/providers/profile/provider-profile-loader.js.map +1 -1
  178. package/dist/providers/profile/provider-profile.d.ts +8 -0
  179. package/dist/scripts/deepseek/pow-solver.mjs +146 -0
  180. package/dist/scripts/deepseek/sha3_wasm_bg.7b9ca65ddd.wasm +0 -0
  181. package/dist/server/handlers/config-admin-handler.js +27 -0
  182. package/dist/server/handlers/config-admin-handler.js.map +1 -1
  183. package/dist/server/runtime/http-server/clock-client-registry.d.ts +113 -0
  184. package/dist/server/runtime/http-server/clock-client-registry.js +592 -0
  185. package/dist/server/runtime/http-server/clock-client-registry.js.map +1 -0
  186. package/dist/server/runtime/http-server/clock-client-routes.d.ts +2 -0
  187. package/dist/server/runtime/http-server/clock-client-routes.js +481 -0
  188. package/dist/server/runtime/http-server/clock-client-routes.js.map +1 -0
  189. package/dist/server/runtime/http-server/clock-daemon-inject-config.d.ts +1 -0
  190. package/dist/server/runtime/http-server/clock-daemon-inject-config.js +11 -0
  191. package/dist/server/runtime/http-server/clock-daemon-inject-config.js.map +1 -0
  192. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +3 -3
  193. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -1
  194. package/dist/server/runtime/http-server/daemon-admin/auth-session.d.ts +1 -0
  195. package/dist/server/runtime/http-server/daemon-admin/auth-session.js +18 -2
  196. package/dist/server/runtime/http-server/daemon-admin/auth-session.js.map +1 -1
  197. package/dist/server/runtime/http-server/daemon-admin/control-handler.js +2 -15
  198. package/dist/server/runtime/http-server/daemon-admin/control-handler.js.map +1 -1
  199. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +65 -7
  200. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  201. package/dist/server/runtime/http-server/executor-metadata.js +37 -1
  202. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  203. package/dist/server/runtime/http-server/executor-provider.js +55 -0
  204. package/dist/server/runtime/http-server/executor-provider.js.map +1 -1
  205. package/dist/server/runtime/http-server/executor-response.js +49 -1
  206. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  207. package/dist/server/runtime/http-server/index.d.ts +10 -0
  208. package/dist/server/runtime/http-server/index.js +534 -9
  209. package/dist/server/runtime/http-server/index.js.map +1 -1
  210. package/dist/server/runtime/http-server/managed-process-probe.d.ts +6 -0
  211. package/dist/server/runtime/http-server/managed-process-probe.js +294 -0
  212. package/dist/server/runtime/http-server/managed-process-probe.js.map +1 -0
  213. package/dist/server/runtime/http-server/middleware.js +16 -1
  214. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  215. package/dist/server/runtime/http-server/provider-utils.js +6 -2
  216. package/dist/server/runtime/http-server/provider-utils.js.map +1 -1
  217. package/dist/server/runtime/http-server/request-executor.d.ts +1 -0
  218. package/dist/server/runtime/http-server/request-executor.js +360 -35
  219. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  220. package/dist/server/runtime/http-server/routes.js +95 -3
  221. package/dist/server/runtime/http-server/routes.js.map +1 -1
  222. package/dist/server/runtime/http-server/stats-manager.d.ts +10 -0
  223. package/dist/server/runtime/http-server/stats-manager.js +119 -16
  224. package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
  225. package/dist/server/runtime/http-server/tmux-session-probe.d.ts +3 -0
  226. package/dist/server/runtime/http-server/tmux-session-probe.js +101 -0
  227. package/dist/server/runtime/http-server/tmux-session-probe.js.map +1 -0
  228. package/dist/server/utils/stage-logger.js +21 -5
  229. package/dist/server/utils/stage-logger.js.map +1 -1
  230. package/dist/token-daemon/index.js +59 -10
  231. package/dist/token-daemon/index.js.map +1 -1
  232. package/dist/token-daemon/server-utils.d.ts +1 -0
  233. package/dist/token-daemon/server-utils.js +4 -1
  234. package/dist/token-daemon/server-utils.js.map +1 -1
  235. package/dist/token-daemon/token-daemon.js +38 -4
  236. package/dist/token-daemon/token-daemon.js.map +1 -1
  237. package/dist/token-daemon/token-types.d.ts +1 -1
  238. package/dist/token-daemon/token-types.js +2 -1
  239. package/dist/token-daemon/token-types.js.map +1 -1
  240. package/dist/token-daemon/token-utils.js +5 -2
  241. package/dist/token-daemon/token-utils.js.map +1 -1
  242. package/dist/utils/clock-client-token.d.ts +3 -0
  243. package/dist/utils/clock-client-token.js +54 -0
  244. package/dist/utils/clock-client-token.js.map +1 -0
  245. package/dist/utils/managed-server-pids.d.ts +25 -0
  246. package/dist/utils/managed-server-pids.js +176 -0
  247. package/dist/utils/managed-server-pids.js.map +1 -0
  248. package/dist/utils/process-lifecycle-logger.d.ts +8 -0
  249. package/dist/utils/process-lifecycle-logger.js +151 -0
  250. package/dist/utils/process-lifecycle-logger.js.map +1 -0
  251. package/dist/utils/runtime-exit-forensics.d.ts +30 -0
  252. package/dist/utils/runtime-exit-forensics.js +101 -0
  253. package/dist/utils/runtime-exit-forensics.js.map +1 -0
  254. package/dist/utils/shutdown-caller-context.d.ts +22 -0
  255. package/dist/utils/shutdown-caller-context.js +25 -0
  256. package/dist/utils/shutdown-caller-context.js.map +1 -0
  257. package/docs/PROVIDERS_BUILTIN.md +8 -0
  258. package/docs/PROVIDER_TYPES.md +3 -1
  259. package/docs/SERVERTOOL_PRE_COMMAND_HOOKS.md +85 -0
  260. package/docs/clock-client-daemon-design.md +343 -0
  261. package/docs/daemon-admin-ui.html +948 -74
  262. package/docs/providers/deepseek-web-provider-design.md +192 -0
  263. package/docs/routing-instructions.md +4 -1
  264. package/docs/stop-message-auto.md +4 -3
  265. package/docs/v2-architecture/PROVIDER-V2-CHANGESET-RELEASE-CHECKLIST.md +80 -0
  266. package/docs/v2-architecture/PROVIDER-V2-LAYERING-ADR-DRAFT.md +225 -0
  267. package/docs/v2-architecture/PROVIDER-V2-MIGRATION-MATRIX-DRAFT.md +88 -0
  268. package/docs/v2-architecture/PROVIDER-V2-PHASED-MIGRATION-ROLLBACK-DRAFT.md +164 -0
  269. package/docs/v2-architecture/PROVIDER-V2-PROFILE-API-REGISTRY-DRAFT.md +201 -0
  270. package/docs/v2-architecture/PROVIDER-V2-PROFILE-GEMINI-DRAFT.md +56 -0
  271. package/docs/v2-architecture/PROVIDER-V2-REFACTOR-OVERVIEW-DRAFT.md +102 -0
  272. package/docs/v2-architecture/PROVIDER-V2-VERIFICATION-MATRIX-DRAFT.md +163 -0
  273. package/package.json +10 -9
  274. package/scripts/copy-compat-assets.mjs +18 -0
  275. package/scripts/copy-modules-config.mjs +1 -0
  276. package/scripts/deepseek/pow-solver.mjs +146 -0
  277. package/scripts/deepseek/sha3_wasm_bg.7b9ca65ddd.wasm +0 -0
  278. package/scripts/ensure-cli-executable.mjs +64 -0
  279. package/scripts/install-global.sh +5 -2
  280. package/scripts/install.sh +1 -1
  281. package/scripts/monitor/daemon-kill-watch.mjs +184 -0
  282. package/scripts/monitor/port-kill-watch.sh +74 -0
  283. package/scripts/quick-install.sh +1 -1
@@ -366,6 +366,25 @@
366
366
  "targets": ["crs.gpt-5.1-codex:200", "tab.gpt-5.2-codex:100"]
367
367
  }
368
368
  ],
369
+ "multimodal": [
370
+ {
371
+ "id": "multimodal-primary",
372
+ "mode": "priority",
373
+ "priority": 200,
374
+ "targets": [
375
+ "iflow.kimi-k2.5"
376
+ ]
377
+ },
378
+ {
379
+ "id": "multimodal-backup",
380
+ "mode": "priority",
381
+ "priority": 100,
382
+ "backup": true,
383
+ "targets": [
384
+ "tab.gpt-5.2-codex"
385
+ ]
386
+ }
387
+ ],
369
388
  "vision": [
370
389
  {
371
390
  "id": "vision-primary",
@@ -0,0 +1,59 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "httpserver": {
4
+ "port": 5521,
5
+ "host": "127.0.0.1",
6
+ "apikey": ""
7
+ },
8
+ "virtualrouter": {
9
+ "providers": {
10
+ "deepseek-web": {
11
+ "id": "deepseek-web",
12
+ "enabled": true,
13
+ "type": "openai",
14
+ "baseURL": "https://chat.deepseek.com",
15
+ "compatibilityProfile": "chat:deepseek-web",
16
+ "auth": {
17
+ "type": "deepseek-account",
18
+ "entries": [
19
+ {
20
+ "alias": "1",
21
+ "type": "deepseek-account",
22
+ "tokenFile": "~/.routecodex/auth/deepseek-account-1.json"
23
+ },
24
+ {
25
+ "alias": "2",
26
+ "type": "deepseek-account",
27
+ "tokenFile": "~/.routecodex/auth/deepseek-account-2.json"
28
+ }
29
+ ]
30
+ },
31
+ "deepseek": {
32
+ "strictToolRequired": true,
33
+ "textToolFallback": true,
34
+ "powTimeoutMs": 15000,
35
+ "powMaxAttempts": 2,
36
+ "sessionReuseTtlMs": 1800000
37
+ },
38
+ "models": {
39
+ "deepseek-chat": {
40
+ "maxTokens": 64000,
41
+ "maxContext": 512000,
42
+ "supportsStreaming": true
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "routing": {
48
+ "default": [
49
+ {
50
+ "id": "default-primary",
51
+ "mode": "priority",
52
+ "targets": [
53
+ "deepseek-web.deepseek-chat"
54
+ ]
55
+ }
56
+ ]
57
+ }
58
+ }
59
+ }
@@ -1,6 +1,6 @@
1
1
  export const buildInfo = {
2
2
  mode: 'release',
3
- version: '0.89.1803',
4
- buildTime: '2026-02-07T07:00:56.549Z'
3
+ version: '0.89.1959',
4
+ buildTime: '2026-02-12T11:52:07.127Z'
5
5
  };
6
6
  //# sourceMappingURL=build-info.js.map
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ import { type LauncherCommandContext } from './launcher-kernel.js';
3
+ export type ClaudeCommandContext = LauncherCommandContext;
4
+ export declare function createClaudeCommand(program: Command, ctx: ClaudeCommandContext): void;
@@ -0,0 +1,56 @@
1
+ import { createLauncherCommand } from './launcher-kernel.js';
2
+ export function createClaudeCommand(program, ctx) {
3
+ createLauncherCommand(program, ctx, {
4
+ commandName: 'claude',
5
+ displayName: 'Claude',
6
+ description: 'Launch Claude with RouteCodex as proxy (args after this command are passed through)',
7
+ binaryOptionFlags: '--claude-path <path>',
8
+ binaryOptionName: 'claudePath',
9
+ binaryOptionDescription: 'Path to Claude executable',
10
+ binaryDefault: 'claude',
11
+ binaryEnvKey: 'CLAUDE_PATH',
12
+ extraKnownOptions: ['--claude-path', '--model', '--profile'],
13
+ withModelOption: true,
14
+ withProfileOption: true,
15
+ buildArgs: (options) => {
16
+ const args = [];
17
+ if (typeof options.model === 'string' && options.model.trim()) {
18
+ args.push('--model', options.model.trim());
19
+ }
20
+ if (typeof options.profile === 'string' && options.profile.trim()) {
21
+ args.push('--profile', options.profile.trim());
22
+ }
23
+ return args;
24
+ },
25
+ buildEnv: ({ env, baseUrl, configuredApiKey, cwd }) => {
26
+ const claudeEnv = {
27
+ ...env,
28
+ PWD: cwd,
29
+ RCC_WORKDIR: cwd,
30
+ ROUTECODEX_WORKDIR: cwd,
31
+ CLAUDE_WORKDIR: cwd,
32
+ ANTHROPIC_BASE_URL: baseUrl,
33
+ ANTHROPIC_API_URL: baseUrl,
34
+ ANTHROPIC_API_KEY: (typeof env.ANTHROPIC_API_KEY === 'string' && env.ANTHROPIC_API_KEY.trim())
35
+ ? env.ANTHROPIC_API_KEY.trim()
36
+ : ((typeof env.OPENAI_API_KEY === 'string' && env.OPENAI_API_KEY.trim())
37
+ ? env.OPENAI_API_KEY.trim()
38
+ : (configuredApiKey || 'rcc-proxy-key'))
39
+ };
40
+ try {
41
+ delete claudeEnv.ANTHROPIC_AUTH_TOKEN;
42
+ }
43
+ catch {
44
+ // ignore
45
+ }
46
+ try {
47
+ delete claudeEnv.ANTHROPIC_TOKEN;
48
+ }
49
+ catch {
50
+ // ignore
51
+ }
52
+ return claudeEnv;
53
+ }
54
+ });
55
+ }
56
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/cli/commands/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAC;AAI1F,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAyB;IAC7E,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE;QAClC,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,qFAAqF;QAClG,iBAAiB,EAAE,sBAAsB;QACzC,gBAAgB,EAAE,YAAY;QAC9B,uBAAuB,EAAE,2BAA2B;QACpD,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,aAAa;QAC3B,iBAAiB,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,CAAC;QAC5D,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG;gBAChB,GAAG,GAAG;gBACN,GAAG,EAAE,GAAG;gBACR,WAAW,EAAE,GAAG;gBAChB,kBAAkB,EAAE,GAAG;gBACvB,cAAc,EAAE,GAAG;gBACnB,kBAAkB,EAAE,OAAO;gBAC3B,iBAAiB,EAAE,OAAO;gBAC1B,iBAAiB,EAAE,CAAC,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC5F,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE;oBAC9B,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;wBACtE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;wBAC3B,CAAC,CAAC,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC;aACxB,CAAC;YAEvB,IAAI,CAAC;gBACH,OAAQ,SAAqC,CAAC,oBAAoB,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,OAAQ,SAAqC,CAAC,eAAe,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Command } from 'commander';
2
+ import type { LoadedRouteCodexConfig } from '../../config/routecodex-config-loader.js';
3
+ type LoggerLike = {
4
+ info: (msg: string) => void;
5
+ warning: (msg: string) => void;
6
+ success: (msg: string) => void;
7
+ error: (msg: string) => void;
8
+ };
9
+ export type ClockAdminCommandContext = {
10
+ isDevPackage: boolean;
11
+ defaultDevPort: number;
12
+ logger: LoggerLike;
13
+ log: (line: string) => void;
14
+ loadConfig: (explicitPath?: string) => Promise<LoadedRouteCodexConfig>;
15
+ fetch: typeof fetch;
16
+ env: NodeJS.ProcessEnv;
17
+ exit: (code: number) => never;
18
+ };
19
+ export declare function createClockAdminCommand(program: Command, ctx: ClockAdminCommandContext): void;
20
+ export {};
@@ -0,0 +1,234 @@
1
+ import { LOCAL_HOSTS } from '../../constants/index.js';
2
+ import { normalizeConnectHost, normalizePort } from '../utils/normalize.js';
3
+ function normalizeBaseUrl(raw) {
4
+ const trimmed = String(raw || '').trim();
5
+ if (!trimmed) {
6
+ throw new Error('--url is empty');
7
+ }
8
+ let parsed;
9
+ try {
10
+ parsed = new URL(trimmed);
11
+ }
12
+ catch {
13
+ parsed = new URL(`http://${trimmed}`);
14
+ }
15
+ const protocol = parsed.protocol === 'https:' ? 'https:' : 'http:';
16
+ const pathname = (() => {
17
+ const p = typeof parsed.pathname === 'string' ? parsed.pathname : '';
18
+ if (!p || p === '/') {
19
+ return '';
20
+ }
21
+ return p.replace(/\/+$/, '');
22
+ })();
23
+ return `${protocol}//${parsed.host}${pathname}`;
24
+ }
25
+ function readPortHostFromConfig(loaded) {
26
+ const cfg = (loaded?.userConfig || {});
27
+ const host = typeof cfg?.httpserver?.host === 'string'
28
+ ? cfg.httpserver.host
29
+ : typeof cfg?.server?.host === 'string'
30
+ ? cfg.server.host
31
+ : typeof cfg?.host === 'string'
32
+ ? cfg.host
33
+ : undefined;
34
+ const port = normalizePort(cfg?.httpserver?.port ?? cfg?.server?.port ?? cfg?.port);
35
+ return { host, port };
36
+ }
37
+ async function resolveBaseUrl(ctx, options) {
38
+ if (typeof options.url === 'string' && options.url.trim()) {
39
+ return normalizeBaseUrl(options.url);
40
+ }
41
+ let loaded = null;
42
+ try {
43
+ loaded = await ctx.loadConfig(typeof options.config === 'string' ? options.config : undefined);
44
+ }
45
+ catch {
46
+ loaded = null;
47
+ }
48
+ const configPick = readPortHostFromConfig(loaded);
49
+ const host = normalizeConnectHost(options.host || configPick.host || LOCAL_HOSTS.LOCALHOST, LOCAL_HOSTS.IPV4);
50
+ let port = normalizePort(options.port);
51
+ if (!Number.isFinite(port) || port <= 0) {
52
+ port = configPick.port;
53
+ }
54
+ if (!Number.isFinite(port) || port <= 0) {
55
+ port = normalizePort(ctx.env.ROUTECODEX_PORT || ctx.env.RCC_PORT);
56
+ }
57
+ if ((!Number.isFinite(port) || port <= 0) && ctx.isDevPackage) {
58
+ port = ctx.defaultDevPort;
59
+ }
60
+ if (!Number.isFinite(port) || port <= 0) {
61
+ throw new Error('Missing server port. Use --port / --url, env, or config file.');
62
+ }
63
+ return `http://${host}:${Math.floor(port)}`;
64
+ }
65
+ function parseInteger(value) {
66
+ if (value === undefined || value === null || value === '') {
67
+ return undefined;
68
+ }
69
+ const parsed = Number(value);
70
+ if (!Number.isFinite(parsed)) {
71
+ return undefined;
72
+ }
73
+ return Math.floor(parsed);
74
+ }
75
+ async function callJson(ctx, url, method, body) {
76
+ const response = await ctx.fetch(url, {
77
+ method,
78
+ headers: { 'content-type': 'application/json' },
79
+ ...(body ? { body: JSON.stringify(body) } : {})
80
+ });
81
+ const text = await response.text().catch(() => '');
82
+ let data = null;
83
+ try {
84
+ data = text ? JSON.parse(text) : null;
85
+ }
86
+ catch {
87
+ data = { raw: text };
88
+ }
89
+ return { ok: response.ok, status: response.status, data };
90
+ }
91
+ export function createClockAdminCommand(program, ctx) {
92
+ program
93
+ .command('clock-admin')
94
+ .description('Manage clock schedules and tmux/session bindings (list + CRUD + cleanup)')
95
+ .option('--port <port>', 'RouteCodex server port')
96
+ .option('--host <host>', 'RouteCodex server host')
97
+ .option('--url <url>', 'RouteCodex base URL')
98
+ .option('-c, --config <config>', 'RouteCodex configuration file path')
99
+ .option('--session-id <sessionId>', 'Conversation/session id for clock task CRUD')
100
+ .option('--task-id <taskId>', 'Task id for update/delete')
101
+ .option('--due-at <dueAt>', 'ISO8601 due time for create/update')
102
+ .option('--task <task>', 'Task text for create/update')
103
+ .option('--recurrence <kind>', 'Recurrence kind: daily|weekly|interval')
104
+ .option('--every-minutes <minutes>', 'everyMinutes for interval recurrence')
105
+ .option('--max-runs <count>', 'maxRuns for recurrence')
106
+ .option('--list', 'List clock sessions/tasks', false)
107
+ .option('--create', 'Create clock task', false)
108
+ .option('--update', 'Update clock task', false)
109
+ .option('--delete', 'Delete one clock task', false)
110
+ .option('--clear', 'Clear all tasks in a session', false)
111
+ .option('--cleanup-dead-tmux', 'Cleanup daemons whose tmux session is gone', false)
112
+ .option('--unbind-session <conversationSessionId>', 'Unbind conversation session mapping manually')
113
+ .option('--clear-tasks', 'With --unbind-session, clear its clock tasks too', false)
114
+ .option('--json', 'Print JSON output', false)
115
+ .action(async (options) => {
116
+ try {
117
+ const baseUrl = await resolveBaseUrl(ctx, options);
118
+ const outputJson = Boolean(options.json);
119
+ const print = (payload) => {
120
+ if (outputJson) {
121
+ ctx.log(JSON.stringify(payload, null, 2));
122
+ }
123
+ else {
124
+ ctx.log(JSON.stringify(payload, null, 2));
125
+ }
126
+ };
127
+ if (options.cleanupDeadTmux) {
128
+ const result = await callJson(ctx, `${baseUrl}/daemon/clock/cleanup`, 'POST', { mode: 'dead_tmux' });
129
+ if (!result.ok) {
130
+ throw new Error(`cleanup-dead-tmux failed (${result.status})`);
131
+ }
132
+ print(result.data);
133
+ return;
134
+ }
135
+ if (typeof options.unbindSession === 'string' && options.unbindSession.trim()) {
136
+ const result = await callJson(ctx, `${baseUrl}/daemon/clock/cleanup`, 'POST', {
137
+ mode: 'unbind',
138
+ conversationSessionId: options.unbindSession.trim(),
139
+ clearTasks: Boolean(options.clearTasks)
140
+ });
141
+ if (!result.ok) {
142
+ throw new Error(`unbind-session failed (${result.status})`);
143
+ }
144
+ print(result.data);
145
+ return;
146
+ }
147
+ if (options.create) {
148
+ const sessionId = typeof options.sessionId === 'string' ? options.sessionId.trim() : '';
149
+ const dueAt = typeof options.dueAt === 'string' ? options.dueAt.trim() : '';
150
+ const task = typeof options.task === 'string' ? options.task.trim() : '';
151
+ if (!sessionId || !dueAt || !task) {
152
+ throw new Error('--create requires --session-id --due-at --task');
153
+ }
154
+ const payload = { sessionId, dueAt, task };
155
+ const recurrence = typeof options.recurrence === 'string' ? options.recurrence.trim() : '';
156
+ if (recurrence) {
157
+ payload.recurrence = {
158
+ kind: recurrence,
159
+ ...(parseInteger(options.maxRuns) ? { maxRuns: parseInteger(options.maxRuns) } : {}),
160
+ ...(parseInteger(options.everyMinutes) ? { everyMinutes: parseInteger(options.everyMinutes) } : {})
161
+ };
162
+ }
163
+ const result = await callJson(ctx, `${baseUrl}/daemon/clock/tasks`, 'POST', payload);
164
+ if (!result.ok) {
165
+ throw new Error(`create failed (${result.status})`);
166
+ }
167
+ print(result.data);
168
+ return;
169
+ }
170
+ if (options.update) {
171
+ const sessionId = typeof options.sessionId === 'string' ? options.sessionId.trim() : '';
172
+ const taskId = typeof options.taskId === 'string' ? options.taskId.trim() : '';
173
+ if (!sessionId || !taskId) {
174
+ throw new Error('--update requires --session-id --task-id');
175
+ }
176
+ const patch = {};
177
+ if (typeof options.dueAt === 'string' && options.dueAt.trim()) {
178
+ patch.dueAt = options.dueAt.trim();
179
+ }
180
+ if (typeof options.task === 'string' && options.task.trim()) {
181
+ patch.task = options.task.trim();
182
+ }
183
+ const recurrence = typeof options.recurrence === 'string' ? options.recurrence.trim() : '';
184
+ if (recurrence) {
185
+ patch.recurrence = {
186
+ kind: recurrence,
187
+ ...(parseInteger(options.maxRuns) ? { maxRuns: parseInteger(options.maxRuns) } : {}),
188
+ ...(parseInteger(options.everyMinutes) ? { everyMinutes: parseInteger(options.everyMinutes) } : {})
189
+ };
190
+ }
191
+ const result = await callJson(ctx, `${baseUrl}/daemon/clock/tasks`, 'PATCH', { sessionId, taskId, patch });
192
+ if (!result.ok) {
193
+ throw new Error(`update failed (${result.status})`);
194
+ }
195
+ print(result.data);
196
+ return;
197
+ }
198
+ if (options.delete || options.clear) {
199
+ const sessionId = typeof options.sessionId === 'string' ? options.sessionId.trim() : '';
200
+ if (!sessionId) {
201
+ throw new Error('--delete/--clear requires --session-id');
202
+ }
203
+ const taskId = options.clear ? '' : (typeof options.taskId === 'string' ? options.taskId.trim() : '');
204
+ if (options.delete && !taskId) {
205
+ throw new Error('--delete requires --task-id (or use --clear)');
206
+ }
207
+ const result = await callJson(ctx, `${baseUrl}/daemon/clock/tasks`, 'DELETE', {
208
+ sessionId,
209
+ ...(taskId ? { taskId } : {})
210
+ });
211
+ if (!result.ok) {
212
+ throw new Error(`delete/clear failed (${result.status})`);
213
+ }
214
+ print(result.data);
215
+ return;
216
+ }
217
+ const sessionId = typeof options.sessionId === 'string' && options.sessionId.trim() ? options.sessionId.trim() : undefined;
218
+ const listUrl = sessionId
219
+ ? `${baseUrl}/daemon/clock/tasks?sessionId=${encodeURIComponent(sessionId)}`
220
+ : `${baseUrl}/daemon/clock/tasks`;
221
+ const response = await ctx.fetch(listUrl);
222
+ const data = await response.json().catch(() => ({}));
223
+ if (!response.ok) {
224
+ throw new Error(`list failed (${response.status})`);
225
+ }
226
+ print(data);
227
+ }
228
+ catch (error) {
229
+ ctx.logger.error(error instanceof Error ? error.message : String(error));
230
+ ctx.exit(1);
231
+ }
232
+ });
233
+ }
234
+ //# sourceMappingURL=clock-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock-admin.js","sourceRoot":"","sources":["../../../src/cli/commands/clock-admin.ts"],"names":[],"mappings":"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"}
@@ -1,54 +1,12 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import type { ChildProcess, SpawnOptions } from 'node:child_process';
4
1
  import type { Command } from 'commander';
5
- type Spinner = {
6
- start(text?: string): Spinner;
7
- succeed(text?: string): void;
8
- fail(text?: string): void;
9
- warn(text?: string): void;
10
- info(text?: string): void;
11
- stop(): void;
12
- text: string;
13
- };
14
2
  type LoggerLike = {
15
3
  info: (msg: string) => void;
16
4
  warning: (msg: string) => void;
17
5
  success: (msg: string) => void;
18
6
  error: (msg: string) => void;
19
7
  };
20
- export type CodeCommandOptions = {
21
- port?: string;
22
- host: string;
23
- url?: string;
24
- config?: string;
25
- apikey?: string;
26
- claudePath?: string;
27
- cwd?: string;
28
- model?: string;
29
- profile?: string;
30
- ensureServer?: boolean;
31
- };
32
8
  export type CodeCommandContext = {
33
- isDevPackage: boolean;
34
- isWindows: boolean;
35
- defaultDevPort: number;
36
- nodeBin: string;
37
- createSpinner: (text: string) => Promise<Spinner>;
38
9
  logger: LoggerLike;
39
- env: NodeJS.ProcessEnv;
40
- rawArgv: string[];
41
- fsImpl?: typeof fs;
42
- pathImpl?: typeof path;
43
- homedir: () => string;
44
- cwd?: () => string;
45
- sleep: (ms: number) => Promise<void>;
46
- fetch: typeof fetch;
47
- spawn: (command: string, args: string[], options: SpawnOptions) => ChildProcess;
48
- getModulesConfigPath: () => string;
49
- resolveServerEntryPath: () => string;
50
- waitForever: () => Promise<void>;
51
- onSignal?: (signal: NodeJS.Signals, cb: () => void) => void;
52
10
  exit: (code: number) => never;
53
11
  };
54
12
  export declare function createCodeCommand(program: Command, ctx: CodeCommandContext): void;