feat(codex): create and customize Codex config from /settings

Adds the Codex config panel (skills/agents/rules/memory/config editing,
mcp/plugins/marketplaces add-remove via the codex CLI) as the last piece
of parity with the Claude Code settings tab, plus the codex_config_changed
WebSocket type the client was missing, and docs for the new
/api/codex-config surface.
This commit is contained in:
2026-09-08 21:09:28 +07:00
parent f6973d24d6
commit 8015730adf
9 changed files with 1856 additions and 6 deletions
+22
View File
@@ -545,6 +545,7 @@
* - `run_stream` / `run_status` / `run_input_ack` ... {@link RunStreamPayload} /
* {@link RunStatusPayload} / {@link RunInputAckPayload}
* - `cc_config_changed` ............................ {@link CcConfigChangedPayload}
* - `codex_config_changed` ......................... {@link CodexConfigChangedPayload}
* - `alert_triggered` / `alert_updated` ............ {@link AlertEvent}
* - `workflow_upserted` ............................ {@link WorkflowRun}
*
@@ -1331,6 +1332,24 @@ export interface CcConfigChangedPayload {
paths?: string[];
}
// ───── Codex config change notifications ─────
/** Payload for the `codex_config_changed` WebSocket message: broadcast
* whenever a Codex CLI config artifact (skill, agent, rule, memory, config,
* MCP server, plugin, marketplace) is written or removed through the
* dashboard's codex-config editor, so other open tabs can refresh their
* view. Codex has no filesystem watcher counterpart to `cc-watcher.js`, so
* unlike {@link CcConfigChangedPayload} this is always dashboard-sourced. */
export interface CodexConfigChangedPayload {
source: "dashboard";
action?: "write" | "delete";
/** "user" or "project" - Codex has no "project-local" scope. */
scope?: "user" | "project";
/** Artifact kind, e.g. "skills", "agents", "rules", "memory", "config". */
type?: string;
name?: string | null;
}
// ───── Alerting ─────
// User-defined rules that watch the ingest stream (or a periodic sweep) and fire
// {@link AlertEvent}s. {@link AlertRuleConfig} is a tagged bag of settings whose
@@ -1624,6 +1643,7 @@ export interface WSMessage {
* new_event → DashboardEvent; import.progress → ImportProgressMessage;
* update_status → UpdateStatusPayload; run_stream/run_status/run_input_ack
* → their matching Run*Payload; cc_config_changed → CcConfigChangedPayload;
* codex_config_changed → CodexConfigChangedPayload;
* alert_triggered/alert_updated → AlertEvent; workflow_upserted → WorkflowRun;
* remote_source.status → RemoteSourceStatusPayload;
* remote_data.updated → RemoteDataUpdatedPayload;
@@ -1640,6 +1660,7 @@ export interface WSMessage {
| "run_status"
| "run_input_ack"
| "cc_config_changed"
| "codex_config_changed"
| "alert_triggered"
| "alert_updated"
| "workflow_upserted"
@@ -1661,6 +1682,7 @@ export interface WSMessage {
| UpdateStatusPayload
| RunStatusPayload
| CcConfigChangedPayload
| CodexConfigChangedPayload
| AlertEvent
| WorkflowRun
| RemoteSourceStatusPayload