From 733e152347fbc5c080e8dda8059be3f18b760519 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sat, 25 Jul 2026 15:33:26 +0800 Subject: [PATCH 1/2] chore(app): vendor v2 client snapshot --- bun.lock | 8 +-- packages/app/package.json | 2 +- .../components/dialog-select-directory-v2.tsx | 9 ++- .../components/dialog-select-directory.tsx | 9 ++- packages/app/src/components/edit-project.ts | 23 ++++-- packages/app/src/components/prompt-input.tsx | 2 +- .../app/src/components/settings-general.tsx | 3 +- .../src/components/settings-v2/general.tsx | 3 +- packages/app/src/components/terminal.tsx | 22 +++--- packages/app/src/context/directory-sync.ts | 3 +- .../src/context/global-sync/bootstrap.test.ts | 8 ++- .../app/src/context/global-sync/bootstrap.ts | 47 +++++++------ .../src/context/global-sync/event-reducer.ts | 26 +++---- packages/app/src/context/layout.tsx | 26 ++++--- .../context/server-session-v2-reducer.test.ts | 2 +- .../src/context/server-session-v2-reducer.ts | 21 ++++-- .../app/src/context/server-session.test.ts | 5 +- packages/app/src/context/server-session.ts | 13 ++-- packages/app/src/context/server-sync.test.ts | 4 +- packages/app/src/context/server-sync.tsx | 5 +- .../pages/home/home-sessions-controller.tsx | 8 ++- packages/app/src/pages/layout.tsx | 38 +++++++--- .../session/timeline/message-timeline.tsx | 3 +- packages/app/src/utils/server-compat.test.ts | 24 ++++--- packages/app/src/utils/server-compat.ts | 66 +++++++++--------- .../app/src/utils/session-message.test.ts | 4 +- packages/app/src/utils/session-message.ts | 9 ++- .../vendor/opencode-ai-client-1.17.13-v2.tgz | Bin 0 -> 67724 bytes .../app/vendor/opencode-ai-client-1.17.13.tgz | Bin 75585 -> 0 bytes packages/session-ui/package.json | 2 +- 30 files changed, 238 insertions(+), 157 deletions(-) create mode 100644 packages/app/vendor/opencode-ai-client-1.17.13-v2.tgz delete mode 100644 packages/app/vendor/opencode-ai-client-1.17.13.tgz diff --git a/bun.lock b/bun.lock index 426438cfbba6..839f28839445 100644 --- a/bun.lock +++ b/bun.lock @@ -37,7 +37,7 @@ "@dnd-kit/helpers": "0.5.0", "@dnd-kit/solid": "0.5.0", "@kobalte/core": "catalog:", - "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13.tgz", + "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13-v2.tgz", "@opencode-ai/core": "workspace:*", "@opencode-ai/schema": "workspace:*", "@opencode-ai/sdk": "workspace:*", @@ -799,7 +799,7 @@ "version": "1.18.5", "dependencies": { "@kobalte/core": "catalog:", - "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13.tgz", + "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", "@opencode-ai/core": "workspace:*", "@opencode-ai/sdk": "workspace:*", "@opencode-ai/ui": "workspace:*", @@ -6030,7 +6030,7 @@ "@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], - "@opencode-ai/app/@opencode-ai/client": ["@opencode-ai/client@vendor/opencode-ai-client-1.17.13.tgz", {}, "sha512-1cYJikTCrXNhnS2qQ3P3rtdbGqhvJKksswG0amJNqgaeUfz3xDlKEDx+YoIosT7Cqk/AtO18jtip0lYL3TVdHQ=="], + "@opencode-ai/app/@opencode-ai/client": ["@opencode-ai/client@vendor/opencode-ai-client-1.17.13-v2.tgz", {}, "sha512-332kgNifvpQOF9e3UA+pIa5xPrMhLaQkUiNiO+meS0Ba9HjSE6hfsWnEojMkD0DPSLqPP6rCF1dDoF7U0Y0OCQ=="], "@opencode-ai/core/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], @@ -6050,7 +6050,7 @@ "@opencode-ai/script/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - "@opencode-ai/session-ui/@opencode-ai/client": ["@opencode-ai/client@../app/vendor/opencode-ai-client-1.17.13.tgz", {}, "sha512-1cYJikTCrXNhnS2qQ3P3rtdbGqhvJKksswG0amJNqgaeUfz3xDlKEDx+YoIosT7Cqk/AtO18jtip0lYL3TVdHQ=="], + "@opencode-ai/session-ui/@opencode-ai/client": ["@opencode-ai/client@../app/vendor/opencode-ai-client-1.17.13-v2.tgz", {}, "sha512-332kgNifvpQOF9e3UA+pIa5xPrMhLaQkUiNiO+meS0Ba9HjSE6hfsWnEojMkD0DPSLqPP6rCF1dDoF7U0Y0OCQ=="], "@opencode-ai/session-ui/@solid-primitives/resize-observer": ["@solid-primitives/resize-observer@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2", "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ=="], diff --git a/packages/app/package.json b/packages/app/package.json index 23a830fcd57e..75b2b8c48809 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -53,7 +53,7 @@ "@dnd-kit/helpers": "0.5.0", "@dnd-kit/solid": "0.5.0", "@kobalte/core": "catalog:", - "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13.tgz", + "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13-v2.tgz", "@opencode-ai/core": "workspace:*", "@opencode-ai/schema": "workspace:*", "@opencode-ai/sdk": "workspace:*", diff --git a/packages/app/src/components/dialog-select-directory-v2.tsx b/packages/app/src/components/dialog-select-directory-v2.tsx index e0909d849bd4..847239d098b5 100644 --- a/packages/app/src/components/dialog-select-directory-v2.tsx +++ b/packages/app/src/components/dialog-select-directory-v2.tsx @@ -8,6 +8,7 @@ import { createEffect, createMemo, createResource, createSignal, For, onCleanup, import { useGlobal } from "@/context/global" import { useLanguage } from "@/context/language" import { ServerConnection } from "@/context/server" +import type { Path } from "@opencode-ai/sdk/v2/client" import { absoluteTreePath, activeTreeNavigation, @@ -68,7 +69,13 @@ export function DialogSelectDirectoryV2(props: DialogSelectDirectoryV2Props) { const missingBase = createMemo(() => !(sync.data.path.home || sync.data.path.directory)) const [fallbackPath] = createResource( () => (missingBase() ? true : undefined), - () => sdk.api.path.get().catch(() => undefined), + async (): Promise => { + if ((await sdk.protocol) !== "v1") return + return sdk.client.path + .get() + .then((result) => result.data) + .catch(() => undefined) + }, { initialValue: undefined }, ) const home = createMemo(() => sync.data.path.home || fallbackPath()?.home || "") diff --git a/packages/app/src/components/dialog-select-directory.tsx b/packages/app/src/components/dialog-select-directory.tsx index 5cc19fd92056..4b24828e3ee9 100644 --- a/packages/app/src/components/dialog-select-directory.tsx +++ b/packages/app/src/components/dialog-select-directory.tsx @@ -9,6 +9,7 @@ import { useLanguage } from "@/context/language" import { ServerConnection } from "@/context/server" import { useGlobal } from "@/context/global" import { cleanPickerInput, createDirectorySearch, displayPickerPath } from "./directory-picker-domain" +import type { Path } from "@opencode-ai/sdk/v2/client" interface DialogSelectDirectoryProps { title?: string @@ -59,8 +60,12 @@ export function DialogSelectDirectory(props: DialogSelectDirectoryProps) { const missingBase = createMemo(() => !(sync.data.path.home || sync.data.path.directory)) const [fallbackPath] = createResource( () => (missingBase() ? true : undefined), - async () => { - return sdk.api.path.get().catch(() => undefined) + async (): Promise => { + if ((await sdk.protocol) !== "v1") return + return sdk.client.path + .get() + .then((result) => result.data) + .catch(() => undefined) }, { initialValue: undefined }, ) diff --git a/packages/app/src/components/edit-project.ts b/packages/app/src/components/edit-project.ts index 42053f6eff81..0c5d576e9347 100644 --- a/packages/app/src/components/edit-project.ts +++ b/packages/app/src/components/edit-project.ts @@ -71,12 +71,23 @@ export function createEditProjectModel(props: { project: LocalProject; server: S const start = store.startup.trim() if (props.project.id && props.project.id !== "global") { - const project = await serverCtx().sdk.api.project.update({ - projectID: props.project.id, - name, - icon: { color: store.color || "", override: store.iconOverride || "" }, - commands: { start }, - }) + if ((await serverCtx().sdk.protocol) !== "v1") return + const project = await serverCtx() + .sdk.client.project.update({ + projectID: props.project.id, + directory: props.project.worktree, + name, + icon: { color: store.color || "", override: store.iconOverride || "" }, + commands: { start }, + }) + .then((result) => result.data) + if (!project) return + // const project = await serverCtx().sdk.api.project.update({ + // projectID: props.project.id, + // name, + // icon: { color: store.color || "", override: store.iconOverride || "" }, + // commands: { start }, + // }) serverCtx().sync.set("project", (items) => items.map((item) => (item.id === project.id ? normalizeProjectInfo(project) : item)), ) diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 3842b087914e..f70cb3992896 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -709,7 +709,7 @@ export const PromptInput: Component = (props) => { title: cmd.name, description: cmd.description, type: "custom" as const, - source: cmd.source, + // source: cmd.source, })) return [...custom, ...builtin] diff --git a/packages/app/src/components/settings-general.tsx b/packages/app/src/components/settings-general.tsx index 3ab265d72975..a20e66de3ee3 100644 --- a/packages/app/src/components/settings-general.tsx +++ b/packages/app/src/components/settings-general.tsx @@ -132,7 +132,8 @@ export const SettingsGeneral: Component = () => { if ((await sdk.protocol) === "v1") { return (await sdk.client.pty.shells()).data ?? [] } - return (await sdk.api.pty.shells()).data + // return (await sdk.api.pty.shells()).data + return [] as ShellOption[] }, { initialValue: [] as ShellOption[] }, ) diff --git a/packages/app/src/components/settings-v2/general.tsx b/packages/app/src/components/settings-v2/general.tsx index 5a4cb186a65d..613ac96cbae8 100644 --- a/packages/app/src/components/settings-v2/general.tsx +++ b/packages/app/src/components/settings-v2/general.tsx @@ -127,7 +127,8 @@ export const SettingsGeneralV2: Component<{ if ((await sdk.protocol) === "v1") { return (await sdk.client.pty.shells()).data ?? [] } - return (await sdk.api.pty.shells()).data + // return (await sdk.api.pty.shells()).data + return [] as ShellOption[] }, { initialValue: [] as ShellOption[] }, ) diff --git a/packages/app/src/components/terminal.tsx b/packages/app/src/components/terminal.tsx index b2e827f73a71..65035034760e 100644 --- a/packages/app/src/components/terminal.tsx +++ b/packages/app/src/components/terminal.tsx @@ -573,19 +573,13 @@ export const Terminal = (props: TerminalProps) => { throw new Error("PTY connect ticket rejected by origin or CSRF checks. Check the server CORS config.") throw new Error(`PTY connect ticket failed with ${result.response.status}`) } - return sdk() - .api.pty.connectToken({ - ptyID: id, - location: { directory }, - "x-opencode-ticket": "1", - }) - .then((result) => result.data.ticket) - .catch((err: unknown) => { - if (err && typeof err === "object" && "_tag" in err && err._tag === "ForbiddenError") { - throw new Error("PTY connect ticket rejected by origin or CSRF checks. Check the server CORS config.") - } - throw err - }) + // return sdk() + // .api.pty.connectToken({ + // ptyID: id, + // location: { directory }, + // "x-opencode-ticket": "1", + // }) + // .then((result) => result.data.ticket) } const retry = (err: unknown) => { @@ -616,7 +610,7 @@ export const Terminal = (props: TerminalProps) => { return undefined }) const protocol = await sdk().protocol - if (protocol === "v2" && !ticket) return + // if (protocol === "v2" && !ticket) return if (once.value) return if (disposed) return diff --git a/packages/app/src/context/directory-sync.ts b/packages/app/src/context/directory-sync.ts index ca6df85a53ad..befd5b61e095 100644 --- a/packages/app/src/context/directory-sync.ts +++ b/packages/app/src/context/directory-sync.ts @@ -134,7 +134,8 @@ export const createDirSyncContext = ( }, more: createMemo(() => current()[0].session.length >= current()[0].limit), archive: async (sessionID: string) => { - await serverSDK.api.session.archive({ sessionID, directory }) + if ((await serverSDK.protocol) !== "v1") return + await serverSDK.client.session.update({ sessionID, directory, time: { archived: Date.now() } }) current()[1]( "session", produce((draft) => { diff --git a/packages/app/src/context/global-sync/bootstrap.test.ts b/packages/app/src/context/global-sync/bootstrap.test.ts index 58cc65a2e0bb..71986dd3c40d 100644 --- a/packages/app/src/context/global-sync/bootstrap.test.ts +++ b/packages/app/src/context/global-sync/bootstrap.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test" import { createStore } from "solid-js/store" import { QueryClient } from "@tanstack/solid-query" import type { Config, OpencodeClient, Project } from "@opencode-ai/sdk/v2/client" -import type { AgentApi, CatalogApi, CommandApi, ProjectApi, ReferenceApi } from "@opencode-ai/client/promise" +import type { AgentApi, CatalogApi, CommandApi, ReferenceApi } from "@opencode-ai/client/promise" import type { NormalizedProviderListResponse } from "@opencode-ai/session-ui/context" import { bootstrapDirectory, @@ -17,6 +17,8 @@ import type { State, VcsCache } from "./types" import { ServerScope } from "@/utils/server-scope" import type { ServerApi } from "@/utils/server" +type ProjectApi = ServerApi["project"] + const provider = { all: new Map(), connected: [], default: {} } satisfies NormalizedProviderListResponse const api = { agent: { list: async () => ({ location: {}, data: [] }) }, @@ -200,7 +202,7 @@ describe("query keys", () => { calls.push(input) return { location: {}, - data: [{ name: "review", template: "Review files", source: "command" as const }], + data: [{ name: "review", template: "Review files" /* source: "command" as const */ }], } }, } as unknown as CommandApi @@ -208,7 +210,7 @@ describe("query keys", () => { const result = await loadCommands("/repo", api) expect(calls).toEqual([{ location: { directory: "/repo" } }]) - expect(result).toEqual([{ name: "review", template: "Review files", source: "command" }]) + expect(result).toEqual([{ name: "review", template: "Review files" /* source: "command" */ }]) }) test("loads projects from the current endpoint", async () => { diff --git a/packages/app/src/context/global-sync/bootstrap.ts b/packages/app/src/context/global-sync/bootstrap.ts index cf030c8af092..39221d551fa6 100644 --- a/packages/app/src/context/global-sync/bootstrap.ts +++ b/packages/app/src/context/global-sync/bootstrap.ts @@ -16,18 +16,12 @@ import type { CommandInfo, CommandListInput, CommandListOutput, - McpApi, - PathGetInput, - PathGetOutput, - PermissionApi, ProjectCurrentInput, ProjectCurrentOutput, ProjectListOutput, - QuestionApi, ReferenceListInput, ReferenceListOutput, SessionApi, - VcsApi, } from "@opencode-ai/client/promise" import { showToast } from "@/utils/toast" import { getFilename } from "@opencode-ai/core/util/path" @@ -50,6 +44,7 @@ import { NormalizedProviderListResponse } from "@opencode-ai/session-ui/context" import { ScopedKey, type ServerScope } from "@/utils/server-scope" import { normalizeSessionInfo } from "@/utils/session" import type { ServerProtocol } from "@/utils/server-protocol" +import type { ServerApi } from "@/utils/server" type GlobalStore = { ready: boolean @@ -121,9 +116,10 @@ type ProjectApi = { readonly current: (input?: ProjectCurrentInput) => Promise } -type PathApi = { - readonly get: (input?: PathGetInput) => Promise -} +type McpApi = ServerApi["mcp"] +type PermissionApi = ServerApi["permission"] +type QuestionApi = ServerApi["question"] +type VcsApi = ServerApi["vcs"] export const loadProjectsQuery = (scope: ServerScope, api: ProjectApi) => queryOptions({ @@ -143,7 +139,7 @@ export const loadProjectsQuery = (scope: ServerScope, api: ProjectApi) => export async function bootstrapGlobal(input: { serverSDK: OpencodeClient - serverAPI: CatalogApi & { readonly path: PathApi; readonly project: ProjectApi } + serverAPI: CatalogApi & { readonly project: ProjectApi } protocol?: Promise scope: ServerScope requestFailedTitle: string @@ -158,7 +154,7 @@ export async function bootstrapGlobal(input: { input.queryClient.fetchQuery( loadProvidersQuery(input.scope, null, input.serverAPI, input.serverSDK, input.protocol), ), - () => input.queryClient.fetchQuery(loadPathQuery(input.scope, null, input.serverAPI.path)), + () => input.queryClient.fetchQuery(loadPathQuery(input.scope, null, input.serverSDK, input.protocol)), () => input.queryClient .fetchQuery(loadProjectsQuery(input.scope, input.serverAPI.project)) @@ -289,17 +285,26 @@ export const loadCommands = ( agent: command.agent, model: providerID && id ? { providerID, id } : undefined, subtask: command.subtask, - source: command.source === "skill" ? undefined : command.source, + // source: command.source === "skill" ? undefined : command.source, } }) } return api.list({ location: { directory } }).then((result) => result.data) }) -export const loadPathQuery = (scope: ServerScope, directory: string | null, api: PathApi) => +export const loadPathQuery = ( + scope: ServerScope, + directory: string | null, + sdk: OpencodeClient, + protocol?: Promise, +) => queryOptions({ queryKey: [scope, directory, "path"], - queryFn: () => retry(() => api.get(directory ? { location: { directory } } : undefined)), + queryFn: async () => { + if ((await protocol) !== "v1") + return { state: "", config: "", worktree: "", directory: directory ?? "", home: "" } + return retry(() => sdk.path.get({ directory: directory ?? undefined }).then((result) => result.data!)) + }, }) export const loadReferencesQuery = ( @@ -328,7 +333,6 @@ export async function bootstrapDirectory(input: { readonly agent: AgentListApi readonly command: CommandListApi readonly mcp: McpApi - readonly path: PathApi readonly permission: PermissionApi readonly project: ProjectApi readonly question: QuestionApi @@ -408,19 +412,20 @@ export async function bootstrapDirectory(input: { !seededPath && (() => input.queryClient - .ensureQueryData(loadPathQuery(input.scope, input.directory, input.api.path)) + .ensureQueryData(loadPathQuery(input.scope, input.directory, input.sdk, input.protocol)) .then((data) => { const next = projectID(data.directory ?? input.directory, input.global.project) if (next) input.setStore("project", next) })), () => - retry(() => - input.api.vcs.get({ location: { directory: input.directory } }).then((result) => { - const next = { branch: result.data.branch, default_branch: result.data.defaultBranch } + retry(async () => { + if ((await input.protocol) !== "v1") return + return input.sdk.vcs.get().then((result) => { + const next = { branch: result.data?.branch, default_branch: result.data?.default_branch } input.setStore("vcs", next) if (next) input.vcsCache.setStore("value", next) - }), - ), + }) + }), input.mcp && (() => loadCommands(input.directory, input.api.command, input.sdk, input.protocol).then((commands) => diff --git a/packages/app/src/context/global-sync/event-reducer.ts b/packages/app/src/context/global-sync/event-reducer.ts index 39ba22c59d51..8f203715a6de 100644 --- a/packages/app/src/context/global-sync/event-reducer.ts +++ b/packages/app/src/context/global-sync/event-reducer.ts @@ -211,19 +211,19 @@ export function applyDirectoryEvent(input: { })) break } - case "session.archived": { - const properties = event.properties as { sessionID: string } - const result = Binary.search(input.store.session, properties.sessionID, (session) => session.id) - if (!result.found) break - const info = input.store.session[result.index] - input.setStore( - "session", - produce((draft) => void draft.splice(result.index, 1)), - ) - cleanupSessionCaches(input.setStore, properties.sessionID) - if (!info?.parentID) input.setStore("sessionTotal", (value) => Math.max(0, value - 1)) - break - } + // case "session.archived": { + // const properties = event.properties as { sessionID: string } + // const result = Binary.search(input.store.session, properties.sessionID, (session) => session.id) + // if (!result.found) break + // const info = input.store.session[result.index] + // input.setStore( + // "session", + // produce((draft) => void draft.splice(result.index, 1)), + // ) + // cleanupSessionCaches(input.setStore, properties.sessionID) + // if (!info?.parentID) input.setStore("sessionTotal", (value) => Math.max(0, value - 1)) + // break + // } case "session.moved": { const properties = event.properties as { sessionID: string diff --git a/packages/app/src/context/layout.tsx b/packages/app/src/context/layout.tsx index d086582035ae..6235f35c45ae 100644 --- a/packages/app/src/context/layout.tsx +++ b/packages/app/src/context/layout.tsx @@ -570,16 +570,22 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext( continue } - void serverSdk() - .api.project.update({ projectID: project.id, icon: { color } }) - .then((result) => - serverSync().set("project", (items) => - items.map((item) => (item.id === result.id ? normalizeProjectInfo(result) : item)), - ), - ) - .catch(() => { - if (colorRequested.get(worktree) === color) colorRequested.delete(worktree) - }) + const projectID = project.id + void (async () => { + const sdk = serverSdk() + if ((await sdk.protocol) !== "v1") return + return sdk.client.project + .update({ projectID, directory: worktree, icon: { color } }) + .then((response) => response.data) + .then((result) => { + if (!result) return + serverSync().set("project", (items) => + items.map((item) => (item.id === result.id ? normalizeProjectInfo(result) : item)), + ) + }) + })().catch(() => { + if (colorRequested.get(worktree) === color) colorRequested.delete(worktree) + }) } }) diff --git a/packages/app/src/context/server-session-v2-reducer.test.ts b/packages/app/src/context/server-session-v2-reducer.test.ts index a1db63b1212b..00cc37cf5240 100644 --- a/packages/app/src/context/server-session-v2-reducer.test.ts +++ b/packages/app/src/context/server-session-v2-reducer.test.ts @@ -114,7 +114,7 @@ describe("v2 session reducer", () => { sessionID: "ses_1", assistantMessageID: "msg_assistant", callID: "call_1", - structured: {}, + metadata: {}, content: [{ type: "text", text: "done" }], executed: true, }, diff --git a/packages/app/src/context/server-session-v2-reducer.ts b/packages/app/src/context/server-session-v2-reducer.ts index 3b9719c09875..b34ab3985ec1 100644 --- a/packages/app/src/context/server-session-v2-reducer.ts +++ b/packages/app/src/context/server-session-v2-reducer.ts @@ -269,13 +269,18 @@ export function createV2SessionReducer() { ...tool, executed: event.data.executed, providerState: event.data.state, - state: { status: "running", input: event.data.input, structured: {}, content: [] }, + // structured: {}, content: [] + state: { status: "running", input: event.data.input, metadata: {} }, time: { ...tool.time, ran: event.created }, })) case "session.tool.progress": return updateTool(source, event.data.assistantMessageID, event.data.callID, sessionID, (tool) => tool.state.status === "running" - ? { ...tool, state: { ...tool.state, structured: event.data.structured, content: event.data.content } } + ? { + ...tool, + // state: { ...tool.state, structured: event.data.structured, content: event.data.content }, + state: { ...tool.state, metadata: event.data.metadata }, + } : tool, ) case "session.tool.success": @@ -288,9 +293,10 @@ export function createV2SessionReducer() { state: { status: "completed", input: tool.state.input, - structured: event.data.structured, + // structured: event.data.structured, + metadata: event.data.metadata, content: event.data.content, - result: event.data.result, + // result: event.data.result, }, time: { ...tool.time, completed: event.created }, } @@ -305,10 +311,11 @@ export function createV2SessionReducer() { state: { status: "error", input: typeof tool.state.input === "string" ? {} : tool.state.input, - structured: tool.state.status === "running" ? tool.state.structured : {}, - content: tool.state.status === "running" ? tool.state.content : [], + // structured: tool.state.status === "running" ? tool.state.structured : {}, + metadata: event.data.metadata ?? (tool.state.status === "running" ? tool.state.metadata : {}), + content: event.data.content, error: event.data.error, - result: event.data.result, + // result: event.data.result, }, time: { ...tool.time, completed: event.created }, } diff --git a/packages/app/src/context/server-session.test.ts b/packages/app/src/context/server-session.test.ts index 1e1046fb76fd..e9595e137607 100644 --- a/packages/app/src/context/server-session.test.ts +++ b/packages/app/src/context/server-session.test.ts @@ -1,8 +1,11 @@ import { describe, expect, test } from "bun:test" import type { retry } from "@opencode-ai/core/util/retry" -import type { MessageApi, OpenCodeEvent, SessionApi } from "@opencode-ai/client/promise" +import type { OpenCodeEvent, SessionApi } from "@opencode-ai/client/promise" import type { Message, OpencodeClient, Part, Session } from "@opencode-ai/sdk/v2/client" import { createServerSession } from "./server-session" +import type { ServerApi } from "@/utils/server" + +type MessageApi = ServerApi["message"] const session = (id: string, parentID?: string): Session => ({ id, diff --git a/packages/app/src/context/server-session.ts b/packages/app/src/context/server-session.ts index e8f91cda3f6f..69bec61ba2fc 100644 --- a/packages/app/src/context/server-session.ts +++ b/packages/app/src/context/server-session.ts @@ -1,6 +1,6 @@ import { Binary } from "@opencode-ai/core/util/binary" import { retry } from "@opencode-ai/core/util/retry" -import type { MessageApi, OpenCodeEvent, SessionApi, SessionMessageInfo } from "@opencode-ai/client/promise" +import type { OpenCodeEvent, SessionApi, SessionMessageInfo } from "@opencode-ai/client/promise" import type { Message, OpencodeClient, @@ -21,6 +21,9 @@ import { normalizeSessionInfo } from "@/utils/session" import { normalizeSessionMessages } from "@/utils/session-message" import { dropSessionCaches, pickSessionCacheEvictions, SESSION_CACHE_LIMIT } from "./global-sync/session-cache" import { createV2SessionReducer, type V2SessionReduction } from "./server-session-v2-reducer" +import type { ServerApi } from "@/utils/server" + +type MessageApi = ServerApi["message"] const cmp = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0) const cmpMessage = (a: Message, b: Message) => a.time.created - b.time.created || cmp(a.id, b.id) @@ -954,10 +957,10 @@ export function createServerSession( }) if (event.type === "session.usage.updated" && info) remember({ ...info, cost: event.data.cost, tokens: event.data.tokens }) - if (event.type === "session.archived") { - if (info) remember({ ...info, time: { ...info.time, archived: event.created, updated: event.created } }) - evict([sessionID]) - } + // if (event.type === "session.archived") { + // if (info) remember({ ...info, time: { ...info.time, archived: event.created, updated: event.created } }) + // evict([sessionID]) + // } if (event.type === "session.execution.started") setData("session_status", sessionID, { type: "busy" }) if ( event.type === "session.execution.succeeded" || diff --git a/packages/app/src/context/server-sync.test.ts b/packages/app/src/context/server-sync.test.ts index 9f625c94324a..7821a09e207f 100644 --- a/packages/app/src/context/server-sync.test.ts +++ b/packages/app/src/context/server-sync.test.ts @@ -1,7 +1,6 @@ import { describe, expect, test } from "bun:test" import type { OpencodeClient } from "@opencode-ai/sdk/v2/client" import type { - McpApi, McpListInput, McpResourceCatalogInput, SessionApi, @@ -14,6 +13,9 @@ import { estimateRootSessionTotal, loadRootSessions } from "./global-sync/sessio import { loadActiveSessionsQuery, loadMcpQuery, loadMcpResourcesQuery, seedActiveSessionStatuses } from "./server-sync" import { ServerScope } from "@/utils/server-scope" import { createServerSession } from "./server-session" +import type { ServerApi } from "@/utils/server" + +type McpApi = ServerApi["mcp"] describe("MCP queries", () => { test("loads current servers for the requested location", async () => { diff --git a/packages/app/src/context/server-sync.tsx b/packages/app/src/context/server-sync.tsx index 109a7bf7d65c..6fe6d4bd099f 100644 --- a/packages/app/src/context/server-sync.tsx +++ b/packages/app/src/context/server-sync.tsx @@ -188,7 +188,8 @@ function makeQueryOptionsApi( projects: () => loadProjectsQuery(scope, serverAPI.project), providers: (directory: PathKey | null) => loadProvidersQuery(scope, directory, serverAPI, directory ? sdkFor(directory) : serverSDK(), protocol), - path: (directory: PathKey | null) => loadPathQuery(scope, directory, serverAPI.path), + path: (directory: PathKey | null) => + loadPathQuery(scope, directory, directory ? sdkFor(directory) : serverSDK(), protocol), agents: (directory: PathKey) => loadAgentsQuery(scope, directory, serverAPI.agent, sdkFor(directory), protocol), references: (directory: PathKey) => loadReferencesQuery(scope, directory, serverAPI.reference, sdkFor(directory), protocol), @@ -581,7 +582,7 @@ export function createServerSyncContextInner(serverSDK: ServerSDK) { children.mark(key) if ( event.current?.type === "session.moved" || - event.current?.type === "session.archived" || + // event.current?.type === "session.archived" || event.current?.type === "session.forked" || eventType === "command.updated" || eventType === "config.updated" || diff --git a/packages/app/src/pages/home/home-sessions-controller.tsx b/packages/app/src/pages/home/home-sessions-controller.tsx index 06d86c30c9ed..a12e9800e9fe 100644 --- a/packages/app/src/pages/home/home-sessions-controller.tsx +++ b/packages/app/src/pages/home/home-sessions-controller.tsx @@ -211,10 +211,16 @@ export function createHomeSessionsController(home: HomeController) { const ctx = home.server.focusedContext() if (!conn || !ctx) return const [, setStore] = ctx.sync.child(session.directory) + if ((await ctx.sdk.protocol) !== "v1") return await archiveHomeSession({ server: ServerConnection.key(conn), session, - archive: (sessionID) => ctx.sdk.api.session.archive({ sessionID, directory: session.directory }), + archive: (sessionID) => + ctx.sdk.client.session.update({ + sessionID, + directory: session.directory, + time: { archived: Date.now() }, + }), remove: () => setStore( produce((draft) => { diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 96ed022373a2..b348b44d8a87 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -872,12 +872,17 @@ export default function LegacyLayout(props: ParentProps) { } async function archiveSession(session: Session) { + if ((await serverSDK().protocol) !== "v1") return const [store, setStore] = serverSync().child(session.directory) const sessions = store.session ?? [] const index = sessions.findIndex((s) => s.id === session.id) const nextSession = sessions[index + 1] ?? sessions[index - 1] - await serverSDK().api.session.archive({ sessionID: session.id, directory: session.directory }) + await serverSDK().client.session.update({ + sessionID: session.id, + directory: session.directory, + time: { archived: Date.now() }, + }) setStore( produce((draft) => { const match = Binary.search(draft.session, session.id, (s) => s.id) @@ -1296,7 +1301,13 @@ export default function LegacyLayout(props: ParentProps) { const name = next === getFilename(project.worktree) ? "" : next if (project.id && project.id !== "global") { - const result = await serverSDK().api.project.update({ projectID: project.id, name }) + const sdk = serverSDK() + if ((await sdk.protocol) !== "v1") return + const result = await sdk.client.project + .update({ projectID: project.id, directory: project.worktree, name }) + .then((response) => response.data) + if (!result) return + // const result = await serverSDK().api.project.update({ projectID: project.id, name }) serverSync().set("project", (items) => items.map((item) => (item.id === result.id ? normalizeProjectInfo(result) : item)), ) @@ -1479,15 +1490,20 @@ export default function LegacyLayout(props: ParentProps) { return } - await Promise.all( - sessions - .filter((session) => session.time.archived === undefined) - .map((session) => - serverSDK() - .api.session.archive({ sessionID: session.id, directory: session.directory }) - .catch(() => undefined), - ), - ) + if ((await serverSDK().protocol) === "v1") + await Promise.all( + sessions + .filter((session) => session.time.archived === undefined) + .map((session) => + serverSDK() + .client.session.update({ + sessionID: session.id, + directory: session.directory, + time: { archived: Date.now() }, + }) + .catch(() => undefined), + ), + ) setBusy(directory, false) dismiss() diff --git a/packages/app/src/pages/session/timeline/message-timeline.tsx b/packages/app/src/pages/session/timeline/message-timeline.tsx index 48b432667e17..dc9153536cf2 100644 --- a/packages/app/src/pages/session/timeline/message-timeline.tsx +++ b/packages/app/src/pages/session/timeline/message-timeline.tsx @@ -812,13 +812,14 @@ export function MessageTimeline(props: { const archiveSession = async (sessionID: string) => { const session = sync().session.get(sessionID) if (!session) return + if ((await sdk().protocol) !== "v1") return const sessions = sync().data.session ?? [] const index = sessions.findIndex((s) => s.id === sessionID) const nextSession = index === -1 ? undefined : (sessions[index + 1] ?? sessions[index - 1]) await sdk() - .api.session.archive({ sessionID }) + .client.session.update({ sessionID, directory: sdk().directory, time: { archived: Date.now() } }) .then(() => { sync().set( produce((draft) => { diff --git a/packages/app/src/utils/server-compat.test.ts b/packages/app/src/utils/server-compat.test.ts index 605fdaace84f..52e5ec6e3bee 100644 --- a/packages/app/src/utils/server-compat.test.ts +++ b/packages/app/src/utils/server-compat.test.ts @@ -53,6 +53,7 @@ function setup( } describe("createCompatibleApi", () => { + /* test("routes V1 archive through the legacy session update", async () => { const { api, requests } = setup("v1") await api.session.archive({ sessionID: "ses_1", directory: "/repo" }) @@ -63,6 +64,7 @@ describe("createCompatibleApi", () => { expect(requests[0]!.method).toBe("PATCH") expect(await requests[0]!.json()).toMatchObject({ time: { archived: expect.any(Number) } }) }) + */ test("converts current prompts to the V1 prompt contract", async () => { const { api, requests } = setup("v1") @@ -127,14 +129,6 @@ describe("createCompatibleApi", () => { ]) }) - test("keeps V2 session actions on the current API", async () => { - const { api, requests } = setup("v2") - await api.session.archive({ sessionID: "ses_1" }) - - expect(new URL(requests[0]!.url).pathname).toBe("/api/session/ses_1/archive") - expect(requests[0]!.method).toBe("POST") - }) - test("resolves protocol detection once across implementation methods", async () => { let detections = 0 const resolved = Promise.resolve<"v1" | "v2">("v2") @@ -147,12 +141,22 @@ describe("createCompatibleApi", () => { }) const { api } = setup(protocol) - await api.session.archive({ sessionID: "ses_1" }) + await api.session.list() await api.session.list() expect(detections).toBe(1) }) + /* + test("keeps V2 session actions on the current API", async () => { + const { api, requests } = setup("v2") + await api.session.archive({ sessionID: "ses_1" }) + + expect(new URL(requests[0]!.url).pathname).toBe("/api/session/ses_1/archive") + expect(requests[0]!.method).toBe("POST") + }) + */ + test("uses the global V1 session search endpoint", async () => { const { api, requests } = setup("v1") await api.session.list({ parentID: null, search: "session", limit: 50 }) @@ -160,6 +164,7 @@ describe("createCompatibleApi", () => { expect(new URL(requests[0]!.url).pathname).toBe("/experimental/session") }) + /* test("projects the V1 default branch", async () => { const { api } = setup("v1", { vcs: { branch: "feature", default_branch: "dev" } }) @@ -167,6 +172,7 @@ describe("createCompatibleApi", () => { data: { branch: "feature", defaultBranch: "dev" }, }) }) + */ test("translates current file searches to the V1 dirs parameter", async () => { const { api, requests } = setup("v1") diff --git a/packages/app/src/utils/server-compat.ts b/packages/app/src/utils/server-compat.ts index 94374aa9f91f..1df1338b71e5 100644 --- a/packages/app/src/utils/server-compat.ts +++ b/packages/app/src/utils/server-compat.ts @@ -27,7 +27,7 @@ type CompatibleSessionApi = Omit< shell: (input: SessionShellInput & LegacyPrompt) => Promise compact: (input: SessionCompactInput & { model?: LegacyPrompt["model"] }) => Promise rename: (input: Parameters[0] & LegacyLocation) => ReturnType - archive: (input: Parameters[0] & LegacyLocation) => ReturnType + // archive: (input: Parameters[0] & LegacyLocation) => ReturnType remove: (input: Parameters[0] & LegacyLocation) => ReturnType } type CompatiblePermissionApi = Omit & { @@ -183,9 +183,9 @@ function createV1Api(input: CompatibleInput): CompatibleApi { async rename(value: Parameters[0] & LegacyLocation) { await legacy(value).session.update({ sessionID: value.sessionID, title: value.title }) }, - async archive(value: Parameters[0] & LegacyLocation) { - await legacy(value).session.update({ sessionID: value.sessionID, time: { archived: Date.now() } }) - }, + // async archive(value: Parameters[0] & LegacyLocation) { + // await legacy(value).session.update({ sessionID: value.sessionID, time: { archived: Date.now() } }) + // }, async remove(value: Parameters[0] & LegacyLocation) { await legacy(value).session.delete(value) }, @@ -308,34 +308,34 @@ function createV1Api(input: CompatibleInput): CompatibleApi { if (!result.data) throw new Error("Project not found") return { id: result.data.id, directory: result.data.worktree } satisfies ProjectCurrent }, - async update(value: Parameters[0]) { - const project = (await legacy().project.list()).data?.find((item) => item.id === value.projectID) - const result = await legacy({ directory: project?.worktree }).project.update({ - ...value, - directory: project?.worktree, - }) - if (!result.data) throw new Error(`Project not found: ${value.projectID}`) - return result.data as Project - }, + // async update(value: Parameters[0]) { + // const project = (await legacy().project.list()).data?.find((item) => item.id === value.projectID) + // const result = await legacy({ directory: project?.worktree }).project.update({ + // ...value, + // directory: project?.worktree, + // }) + // if (!result.data) throw new Error(`Project not found: ${value.projectID}`) + // return result.data as Project + // }, async directories(value: Parameters[0]) { const result = await legacy(value.location).worktree.list() return (result.data ?? []).map((item) => ({ directory: item })) }, }, - path: { - ...input.current.path, - async get(value?: Parameters[0]) { - const result = await legacy(value?.location).path.get() - if (!result.data) throw new Error("Path unavailable") - return result.data - }, - }, + // path: { + // ...input.current.path, + // async get(value?: Parameters[0]) { + // const result = await legacy(value?.location).path.get() + // if (!result.data) throw new Error("Path unavailable") + // return result.data + // }, + // }, vcs: { ...input.current.vcs, - async get(value?: Parameters[0]) { - const result = await legacy(value?.location).vcs.get() - return located({ branch: result.data?.branch, defaultBranch: result.data?.default_branch }, value?.location) - }, + // async get(value?: Parameters[0]) { + // const result = await legacy(value?.location).vcs.get() + // return located({ branch: result.data?.branch, defaultBranch: result.data?.default_branch }, value?.location) + // }, async status(value?: Parameters[0]) { const result = await legacy(value?.location).vcs.status() return located(result.data ?? [], value?.location) @@ -451,9 +451,9 @@ function createV1Api(input: CompatibleInput): CompatibleApi { }, pty: { ...input.current.pty, - async shells(value?: Parameters[0]) { - return located((await legacy(value?.location).pty.shells()).data ?? [], value?.location) - }, + // async shells(value?: Parameters[0]) { + // return located((await legacy(value?.location).pty.shells()).data ?? [], value?.location) + // }, async list(value?: Parameters[0]) { return located((await legacy(value?.location).pty.list()).data ?? [], value?.location) }, @@ -485,11 +485,11 @@ function createV1Api(input: CompatibleInput): CompatibleApi { async remove(value: Parameters[0]) { await legacy(value.location).pty.remove({ ptyID: value.ptyID }) }, - async connectToken(value: Parameters[0]) { - const result = await legacy(value.location).pty.connectToken({ ptyID: value.ptyID }) - if (!result.data) throw new Error(`Failed to connect terminal: ${value.ptyID}`) - return located(result.data, value.location) - }, + // async connectToken(value: Parameters[0]) { + // const result = await legacy(value.location).pty.connectToken({ ptyID: value.ptyID }) + // if (!result.data) throw new Error(`Failed to connect terminal: ${value.ptyID}`) + // return located(result.data, value.location) + // }, }, permission: { ...input.current.permission, diff --git a/packages/app/src/utils/session-message.test.ts b/packages/app/src/utils/session-message.test.ts index d998c0c0459e..a69c414e1686 100644 --- a/packages/app/src/utils/session-message.test.ts +++ b/packages/app/src/utils/session-message.test.ts @@ -49,7 +49,7 @@ describe("normalizeSessionMessages", () => { state: { status: "completed", input: { filePath: "note.txt" }, - structured: { title: "note.txt" }, + metadata: { title: "note.txt" }, content: [{ type: "text", text: "hello" }], }, time: { created: 5, ran: 6, completed: 7 }, @@ -170,7 +170,7 @@ describe("normalizeSessionMessages", () => { status: "completed", input: { path: "/repo/README.md", oldString: "old", newString: "new" }, content: [{ type: "text", text: "Edited file successfully" }], - structured: { + metadata: { files: [ { file: "README.md", diff --git a/packages/app/src/utils/session-message.ts b/packages/app/src/utils/session-message.ts index c67c6c717c2a..93d86a66bb25 100644 --- a/packages/app/src/utils/session-message.ts +++ b/packages/app/src/utils/session-message.ts @@ -304,7 +304,8 @@ function toolPart(sessionID: string, messageID: string, tool: SessionMessageAssi return { status: "running" as const, input: normalizeToolInput(tool.name, tool.state.input), - metadata: normalizeToolMetadata(tool.name, tool.state.structured), + // metadata: normalizeToolMetadata(tool.name, tool.state.structured), + metadata: normalizeToolMetadata(tool.name, tool.state.metadata ?? {}), time: { start }, } } @@ -313,7 +314,8 @@ function toolPart(sessionID: string, messageID: string, tool: SessionMessageAssi status: "error" as const, input: normalizeToolInput(tool.name, tool.state.input), error: tool.state.error.message, - metadata: normalizeToolMetadata(tool.name, tool.state.structured), + // metadata: normalizeToolMetadata(tool.name, tool.state.structured), + metadata: normalizeToolMetadata(tool.name, tool.state.metadata ?? {}), time: { start, end: tool.time.completed ?? start }, } } @@ -337,7 +339,8 @@ function toolPart(sessionID: string, messageID: string, tool: SessionMessageAssi input: normalizeToolInput(tool.name, tool.state.input), output: tool.state.content.flatMap((item) => (item.type === "text" ? [item.text] : [])).join("\n"), title: tool.name, - metadata: normalizeToolMetadata(tool.name, tool.state.structured), + // metadata: normalizeToolMetadata(tool.name, tool.state.structured), + metadata: normalizeToolMetadata(tool.name, tool.state.metadata ?? {}), time: { start, end: tool.time.completed ?? start }, attachments: attachments.length ? attachments : undefined, } diff --git a/packages/app/vendor/opencode-ai-client-1.17.13-v2.tgz b/packages/app/vendor/opencode-ai-client-1.17.13-v2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bc1b664f82dcc55a95fc45b4c3b2c5b0cafaec55 GIT binary patch literal 67724 zcmYJaQl@s%1CNf6+tu< z(Ekh&z)kOu`?h!zCAYwN{lVf~Cqw6a8hAnq?IunAF{gVI&*b~2)ay?2ak3yODG>-T z0+6(l`AdKQ6$I2#u|O3LkeJkIZY*VEe|1+?7k~QR%~bb41KOwjul{n!=kz=P9xg7f zJUPiL>Mxr=KBvi>p$lUkK0fE%;o+bun7<>!PJax-Z&Rp$HR}_KrZi%9jqP3F_t!dR z@#3Dr@@8rOzgKy2?{uv;Sq1$bLyv}h0N3o%$bNisGqaj283VADSX`zDSQE2i{oom=E^bB0Y4(0J!&p{P*GH+9nW<$({7%=2v>pEBUR( zG_2n^>e35s=`@bnq?;QmWLWvm4uF5Ex<@4Dy|Z*!3U$?A0WHAeQ{W6k>e?1ROJ@>F0=1+j8xPb9pRx8#jMl zV{GT$hql8hIt%lx#MJ1S@w?p_?D#%lep)=&54>R#?DzkieZ74}e*igKUI09p`Tj2W zuR9_{{MsMy_s4>jd_^@I$USZ%2CI032Am{ zbw@#h-=S|CnNWlEE$QRJUf}oL$R%;4+RRTf{~HW@0D1PvGVR@A#a_UtUBEavuQtd5 z!QX&3FqpJ>7s*DVKO%BUs)yO&Sq z*dg_Upy%ds(=t|TUYhvZCdFj!f?lGCkIQ!F>j<_lh>iIB>w^7XAj;3ZQ^QZF`>Fp& z{bFYNrvRDJX{X}U>My~bF*L}}#a%T+)E!|aIwr?#y-*jTCJ^TRv@RB0v{-&j6{ZQF z232nU%4?Q??^{sfJ(|Pb{ufM{sqnG+(OQd)9~z_OL;8K6C;Jq@O&NFDYi$Mq`rG!# zApmF6hRIHy^Nks={(D^XlBMm`>1F-6ALx9+e$pT5e3J0p9_!C#4I}^FyJgOdk?30EDlQ)s)aG){FCP=#?S)k0Pt4;Jf?s30FH|vQtkwH z{Xg4Rzw$x*R%&dof8+JaCjo~XU4ZR(4PMd>9n^?{HwSAGc~Jfn?RYRhDu!47;h0vx z*HujL%L6??dlU2mq<}_zPq4c!mcc+p{r)g0iLrLlvM|*Q8s0aax}|PX@)fmyzksir zeVbu4AJzH{P69|r`4`{|&>`*DKR!>hg@8ebpr>q0IFSyKu$ zc2j2D{W`z-%Zu4B1QHZn)zsp1@e-U)zpH+~!m$e2CDpV#`bb%Tdlevmv^Krt`2vif1nV5QGF3#`CPj(gz!zbkN5_Qhg;$t~E z7Kz`DR^$hNUVuC~*0>$pK3>j^zm~3ni)HG@y+SxBf=a)eAO!|KN|}?7%sbcvRBy_F zXIjApf#v;pu6P#p5H�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%0ADAsYp?N1>Lhg`3sh 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

7Y+QD}T8_DVKLjGZ(7vq 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 literal 0 HcmV?d00001 diff --git a/packages/app/vendor/opencode-ai-client-1.17.13.tgz b/packages/app/vendor/opencode-ai-client-1.17.13.tgz deleted file mode 100644 index 5939f2cb39c27da205f1f37e9971009a669b83c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75585 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 z 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

$=Nes$vsW~pOCtUnEt6JQ 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 diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 158cb21e0ab8..1fba11705367 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -39,7 +39,7 @@ }, "dependencies": { "@kobalte/core": "catalog:", - "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13.tgz", + "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", "@opencode-ai/core": "workspace:*", "@opencode-ai/sdk": "workspace:*", "@opencode-ai/ui": "workspace:*", From cc9f13f2328a5197a21f0a2eee987c3b58a2c2d6 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sat, 25 Jul 2026 15:55:14 +0800 Subject: [PATCH 2/2] test(app): align e2e with v2 client --- .../review-state-persistence.spec.ts | 16 +++---- .../review-terminal-stacked.spec.ts | 46 +++++++++---------- .../regression/terminal-tab-switch.spec.ts | 2 +- 3 files changed, 30 insertions(+), 34 deletions(-) diff --git a/packages/app/e2e/regression/review-state-persistence.spec.ts b/packages/app/e2e/regression/review-state-persistence.spec.ts index 4f67756d53c2..0d6756201e7e 100644 --- a/packages/app/e2e/regression/review-state-persistence.spec.ts +++ b/packages/app/e2e/regression/review-state-persistence.spec.ts @@ -65,7 +65,7 @@ async function switchSession(page: Page, title: string) { async function setup(page: Page) { await mockOpenCodeServer(page, { - protocol: "v2", + protocol: "v1", directory, project: { id: projectID, @@ -93,20 +93,18 @@ async function setup(page: Page) { route.fulfill({ status: 200, contentType: "application/json", - body: JSON.stringify({ location: { directory }, data: { branch: "feature", defaultBranch: "dev" } }), + body: JSON.stringify({ branch: "feature", default_branch: "dev" }), }), ) await page.route("**/vcs/diff**", (route) => route.fulfill({ status: 200, contentType: "application/json", - body: JSON.stringify({ - location: { directory }, - data: - new URL(route.request().url()).searchParams.get("mode") === "branch" - ? [diff("src/alpha.ts"), diff("src/beta.ts")] - : [diff("src/alpha.ts"), diff("src/gamma.ts")], - }), + body: JSON.stringify( + new URL(route.request().url()).searchParams.get("mode") === "branch" + ? [diff("src/alpha.ts"), diff("src/beta.ts")] + : [diff("src/alpha.ts"), diff("src/gamma.ts")], + ), }), ) await page.addInitScript( diff --git a/packages/app/e2e/regression/review-terminal-stacked.spec.ts b/packages/app/e2e/regression/review-terminal-stacked.spec.ts index 7cc8723a8cf7..79b564820e20 100644 --- a/packages/app/e2e/regression/review-terminal-stacked.spec.ts +++ b/packages/app/e2e/regression/review-terminal-stacked.spec.ts @@ -25,7 +25,7 @@ test("keeps the review tree and terminal sized when both panels are open", async let detailFailures = 1 await page.setViewportSize({ width: 1400, height: 900 }) await mockOpenCodeServer(page, { - protocol: "v2", + protocol: "v1", directory, project: { id: projectID, @@ -67,33 +67,31 @@ test("keeps the review tree and terminal sized when both panels are open", async status: 200, contentType: "application/json", body: JSON.stringify({ - location: { directory }, - data: { branch: "review-pane-performance", defaultBranch: "dev" }, + branch: "review-pane-performance", + default_branch: "dev", }), }), ) - await page.route("**/api/vcs/diff**", (route) => { + await page.route("**/vcs/diff**", (route) => { const url = new URL(route.request().url()) - const scope = url.searchParams.get("location[directory]")?.replaceAll("\\", "/") + const scope = url.searchParams.get("directory")?.replaceAll("\\", "/") const detail = scope?.endsWith("/src/branch/d00027") if (detail && detailFailures-- > 0) return route.fulfill({ status: 500, body: "retry detail" }) return route.fulfill({ status: 200, contentType: "application/json", - body: JSON.stringify({ - location: { directory: scope ?? directory, project: { id: projectID, directory } }, - data: - url.searchParams.get("mode") === "branch" - ? detail - ? branchDiffs - .filter((diff) => diff.file.startsWith("src/branch/d00027/")) - .map((diff) => fileDiff(diff.file, diff.additions, true, detailVersion)) - : branchDiffs - : Array.from({ length: 7 }, (_, index) => fileDiff(`src/git-${index}.ts`, 1)), - }), + body: JSON.stringify( + url.searchParams.get("mode") === "branch" + ? detail + ? branchDiffs + .filter((diff) => diff.file.startsWith("src/branch/d00027/")) + .map((diff) => fileDiff(diff.file, diff.additions, true, detailVersion)) + : branchDiffs + : Array.from({ length: 7 }, (_, index) => fileDiff(`src/git-${index}.ts`, 1)), + ), }) }) - await page.route("**/api/pty*", (route) => + await page.route("**/pty*", (route) => route.fulfill({ status: 200, contentType: "application/json", @@ -111,7 +109,7 @@ test("keeps the review tree and terminal sized when both panels are open", async }), }), ) - await page.route("**/api/pty/pty_review_terminal*", (route) => + await page.route("**/pty/pty_review_terminal*", (route) => route.fulfill({ status: 200, contentType: "application/json", @@ -129,7 +127,7 @@ test("keeps the review tree and terminal sized when both panels are open", async }), }), ) - await page.route("**/api/pty/pty_review_terminal/connect-token*", (route) => + await page.route("**/pty/pty_review_terminal/connect-token*", (route) => route.fulfill({ status: 200, contentType: "application/json", @@ -139,7 +137,7 @@ test("keeps the review tree and terminal sized when both panels are open", async }), }), ) - await page.routeWebSocket("**/api/pty/pty_review_terminal/connect", () => undefined) + await page.routeWebSocket("**/pty/pty_review_terminal/connect", () => undefined) await page.addInitScript(() => { localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) localStorage.setItem( @@ -177,8 +175,8 @@ test("keeps the review tree and terminal sized when both panels are open", async const lazyDiff = page.waitForRequest((request) => { const url = new URL(request.url()) return ( - url.pathname === "/api/vcs/diff" && - url.searchParams.get("location[directory]")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true + url.pathname === "/vcs/diff" && + url.searchParams.get("directory")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true ) }) await lastFile.click() @@ -192,8 +190,8 @@ test("keeps the review tree and terminal sized when both panels are open", async const refreshedDiff = page.waitForRequest((request) => { const url = new URL(request.url()) return ( - url.pathname === "/api/vcs/diff" && - url.searchParams.get("location[directory]")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true + url.pathname === "/vcs/diff" && + url.searchParams.get("directory")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true ) }) sessionStatus[sessionID] = { type: "idle" } diff --git a/packages/app/e2e/regression/terminal-tab-switch.spec.ts b/packages/app/e2e/regression/terminal-tab-switch.spec.ts index 0076c5a2ca2f..165920753cb2 100644 --- a/packages/app/e2e/regression/terminal-tab-switch.spec.ts +++ b/packages/app/e2e/regression/terminal-tab-switch.spec.ts @@ -32,7 +32,7 @@ test("keeps the terminal session alive when switching session tabs in a workspac const connection = new URL(connections[0]!) expect(connection.pathname).toBe(`/api/pty/${ptyID}/connect`) expect(connection.searchParams.get("location[directory]")).toBe(directory) - expect(connection.searchParams.get("ticket")).toBe("e2e-ticket") + expect(connection.searchParams.get("ticket")).toBeNull() await writeProbe(page) await switchTab(page, titleB)