@bitkyc08/opencodex 2.63.0 → 2.64.0
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.
- package/AGENTS_INSTALL.md +4 -3
- package/README.md +46 -33
- package/assets/download-linux.svg +10 -0
- package/assets/download-macos.svg +10 -0
- package/assets/download-windows.svg +10 -0
- package/bin/ocx.mjs +12 -4
- package/gui/dist/assets/App-CpuDF3ci.js +50 -0
- package/gui/dist/assets/App-I5AnaSLh.css +1 -0
- package/gui/dist/assets/{Tray-CncKDBTp.js → Tray-B4uEIa1O.js} +1 -1
- package/gui/dist/assets/index-DiBRuK-d.css +1 -0
- package/gui/dist/assets/index-SggB6t3z.js +86 -0
- package/gui/dist/assets/usage-companion-chart-DLbKOJml.js +1 -0
- package/gui/dist/index.html +2 -2
- package/native/remote-workspace-helper/src/protocol.rs +5 -0
- package/package.json +4 -1
- package/src/adapters/anthropic.ts +66 -7
- package/src/adapters/codebuddy/adapter.ts +112 -16
- package/src/adapters/codebuddy/mcp-server.ts +180 -0
- package/src/adapters/codebuddy/scaffold-guard.ts +25 -8
- package/src/adapters/codebuddy/tool-bridge.ts +597 -0
- package/src/adapters/coding-agent/protocol.ts +123 -10
- package/src/adapters/coding-agent/turn.ts +324 -2
- package/src/adapters/command-code-restored-schema.ts +112 -0
- package/src/adapters/command-code-tool-text.ts +589 -0
- package/src/adapters/command-code.ts +80 -6
- package/src/adapters/cursor/catalog.ts +12 -0
- package/src/adapters/cursor/current-request.ts +46 -0
- package/src/adapters/cursor/discovery.ts +1 -1
- package/src/adapters/cursor/effort-map.ts +4 -0
- package/src/adapters/cursor/native-exec.ts +15 -0
- package/src/adapters/cursor/protobuf-events.ts +40 -12
- package/src/adapters/cursor/protobuf-request.ts +83 -18
- package/src/adapters/cursor/request-builder.ts +5 -4
- package/src/adapters/cursor/tool-guidance.ts +1 -1
- package/src/adapters/devin/live-models.ts +7 -0
- package/src/adapters/inline-think-tags.ts +251 -0
- package/src/adapters/kiro/adapter.ts +1 -0
- package/src/adapters/kiro/stream.ts +5 -3
- package/src/adapters/kiro/usage.ts +4 -3
- package/src/adapters/mimo-free.ts +37 -18
- package/src/adapters/openai-chat/messages.ts +5 -5
- package/src/adapters/openai-chat/tool-schema.ts +124 -2
- package/src/adapters/openai-chat.ts +13 -3
- package/src/adapters/openai-responses/passthrough.ts +15 -2
- package/src/adapters/openai-responses/reasoning.ts +14 -1
- package/src/adapters/openai-responses/request-strips.ts +29 -3
- package/src/adapters/openai-responses/tool-output-recovery.ts +9 -3
- package/src/adapters/qoder/adapter.ts +15 -12
- package/src/adapters/qoder/scaffold-guard.ts +45 -13
- package/src/bridge/internal.ts +20 -0
- package/src/bridge/sse.ts +14 -5
- package/src/claude/agents-inject.ts +2 -1
- package/src/claude/desktop-applied-marker.ts +44 -0
- package/src/claude/desktop-profile.ts +22 -12
- package/src/claude/inbound.ts +8 -3
- package/src/cli/access.ts +22 -5
- package/src/cli/account-api.ts +6 -0
- package/src/cli/account-auth.ts +5 -2
- package/src/cli/account.ts +5 -6
- package/src/cli/aside-profiles.ts +61 -1
- package/src/cli/claude-desktop.ts +3 -2
- package/src/cli/claude.ts +3 -1
- package/src/cli/codex-cli-update.ts +2 -2
- package/src/cli/codex-shim-autorestore.ts +3 -0
- package/src/cli/dispatch.ts +12 -4
- package/src/cli/index.ts +98 -10
- package/src/cli/registry.ts +1 -1
- package/src/cli/resolve.ts +113 -1
- package/src/cli/root.ts +5 -0
- package/src/cli/stop-approval.ts +186 -0
- package/src/cli/stop-report.ts +1 -1
- package/src/cli/system-restart-client.ts +19 -4
- package/src/client/hub-client.ts +25 -18
- package/src/clients/config-export.ts +12 -4
- package/src/codex/account-auto-switch.ts +59 -0
- package/src/codex/account-lifecycle.ts +7 -0
- package/src/codex/account-priority.ts +10 -0
- package/src/codex/account-usability.ts +9 -0
- package/src/codex/auth-api/account-list.ts +5 -0
- package/src/codex/auth-api/login-flow.ts +15 -5
- package/src/codex/auth-api/login-state.ts +5 -16
- package/src/codex/auth-api/pool-mode-gate.ts +30 -7
- package/src/codex/auth-api/routes.ts +39 -3
- package/src/codex/auth-context.ts +145 -17
- package/src/codex/catalog/build-entries.ts +2 -1
- package/src/codex/catalog/effort.ts +8 -2
- package/src/codex/catalog/metadata.ts +33 -7
- package/src/codex/catalog/native-models.ts +102 -5
- package/src/codex/catalog/parsing.ts +2 -0
- package/src/codex/catalog/provider-models.ts +19 -6
- package/src/codex/cli-installation-targets.ts +44 -40
- package/src/codex/codex-write-lock.ts +32 -2
- package/src/codex/inject/multi-agent-v2.ts +90 -0
- package/src/codex/inject/plan.ts +365 -0
- package/src/codex/inject.ts +237 -362
- package/src/codex/log-guard/maintenance.ts +30 -13
- package/src/codex/project-config-warnings.ts +47 -7
- package/src/codex/prompt-layers/encoding.ts +41 -0
- package/src/codex/prompt-layers/toml-read.ts +1 -1
- package/src/codex/prompt-layers.ts +17 -13
- package/src/codex/prompt-text-probe.ts +20 -10
- package/src/codex/quota-observation-freshness.ts +34 -0
- package/src/codex/quota-rejection.ts +8 -4
- package/src/codex/quota.ts +4 -2
- package/src/codex/routing/selection.ts +32 -9
- package/src/codex/routing.ts +53 -11
- package/src/codex/subagent-model-fallback.ts +4 -3
- package/src/codex/sync.ts +11 -0
- package/src/codex/windows-installation-files.ts +33 -11
- package/src/codex/write-coordination.ts +4 -0
- package/src/combos/request.ts +6 -2
- package/src/companion/settings.ts +6 -1
- package/src/config/atomic-write.ts +12 -1
- package/src/config/derived-registries.ts +29 -0
- package/src/config/diagnostics.ts +17 -0
- package/src/config/live-reconcile.ts +11 -2
- package/src/config/load-degrade.ts +9 -2
- package/src/config/persist-unlocked.ts +4 -3
- package/src/config/persisted-mutation.ts +94 -0
- package/src/config/provider-validation.ts +1 -1
- package/src/config/proxy-env.ts +62 -12
- package/src/config/rebase-provenance.ts +80 -1
- package/src/config/schema/config-schema.ts +5 -0
- package/src/config/schema/leaf-validators.ts +50 -1
- package/src/config/subagent-models.ts +41 -15
- package/src/config.ts +18 -95
- package/src/generated/compatibility-version.json +330 -218
- package/src/generated/model-metadata.ts +8 -5
- package/src/github/star-state.ts +46 -6
- package/src/grok/inject.ts +74 -40
- package/src/grok/status.ts +11 -4
- package/src/integrations/cursor-effort-table.ts +50 -13
- package/src/integrations/raycast-detect.ts +19 -4
- package/src/integrations/serialize.ts +11 -1
- package/src/lib/bounded-body.ts +30 -0
- package/src/lib/crash-guard.ts +52 -4
- package/src/lib/local-aside-sync-contract.ts +41 -0
- package/src/lib/package-tree-integrity.ts +181 -9
- package/src/lib/proxy-env.ts +18 -1
- package/src/lib/request-failure-attribution.ts +1 -0
- package/src/lib/request-failure-model.ts +3 -0
- package/src/lib/service-secrets.ts +99 -2
- package/src/lib/socks5-fetch.ts +43 -14
- package/src/lib/token-estimate.ts +17 -2
- package/src/oauth/command-code.ts +3 -2
- package/src/oauth/generic-account-failover.ts +29 -1
- package/src/oauth/index.ts +24 -16
- package/src/oauth/login-flow-state.ts +5 -5
- package/src/oauth/meta-muse-device.ts +49 -7
- package/src/oauth/store.ts +74 -9
- package/src/providers/alibaba-region-backup.ts +16 -1
- package/src/providers/anthropic-fast.ts +89 -0
- package/src/providers/anthropic-reset-grant-ledger.ts +288 -0
- package/src/providers/anthropic-reset-grants.ts +329 -0
- package/src/providers/claude-cli-identity.ts +12 -0
- package/src/providers/command-code-efforts.ts +184 -102
- package/src/providers/derive.ts +11 -3
- package/src/providers/fastwire.ts +16 -3
- package/src/providers/label.ts +8 -3
- package/src/providers/model-rename-fields.ts +1 -0
- package/src/providers/openai-virtual-models.ts +1 -0
- package/src/providers/quota/vendor-probes-oauth.ts +2 -1
- package/src/providers/reasoning-metadata.ts +38 -15
- package/src/providers/registry/entries-core.ts +95 -7
- package/src/providers/registry/entries-extended.ts +21 -10
- package/src/providers/registry/model-ids.ts +1 -0
- package/src/providers/registry/model-seeds.ts +31 -3
- package/src/providers/registry/types.ts +3 -1
- package/src/providers/resolved-model-policy-merge.ts +38 -8
- package/src/providers/resolved-model-policy.ts +4 -2
- package/src/providers/service-tier.ts +3 -1
- package/src/reasoning-effort.ts +6 -5
- package/src/responses/code-mode-helper-compat.ts +14 -4
- package/src/responses/code-mode-shell-input.ts +54 -0
- package/src/responses/custom-tool-compat.ts +173 -5
- package/src/responses/parser.ts +38 -2
- package/src/responses/reasoning-replay-cache.ts +26 -0
- package/src/router.ts +11 -1
- package/src/routing/history/indexer.ts +7 -2
- package/src/routing/history/schema.ts +3 -1
- package/src/server/adapter-resolve.ts +2 -2
- package/src/server/auth-cors.ts +3 -0
- package/src/server/chat-completions.ts +14 -1
- package/src/server/chat-native.ts +17 -0
- package/src/server/claude-messages.ts +4 -3
- package/src/server/direct-local-http.ts +45 -19
- package/src/server/gui-session.ts +6 -15
- package/src/server/index/package-tree-guard.ts +53 -0
- package/src/server/index/serve-options.ts +17 -3
- package/src/server/index/startup-warnings.ts +17 -0
- package/src/server/index.ts +15 -17
- package/src/server/lifecycle.ts +8 -0
- package/src/server/live.ts +54 -4
- package/src/server/management/agent-settings-routes.ts +44 -8
- package/src/server/management/anthropic-reset-grant-routes.ts +252 -0
- package/src/server/management/codex-prompt-routes.ts +5 -1
- package/src/server/management/config-routes.ts +14 -4
- package/src/server/management/oauth-account-routes.ts +17 -1
- package/src/server/management/provider-overwrite-carry.ts +164 -0
- package/src/server/management/provider-routes.ts +36 -6
- package/src/server/management/remote-workspace-routes.ts +2 -2
- package/src/server/management/route-registry.ts +2 -0
- package/src/server/management/shadow-call-validation.ts +39 -0
- package/src/server/management/system-restart.ts +72 -6
- package/src/server/management-api.ts +16 -2
- package/src/server/management-auth.ts +52 -8
- package/src/server/proxy-liveness.ts +110 -4
- package/src/server/request-log.ts +26 -9
- package/src/server/request-metrics.ts +5 -0
- package/src/server/responses/adapter-continuation.ts +6 -3
- package/src/server/responses/adapter-dispatch.ts +65 -1
- package/src/server/responses/compact.ts +31 -1
- package/src/server/responses/compaction-routing.ts +28 -3
- package/src/server/responses/core-codex-account.ts +85 -26
- package/src/server/responses/core-combo-failure.ts +16 -15
- package/src/server/responses/core-normalize.ts +5 -1
- package/src/server/responses/core-opaque-recovery.ts +50 -2
- package/src/server/responses/core-options.ts +2 -0
- package/src/server/responses/core-replay.ts +7 -0
- package/src/server/responses/core.ts +1 -1
- package/src/server/responses/encrypted-payload.ts +23 -9
- package/src/server/responses/passthrough-delivery.ts +55 -35
- package/src/server/responses/passthrough-dispatch.ts +12 -13
- package/src/server/responses/policy-fallback.ts +12 -1
- package/src/server/responses/request-prepare.ts +46 -7
- package/src/server/responses/request-spend.ts +31 -15
- package/src/server/responses/run-turn-execution.ts +6 -5
- package/src/server/responses/shadow-target-availability.ts +61 -0
- package/src/server/responses-custom-tool-repair.ts +2 -0
- package/src/service/claim.ts +185 -0
- package/src/service/cli.ts +10 -1
- package/src/service/guarded-manager-target.ts +151 -0
- package/src/service/guards.ts +47 -48
- package/src/service/managing-cli.ts +170 -0
- package/src/service/orchestration.ts +3 -1
- package/src/service/state.ts +4 -0
- package/src/service/systemd.ts +16 -1
- package/src/service.ts +1 -1
- package/src/types/config.ts +8 -0
- package/src/types/provider.ts +16 -0
- package/src/types/request.ts +10 -0
- package/src/types/tools.ts +9 -1
- package/src/types/wire.ts +68 -4
- package/src/types.ts +1 -0
- package/src/update/job.ts +10 -16
- package/src/update/npm-invocation.mjs +17 -16
- package/src/update/transactional-install.d.mts +22 -1
- package/src/update/transactional-install.mjs +176 -19
- package/src/update/update-failure-guidance.d.mts +8 -0
- package/src/update/update-failure-guidance.mjs +47 -0
- package/src/usage/expected-prices.ts +54 -12
- package/src/usage/log.ts +117 -3
- package/src/usage/telemetry-contract.ts +1 -0
- package/src/usage/timeline.ts +34 -6
- package/src/usage/user-cost-overlay-reconciler.ts +3 -3
- package/src/vision/reasoning.ts +2 -4
- package/src/web-search/xai-executor.ts +14 -4
- package/gui/dist/assets/App-BqrsSrIR.js +0 -50
- package/gui/dist/assets/index-C6SJrh0N.js +0 -86
- package/gui/dist/assets/index-DdDunwDb.css +0 -1
- package/gui/dist/assets/usage-companion-chart-CzAAAB1o.js +0 -1
- package/src/adapters/kiro-thinking.ts +0 -112
package/AGENTS_INSTALL.md
CHANGED
|
@@ -111,9 +111,10 @@ Inside the macOS bundle, the sidecar sits beside the app binary in `Contents/Mac
|
|
|
111
111
|
widget extension is `Contents/PlugIns/OpenCodexWidget.appex`. Removing the app removes both;
|
|
112
112
|
it does not remove `~/.opencodex`, and it does not stop a service installed by the CLI.
|
|
113
113
|
|
|
114
|
-
Two beta consequences are worth stating before an install:
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
Two beta consequences are worth stating before an install: release builds of the macOS app are
|
|
115
|
+
signed with a Developer ID and notarized, so macOS shows only its standard confirmation for a
|
|
116
|
+
downloaded app (a local build is ad-hoc signed and may need **Open Anyway** in System Settings →
|
|
117
|
+
Privacy & Security), and the Windows installer is not code-signed, so SmartScreen warns on it. Neither is a failure to route around by disabling a security setting on
|
|
117
118
|
the user's behalf — relay it and let the user decide.
|
|
118
119
|
|
|
119
120
|
## Why this is a file and not a prompt
|
package/README.md
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/banner.png" alt="opencodex — universal provider proxy for Codex, Claude Code, Claude Desktop and Grok Build" width="100%">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
1
5
|
<h3 align="center">make codex open!</h3>
|
|
2
6
|
<p align="center"><b>Universal provider proxy for OpenAI Codex, Claude Code, Claude Desktop & Grok Build</b><br>
|
|
3
7
|
Two commands, and every one of them runs any LLM you point it at.</p>
|
|
4
8
|
|
|
5
9
|
<p align="center">
|
|
6
10
|
<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>
|
|
11
|
+
<a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/github/v/release/lidge-jun/opencodex?label=desktop&logo=github&color=24292f" alt="Latest desktop release"></a>
|
|
7
12
|
<a href="https://www.npmjs.com/package/@bitkyc08/opencodex"><img src="https://img.shields.io/npm/v/@bitkyc08/opencodex?color=cb3837&label=npm&logo=npm" alt="npm version"></a>
|
|
8
13
|
<a href="https://github.com/lidge-jun/opencodex/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@bitkyc08/opencodex?color=blue" alt="license"></a>
|
|
9
14
|
<img src="https://img.shields.io/node/v/@bitkyc08/opencodex?logo=node.js&label=node" alt="node version">
|
|
10
15
|
</p>
|
|
11
16
|
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="assets/download-macos.svg" alt="Download OpenCodex for macOS" width="220"></a>
|
|
19
|
+
<a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="assets/download-windows.svg" alt="Download OpenCodex for Windows" width="220"></a>
|
|
20
|
+
<a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="assets/download-linux.svg" alt="Download OpenCodex for Linux" width="220"></a>
|
|
21
|
+
</p>
|
|
22
|
+
<p align="center"><sub>Desktop app (beta): macOS universal <code>.dmg</code> · Windows x64 <code>.msi</code> · Linux x86_64 <code>.AppImage</code> / <code>.deb</code>. Prefer the terminal? Install the CLI:</sub></p>
|
|
23
|
+
|
|
12
24
|
```bash
|
|
13
25
|
npm install -g @bitkyc08/opencodex
|
|
14
26
|
ocx start
|
|
@@ -78,7 +90,30 @@ account while existing threads stay pinned to the account that started them.
|
|
|
78
90
|
|
|
79
91
|
## Quick start
|
|
80
92
|
|
|
81
|
-
###
|
|
93
|
+
### Desktop app (beta)
|
|
94
|
+
|
|
95
|
+
The desktop app is the same proxy and dashboard in a native window, with a tray and bundled `ocx`.
|
|
96
|
+
It attaches to a proxy that is already running, or starts its bundled one, and the dashboard stays
|
|
97
|
+
on the proxy port (**http://localhost:10100** unless you configured another). Pick the file for your
|
|
98
|
+
platform from the [latest release](https://github.com/lidge-jun/opencodex/releases/latest):
|
|
99
|
+
|
|
100
|
+
| Platform | File | Notes |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| macOS 13+ (Apple Silicon and Intel) | `OpenCodex-<version>-macos.dmg` | Universal build, signed with a Developer ID and notarized |
|
|
103
|
+
| Windows (x64) | `OpenCodex-<version>-windows-x64.msi` | Not code-signed yet: SmartScreen asks once, choose **More info → Run anyway** |
|
|
104
|
+
| Linux (x86_64) | `OpenCodex-<version>-linux-x86_64.AppImage` or `-linux-amd64.deb` | The tray needs an AppIndicator-capable desktop |
|
|
105
|
+
|
|
106
|
+
Every file has a `.sha256` next to it on the release page. On macOS 14+ the app also ships a
|
|
107
|
+
WidgetKit extension that shows proxy status, today's usage and provider quotas; the snapshot model
|
|
108
|
+
it renders lives in [`app/`](./app) (`MenuBarCore`). To build the app yourself, run
|
|
109
|
+
`bun install && bun run build:gui` at the repository root, then in `desktop/` run
|
|
110
|
+
`bun install && bun run prepare-sidecar && bun run prepare-widget && bun run build:local` on macOS,
|
|
111
|
+
or `bun install && bun run prepare-sidecar && bun run build:local` on Windows and Linux (the widget
|
|
112
|
+
step needs macOS). The [Desktop App guide](https://opencodex.me/guides/desktop-app/) and the
|
|
113
|
+
[macOS Menu Bar App guide](https://opencodex.me/guides/macos-menu-bar/) cover first launch, and
|
|
114
|
+
[`AGENTS_INSTALL.md`](./AGENTS_INSTALL.md#where-things-are-installed) lists everything written to disk.
|
|
115
|
+
|
|
116
|
+
### Personal install (CLI)
|
|
82
117
|
|
|
83
118
|
```bash
|
|
84
119
|
npm install -g @bitkyc08/opencodex # Node 18+; the Bun runtime is bundled automatically
|
|
@@ -91,30 +126,6 @@ Open **http://localhost:10100** and configure everything in the web dashboard
|
|
|
91
126
|
(40+ built-ins, or any OpenAI-compatible endpoint), pick models, manage accounts. `ocx gui`
|
|
92
127
|
re-opens the dashboard at any time.
|
|
93
128
|
|
|
94
|
-
<details>
|
|
95
|
-
<summary><b>Desktop app and macOS widget — beta</b></summary>
|
|
96
|
-
|
|
97
|
-
A native shell around the same dashboard, plus a WidgetKit extension that shows proxy status,
|
|
98
|
-
today's usage and provider quotas without opening a browser. The proxy is unchanged: the app
|
|
99
|
-
finds a running one or starts the bundled `ocx` sidecar, and the dashboard stays at
|
|
100
|
-
**http://localhost:10100**.
|
|
101
|
-
|
|
102
|
-
It is beta. Builds are signed for integrity but not notarized, so macOS asks for a
|
|
103
|
-
right-click → **Open** on first launch and Windows SmartScreen warns on the installer. The
|
|
104
|
-
widget needs macOS 14 or newer; the snapshot model it renders lives in [`app/`](./app)
|
|
105
|
-
(`MenuBarCore`).
|
|
106
|
-
|
|
107
|
-
Download it from the [latest release](https://github.com/lidge-jun/opencodex/releases), or build
|
|
108
|
-
it locally with `bun run prepare-sidecar && bun run prepare-widget && bunx tauri build`.
|
|
109
|
-
|
|
110
|
-
Install locations, service files and everything else written to disk are listed in
|
|
111
|
-
[`AGENTS_INSTALL.md`](./AGENTS_INSTALL.md#where-things-are-installed). The
|
|
112
|
-
[Desktop App guide](https://lidge-jun.github.io/opencodex/guides/desktop-app/) and the
|
|
113
|
-
[macOS Menu Bar App guide](https://lidge-jun.github.io/opencodex/guides/macos-menu-bar/) cover
|
|
114
|
-
per-platform installation and the Gatekeeper prompt.
|
|
115
|
-
|
|
116
|
-
</details>
|
|
117
|
-
|
|
118
129
|
### ChatGPT account pool
|
|
119
130
|
|
|
120
131
|
opencodex can also manage a **ChatGPT account pool** for Codex auth. Add multiple ChatGPT / Codex accounts,
|
|
@@ -207,8 +218,9 @@ setup, authenticated acceptance checks, remote management, and rollback.
|
|
|
207
218
|
|
|
208
219
|
```bash
|
|
209
220
|
curl -fsSL https://bun.sh/install | bash
|
|
210
|
-
git clone https://github.com/lidge-jun/opencodex.git
|
|
221
|
+
git clone -b dev https://github.com/lidge-jun/opencodex.git
|
|
211
222
|
cd opencodex && ~/.bun/bin/bun install
|
|
223
|
+
~/.bun/bin/bun run build:gui
|
|
212
224
|
~/.bun/bin/bun run src/cli/index.ts start
|
|
213
225
|
```
|
|
214
226
|
|
|
@@ -216,8 +228,9 @@ cd opencodex && ~/.bun/bin/bun install
|
|
|
216
228
|
|
|
217
229
|
```powershell
|
|
218
230
|
irm bun.sh/install.ps1 | iex
|
|
219
|
-
git clone https://github.com/lidge-jun/opencodex.git
|
|
231
|
+
git clone -b dev https://github.com/lidge-jun/opencodex.git
|
|
220
232
|
cd opencodex; bun install
|
|
233
|
+
bun run build:gui
|
|
221
234
|
bun run src/cli/index.ts start
|
|
222
235
|
```
|
|
223
236
|
|
|
@@ -249,13 +262,13 @@ when it is unreachable). `ocx status` / `ocx doctor` / `ocx health` report the r
|
|
|
249
262
|
|
|
250
263
|
## Supported platforms
|
|
251
264
|
|
|
252
|
-
| OS | Status | Service manager |
|
|
253
|
-
|
|
254
|
-
| macOS (arm64 / x64) | Fully supported | launchd |
|
|
255
|
-
| Linux (x64 / arm64) | Fully supported | systemd (user unit) |
|
|
256
|
-
| Windows (x64) | Fully supported | Task Scheduler (hidden) / opt-in native service (`--native`, WinSW) |
|
|
265
|
+
| OS | Status | Service manager | Desktop app (beta) |
|
|
266
|
+
|---|---|---|---|
|
|
267
|
+
| macOS (arm64 / x64) | Fully supported | launchd | Universal `.dmg` |
|
|
268
|
+
| Linux (x64 / arm64) | Fully supported | systemd (user unit) | x86_64 `.AppImage` / `.deb` |
|
|
269
|
+
| Windows (x64) | Fully supported | Task Scheduler (hidden) / opt-in native service (`--native`, WinSW) | x64 `.msi` |
|
|
257
270
|
|
|
258
|
-
|
|
271
|
+
The CLI install requires [Node](https://nodejs.org) 18+; the desktop app needs neither Node nor Bun. The Bun runtime is bundled on `npm install` — no separate
|
|
259
272
|
Bun install needed, no WSL needed on Windows. If npm blocked the bundled runtime's install scripts,
|
|
260
273
|
see the [installation docs](https://opencodex.me/getting-started/installation/).
|
|
261
274
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Download OpenCodex for Linux" viewBox="0 0 440 120" width="440" height="120">
|
|
2
|
+
<title>Download OpenCodex for Linux</title>
|
|
3
|
+
<rect x="0.5" y="0.5" width="439" height="119" rx="24" fill="#0B0D12" stroke="#0B0D12"/>
|
|
4
|
+
<rect x="2.5" y="2.5" width="435" height="115" rx="22" fill="none" stroke="rgba(255,255,255,0.14)" stroke-width="2"/>
|
|
5
|
+
<g transform="translate(36 34) scale(2.1667)" fill="#FFFFFF"><path d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.577.2.025.134.063.198.114.333l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.2-.811-.714-1.376v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135a.357.357 0 00-.19-.064c.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.56-3.368.026-2.152.236-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.19.135.33.332.438.533.105.259.158.459.166.724 0-.02.006-.04.006-.06v.105a.086.086 0 01-.004-.021l-.004-.024a1.807 1.807 0 01-.15.706.953.953 0 01-.213.335.71.71 0 00-.088-.042c-.104-.045-.198-.064-.284-.133a1.312 1.312 0 00-.22-.066c.05-.06.146-.133.183-.198.053-.128.082-.264.088-.402v-.02a1.21 1.21 0 00-.061-.4c-.045-.134-.101-.2-.183-.333-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132a.8.8 0 00-.205.334 1.18 1.18 0 00-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202a1.635 1.635 0 01-.018-.2v-.02a1.772 1.772 0 01.15-.768c.082-.22.232-.406.43-.533a.985.985 0 01.594-.2zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.14.4.153.667v.004c.007.134.006.2-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.09.013-.18.003-.267v-.015c-.012-.133-.04-.2-.082-.333a.613.613 0 00-.166-.267.248.248 0 00-.183-.064h-.021c-.071.006-.13.04-.186.132a.552.552 0 00-.12.27.944.944 0 00-.023.33v.015c.012.135.037.2.08.334.046.134.098.2.166.268.01.009.02.018.034.024-.07.057-.117.07-.176.136a.304.304 0 01-.131.068 2.62 2.62 0 01-.275-.402 1.772 1.772 0 01-.155-.667 1.759 1.759 0 01.08-.668 1.43 1.43 0 01.283-.535c.128-.133.26-.2.418-.2zm1.37 1.706c.332 0 .733.065 1.216.399.293.2.523.269 1.052.468h.003c.255.136.405.266.478.399v-.131a.571.571 0 01.016.47c-.123.31-.516.643-1.063.842v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267a1.139 1.139 0 01-.448-.067 3.566 3.566 0 01-.322-.198c-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.71-.07-.268-.005-.47.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.47.839-.601.139-.036.294-.065.466-.065zm2.8 2.142c.358 1.417 1.196 3.475 1.735 4.473.286.534.855 1.659 1.102 3.024.156-.005.33.018.513.064.646-1.671-.546-3.467-1.089-3.966-.22-.2-.232-.335-.123-.335.59.534 1.365 1.572 1.646 2.757.13.535.16 1.104.021 1.67.067.028.135.06.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.06-.003-.12 0-.18 0h-.016c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.77.465-.008.043-.013.066-.018.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.02.334-.17.838-.319 1.35-1.5 1.072-3.58 1.538-5.348.334a2.645 2.645 0 00-.402-.533 1.45 1.45 0 00-.275-.333c.182 0 .338-.03.465-.067a.615.615 0 00.314-.334c.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.4-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.14 2.497-.122 3.854a8.123 8.123 0 01.647-2.876c.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.21.201.477.335.876.335.039.003.075.006.11.006.412 0 .73-.134.997-.268.29-.134.52-.334.74-.4h.005c.467-.135.835-.402 1.044-.7zm2.185 8.958c.037.6.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.01c.315-.007.577.01.847.268l.003.003c.208.199.305.53.391.876.085.4.154.78.409 1.066.486.527.645.906.636 1.14l.003-.007v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.37 1.14-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.4-.12-1.025.056-1.69.176-.668.428-1.344.463-1.897.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.814.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.637.434.598.77 1.131.729 1.57v.006c-.057.744-.48 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.61-.2-.723-.4-.11-.2-.113-.602.123-1.23v-.004l.002-.003c.117-.334.03-.752-.027-1.118-.055-.401-.083-.71.043-.94.16-.334.396-.4.69-.533.294-.135.64-.202.915-.47h.002v-.002c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.28-.466-.154-.134-.28-.268-.373-.335-.164-.134-.144-.333-.074-.333.109.016.129.134.199.2.096.066.215.2.36.333.292.2.68.467 1.167.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.136.149-.267.279-.267.128.016.034.134-.147.332a8.097 8.097 0 01-.69.468zm-1.082-1.583V5.64c-.006-.02.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.14.068-.05 0-.13-.02-.136-.068-.01-.066.088-.133.15-.133.08-.031.184-.047.259-.005.019.009.036.03.05v.02h.003z"/></g>
|
|
6
|
+
<text x="116" y="50" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="22" letter-spacing="0.5" fill="#9AA4B2">Download for</text>
|
|
7
|
+
<text x="116" y="92" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="40" font-weight="600" fill="#FFFFFF">Linux</text>
|
|
8
|
+
<rect x="280" y="42" width="124" height="36" rx="12" fill="rgba(255,255,255,0.08)"/>
|
|
9
|
+
<text x="342" y="67" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" fill="#C9D1D9" text-anchor="middle">.AppImage</text>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Download OpenCodex for macOS" viewBox="0 0 440 120" width="440" height="120">
|
|
2
|
+
<title>Download OpenCodex for macOS</title>
|
|
3
|
+
<rect x="0.5" y="0.5" width="439" height="119" rx="24" fill="#0B0D12" stroke="#0B0D12"/>
|
|
4
|
+
<rect x="2.5" y="2.5" width="435" height="115" rx="22" fill="none" stroke="rgba(255,255,255,0.14)" stroke-width="2"/>
|
|
5
|
+
<g transform="translate(36 34) scale(2.1667)" fill="#FFFFFF"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></g>
|
|
6
|
+
<text x="116" y="50" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="22" letter-spacing="0.5" fill="#9AA4B2">Download for</text>
|
|
7
|
+
<text x="116" y="92" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="40" font-weight="600" fill="#FFFFFF">macOS</text>
|
|
8
|
+
<rect x="324" y="42" width="80" height="36" rx="12" fill="rgba(255,255,255,0.08)"/>
|
|
9
|
+
<text x="364" y="67" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" fill="#C9D1D9" text-anchor="middle">.dmg</text>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Download OpenCodex for Windows" viewBox="0 0 440 120" width="440" height="120">
|
|
2
|
+
<title>Download OpenCodex for Windows</title>
|
|
3
|
+
<rect x="0.5" y="0.5" width="439" height="119" rx="24" fill="#0B0D12" stroke="#0B0D12"/>
|
|
4
|
+
<rect x="2.5" y="2.5" width="435" height="115" rx="22" fill="none" stroke="rgba(255,255,255,0.14)" stroke-width="2"/>
|
|
5
|
+
<g fill="#FFFFFF"><rect x="36" y="34" width="24" height="24" rx="2"/><rect x="64" y="34" width="24" height="24" rx="2"/><rect x="36" y="62" width="24" height="24" rx="2"/><rect x="64" y="62" width="24" height="24" rx="2"/></g>
|
|
6
|
+
<text x="116" y="50" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="22" letter-spacing="0.5" fill="#9AA4B2">Download for</text>
|
|
7
|
+
<text x="116" y="92" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="40" font-weight="600" fill="#FFFFFF">Windows</text>
|
|
8
|
+
<rect x="328" y="42" width="76" height="36" rx="12" fill="rgba(255,255,255,0.08)"/>
|
|
9
|
+
<text x="366" y="67" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" fill="#C9D1D9" text-anchor="middle">.msi</text>
|
|
10
|
+
</svg>
|
package/bin/ocx.mjs
CHANGED
|
@@ -49,7 +49,8 @@ import {
|
|
|
49
49
|
runNpmCachePreflight,
|
|
50
50
|
} from "../src/update/npm-cache-preflight.mjs";
|
|
51
51
|
import { handoffWindowsTrayForUpdate, planWindowsTrayUpdate } from "../src/update/tray-update-plan.mjs";
|
|
52
|
-
import { bootRestoreProbe, transactionalNpmUpdate } from "../src/update/transactional-install.mjs";
|
|
52
|
+
import { bootRestoreProbe, launcherUsableAfterNpmUpdate, transactionalNpmUpdate } from "../src/update/transactional-install.mjs";
|
|
53
|
+
import { npmUpdateFailureGuidance } from "../src/update/update-failure-guidance.mjs";
|
|
53
54
|
import {
|
|
54
55
|
CODEX_CLI_VERSION_MANAGER_ROOT_ENV_SLOTS,
|
|
55
56
|
isCodexCliUpdateInspectionArgv,
|
|
@@ -549,6 +550,7 @@ function runPackageManagerSelfUpdate(manager) {
|
|
|
549
550
|
};
|
|
550
551
|
|
|
551
552
|
let res;
|
|
553
|
+
let npmFailure = null;
|
|
552
554
|
try {
|
|
553
555
|
// Stop authority is decided under the same lease the child joins. A takeover between the
|
|
554
556
|
// earlier preflight and this boundary therefore blocks stop before it is sent.
|
|
@@ -726,9 +728,8 @@ function runPackageManagerSelfUpdate(manager) {
|
|
|
726
728
|
},
|
|
727
729
|
log: (line) => console.log(line),
|
|
728
730
|
});
|
|
729
|
-
postUpdateLauncherUsable = tx
|
|
730
|
-
|
|
731
|
-
|| ["stage", "verify", "swap-backup"].includes(tx.phase);
|
|
731
|
+
postUpdateLauncherUsable = launcherUsableAfterNpmUpdate(tx);
|
|
732
|
+
if (!tx.ok) npmFailure = tx;
|
|
732
733
|
if (tx.ok) {
|
|
733
734
|
res = { status: 0 };
|
|
734
735
|
} else if (tx.phase === "stage" || tx.phase === "verify") {
|
|
@@ -820,6 +821,13 @@ function runPackageManagerSelfUpdate(manager) {
|
|
|
820
821
|
process.exit(0);
|
|
821
822
|
}
|
|
822
823
|
if (trayBeforeUpdate.restoreOnFailure && postUpdateLauncherUsable) runTrayLifecycle(postUpdateLauncher, "start");
|
|
824
|
+
if (npmFailure) {
|
|
825
|
+
// Phase-specific next step (#5624): whether the previous version is still in place decides
|
|
826
|
+
// between "retry" and "restore", and a bare reinstall must follow a stop (#5496).
|
|
827
|
+
const guidance = npmUpdateFailureGuidance({ ...npmFailure, pkgName: PKG, version: latest || undefined, tag });
|
|
828
|
+
console.error(`\nUpdate failed (npm ${npmFailure.phase}). ${guidance.lines.join(" ")}`);
|
|
829
|
+
process.exit(1);
|
|
830
|
+
}
|
|
823
831
|
const manual = manager === "pnpm"
|
|
824
832
|
? `pnpm add -g --allow-build=bun ${PKG}@${tag}`
|
|
825
833
|
: `npm install -g --allow-scripts=bun ${PKG}@${tag}`;
|