Update app-server types for Codex CLI 0.142.5

This commit is contained in:
murashit 2026-07-02 12:18:59 +09:00
parent d5390d9752
commit 60dba267ba
14 changed files with 45 additions and 20 deletions

View file

@ -62,7 +62,7 @@ Threads can be archived as Markdown notes with a configurable folder, filename t
| ------------------------ | --------- | --------------------------------------------------------------------------------------------------- |
| `manifest.minAppVersion` | `1.12.0` | Minimum Obsidian desktop version declared for plugin loading. |
| `obsidian` API types | `1.12.3` | TypeScript API package used for compile-time checks; kept in the same minor as `manifest` baseline. |
| `codex.testedCliVersion` | `0.142.0` | Track app-server compatibility by Codex CLI minor version. |
| `codex.testedCliVersion` | `0.142.5` | Track app-server compatibility by Codex CLI minor version. |
Codex Panel depends on the experimental `codex app-server` API.

View file

@ -86,7 +86,6 @@ export function startEphemeralThread(
ephemeral: true,
sandbox: "read-only",
approvalPolicy: "never",
multiAgentMode: "none",
environments: [],
});
}

View file

@ -11,10 +11,10 @@
*
* When converting from [`PathUri`], "native" refers to the supplied
* [`PathConvention`], which may be foreign to the operating system running
* this process. The inner string is private so path-producing code must convert
* from [`AbsolutePathBuf`] or use [`Self::from_path_uri`] instead of bypassing
* the intended conversion boundary. Non-UTF-8 paths are converted to UTF-8
* lossily because this API value is serialized as a JSON string.
* this process. The inner string is private so path-producing code must use a
* path conversion method instead of bypassing the intended conversion
* boundary. Non-UTF-8 paths are converted to UTF-8 lossily because this API
* value is serialized as a JSON string.
*
* Deserialization accepts any UTF-8 string without interpreting or validating
* it. That unrestricted construction path is intentionally available only to

View file

@ -20,4 +20,4 @@ id?: string,
/**
* Set when using the Responses API.
*/
call_id: string | null, status: LocalShellStatus, action: LocalShellAction, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "function_call", id?: string, name: string, namespace?: string, arguments: string, call_id: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "tool_search_call", id?: string, call_id: string | null, status?: string, execution: string, arguments: unknown, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "function_call_output", id?: string, call_id: string, output: FunctionCallOutputBody, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "custom_tool_call", id?: string, status?: string, call_id: string, name: string, input: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "custom_tool_call_output", id?: string, call_id: string, name?: string, output: FunctionCallOutputBody, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "tool_search_output", id?: string, call_id: string | null, status: string, execution: string, tools: unknown[], internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "web_search_call", id?: string, status?: string, action?: WebSearchAction, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "image_generation_call", id?: string, status: string, revised_prompt?: string, result: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "compaction", id?: string, encrypted_content: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "compaction_trigger", internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "context_compaction", id?: string, encrypted_content?: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "other" };
call_id: string | null, status: LocalShellStatus, action: LocalShellAction, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "function_call", id?: string, name: string, namespace?: string, arguments: string, call_id: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "tool_search_call", id?: string, call_id: string | null, status?: string, execution: string, arguments: unknown, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "function_call_output", id?: string, call_id: string, output: FunctionCallOutputBody, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "custom_tool_call", id?: string, status?: string, call_id: string, name: string, input: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "custom_tool_call_output", id?: string, call_id: string, name?: string, output: FunctionCallOutputBody, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "tool_search_output", id?: string, call_id: string | null, status: string, execution: string, tools: unknown[], internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "web_search_call", id?: string, status?: string, action?: WebSearchAction, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "image_generation_call", id?: string, status: string, revised_prompt?: string, result: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "compaction", id?: string, encrypted_content: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "compaction_trigger", } | { "type": "context_compaction", id?: string, encrypted_content?: string, internal_chat_message_metadata_passthrough?: InternalChatMessageMetadataPassthrough, } | { "type": "other" };

View file

@ -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 ModelSafetyBufferingUpdatedNotification = { threadId: string, turnId: string, model: string, useCases: Array<string>, reasons: Array<string>, };
export type ModelSafetyBufferingUpdatedNotification = { threadId: string, turnId: string, model: string, useCases: Array<string>, reasons: Array<string>, showBufferingUi: boolean, fasterModel: string | null, };

View file

@ -21,10 +21,18 @@ composerIconUrl: string | null,
* Local logo path, resolved from the installed plugin package.
*/
logo: AbsolutePathBuf | null,
/**
* Local dark-mode logo path, resolved from the installed plugin package.
*/
logoDark: AbsolutePathBuf | null,
/**
* Remote logo URL from the plugin catalog.
*/
logoUrl: string | null,
/**
* Remote dark-mode logo URL from the plugin catalog.
*/
logoUrlDark: string | null,
/**
* Local screenshot paths, resolved from the installed plugin package.
*/

View file

@ -36,6 +36,6 @@ sandbox: SandboxPolicy,
*/
activePermissionProfile: ActivePermissionProfile | null, reasoningEffort: ReasoningEffort | null,
/**
* Current multi-agent mode for this thread.
* @deprecated Always `explicitRequestOnly`. Use `reasoningEffort` for Ultra behavior.
*/
multiAgentMode: MultiAgentMode, };

View file

@ -37,7 +37,7 @@ sandbox: SandboxPolicy,
*/
activePermissionProfile: ActivePermissionProfile | null, reasoningEffort: ReasoningEffort | null,
/**
* Current multi-agent mode for this thread.
* @deprecated Always `explicitRequestOnly`. Use `reasoningEffort` for Ultra behavior.
*/
multiAgentMode: MultiAgentMode,
/**

View file

@ -14,6 +14,6 @@ import type { SandboxPolicy } from "./SandboxPolicy";
export type ThreadSettings = { cwd: AbsolutePathBuf, approvalPolicy: AskForApproval, approvalsReviewer: ApprovalsReviewer, sandboxPolicy: SandboxPolicy, activePermissionProfile: ActivePermissionProfile | null, model: string, modelProvider: string, serviceTier: string | null, effort: ReasoningEffort | null, summary: ReasoningSummary | null, collaborationMode: CollaborationMode,
/**
* Current multi-agent mode for this thread.
* @deprecated Always `explicitRequestOnly`. Use `effort` for Ultra behavior.
*/
multiAgentMode: MultiAgentMode, personality: Personality | null, };

View file

@ -58,7 +58,7 @@ summary?: ReasoningSummary | null,
*/
collaborationMode?: CollaborationMode | null,
/**
* Select the multi-agent mode for subsequent turns.
* @deprecated Ignored. Use `effort: "ultra"` for proactive multi-agent behavior.
*/
multiAgentMode?: MultiAgentMode | null,
/**

View file

@ -30,9 +30,7 @@ approvalsReviewer?: ApprovalsReviewer | null, sandbox?: SandboxMode | null,
*/
permissions?: string | null, config?: { [key in string]?: JsonValue } | null, serviceName?: string | null, baseInstructions?: string | null, developerInstructions?: string | null, personality?: Personality | null,
/**
* Set the initial multi-agent mode for this thread. `none` leaves the
* multi-agent tools available without injecting mode instructions.
* Omitted defaults to `explicitRequestOnly`.
* @deprecated Ignored. Use Ultra reasoning effort for proactive multi-agent behavior.
*/
multiAgentMode?: MultiAgentMode | null, ephemeral?: boolean | null, sessionStartSource?: ThreadStartSource | null,
/**

View file

@ -36,6 +36,6 @@ sandbox: SandboxPolicy,
*/
activePermissionProfile: ActivePermissionProfile | null, reasoningEffort: ReasoningEffort | null,
/**
* Current multi-agent mode for this thread.
* @deprecated Always `explicitRequestOnly`. Use `reasoningEffort` for Ultra behavior.
*/
multiAgentMode: MultiAgentMode, };

View file

@ -100,8 +100,6 @@ outputSchema?: JsonValue | null,
*/
collaborationMode?: CollaborationMode | null,
/**
* Controls multi-agent v2 delegation instructions. `none` leaves the
* multi-agent tools available without injecting mode instructions. Omitted
* keeps the loaded session's current mode.
* @deprecated Ignored. Use `effort: "ultra"` for proactive multi-agent behavior.
*/
multiAgentMode?: MultiAgentMode | null, };

View file

@ -1,7 +1,7 @@
import { describe, expect, it, vi } from "vitest";
import type { AppServerRequestClient } from "../../src/app-server/services/request-client";
import { listThreads, startThread } from "../../src/app-server/services/threads";
import { listThreads, startEphemeralThread, startThread } from "../../src/app-server/services/threads";
describe("app-server thread response adapters", () => {
it("starts panel-owned threads with the codex-panel service name", async () => {
@ -31,6 +31,28 @@ describe("app-server thread response adapters", () => {
});
});
it("starts ephemeral helper threads without deprecated multi-agent mode params", async () => {
const client = {
request: vi.fn().mockResolvedValue({ thread: { id: "thread-new" } }),
} as unknown as AppServerRequestClient;
await startEphemeralThread(client, {
cwd: "/vault",
serviceName: "codex-panel-selection-rewrite",
developerInstructions: "Return structured output.",
});
expect(client.request).toHaveBeenCalledWith("thread/start", {
cwd: "/vault",
serviceName: "codex-panel-selection-rewrite",
developerInstructions: "Return structured output.",
ephemeral: true,
sandbox: "read-only",
approvalPolicy: "never",
environments: [],
});
});
it("maps listed threads to domain threads with archive state", async () => {
const clientListThreads = vi.fn().mockResolvedValue({
data: [{ id: "thread-1", preview: "Preview", name: null, createdAt: 10, updatedAt: 20 }],