From f0e0092d802eb56a0fb19e8cd138dd2a5a6420a4 Mon Sep 17 00:00:00 2001 From: Will Wang Date: Tue, 23 Jun 2026 12:15:31 -0700 Subject: [PATCH] rename update apply RPC to install --- .../schema/json/ClientRequest.json | 6 +++--- .../json/codex_app_server_protocol.schemas.json | 16 ++++++++-------- .../codex_app_server_protocol.v2.schemas.json | 16 ++++++++-------- ...yResponse.json => UpdateInstallResponse.json} | 2 +- .../schema/typescript/ClientRequest.ts | 2 +- ...ApplyResponse.ts => UpdateInstallResponse.ts} | 2 +- .../schema/typescript/v2/index.ts | 2 +- .../app-server-protocol/src/protocol/common.rs | 4 ++-- .../src/protocol/v2/update.rs | 2 +- codex-rs/app-server/README.md | 8 ++++---- codex-rs/app-server/src/message_processor.rs | 2 +- .../src/request_processors/update_processor.rs | 6 +++--- .../app-server/tests/common/test_app_server.rs | 6 +++--- codex-rs/app-server/tests/suite/v2/update.rs | 10 +++++----- 14 files changed, 42 insertions(+), 42 deletions(-) rename codex-rs/app-server-protocol/schema/json/v2/{UpdateApplyResponse.json => UpdateInstallResponse.json} (68%) rename codex-rs/app-server-protocol/schema/typescript/v2/{UpdateApplyResponse.ts => UpdateInstallResponse.ts} (72%) diff --git a/codex-rs/app-server-protocol/schema/json/ClientRequest.json b/codex-rs/app-server-protocol/schema/json/ClientRequest.json index 12cd47a368..e697cfdafa 100644 --- a/codex-rs/app-server-protocol/schema/json/ClientRequest.json +++ b/codex-rs/app-server-protocol/schema/json/ClientRequest.json @@ -6097,9 +6097,9 @@ }, "method": { "enum": [ - "update/apply" + "update/install" ], - "title": "Update/applyRequestMethod", + "title": "Update/installRequestMethod", "type": "string" }, "params": { @@ -6110,7 +6110,7 @@ "id", "method" ], - "title": "Update/applyRequest", + "title": "Update/installRequest", "type": "object" }, { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index 946ef07fad..872a688d7e 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -1555,9 +1555,9 @@ }, "method": { "enum": [ - "update/apply" + "update/install" ], - "title": "Update/applyRequestMethod", + "title": "Update/installRequestMethod", "type": "string" }, "params": { @@ -1568,7 +1568,7 @@ "id", "method" ], - "title": "Update/applyRequest", + "title": "Update/installRequest", "type": "object" }, { @@ -20224,11 +20224,6 @@ ], "type": "object" }, - "UpdateApplyResponse": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "UpdateApplyResponse", - "type": "object" - }, "UpdateCheckResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { @@ -20254,6 +20249,11 @@ "title": "UpdateCheckResponse", "type": "object" }, + "UpdateInstallResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "UpdateInstallResponse", + "type": "object" + }, "UserInput": { "oneOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json index 478a93e10d..223a253ff6 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json @@ -2566,9 +2566,9 @@ }, "method": { "enum": [ - "update/apply" + "update/install" ], - "title": "Update/applyRequestMethod", + "title": "Update/installRequestMethod", "type": "string" }, "params": { @@ -2579,7 +2579,7 @@ "id", "method" ], - "title": "Update/applyRequest", + "title": "Update/installRequest", "type": "object" }, { @@ -18003,11 +18003,6 @@ ], "type": "object" }, - "UpdateApplyResponse": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "UpdateApplyResponse", - "type": "object" - }, "UpdateCheckResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { @@ -18033,6 +18028,11 @@ "title": "UpdateCheckResponse", "type": "object" }, + "UpdateInstallResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "UpdateInstallResponse", + "type": "object" + }, "UserInput": { "oneOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/v2/UpdateApplyResponse.json b/codex-rs/app-server-protocol/schema/json/v2/UpdateInstallResponse.json similarity index 68% rename from codex-rs/app-server-protocol/schema/json/v2/UpdateApplyResponse.json rename to codex-rs/app-server-protocol/schema/json/v2/UpdateInstallResponse.json index fec281ead8..0b083b57f6 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/UpdateApplyResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/UpdateInstallResponse.json @@ -1,5 +1,5 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "UpdateApplyResponse", + "title": "UpdateInstallResponse", "type": "object" } \ No newline at end of file diff --git a/codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts b/codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts index e2390bc2c9..ee6109ac8e 100644 --- a/codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts +++ b/codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts @@ -88,4 +88,4 @@ import type { WindowsSandboxSetupStartParams } from "./v2/WindowsSandboxSetupSta /** * Request from the client to the server. */ -export type ClientRequest ={ "method": "initialize", id: RequestId, params: InitializeParams, } | { "method": "thread/start", id: RequestId, params: ThreadStartParams, } | { "method": "thread/resume", id: RequestId, params: ThreadResumeParams, } | { "method": "thread/fork", id: RequestId, params: ThreadForkParams, } | { "method": "thread/archive", id: RequestId, params: ThreadArchiveParams, } | { "method": "thread/delete", id: RequestId, params: ThreadDeleteParams, } | { "method": "thread/unsubscribe", id: RequestId, params: ThreadUnsubscribeParams, } | { "method": "thread/name/set", id: RequestId, params: ThreadSetNameParams, } | { "method": "thread/goal/set", id: RequestId, params: ThreadGoalSetParams, } | { "method": "thread/goal/get", id: RequestId, params: ThreadGoalGetParams, } | { "method": "thread/goal/clear", id: RequestId, params: ThreadGoalClearParams, } | { "method": "thread/metadata/update", id: RequestId, params: ThreadMetadataUpdateParams, } | { "method": "thread/unarchive", id: RequestId, params: ThreadUnarchiveParams, } | { "method": "thread/compact/start", id: RequestId, params: ThreadCompactStartParams, } | { "method": "thread/shellCommand", id: RequestId, params: ThreadShellCommandParams, } | { "method": "thread/approveGuardianDeniedAction", id: RequestId, params: ThreadApproveGuardianDeniedActionParams, } | { "method": "thread/rollback", id: RequestId, params: ThreadRollbackParams, } | { "method": "thread/list", id: RequestId, params: ThreadListParams, } | { "method": "thread/loaded/list", id: RequestId, params: ThreadLoadedListParams, } | { "method": "thread/read", id: RequestId, params: ThreadReadParams, } | { "method": "thread/inject_items", id: RequestId, params: ThreadInjectItemsParams, } | { "method": "skills/list", id: RequestId, params: SkillsListParams, } | { "method": "skills/extraRoots/set", id: RequestId, params: SkillsExtraRootsSetParams, } | { "method": "hooks/list", id: RequestId, params: HooksListParams, } | { "method": "marketplace/add", id: RequestId, params: MarketplaceAddParams, } | { "method": "marketplace/remove", id: RequestId, params: MarketplaceRemoveParams, } | { "method": "marketplace/upgrade", id: RequestId, params: MarketplaceUpgradeParams, } | { "method": "plugin/list", id: RequestId, params: PluginListParams, } | { "method": "plugin/installed", id: RequestId, params: PluginInstalledParams, } | { "method": "plugin/read", id: RequestId, params: PluginReadParams, } | { "method": "plugin/skill/read", id: RequestId, params: PluginSkillReadParams, } | { "method": "plugin/share/save", id: RequestId, params: PluginShareSaveParams, } | { "method": "plugin/share/updateTargets", id: RequestId, params: PluginShareUpdateTargetsParams, } | { "method": "plugin/share/list", id: RequestId, params: PluginShareListParams, } | { "method": "plugin/share/checkout", id: RequestId, params: PluginShareCheckoutParams, } | { "method": "plugin/share/delete", id: RequestId, params: PluginShareDeleteParams, } | { "method": "app/list", id: RequestId, params: AppsListParams, } | { "method": "fs/readFile", id: RequestId, params: FsReadFileParams, } | { "method": "fs/writeFile", id: RequestId, params: FsWriteFileParams, } | { "method": "fs/createDirectory", id: RequestId, params: FsCreateDirectoryParams, } | { "method": "fs/getMetadata", id: RequestId, params: FsGetMetadataParams, } | { "method": "fs/readDirectory", id: RequestId, params: FsReadDirectoryParams, } | { "method": "fs/remove", id: RequestId, params: FsRemoveParams, } | { "method": "fs/copy", id: RequestId, params: FsCopyParams, } | { "method": "fs/watch", id: RequestId, params: FsWatchParams, } | { "method": "fs/unwatch", id: RequestId, params: FsUnwatchParams, } | { "method": "skills/config/write", id: RequestId, params: SkillsConfigWriteParams, } | { "method": "plugin/install", id: RequestId, params: PluginInstallParams, } | { "method": "plugin/uninstall", id: RequestId, params: PluginUninstallParams, } | { "method": "turn/start", id: RequestId, params: TurnStartParams, } | { "method": "turn/steer", id: RequestId, params: TurnSteerParams, } | { "method": "turn/interrupt", id: RequestId, params: TurnInterruptParams, } | { "method": "review/start", id: RequestId, params: ReviewStartParams, } | { "method": "model/list", id: RequestId, params: ModelListParams, } | { "method": "modelProvider/capabilities/read", id: RequestId, params: ModelProviderCapabilitiesReadParams, } | { "method": "update/check", id: RequestId, params: undefined, } | { "method": "update/apply", id: RequestId, params: undefined, } | { "method": "experimentalFeature/list", id: RequestId, params: ExperimentalFeatureListParams, } | { "method": "permissionProfile/list", id: RequestId, params: PermissionProfileListParams, } | { "method": "experimentalFeature/enablement/set", id: RequestId, params: ExperimentalFeatureEnablementSetParams, } | { "method": "mcpServer/oauth/login", id: RequestId, params: McpServerOauthLoginParams, } | { "method": "config/mcpServer/reload", id: RequestId, params: undefined, } | { "method": "mcpServerStatus/list", id: RequestId, params: ListMcpServerStatusParams, } | { "method": "mcpServer/resource/read", id: RequestId, params: McpResourceReadParams, } | { "method": "mcpServer/tool/call", id: RequestId, params: McpServerToolCallParams, } | { "method": "windowsSandbox/setupStart", id: RequestId, params: WindowsSandboxSetupStartParams, } | { "method": "windowsSandbox/readiness", id: RequestId, params: undefined, } | { "method": "account/login/start", id: RequestId, params: LoginAccountParams, } | { "method": "account/login/cancel", id: RequestId, params: CancelLoginAccountParams, } | { "method": "account/logout", id: RequestId, params: undefined, } | { "method": "account/rateLimits/read", id: RequestId, params: undefined, } | { "method": "account/rateLimitResetCredit/consume", id: RequestId, params: ConsumeAccountRateLimitResetCreditParams, } | { "method": "account/usage/read", id: RequestId, params: undefined, } | { "method": "account/workspaceMessages/read", id: RequestId, params: undefined, } | { "method": "account/sendAddCreditsNudgeEmail", id: RequestId, params: SendAddCreditsNudgeEmailParams, } | { "method": "feedback/upload", id: RequestId, params: FeedbackUploadParams, } | { "method": "command/exec", id: RequestId, params: CommandExecParams, } | { "method": "command/exec/write", id: RequestId, params: CommandExecWriteParams, } | { "method": "command/exec/terminate", id: RequestId, params: CommandExecTerminateParams, } | { "method": "command/exec/resize", id: RequestId, params: CommandExecResizeParams, } | { "method": "config/read", id: RequestId, params: ConfigReadParams, } | { "method": "externalAgentConfig/detect", id: RequestId, params: ExternalAgentConfigDetectParams, } | { "method": "externalAgentConfig/import", id: RequestId, params: ExternalAgentConfigImportParams, } | { "method": "externalAgentConfig/import/readHistories", id: RequestId, params: undefined, } | { "method": "config/value/write", id: RequestId, params: ConfigValueWriteParams, } | { "method": "config/batchWrite", id: RequestId, params: ConfigBatchWriteParams, } | { "method": "configRequirements/read", id: RequestId, params: undefined, } | { "method": "account/read", id: RequestId, params: GetAccountParams, } | { "method": "getConversationSummary", id: RequestId, params: GetConversationSummaryParams, } | { "method": "gitDiffToRemote", id: RequestId, params: GitDiffToRemoteParams, } | { "method": "getAuthStatus", id: RequestId, params: GetAuthStatusParams, } | { "method": "fuzzyFileSearch", id: RequestId, params: FuzzyFileSearchParams, }; +export type ClientRequest ={ "method": "initialize", id: RequestId, params: InitializeParams, } | { "method": "thread/start", id: RequestId, params: ThreadStartParams, } | { "method": "thread/resume", id: RequestId, params: ThreadResumeParams, } | { "method": "thread/fork", id: RequestId, params: ThreadForkParams, } | { "method": "thread/archive", id: RequestId, params: ThreadArchiveParams, } | { "method": "thread/delete", id: RequestId, params: ThreadDeleteParams, } | { "method": "thread/unsubscribe", id: RequestId, params: ThreadUnsubscribeParams, } | { "method": "thread/name/set", id: RequestId, params: ThreadSetNameParams, } | { "method": "thread/goal/set", id: RequestId, params: ThreadGoalSetParams, } | { "method": "thread/goal/get", id: RequestId, params: ThreadGoalGetParams, } | { "method": "thread/goal/clear", id: RequestId, params: ThreadGoalClearParams, } | { "method": "thread/metadata/update", id: RequestId, params: ThreadMetadataUpdateParams, } | { "method": "thread/unarchive", id: RequestId, params: ThreadUnarchiveParams, } | { "method": "thread/compact/start", id: RequestId, params: ThreadCompactStartParams, } | { "method": "thread/shellCommand", id: RequestId, params: ThreadShellCommandParams, } | { "method": "thread/approveGuardianDeniedAction", id: RequestId, params: ThreadApproveGuardianDeniedActionParams, } | { "method": "thread/rollback", id: RequestId, params: ThreadRollbackParams, } | { "method": "thread/list", id: RequestId, params: ThreadListParams, } | { "method": "thread/loaded/list", id: RequestId, params: ThreadLoadedListParams, } | { "method": "thread/read", id: RequestId, params: ThreadReadParams, } | { "method": "thread/inject_items", id: RequestId, params: ThreadInjectItemsParams, } | { "method": "skills/list", id: RequestId, params: SkillsListParams, } | { "method": "skills/extraRoots/set", id: RequestId, params: SkillsExtraRootsSetParams, } | { "method": "hooks/list", id: RequestId, params: HooksListParams, } | { "method": "marketplace/add", id: RequestId, params: MarketplaceAddParams, } | { "method": "marketplace/remove", id: RequestId, params: MarketplaceRemoveParams, } | { "method": "marketplace/upgrade", id: RequestId, params: MarketplaceUpgradeParams, } | { "method": "plugin/list", id: RequestId, params: PluginListParams, } | { "method": "plugin/installed", id: RequestId, params: PluginInstalledParams, } | { "method": "plugin/read", id: RequestId, params: PluginReadParams, } | { "method": "plugin/skill/read", id: RequestId, params: PluginSkillReadParams, } | { "method": "plugin/share/save", id: RequestId, params: PluginShareSaveParams, } | { "method": "plugin/share/updateTargets", id: RequestId, params: PluginShareUpdateTargetsParams, } | { "method": "plugin/share/list", id: RequestId, params: PluginShareListParams, } | { "method": "plugin/share/checkout", id: RequestId, params: PluginShareCheckoutParams, } | { "method": "plugin/share/delete", id: RequestId, params: PluginShareDeleteParams, } | { "method": "app/list", id: RequestId, params: AppsListParams, } | { "method": "fs/readFile", id: RequestId, params: FsReadFileParams, } | { "method": "fs/writeFile", id: RequestId, params: FsWriteFileParams, } | { "method": "fs/createDirectory", id: RequestId, params: FsCreateDirectoryParams, } | { "method": "fs/getMetadata", id: RequestId, params: FsGetMetadataParams, } | { "method": "fs/readDirectory", id: RequestId, params: FsReadDirectoryParams, } | { "method": "fs/remove", id: RequestId, params: FsRemoveParams, } | { "method": "fs/copy", id: RequestId, params: FsCopyParams, } | { "method": "fs/watch", id: RequestId, params: FsWatchParams, } | { "method": "fs/unwatch", id: RequestId, params: FsUnwatchParams, } | { "method": "skills/config/write", id: RequestId, params: SkillsConfigWriteParams, } | { "method": "plugin/install", id: RequestId, params: PluginInstallParams, } | { "method": "plugin/uninstall", id: RequestId, params: PluginUninstallParams, } | { "method": "turn/start", id: RequestId, params: TurnStartParams, } | { "method": "turn/steer", id: RequestId, params: TurnSteerParams, } | { "method": "turn/interrupt", id: RequestId, params: TurnInterruptParams, } | { "method": "review/start", id: RequestId, params: ReviewStartParams, } | { "method": "model/list", id: RequestId, params: ModelListParams, } | { "method": "modelProvider/capabilities/read", id: RequestId, params: ModelProviderCapabilitiesReadParams, } | { "method": "update/check", id: RequestId, params: undefined, } | { "method": "update/install", id: RequestId, params: undefined, } | { "method": "experimentalFeature/list", id: RequestId, params: ExperimentalFeatureListParams, } | { "method": "permissionProfile/list", id: RequestId, params: PermissionProfileListParams, } | { "method": "experimentalFeature/enablement/set", id: RequestId, params: ExperimentalFeatureEnablementSetParams, } | { "method": "mcpServer/oauth/login", id: RequestId, params: McpServerOauthLoginParams, } | { "method": "config/mcpServer/reload", id: RequestId, params: undefined, } | { "method": "mcpServerStatus/list", id: RequestId, params: ListMcpServerStatusParams, } | { "method": "mcpServer/resource/read", id: RequestId, params: McpResourceReadParams, } | { "method": "mcpServer/tool/call", id: RequestId, params: McpServerToolCallParams, } | { "method": "windowsSandbox/setupStart", id: RequestId, params: WindowsSandboxSetupStartParams, } | { "method": "windowsSandbox/readiness", id: RequestId, params: undefined, } | { "method": "account/login/start", id: RequestId, params: LoginAccountParams, } | { "method": "account/login/cancel", id: RequestId, params: CancelLoginAccountParams, } | { "method": "account/logout", id: RequestId, params: undefined, } | { "method": "account/rateLimits/read", id: RequestId, params: undefined, } | { "method": "account/rateLimitResetCredit/consume", id: RequestId, params: ConsumeAccountRateLimitResetCreditParams, } | { "method": "account/usage/read", id: RequestId, params: undefined, } | { "method": "account/workspaceMessages/read", id: RequestId, params: undefined, } | { "method": "account/sendAddCreditsNudgeEmail", id: RequestId, params: SendAddCreditsNudgeEmailParams, } | { "method": "feedback/upload", id: RequestId, params: FeedbackUploadParams, } | { "method": "command/exec", id: RequestId, params: CommandExecParams, } | { "method": "command/exec/write", id: RequestId, params: CommandExecWriteParams, } | { "method": "command/exec/terminate", id: RequestId, params: CommandExecTerminateParams, } | { "method": "command/exec/resize", id: RequestId, params: CommandExecResizeParams, } | { "method": "config/read", id: RequestId, params: ConfigReadParams, } | { "method": "externalAgentConfig/detect", id: RequestId, params: ExternalAgentConfigDetectParams, } | { "method": "externalAgentConfig/import", id: RequestId, params: ExternalAgentConfigImportParams, } | { "method": "externalAgentConfig/import/readHistories", id: RequestId, params: undefined, } | { "method": "config/value/write", id: RequestId, params: ConfigValueWriteParams, } | { "method": "config/batchWrite", id: RequestId, params: ConfigBatchWriteParams, } | { "method": "configRequirements/read", id: RequestId, params: undefined, } | { "method": "account/read", id: RequestId, params: GetAccountParams, } | { "method": "getConversationSummary", id: RequestId, params: GetConversationSummaryParams, } | { "method": "gitDiffToRemote", id: RequestId, params: GitDiffToRemoteParams, } | { "method": "getAuthStatus", id: RequestId, params: GetAuthStatusParams, } | { "method": "fuzzyFileSearch", id: RequestId, params: FuzzyFileSearchParams, }; diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/UpdateApplyResponse.ts b/codex-rs/app-server-protocol/schema/typescript/v2/UpdateInstallResponse.ts similarity index 72% rename from codex-rs/app-server-protocol/schema/typescript/v2/UpdateApplyResponse.ts rename to codex-rs/app-server-protocol/schema/typescript/v2/UpdateInstallResponse.ts index 56c1a58fa1..4a9e363d55 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/UpdateApplyResponse.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/UpdateInstallResponse.ts @@ -2,4 +2,4 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type UpdateApplyResponse = Record; +export type UpdateInstallResponse = Record; diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/index.ts b/codex-rs/app-server-protocol/schema/typescript/v2/index.ts index 87ebe24118..419269e3b7 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/index.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/index.ts @@ -487,8 +487,8 @@ export type { TurnStatus } from "./TurnStatus"; export type { TurnSteerParams } from "./TurnSteerParams"; export type { TurnSteerResponse } from "./TurnSteerResponse"; export type { TurnsPage } from "./TurnsPage"; -export type { UpdateApplyResponse } from "./UpdateApplyResponse"; export type { UpdateCheckResponse } from "./UpdateCheckResponse"; +export type { UpdateInstallResponse } from "./UpdateInstallResponse"; export type { UserInput } from "./UserInput"; export type { WarningNotification } from "./WarningNotification"; export type { WebSearchAction } from "./WebSearchAction"; diff --git a/codex-rs/app-server-protocol/src/protocol/common.rs b/codex-rs/app-server-protocol/src/protocol/common.rs index 2680bd962e..5f8527dcdc 100644 --- a/codex-rs/app-server-protocol/src/protocol/common.rs +++ b/codex-rs/app-server-protocol/src/protocol/common.rs @@ -870,10 +870,10 @@ client_request_definitions! { serialization: global("update"), response: v2::UpdateCheckResponse, }, - UpdateApply => "update/apply" { + UpdateInstall => "update/install" { params: #[ts(type = "undefined")] #[serde(skip_serializing_if = "Option::is_none")] Option<()>, serialization: global("update"), - response: v2::UpdateApplyResponse, + response: v2::UpdateInstallResponse, }, ExperimentalFeatureList => "experimentalFeature/list" { params: v2::ExperimentalFeatureListParams, diff --git a/codex-rs/app-server-protocol/src/protocol/v2/update.rs b/codex-rs/app-server-protocol/src/protocol/v2/update.rs index 0c20053fad..b420677e48 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/update.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/update.rs @@ -28,4 +28,4 @@ pub struct UpdateCheckResponse { #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] #[ts(export_to = "v2/")] -pub struct UpdateApplyResponse {} +pub struct UpdateInstallResponse {} diff --git a/codex-rs/app-server/README.md b/codex-rs/app-server/README.md index fbbbc4950d..867c7488e7 100644 --- a/codex-rs/app-server/README.md +++ b/codex-rs/app-server/README.md @@ -202,7 +202,7 @@ Example with notification opt-out: - `model/list` — list available models (set `includeHidden: true` to include entries with `hidden: true`), with model-advertised string reasoning effort options in the catalog's intended progression order, `additionalSpeedTiers`, `serviceTiers`, optional `defaultServiceTier`, optional legacy `upgrade` model ids, optional `upgradeInfo` metadata (`model`, `upgradeCopy`, `modelLink`, `migrationMarkdown`), and optional `availabilityNux` metadata. Clients should preserve the `supportedReasoningEfforts` array order rather than deriving order from the effort names. - `modelProvider/capabilities/read` — read provider-level capabilities for the currently configured model provider. - `update/check` — force a fresh update check and return the current version, latest version available through the detected distribution channel, installation method, and whether app-server can apply the update automatically. -- `update/apply` — run the updater associated with the detected installation method; returns `{}` after the updater exits successfully. +- `update/install` — run the updater associated with the detected installation method; returns `{}` after the updater exits successfully. - `experimentalFeature/list` — list feature flags with stage metadata (`beta`, `underDevelopment`, `stable`, etc.), enabled/default-enabled state, and cursor pagination. Pass `threadId` when showing feature state for an existing loaded thread so `enabled` is computed from that thread's refreshed config, including project-local config for the thread's cwd; if omitted, the server uses its default config resolution context. For non-beta flags, `displayName`/`description`/`announcement` are `null`. - `permissionProfile/list` — beta; list available permission profile ids with optional display `description` text and an `allowed` flag reflecting effective requirements, using cursor pagination. Pass `cwd` when the caller needs project-local `[permissions.]` entries to be included in the current catalog view. - `experimentalFeature/enablement/set` — patch the in-memory process-wide runtime feature enablement for currently supported feature keys. For each feature, precedence is: cloud requirements > --enable > config.toml > experimentalFeature/enablement/set (new) > code default. Invalid keys will be ignored. @@ -1922,18 +1922,18 @@ request has no params: release to be ready under npm's `latest` tag. Homebrew checks the cask version; standalone and other installations check the latest GitHub release. -When `canAutoUpdate` is `true`, call `update/apply` to run the +When `canAutoUpdate` is `true`, call `update/install` to run the corresponding npm, Bun, Homebrew, or standalone installer. The updater's output is not written to the JSON-RPC transport. A successful response means the installer exited with a zero status; restart app-server to run the newly installed version. ```json -{ "method": "update/apply", "id": 51 } +{ "method": "update/install", "id": 51 } { "id": 51, "result": {} } ``` -For `installationMethod: "other"`, `update/apply` returns an invalid-request +For `installationMethod: "other"`, `update/install` returns an invalid-request error because app-server cannot determine a safe updater command. ## Auth endpoints diff --git a/codex-rs/app-server/src/message_processor.rs b/codex-rs/app-server/src/message_processor.rs index 269493b32a..f29a38b623 100644 --- a/codex-rs/app-server/src/message_processor.rs +++ b/codex-rs/app-server/src/message_processor.rs @@ -1091,7 +1091,7 @@ impl MessageProcessor { .await .map(|response| Some(response.into())), ClientRequest::UpdateCheck { params: _, .. } => self.update_processor.check().await, - ClientRequest::UpdateApply { params: _, .. } => self.update_processor.apply().await, + ClientRequest::UpdateInstall { params: _, .. } => self.update_processor.install().await, ClientRequest::ThreadStart { params, .. } => { self.thread_processor .thread_start( diff --git a/codex-rs/app-server/src/request_processors/update_processor.rs b/codex-rs/app-server/src/request_processors/update_processor.rs index 1db40a0259..a462e77905 100644 --- a/codex-rs/app-server/src/request_processors/update_processor.rs +++ b/codex-rs/app-server/src/request_processors/update_processor.rs @@ -3,8 +3,8 @@ use crate::error_code::invalid_request; use codex_app_server_protocol::ClientResponsePayload; use codex_app_server_protocol::InstallationMethod; use codex_app_server_protocol::JSONRPCErrorError; -use codex_app_server_protocol::UpdateApplyResponse; use codex_app_server_protocol::UpdateCheckResponse; +use codex_app_server_protocol::UpdateInstallResponse; use codex_install_context::InstallContext; use codex_install_context::InstallMethod; use codex_install_context::StandalonePlatform; @@ -35,7 +35,7 @@ impl UpdateRequestProcessor { )) } - pub(crate) async fn apply(&self) -> Result, JSONRPCErrorError> { + pub(crate) async fn install(&self) -> Result, JSONRPCErrorError> { let Some(action) = codex_update::get_update_action() else { return Err(invalid_request( "automatic updates are unavailable for this Codex installation", @@ -79,7 +79,7 @@ impl UpdateRequestProcessor { ))); } - Ok(Some(UpdateApplyResponse {}.into())) + Ok(Some(UpdateInstallResponse {}.into())) } } diff --git a/codex-rs/app-server/tests/common/test_app_server.rs b/codex-rs/app-server/tests/common/test_app_server.rs index 227b4135e2..eecf553f6f 100644 --- a/codex-rs/app-server/tests/common/test_app_server.rs +++ b/codex-rs/app-server/tests/common/test_app_server.rs @@ -635,9 +635,9 @@ impl TestAppServer { self.send_request("update/check", /*params*/ None).await } - /// Send an `update/apply` JSON-RPC request. - pub async fn send_update_apply_request(&mut self) -> anyhow::Result { - self.send_request("update/apply", /*params*/ None).await + /// Send an `update/install` JSON-RPC request. + pub async fn send_update_install_request(&mut self) -> anyhow::Result { + self.send_request("update/install", /*params*/ None).await } /// Send an `experimentalFeature/list` JSON-RPC request. diff --git a/codex-rs/app-server/tests/suite/v2/update.rs b/codex-rs/app-server/tests/suite/v2/update.rs index 4052daefc7..1d41154453 100644 --- a/codex-rs/app-server/tests/suite/v2/update.rs +++ b/codex-rs/app-server/tests/suite/v2/update.rs @@ -5,7 +5,7 @@ use app_test_support::TestAppServer; use app_test_support::to_response; use codex_app_server_protocol::JSONRPCResponse; use codex_app_server_protocol::RequestId; -use codex_app_server_protocol::UpdateApplyResponse; +use codex_app_server_protocol::UpdateInstallResponse; use pretty_assertions::assert_eq; use std::fs; use std::os::unix::fs::PermissionsExt; @@ -16,7 +16,7 @@ use tokio::time::timeout; const DEFAULT_TIMEOUT: Duration = Duration::from_secs(10); #[tokio::test] -async fn update_apply_runs_the_detected_npm_updater() -> Result<()> { +async fn update_install_runs_the_detected_npm_updater() -> Result<()> { let codex_home = TempDir::new()?; let bin_dir = codex_home.path().join("bin"); fs::create_dir_all(&bin_dir)?; @@ -47,15 +47,15 @@ async fn update_apply_runs_the_detected_npm_updater() -> Result<()> { .await?; timeout(DEFAULT_TIMEOUT, mcp.initialize()).await??; - let request_id = mcp.send_update_apply_request().await?; + let request_id = mcp.send_update_install_request().await?; let response: JSONRPCResponse = timeout( DEFAULT_TIMEOUT, mcp.read_stream_until_response_message(RequestId::Integer(request_id)), ) .await??; - let response = to_response::(response)?; + let response = to_response::(response)?; - assert_eq!(response, UpdateApplyResponse {}); + assert_eq!(response, UpdateInstallResponse {}); assert_eq!( fs::read_to_string(invocation_path)?, "install\n-g\n@openai/codex\n"