@coseung2/opencodex 2.8.0-cs.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +219 -0
  3. package/assets/architecture.png +0 -0
  4. package/assets/banner.png +0 -0
  5. package/assets/claude-code-models.gif +0 -0
  6. package/assets/codex-app-picker.png +0 -0
  7. package/bin/ocx-notch.mjs +78 -0
  8. package/bin/ocx.mjs +454 -0
  9. package/bin/package-main.mjs +9 -0
  10. package/gui/dist/assets/index-CAnnes06.js +67 -0
  11. package/gui/dist/assets/index-OY43ubAq.css +1 -0
  12. package/gui/dist/favicon.png +0 -0
  13. package/gui/dist/icons.svg +24 -0
  14. package/gui/dist/index.html +25 -0
  15. package/gui/dist/logo.png +0 -0
  16. package/gui/dist/provider-icons/alibaba-color.svg +1 -0
  17. package/gui/dist/provider-icons/antigravity-color.svg +1 -0
  18. package/gui/dist/provider-icons/antigravity.svg +1 -0
  19. package/gui/dist/provider-icons/claude-color.svg +1 -0
  20. package/gui/dist/provider-icons/claude.svg +1 -0
  21. package/gui/dist/provider-icons/cloudflare-ai-gateway-color.svg +1 -0
  22. package/gui/dist/provider-icons/copilot-color.svg +1 -0
  23. package/gui/dist/provider-icons/copilot.svg +1 -0
  24. package/gui/dist/provider-icons/cursor-color.svg +2 -0
  25. package/gui/dist/provider-icons/cursor.svg +2 -0
  26. package/gui/dist/provider-icons/deepseek-color.svg +1 -0
  27. package/gui/dist/provider-icons/discord.svg +1 -0
  28. package/gui/dist/provider-icons/firepass-color.svg +1 -0
  29. package/gui/dist/provider-icons/fireworks-color.svg +1 -0
  30. package/gui/dist/provider-icons/gemini-color.svg +1 -0
  31. package/gui/dist/provider-icons/gemini.svg +1 -0
  32. package/gui/dist/provider-icons/github-copilot-color.svg +1 -0
  33. package/gui/dist/provider-icons/gitlab-duo-color.svg +1 -0
  34. package/gui/dist/provider-icons/grok-color.svg +1 -0
  35. package/gui/dist/provider-icons/grok.svg +1 -0
  36. package/gui/dist/provider-icons/groq-color.svg +1 -0
  37. package/gui/dist/provider-icons/huggingface-color.svg +1 -0
  38. package/gui/dist/provider-icons/kimi-color.svg +1 -0
  39. package/gui/dist/provider-icons/kiro-color.svg +15 -0
  40. package/gui/dist/provider-icons/kiro.svg +14 -0
  41. package/gui/dist/provider-icons/lm-studio-color.svg +1 -0
  42. package/gui/dist/provider-icons/mistral-color.svg +1 -0
  43. package/gui/dist/provider-icons/moonshot-color.svg +1 -0
  44. package/gui/dist/provider-icons/nvidia-color.svg +1 -0
  45. package/gui/dist/provider-icons/ollama-color.svg +1 -0
  46. package/gui/dist/provider-icons/openai.svg +1 -0
  47. package/gui/dist/provider-icons/opencode.svg +1 -0
  48. package/gui/dist/provider-icons/openrouter-color.svg +1 -0
  49. package/gui/dist/provider-icons/pi.svg +21 -0
  50. package/gui/dist/provider-icons/qianfan-color.svg +1 -0
  51. package/gui/dist/provider-icons/qwen-portal-color.svg +1 -0
  52. package/gui/dist/provider-icons/telegram.svg +1 -0
  53. package/gui/dist/provider-icons/vercel-ai-gateway-color.svg +1 -0
  54. package/gui/dist/provider-icons/vllm-color.svg +1 -0
  55. package/gui/dist/provider-icons/xiaomi-color.svg +1 -0
  56. package/package.json +107 -0
  57. package/packages/ocx-notch/README.md +55 -0
  58. package/packages/ocx-notch/THIRD_PARTY_NOTICES.md +45 -0
  59. package/src/AGENTS.md +28 -0
  60. package/src/adapters/anthropic-image-guard.ts +251 -0
  61. package/src/adapters/anthropic-image-normalize.ts +518 -0
  62. package/src/adapters/anthropic.ts +1003 -0
  63. package/src/adapters/azure.ts +36 -0
  64. package/src/adapters/base.ts +72 -0
  65. package/src/adapters/client-fingerprint.ts +59 -0
  66. package/src/adapters/cursor/arg-codec.ts +38 -0
  67. package/src/adapters/cursor/arg-normalize.ts +104 -0
  68. package/src/adapters/cursor/cursor-errors.ts +165 -0
  69. package/src/adapters/cursor/discovery.ts +276 -0
  70. package/src/adapters/cursor/effort-map.ts +127 -0
  71. package/src/adapters/cursor/exec-policy.ts +88 -0
  72. package/src/adapters/cursor/framing.ts +211 -0
  73. package/src/adapters/cursor/gen/agent_pb.ts +15274 -0
  74. package/src/adapters/cursor/kv-store.ts +52 -0
  75. package/src/adapters/cursor/live-models.ts +153 -0
  76. package/src/adapters/cursor/live-smoke-gate.ts +41 -0
  77. package/src/adapters/cursor/live-transport.ts +1214 -0
  78. package/src/adapters/cursor/mcp-config.ts +42 -0
  79. package/src/adapters/cursor/mcp-manager.ts +333 -0
  80. package/src/adapters/cursor/message-mapper.ts +49 -0
  81. package/src/adapters/cursor/native-exec-common.ts +55 -0
  82. package/src/adapters/cursor/native-exec-desktop.ts +184 -0
  83. package/src/adapters/cursor/native-exec-fs.ts +329 -0
  84. package/src/adapters/cursor/native-exec-mcp.ts +153 -0
  85. package/src/adapters/cursor/native-exec-network.ts +43 -0
  86. package/src/adapters/cursor/native-exec-shell.ts +548 -0
  87. package/src/adapters/cursor/native-exec-tools.ts +118 -0
  88. package/src/adapters/cursor/native-exec.ts +576 -0
  89. package/src/adapters/cursor/protobuf-events.ts +563 -0
  90. package/src/adapters/cursor/protobuf-request.ts +714 -0
  91. package/src/adapters/cursor/request-builder.ts +255 -0
  92. package/src/adapters/cursor/thread-continuity.ts +67 -0
  93. package/src/adapters/cursor/tool-definitions.ts +505 -0
  94. package/src/adapters/cursor/transport-retry.ts +132 -0
  95. package/src/adapters/cursor/transport.ts +57 -0
  96. package/src/adapters/cursor/types.ts +52 -0
  97. package/src/adapters/cursor.ts +196 -0
  98. package/src/adapters/google-antigravity-replay.ts +303 -0
  99. package/src/adapters/google-antigravity-wire.ts +108 -0
  100. package/src/adapters/google-errors.ts +85 -0
  101. package/src/adapters/google-http.ts +100 -0
  102. package/src/adapters/google-tool-schema.ts +173 -0
  103. package/src/adapters/google-truncation.ts +13 -0
  104. package/src/adapters/google-wire-compiler.ts +232 -0
  105. package/src/adapters/google.ts +758 -0
  106. package/src/adapters/identity.ts +44 -0
  107. package/src/adapters/image.ts +23 -0
  108. package/src/adapters/kiro-constants.ts +16 -0
  109. package/src/adapters/kiro-errors.ts +197 -0
  110. package/src/adapters/kiro-events.ts +179 -0
  111. package/src/adapters/kiro-images.ts +129 -0
  112. package/src/adapters/kiro-retry.ts +312 -0
  113. package/src/adapters/kiro-thinking.ts +96 -0
  114. package/src/adapters/kiro-tool-fallback.ts +36 -0
  115. package/src/adapters/kiro-tools.ts +215 -0
  116. package/src/adapters/kiro-truncation.ts +33 -0
  117. package/src/adapters/kiro-wire.ts +129 -0
  118. package/src/adapters/kiro.ts +1898 -0
  119. package/src/adapters/mimo-free.ts +263 -0
  120. package/src/adapters/openai-chat.ts +1005 -0
  121. package/src/adapters/openai-responses.ts +1137 -0
  122. package/src/adapters/run-turn-queue.ts +114 -0
  123. package/src/adapters/tool-catalog-nudge.ts +71 -0
  124. package/src/adapters/upstream-http-error.ts +48 -0
  125. package/src/bridge.ts +1619 -0
  126. package/src/chat/inbound.ts +295 -0
  127. package/src/chat/outbound.ts +765 -0
  128. package/src/claude/agents-inject.ts +243 -0
  129. package/src/claude/alias.ts +149 -0
  130. package/src/claude/auth-detect.ts +229 -0
  131. package/src/claude/auth-mode-migration.ts +32 -0
  132. package/src/claude/auth-mode.ts +62 -0
  133. package/src/claude/context-windows.ts +189 -0
  134. package/src/claude/desktop-3p-guard.ts +35 -0
  135. package/src/claude/desktop-3p-paths.ts +84 -0
  136. package/src/claude/desktop-3p.ts +381 -0
  137. package/src/claude/desktop-health.ts +26 -0
  138. package/src/claude/desktop-profile.ts +263 -0
  139. package/src/claude/gateway-cache.ts +70 -0
  140. package/src/claude/inbound-debug.ts +163 -0
  141. package/src/claude/inbound.ts +509 -0
  142. package/src/claude/model-info.ts +151 -0
  143. package/src/claude/outbound.ts +872 -0
  144. package/src/cli/access.ts +108 -0
  145. package/src/cli/account-api.ts +268 -0
  146. package/src/cli/account-auth.ts +223 -0
  147. package/src/cli/account-extended.ts +350 -0
  148. package/src/cli/account.ts +275 -0
  149. package/src/cli/agent-driven.ts +70 -0
  150. package/src/cli/agent.ts +184 -0
  151. package/src/cli/catalog-prewarm.ts +27 -0
  152. package/src/cli/claude-desktop.ts +188 -0
  153. package/src/cli/claude.ts +286 -0
  154. package/src/cli/codex-shim-autorestore.ts +45 -0
  155. package/src/cli/combo.ts +119 -0
  156. package/src/cli/config-command.ts +145 -0
  157. package/src/cli/debug.ts +228 -0
  158. package/src/cli/doctor.ts +930 -0
  159. package/src/cli/export-command.ts +187 -0
  160. package/src/cli/help.ts +330 -0
  161. package/src/cli/index.ts +1103 -0
  162. package/src/cli/init.ts +224 -0
  163. package/src/cli/integrations.ts +142 -0
  164. package/src/cli/interactive-confirm.ts +133 -0
  165. package/src/cli/internal-dispatch.ts +20 -0
  166. package/src/cli/models-runtime.ts +212 -0
  167. package/src/cli/models.ts +336 -0
  168. package/src/cli/observe.ts +117 -0
  169. package/src/cli/opencode.ts +586 -0
  170. package/src/cli/provider-runtime.ts +162 -0
  171. package/src/cli/provider.ts +463 -0
  172. package/src/cli/runtime-api.ts +325 -0
  173. package/src/cli/star-prompt.ts +134 -0
  174. package/src/cli/status-oauth.ts +78 -0
  175. package/src/cli/status.ts +321 -0
  176. package/src/cli/system-command.ts +114 -0
  177. package/src/cli/tray-proxy.ts +52 -0
  178. package/src/cli/v2.ts +173 -0
  179. package/src/cli.ts +10 -0
  180. package/src/clients/config-export.ts +377 -0
  181. package/src/codex/account-id.ts +34 -0
  182. package/src/codex/account-label.ts +34 -0
  183. package/src/codex/account-lifecycle.ts +55 -0
  184. package/src/codex/account-namespace-match.ts +63 -0
  185. package/src/codex/account-namespaces.ts +149 -0
  186. package/src/codex/account-pause.ts +20 -0
  187. package/src/codex/account-runtime-state.ts +31 -0
  188. package/src/codex/account-store.ts +517 -0
  189. package/src/codex/account-usability.ts +20 -0
  190. package/src/codex/app-server-processes.ts +756 -0
  191. package/src/codex/auth-api.ts +1540 -0
  192. package/src/codex/auth-collision.ts +107 -0
  193. package/src/codex/auth-context.ts +352 -0
  194. package/src/codex/autostart-health.ts +149 -0
  195. package/src/codex/catalog/aggregation.ts +378 -0
  196. package/src/codex/catalog/bundled.ts +251 -0
  197. package/src/codex/catalog/effort.ts +355 -0
  198. package/src/codex/catalog/metadata.ts +180 -0
  199. package/src/codex/catalog/parsing.ts +456 -0
  200. package/src/codex/catalog/provider-fetch.ts +902 -0
  201. package/src/codex/catalog/sync.ts +620 -0
  202. package/src/codex/catalog.ts +12 -0
  203. package/src/codex/data/upstream-models.json +830 -0
  204. package/src/codex/exec-invocation.ts +22 -0
  205. package/src/codex/features.ts +969 -0
  206. package/src/codex/history-migration-guardian.ts +102 -0
  207. package/src/codex/history-provider.ts +776 -0
  208. package/src/codex/home.ts +206 -0
  209. package/src/codex/inject.ts +799 -0
  210. package/src/codex/injected-marker.ts +72 -0
  211. package/src/codex/journal.ts +163 -0
  212. package/src/codex/main-account-cache.ts +32 -0
  213. package/src/codex/main-account.ts +40 -0
  214. package/src/codex/model-cache.ts +227 -0
  215. package/src/codex/paths.ts +65 -0
  216. package/src/codex/plugins-doctor.ts +242 -0
  217. package/src/codex/pool-rotation.ts +225 -0
  218. package/src/codex/project-config-warnings.ts +411 -0
  219. package/src/codex/quota.ts +411 -0
  220. package/src/codex/refresh.ts +53 -0
  221. package/src/codex/routing.ts +1477 -0
  222. package/src/codex/runtime.ts +538 -0
  223. package/src/codex/shim.ts +1189 -0
  224. package/src/codex/subagent-defaults.ts +550 -0
  225. package/src/codex/subagent-model-fallback.ts +469 -0
  226. package/src/codex/sync.ts +130 -0
  227. package/src/codex/warmup.ts +192 -0
  228. package/src/codex/websocket-registry.ts +100 -0
  229. package/src/combos/failover.ts +140 -0
  230. package/src/combos/index.ts +41 -0
  231. package/src/combos/request.ts +62 -0
  232. package/src/combos/resolve.ts +232 -0
  233. package/src/combos/types.ts +326 -0
  234. package/src/config.ts +2355 -0
  235. package/src/generated/jawcode-model-metadata.ts +104 -0
  236. package/src/github/star-state.ts +203 -0
  237. package/src/grok/inject.ts +519 -0
  238. package/src/grok/status.ts +121 -0
  239. package/src/grok/sync.ts +66 -0
  240. package/src/images/artifacts.ts +516 -0
  241. package/src/images/fulfill-video.ts +163 -0
  242. package/src/images/fulfill.ts +149 -0
  243. package/src/images/index.ts +4 -0
  244. package/src/images/loop.ts +829 -0
  245. package/src/images/plan.ts +133 -0
  246. package/src/images/synthetic-tool.ts +133 -0
  247. package/src/images/types.ts +41 -0
  248. package/src/images/xai-client.ts +141 -0
  249. package/src/images/xai-video-client.ts +163 -0
  250. package/src/index.ts +22 -0
  251. package/src/lib/abort.ts +146 -0
  252. package/src/lib/admin-secrets.ts +25 -0
  253. package/src/lib/admission.ts +83 -0
  254. package/src/lib/app-owned-memory-stores.ts +173 -0
  255. package/src/lib/app-owned-memory.ts +265 -0
  256. package/src/lib/bounded-body.ts +202 -0
  257. package/src/lib/bun-binary-validator.d.mts +3 -0
  258. package/src/lib/bun-binary-validator.mjs +18 -0
  259. package/src/lib/bun-runtime.ts +71 -0
  260. package/src/lib/bun-stream-caps.ts +126 -0
  261. package/src/lib/config-ownership.ts +360 -0
  262. package/src/lib/crash-guard.ts +344 -0
  263. package/src/lib/debug-log-buffer.ts +83 -0
  264. package/src/lib/debug-settings.ts +108 -0
  265. package/src/lib/debug.ts +31 -0
  266. package/src/lib/destination-policy.ts +316 -0
  267. package/src/lib/errors.ts +364 -0
  268. package/src/lib/eventstream-decoder.ts +253 -0
  269. package/src/lib/gcp-adc.ts +341 -0
  270. package/src/lib/injection-debug-log.ts +58 -0
  271. package/src/lib/open-url.ts +25 -0
  272. package/src/lib/pinned-http.ts +151 -0
  273. package/src/lib/privacy.ts +20 -0
  274. package/src/lib/process-control.ts +165 -0
  275. package/src/lib/provider-outbound.ts +170 -0
  276. package/src/lib/provider-url.ts +14 -0
  277. package/src/lib/proxy-env.ts +18 -0
  278. package/src/lib/redact.ts +105 -0
  279. package/src/lib/retry-after.ts +55 -0
  280. package/src/lib/service-secrets.ts +25 -0
  281. package/src/lib/shadow-call.ts +30 -0
  282. package/src/lib/sidecar-tracker.ts +52 -0
  283. package/src/lib/sse-decoder.ts +323 -0
  284. package/src/lib/state-store-registrations.ts +109 -0
  285. package/src/lib/state-store-sweeper.ts +184 -0
  286. package/src/lib/test-home-guard.ts +90 -0
  287. package/src/lib/token-estimate.ts +69 -0
  288. package/src/lib/translator-budget.ts +356 -0
  289. package/src/lib/upstream-retry.ts +239 -0
  290. package/src/lib/win-exec.ts +115 -0
  291. package/src/lib/win-paths.ts +68 -0
  292. package/src/lib/windows-elevation.ts +705 -0
  293. package/src/lib/windows-secret-acl.ts +514 -0
  294. package/src/lib/winsw.ts +375 -0
  295. package/src/oauth/anthropic-routing.ts +594 -0
  296. package/src/oauth/anthropic.ts +177 -0
  297. package/src/oauth/callback-server.ts +294 -0
  298. package/src/oauth/chatgpt.ts +150 -0
  299. package/src/oauth/cursor.ts +211 -0
  300. package/src/oauth/github-copilot.ts +428 -0
  301. package/src/oauth/google-antigravity.ts +230 -0
  302. package/src/oauth/health.ts +399 -0
  303. package/src/oauth/index.ts +1173 -0
  304. package/src/oauth/key-providers.ts +108 -0
  305. package/src/oauth/kimi.ts +213 -0
  306. package/src/oauth/kiro-credentials.ts +726 -0
  307. package/src/oauth/kiro.ts +577 -0
  308. package/src/oauth/local-token-detect.ts +121 -0
  309. package/src/oauth/log.ts +48 -0
  310. package/src/oauth/login-cli.ts +163 -0
  311. package/src/oauth/pkce.ts +15 -0
  312. package/src/oauth/store.ts +630 -0
  313. package/src/oauth/token-guardian.ts +303 -0
  314. package/src/oauth/types.ts +62 -0
  315. package/src/oauth/xai.ts +241 -0
  316. package/src/providers/alibaba-region-backup.ts +75 -0
  317. package/src/providers/alibaba-region-migration.ts +156 -0
  318. package/src/providers/alibaba-region-startup.ts +36 -0
  319. package/src/providers/antigravity-models.ts +205 -0
  320. package/src/providers/api-keys.ts +140 -0
  321. package/src/providers/base-url-choices.ts +64 -0
  322. package/src/providers/context-cap.ts +65 -0
  323. package/src/providers/derive.ts +339 -0
  324. package/src/providers/free-directory.ts +184 -0
  325. package/src/providers/github-copilot-transport.ts +56 -0
  326. package/src/providers/key-failover.ts +203 -0
  327. package/src/providers/kiro-models.ts +67 -0
  328. package/src/providers/label.ts +19 -0
  329. package/src/providers/model-discovery.ts +356 -0
  330. package/src/providers/openai-sidecar.ts +175 -0
  331. package/src/providers/openai-tier-startup.ts +27 -0
  332. package/src/providers/openai-tiers.ts +301 -0
  333. package/src/providers/openai-virtual-models.ts +82 -0
  334. package/src/providers/openrouter-routing.ts +102 -0
  335. package/src/providers/provider-id-rewrite.ts +150 -0
  336. package/src/providers/quota.ts +1045 -0
  337. package/src/providers/registry.ts +1600 -0
  338. package/src/providers/slug-codec.ts +67 -0
  339. package/src/providers/xai-transport.ts +141 -0
  340. package/src/reasoning-effort.ts +135 -0
  341. package/src/responses/compaction.ts +117 -0
  342. package/src/responses/parser.ts +656 -0
  343. package/src/responses/reasoning-envelope.ts +52 -0
  344. package/src/responses/schema.ts +159 -0
  345. package/src/responses/spill-store.ts +394 -0
  346. package/src/responses/state.ts +895 -0
  347. package/src/responses/tool-groups.ts +19 -0
  348. package/src/router.ts +425 -0
  349. package/src/server/adapter-resolve.ts +80 -0
  350. package/src/server/auth-cors.ts +530 -0
  351. package/src/server/chat-completions.ts +368 -0
  352. package/src/server/claude-messages.ts +914 -0
  353. package/src/server/effort-policy.ts +172 -0
  354. package/src/server/gui-static.ts +123 -0
  355. package/src/server/image-retry.ts +42 -0
  356. package/src/server/images.ts +476 -0
  357. package/src/server/index.ts +1126 -0
  358. package/src/server/lifecycle.ts +305 -0
  359. package/src/server/live.ts +598 -0
  360. package/src/server/management/agent-settings-routes.ts +1039 -0
  361. package/src/server/management/api-access.ts +141 -0
  362. package/src/server/management/api-key-usage.ts +167 -0
  363. package/src/server/management/body.ts +35 -0
  364. package/src/server/management/combo-routes.ts +220 -0
  365. package/src/server/management/config-routes.ts +422 -0
  366. package/src/server/management/context.ts +31 -0
  367. package/src/server/management/logs-usage-routes.ts +516 -0
  368. package/src/server/management/model-routes.ts +525 -0
  369. package/src/server/management/oauth-account-routes.ts +561 -0
  370. package/src/server/management/provider-routes.ts +556 -0
  371. package/src/server/management/shared.ts +277 -0
  372. package/src/server/management/sidebar-routes.ts +88 -0
  373. package/src/server/management/system-restart.ts +179 -0
  374. package/src/server/management/system-routes.ts +117 -0
  375. package/src/server/management/usage-summary-cache.ts +86 -0
  376. package/src/server/management-api.ts +211 -0
  377. package/src/server/management-auth.ts +267 -0
  378. package/src/server/memory-watchdog.ts +156 -0
  379. package/src/server/port-reclaim.ts +307 -0
  380. package/src/server/ports.ts +116 -0
  381. package/src/server/proxy-liveness.ts +201 -0
  382. package/src/server/relay-eager.ts +313 -0
  383. package/src/server/relay.ts +1060 -0
  384. package/src/server/request-decompress.ts +132 -0
  385. package/src/server/request-log-conversation.ts +168 -0
  386. package/src/server/request-log.ts +1046 -0
  387. package/src/server/responses/collaboration.ts +354 -0
  388. package/src/server/responses/compact.ts +384 -0
  389. package/src/server/responses/core.ts +2756 -0
  390. package/src/server/responses/encrypted-payload.ts +308 -0
  391. package/src/server/responses/fetch-helpers.ts +157 -0
  392. package/src/server/responses/passthrough-error.ts +78 -0
  393. package/src/server/responses/terminal-guard.ts +230 -0
  394. package/src/server/responses/upstream-error.ts +48 -0
  395. package/src/server/responses-image-gen-repair.ts +132 -0
  396. package/src/server/responses-item-id-repair.ts +224 -0
  397. package/src/server/responses.ts +9 -0
  398. package/src/server/search.ts +136 -0
  399. package/src/server/sse-payload-rewrite.ts +175 -0
  400. package/src/server/startup-action-control.ts +308 -0
  401. package/src/server/startup-health-cache.ts +113 -0
  402. package/src/server/system-env.ts +413 -0
  403. package/src/server/windows-tcp-drop.ts +184 -0
  404. package/src/server/windows-tray-control.ts +41 -0
  405. package/src/server/ws-bridge.ts +471 -0
  406. package/src/service.ts +2554 -0
  407. package/src/stall-timeout.ts +20 -0
  408. package/src/storage/cleanup-job.ts +57 -0
  409. package/src/storage/cleanup.ts +3085 -0
  410. package/src/storage/policy-job.ts +457 -0
  411. package/src/storage/policy-scheduler.ts +40 -0
  412. package/src/storage/policy-worker.ts +59 -0
  413. package/src/storage/policy.ts +527 -0
  414. package/src/storage/restore-job.ts +299 -0
  415. package/src/storage/restore-worker.ts +58 -0
  416. package/src/storage/scanner.ts +238 -0
  417. package/src/storage/storage-mutation-coordinator.ts +139 -0
  418. package/src/storage/worker-lifecycle.ts +215 -0
  419. package/src/tray/assets/opencodex-tray-offline.ico +0 -0
  420. package/src/tray/assets/opencodex-tray-online.ico +0 -0
  421. package/src/tray/assets/opencodex-tray-warning.ico +0 -0
  422. package/src/tray/assets/opencodex-tray.png +0 -0
  423. package/src/tray/windows-tray.ps1 +290 -0
  424. package/src/tray/windows.ts +730 -0
  425. package/src/types.ts +1237 -0
  426. package/src/update/badge.ts +72 -0
  427. package/src/update/index.ts +392 -0
  428. package/src/update/job.ts +1513 -0
  429. package/src/update/notify.ts +257 -0
  430. package/src/update/npm-invocation.d.mts +23 -0
  431. package/src/update/npm-invocation.mjs +94 -0
  432. package/src/update/tray-update-plan.d.mts +18 -0
  433. package/src/update/tray-update-plan.mjs +38 -0
  434. package/src/usage/cost.ts +0 -0
  435. package/src/usage/debug.ts +97 -0
  436. package/src/usage/expected-prices.ts +164 -0
  437. package/src/usage/log.ts +658 -0
  438. package/src/usage/summary.ts +585 -0
  439. package/src/usage/totals.ts +14 -0
  440. package/src/vision/anthropic-describe.ts +185 -0
  441. package/src/vision/describe.ts +125 -0
  442. package/src/vision/index.ts +467 -0
  443. package/src/web-search/anthropic-executor.ts +189 -0
  444. package/src/web-search/executor.ts +105 -0
  445. package/src/web-search/format-result.ts +89 -0
  446. package/src/web-search/index.ts +196 -0
  447. package/src/web-search/loop.ts +664 -0
  448. package/src/web-search/parse.ts +220 -0
  449. package/src/web-search/progress-stream.ts +342 -0
  450. package/src/web-search/synthetic-tool.ts +47 -0
  451. package/vendor/ocx-notch/win32-x64/ocx-notch.exe +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 opencodex contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,219 @@
1
+ <h3 align="center">make codex open!</h3>
2
+ <p align="center"><b>Universal provider proxy for OpenAI Codex, Claude Code, Claude Desktop &amp; Grok Build</b><br>
3
+ Two commands, and every one of them runs any LLM you point it at.</p>
4
+
5
+ <p align="center">
6
+ <a href="https://x.com/claudeebum"><img src="https://img.shields.io/badge/%40claudeebum-000000?logo=x&logoColor=white" alt="Follow @claudeebum on X"></a>
7
+ <a href="https://www.npmjs.com/package/@coseung2/opencodex"><img src="https://img.shields.io/npm/v/@coseung2/opencodex?color=cb3837&label=npm&logo=npm" alt="npm version"></a>
8
+ <a href="https://github.com/coseung2/opencodex/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@coseung2/opencodex?color=blue" alt="license"></a>
9
+ <img src="https://img.shields.io/node/v/@coseung2/opencodex?logo=node.js&label=node" alt="node version">
10
+ </p>
11
+
12
+ ```bash
13
+ npm install -g @coseung2/opencodex@next
14
+ ocx start # proxy + dashboard on localhost:10100
15
+ ```
16
+
17
+ <table align="center">
18
+ <tr>
19
+ <td width="50%" align="center">
20
+ <img src="assets/claude-code-models.gif" alt="Claude Code running a routed model through opencodex — the status bar shows gpt-5.6-luna-medium as the active model" width="410"><br>
21
+ <sub><b>Claude Code, running any model.</b><br>The picker is stock Claude Code. The brain behind it isn't.</sub>
22
+ </td>
23
+ <td width="50%" align="center">
24
+ <img src="assets/demo.gif" alt="opencodex demo — running a task in the Codex app on a routed non-OpenAI model" width="410"><br>
25
+ <sub><b>Codex, running any model.</b><br>Pick a provider and go — same workflow, different brain.</sub>
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td width="50%" align="center">
30
+ <img src="assets/claude-desktop-subagent.gif" alt="Claude Desktop answering as Claude Opus 4.8, then dispatching a GPT-5.6 Sol subagent through opencodex" width="410"><br>
31
+ <sub><b>Claude Desktop, running any model.</b><br>Opus answers, then hands the task to a GPT-5.6 Sol subagent.</sub>
32
+ </td>
33
+ <td width="50%" align="center">
34
+ <img src="assets/grok-build-subagent.gif" alt="Grok Build running GPT-5.6 Sol through opencodex and calling a Kimi K3 subagent" width="410"><br>
35
+ <sub><b>Grok Build, running any model.</b><br>Sol drives the session and calls a Kimi K3 subagent.</sub>
36
+ </td>
37
+ </tr>
38
+ </table>
39
+
40
+ <p align="center">
41
+ <a href="README.md">English</a> · <a href="readme/README.ko.md">한국어</a> · <a href="readme/README.zh-CN.md">简体中文</a> · <a href="readme/README.ru.md">Русский</a> · <a href="readme/README.ja.md">日本語</a> · 📖 <a href="https://opencodex.me/"><b>Full documentation →</b></a>
42
+ </p>
43
+
44
+ This npm distribution is maintained by **coseung2** as a fork of
45
+ [`lidge-jun/opencodex`](https://github.com/lidge-jun/opencodex). It preserves the upstream MIT
46
+ license and attribution while shipping fork-specific integration work. The same package also
47
+ includes the Windows x64 `ocx-notch` launcher and native executable; the standalone
48
+ `@coseung2/ocx-notch@0.1.1` package remains available for compatibility.
49
+
50
+ opencodex is a lightweight local proxy that translates Codex's Responses API into whatever your
51
+ provider speaks — streaming, tool calls, reasoning tokens, images, in both directions. Use Claude,
52
+ Gemini, Grok, GLM, DeepSeek, Kimi, Qwen, Ollama, or any other LLM with Codex, Claude Code, Claude
53
+ Desktop, and Grok Build. It can also manage a **ChatGPT account pool** for Codex auth: add accounts,
54
+ refresh their quotas in the dashboard, and let new sessions auto-route to the lowest-usage healthy
55
+ account while existing threads stay pinned to the account that started them.
56
+
57
+ ## Quick start
58
+
59
+ ### For humans
60
+
61
+ ```bash
62
+ npm install -g @coseung2/opencodex@next # Node 18+; the Bun runtime is bundled automatically
63
+ ocx start # or `ocx service` to run it in the background
64
+ ```
65
+
66
+ Open **http://localhost:10100** and configure everything in the web dashboard — add providers
67
+ (40+ built-ins, or any OpenAI-compatible endpoint), pick models, manage accounts. `ocx gui`
68
+ re-opens the dashboard at any time.
69
+
70
+ ### For agents
71
+
72
+ ```bash
73
+ npm install -g @coseung2/opencodex@next
74
+ ocx start # or `ocx service`
75
+ ocx init # interactive setup: writes ~/.opencodex/config.json and wires Codex
76
+ ```
77
+
78
+ `ocx init` never starts the proxy; start it first (or after — either order works, but headless
79
+ commands like `ocx provider add` and `ocx combo set` talk to the **live** proxy and exit nonzero
80
+ when it is unreachable). `ocx status` / `ocx doctor` / `ocx health` report the running state.
81
+
82
+ > **The GitHub star prompt is the user's decision, never an agent's.** An interactive `ocx start`
83
+ > or `ocx service install` may ask once whether to star this repository. If you are an agent,
84
+ > never answer that prompt and never call `gh`, GitHub's star API, or `POST /api/github/star` on
85
+ > the user's behalf — the CLI suppresses the prompt for agent-driven runs and the API refuses them
86
+ > with `403 agent_consent_required`. Ask the user once in your reply, act only on an explicit yes,
87
+ > and never ask again.
88
+
89
+ ## Supported platforms
90
+
91
+ | OS | Status | Service manager |
92
+ |---|---|---|
93
+ | macOS (arm64 / x64) | Fully supported | launchd |
94
+ | Linux (x64 / arm64) | Fully supported | systemd (user unit) |
95
+ | Windows (x64) | Fully supported | Task Scheduler (hidden) / opt-in native service (`--native`, WinSW) |
96
+
97
+ Requires [Node](https://nodejs.org) 18+. The Bun runtime is bundled on `npm install` — no separate
98
+ Bun install needed, no WSL needed on Windows. The bundled `ocx-notch` command is available only on
99
+ Windows x64; `ocx` and `opencodex` remain cross-platform. If npm blocked the bundled runtime's install scripts,
100
+ see the [installation docs](https://opencodex.me/getting-started/installation/).
101
+
102
+ ## Highlights
103
+
104
+ - **Use any LLM with Codex, Claude Code, Claude Desktop, and Grok Build** — 40+ providers out of
105
+ the box, each keeping its own native UI.
106
+ - **Pool ChatGPT accounts safely** — thread affinity, quota-aware auto-switching, cooldown and
107
+ fail-closed auth handling.
108
+ - **Combos** — one virtual model id with failover or weighted round-robin across providers. See
109
+ the [combo guide](https://opencodex.me/guides/combos/).
110
+ - **Sub-agents on any model** — feature routed models in Codex's sub-agent picker, with v1/v2
111
+ surface control and fallback chains. See the
112
+ [sub-agent guide](https://opencodex.me/guides/sub-agent-surface/).
113
+ - **Log in once, skip the API key** — OAuth for xAI, Anthropic, and Kimi; or forward
114
+ `codex login`, paste a key, or use `${ENV_VAR}` references.
115
+ - **Web search & vision sidecars** — non-OpenAI models get real web search and image understanding
116
+ through a sidecar over your ChatGPT login.
117
+ - **See what's happening** — the dashboard shows providers, OAuth status, model selection, and a
118
+ live request log with cache token counts.
119
+ - **Clean exit, zero residue** — `ocx stop` restores Codex to its original configuration.
120
+
121
+ ## Model routing
122
+
123
+ Target any configured provider and model with the `provider/model` syntax:
124
+
125
+ ```bash
126
+ codex -m "anthropic/claude-opus-5" "Explain this stack trace"
127
+ codex -m "google/gemini-3-pro" "Write unit tests for auth.ts"
128
+ codex -m "ollama/llama3" "Refactor this function"
129
+ ```
130
+
131
+ Omit the `provider/` prefix to use the default provider or auto-match by model name pattern.
132
+ Provider model ids containing `/` are exposed with inner slashes aliased to `-`; the raw
133
+ full-slash form keeps working too. Details: [model routing docs](https://opencodex.me/guides/model-routing/).
134
+
135
+ ## Providers & adapters
136
+
137
+ OpenAI (ChatGPT login or API key), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama
138
+ (local + Cloud), Cursor (experimental), and every OpenAI-compatible endpoint — plus DeepSeek,
139
+ Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax,
140
+ Qwen Cloud, SiliconFlow, and more. Full list: `ocx init` or the
141
+ [provider docs](https://opencodex.me/guides/providers/).
142
+
143
+ ## CLI
144
+
145
+ ```bash
146
+ ocx init # interactive setup (writes config, wires Codex, offers the shim)
147
+ ocx start [--port 10100] # start the proxy in the foreground
148
+ ocx stop # stop + restore native Codex
149
+ ocx service [install|start|stop|status|uninstall|remove] # background service
150
+ ocx codex-shim install # start the proxy on demand whenever `codex` launches
151
+ ocx status # is the proxy running?
152
+ ocx gui # open the web dashboard
153
+ ocx provider <...> # manage providers (list/add/edit/test/remove)
154
+ ocx account <...> # manage ChatGPT accounts & API-key pools
155
+ ocx combo <...> # manage failover / round-robin combos
156
+ ocx v2 <...> # multi-agent v1/v2 surface controls
157
+ ocx update [--tag next] # update this fork's prerelease channel
158
+ ocx-notch # launch the Windows x64 Notch companion
159
+ ```
160
+
161
+ Unpinned starts may pick another free port if the preferred one is busy; an explicit `--port`
162
+ never hops. Full reference: [CLI docs](https://opencodex.me/reference/cli/).
163
+
164
+ ### Autostart: service vs shim
165
+
166
+ Use the **service** (`ocx service`) for an always-on proxy that restarts on crash. Use the
167
+ **shim** (`ocx codex-shim install`) for lightweight, on-demand startup without a background
168
+ daemon. Remove them with `ocx service uninstall` / `ocx codex-shim uninstall`.
169
+
170
+ ### Uninstall
171
+
172
+ ```bash
173
+ ocx uninstall # stop, remove service/shim, restore native Codex, clean up state
174
+ npm uninstall -g @coseung2/opencodex
175
+ ```
176
+
177
+ ## Remote access
178
+
179
+ By default opencodex binds to `127.0.0.1` and needs no extra authentication. Binding beyond
180
+ loopback (`"hostname": "0.0.0.0"`) **requires** a bearer token — the proxy refuses to start
181
+ without `OPENCODEX_API_AUTH_TOKEN`, and every client request must carry it as
182
+ `x-opencodex-api-key`. Details: [configuration reference](https://opencodex.me/reference/configuration/).
183
+
184
+ ## Documentation
185
+
186
+ The public docs — install, providers, routing, combos, sub-agents, sidecars, integrations, and
187
+ the CLI/config/management-API references — are built from [`docs-site/`](./docs-site) and
188
+ published to **[opencodex.me](https://opencodex.me/)**.
189
+
190
+ Maintainer source-of-truth notes live under [`structure/`](./structure), contributor setup in
191
+ [`CONTRIBUTING.md`](./CONTRIBUTING.md), and security reporting in [`SECURITY.md`](./SECURITY.md).
192
+ Report undisclosed vulnerabilities privately through
193
+ [GitHub private vulnerability reporting](https://github.com/coseung2/opencodex/security/advisories/new),
194
+ not a public issue.
195
+
196
+ ## Development
197
+
198
+ Source development requires the `bun` CLI on your `PATH`. This is separate from the published npm
199
+ package's bundled Bun runtime, which is used only by installed `ocx` commands.
200
+
201
+ ```bash
202
+ git clone https://github.com/coseung2/opencodex.git
203
+ cd opencodex
204
+ bun install
205
+ bun run typecheck
206
+ bun run test
207
+ ```
208
+
209
+ See **[Contributing](./CONTRIBUTING.md)**.
210
+
211
+ ## Disclaimer
212
+
213
+ opencodex is an independent, community-maintained project and is **not affiliated with or endorsed by OpenAI, Anthropic, or any other provider**.
214
+
215
+ Some providers — notably Anthropic (Claude) — may suspend or restrict accounts that route API traffic through third-party proxies. **Use at your own risk (UAYOR).** Before connecting a provider, review its Terms of Service to confirm that proxy-based access is permitted. The opencodex maintainers are not responsible for any account actions taken by upstream providers.
216
+
217
+ ## License
218
+
219
+ MIT
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from "node:child_process";
4
+ import { existsSync, readFileSync } from "node:fs";
5
+ import { dirname, join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const PACKAGE_NAME = "@coseung2/opencodex";
9
+ const NOTCH_VERSION = "0.1.1";
10
+ const here = dirname(fileURLToPath(import.meta.url));
11
+
12
+ function packageVersion() {
13
+ try {
14
+ return JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8")).version ?? "unknown";
15
+ } catch {
16
+ return "unknown";
17
+ }
18
+ }
19
+
20
+ function fail(message) {
21
+ console.error(`ocx-notch: ${message}`);
22
+ process.exit(1);
23
+ }
24
+
25
+ if (process.argv.includes("--version") || process.argv.includes("-V")) {
26
+ console.log(`ocx-notch ${NOTCH_VERSION} (bundled with ${PACKAGE_NAME} ${packageVersion()})`);
27
+ process.exit(0);
28
+ }
29
+
30
+ if (process.argv.includes("--help") || process.argv.includes("-h")) {
31
+ console.log(
32
+ "Usage: ocx-notch [--help] [--version]\n\n"
33
+ + "Launch the bundled Windows x64 Notch companion. The desktop application accepts no CLI options.",
34
+ );
35
+ process.exit(0);
36
+ }
37
+
38
+ if (process.platform !== "win32") {
39
+ fail(
40
+ `unsupported operating system "${process.platform}"; the ocx-notch command `
41
+ + `included with ${PACKAGE_NAME} supports Windows x64 only.`,
42
+ );
43
+ }
44
+
45
+ if (process.arch !== "x64") {
46
+ fail(
47
+ `unsupported architecture "${process.arch}"; the ocx-notch command `
48
+ + `included with ${PACKAGE_NAME} supports Windows x64 only.`,
49
+ );
50
+ }
51
+
52
+ const nativeBinary = join(
53
+ here,
54
+ "..",
55
+ "vendor",
56
+ "ocx-notch",
57
+ "win32-x64",
58
+ "ocx-notch.exe",
59
+ );
60
+
61
+ if (!existsSync(nativeBinary)) {
62
+ fail(
63
+ `native executable is missing at "${nativeBinary}"; reinstall ${PACKAGE_NAME}.`,
64
+ );
65
+ }
66
+
67
+ const child = spawn(nativeBinary, process.argv.slice(2), {
68
+ detached: true,
69
+ stdio: "ignore",
70
+ windowsHide: true,
71
+ });
72
+
73
+ child.once("error", error => {
74
+ console.error(`ocx-notch: failed to launch the native executable: ${error.message}`);
75
+ process.exitCode = 1;
76
+ });
77
+
78
+ child.unref();