diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b2fa6fa75f..6ce8c3ed5ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1297,6 +1297,7 @@ Docs: https://docs.openclaw.ai - macOS/update: disarm legacy `ai.openclaw.update.*` LaunchAgents when `openclaw update` starts from one, preventing KeepAlive relaunch loops that repeatedly restart the Gateway and replay update continuations. Fixes #82167. Thanks @DougButdorf. - Agents/replay: strip internal runtime-context metadata and `NO_REPLY` sentinels from provider replay and pending final-delivery recovery so restart and heartbeat resumes do not feed control text back to the model. Fixes #76629. Thanks @fuyizheng3120, @bryan-chx, and @cael-dandelion-cult. - Agents/replay: skip malformed transcript tail rows when deduping embedded assistant gap-fill, preventing truncated JSONL from duplicating the final assistant reply during replay recovery. +- Codex plugins: accept bundled and primary-runtime first-party Codex plugin marketplaces in native plugin config instead of dropping those entries during validation. Fixes #82216. (#82219) Thanks @yaanfpv. - LINE: acknowledge signed webhook events before agent processing so slow model replies do not cause LINE `request_timeout` delivery failures. Fixes #65375. Thanks @myericho. - LINE: stop cron recovery from inferring lowercased LINE recipients from canonical session keys, so long-running task replies do not silently retry undeliverable push targets. Fixes #81628. (#81704) Thanks @edenfunf. - TTS: preserve channel-derived voice-note delivery for `/tts audio` replies even when the provider output is not natively voice-compatible. (#82174) Thanks @xuruiray. diff --git a/docs/cli/migrate.md b/docs/cli/migrate.md index d80539d972f..230ec1b3fb6 100644 --- a/docs/cli/migrate.md +++ b/docs/cli/migrate.md @@ -218,6 +218,10 @@ Target-side auth-required installs are reported on the affected plugin item with Their explicit config entries are written disabled until you reauthorize and enable them. Other install failures are item-scoped `error` results. +The native Codex plugin config also accepts first-party `openai-bundled` and +`openai-primary-runtime` marketplace identities, but migration does not +auto-discover or install them from source state. + If Codex app-server plugin inventory is unavailable during planning, migration falls back to cached bundle advisory items instead of failing the whole migration. diff --git a/docs/gateway/configuration-reference.md b/docs/gateway/configuration-reference.md index 30805f96ad1..b9c3fac6080 100644 --- a/docs/gateway/configuration-reference.md +++ b/docs/gateway/configuration-reference.md @@ -316,7 +316,8 @@ conversation bindings, or any non-Codex harness. migrated plugin entry when global `codexPlugins.enabled` is also true. Default: `true` for explicit entries. - `plugins.entries.codex.config.codexPlugins.plugins..marketplaceName`: - stable marketplace identity. V1 only supports `"openai-curated"`. + stable marketplace identity. V1 supports `"openai-curated"`, + `"openai-bundled"`, and `"openai-primary-runtime"`. - `plugins.entries.codex.config.codexPlugins.plugins..pluginName`: stable Codex plugin identity from migration, for example `"google-calendar"`. - `plugins.entries.codex.config.codexPlugins.plugins..allow_destructive_actions`: diff --git a/docs/plugins/codex-harness-reference.md b/docs/plugins/codex-harness-reference.md index 2ac26f42c7a..90c006ddc2a 100644 --- a/docs/plugins/codex-harness-reference.md +++ b/docs/plugins/codex-harness-reference.md @@ -38,14 +38,14 @@ All Codex harness settings live under `plugins.entries.codex.config`. Supported top-level fields: -| Field | Default | Meaning | -| -------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | -| `discovery` | enabled | Model discovery settings for Codex app-server `model/list`. | -| `appServer` | managed stdio app-server | Transport, command, auth, approval, sandbox, and timeout settings. | -| `codexDynamicToolsLoading` | `"searchable"` | Use `"direct"` to put OpenClaw dynamic tools directly in the initial Codex tool context. | -| `codexDynamicToolsExclude` | `[]` | Additional OpenClaw dynamic tool names to omit from Codex app-server turns. | -| `codexPlugins` | disabled | Native Codex plugin/app support for migrated source-installed curated plugins. See [Native Codex plugins](/plugins/codex-native-plugins). | -| `computerUse` | disabled | Codex Computer Use setup. See [Codex Computer Use](/plugins/codex-computer-use). | +| Field | Default | Meaning | +| -------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `discovery` | enabled | Model discovery settings for Codex app-server `model/list`. | +| `appServer` | managed stdio app-server | Transport, command, auth, approval, sandbox, and timeout settings. | +| `codexDynamicToolsLoading` | `"searchable"` | Use `"direct"` to put OpenClaw dynamic tools directly in the initial Codex tool context. | +| `codexDynamicToolsExclude` | `[]` | Additional OpenClaw dynamic tool names to omit from Codex app-server turns. | +| `codexPlugins` | disabled | Native Codex plugin/app support for configured first-party Codex plugins. See [Native Codex plugins](/plugins/codex-native-plugins). | +| `computerUse` | disabled | Codex Computer Use setup. See [Codex Computer Use](/plugins/codex-computer-use). | ## App-server transport diff --git a/docs/plugins/codex-harness.md b/docs/plugins/codex-harness.md index 4412e1db417..aaead9e069f 100644 --- a/docs/plugins/codex-harness.md +++ b/docs/plugins/codex-harness.md @@ -526,7 +526,7 @@ Supported top-level Codex plugin fields: | -------------------------- | -------------- | ---------------------------------------------------------------------------------------- | | `codexDynamicToolsLoading` | `"searchable"` | Use `"direct"` to put OpenClaw dynamic tools directly in the initial Codex tool context. | | `codexDynamicToolsExclude` | `[]` | Additional OpenClaw dynamic tool names to omit from Codex app-server turns. | -| `codexPlugins` | disabled | Native Codex plugin/app support for migrated source-installed curated plugins. | +| `codexPlugins` | disabled | Native Codex plugin/app support for configured first-party Codex plugins. | Supported `appServer` fields: diff --git a/docs/plugins/codex-native-plugins.md b/docs/plugins/codex-native-plugins.md index 0e7756de53e..eedf2779d2d 100644 --- a/docs/plugins/codex-native-plugins.md +++ b/docs/plugins/codex-native-plugins.md @@ -3,7 +3,7 @@ summary: "Configure migrated native Codex plugins for Codex-mode OpenClaw agents title: "Native Codex plugins" read_when: - You want Codex-mode OpenClaw agents to use native Codex plugins - - You are migrating source-installed openai-curated Codex plugins + - You are configuring first-party Codex plugin marketplaces - You are troubleshooting codexPlugins, app inventory, destructive actions, or plugin app diagnostics --- @@ -22,7 +22,9 @@ Use this page after the base [Codex harness](/plugins/codex-harness) is working. - The selected OpenClaw agent runtime must be the native Codex harness. - `plugins.entries.codex.enabled` must be true. - `plugins.entries.codex.config.codexPlugins.enabled` must be true. -- V1 supports only `openai-curated` plugins that migration observed as +- V1 supports first-party Codex plugin marketplaces: `openai-curated`, + `openai-bundled`, and `openai-primary-runtime`. +- Migration only auto-discovers `openai-curated` plugins that it observed as source-installed in the source Codex home. - The target Codex app-server must be able to see the expected marketplace, plugin, and app inventory. @@ -52,9 +54,11 @@ Apply the migration when the plan looks right: openclaw migrate apply codex --yes ``` -Migration writes explicit `codexPlugins` entries for eligible plugins and calls -Codex app-server `plugin/install` for selected plugins. A typical migrated -config looks like this: +Migration writes explicit `codexPlugins` entries for eligible curated plugins +and calls Codex app-server `plugin/install` for selected plugins. Explicit +config may also reference Codex's bundled and primary-runtime first-party +marketplaces when the target app-server inventory exposes those plugin apps. A +typical migrated config looks like this: ```json5 { @@ -146,8 +150,10 @@ up the updated app set. V1 is intentionally narrow: +- Runtime config accepts `openai-curated`, `openai-bundled`, and + `openai-primary-runtime` plugin identities. - Only `openai-curated` plugins that were already installed in the source Codex - app-server inventory are migration-eligible. + app-server inventory are migration-eligible for automatic migration. - App-backed source plugins must pass the migration-time subscription gate. `--verify-plugin-apps` adds the source app-inventory gate. Subscription-gated accounts plus, in verification mode, inaccessible, disabled, missing source @@ -160,7 +166,9 @@ V1 is intentionally narrow: - There is no `plugins["*"]` wildcard and no config key that grants arbitrary install authority. - Unsupported marketplaces, cached plugin bundles, hooks, and Codex config files - are preserved in the migration report for manual review. + are preserved in the migration report for manual review. Bundled and + primary-runtime first-party plugins can still be added manually through + explicit `codexPlugins` config. ## App inventory and ownership @@ -248,8 +256,10 @@ app-server auth or rerun with `--verify-plugin-apps` if you want source app inventory to decide eligibility when account lookup fails. **`marketplace_missing` or `plugin_missing`:** the target Codex app-server -cannot see the expected `openai-curated` marketplace or plugin. Rerun migration -against the target runtime or inspect Codex app-server plugin status. +cannot see the expected first-party marketplace or plugin. Rerun migration +against the target runtime, inspect Codex app-server plugin status, or confirm +the explicit `marketplaceName` is one of `openai-curated`, `openai-bundled`, or +`openai-primary-runtime`. **`app_inventory_missing` or `app_inventory_stale`:** app readiness came from an empty or stale cache. OpenClaw schedules an async refresh and excludes plugin