diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index 644d5d803c..eb05ef4e7d 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -21,7 +21,6 @@ import { Instance } from "../project/instance" import { Agent } from "../agent/agent" import { Auth } from "../auth" import { Command } from "../command" -import { ProjectRoute } from "./project" import { Project } from "../project/project" import { Global } from "../global" @@ -85,6 +84,7 @@ export namespace Server { return next() }) }) + .use(zValidator("query", z.object({ directory: z.string().optional() }))) .get( "/project", describeRoute({ diff --git a/packages/sdk/js/src/gen/sdk.gen.ts b/packages/sdk/js/src/gen/sdk.gen.ts index 9771959f05..4c1bfdbde9 100644 --- a/packages/sdk/js/src/gen/sdk.gen.ts +++ b/packages/sdk/js/src/gen/sdk.gen.ts @@ -8,6 +8,8 @@ import type { EventSubscribeResponses, ConfigGetData, ConfigGetResponses, + PathGetData, + PathGetResponses, SessionListData, SessionListResponses, SessionCreateData, @@ -164,6 +166,18 @@ class Config extends _HeyApiClient { } } +class Path extends _HeyApiClient { + /** + * Get the current path + */ + public get(options?: Options) { + return (options?.client ?? this._client).get({ + url: "/path", + ...options, + }) + } +} + class Session extends _HeyApiClient { /** * List all sessions @@ -623,6 +637,7 @@ export class OpencodeClient extends _HeyApiClient { project = new Project({ client: this._client }) event = new Event({ client: this._client }) config = new Config({ client: this._client }) + path = new Path({ client: this._client }) session = new Session({ client: this._client }) command = new Command({ client: this._client }) find = new Find({ client: this._client }) diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 6e542eddd3..b0e09d7a21 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -1049,6 +1049,11 @@ export type McpRemoteConfig = { export type LayoutConfig = "auto" | "stretch" +export type Path = { + state: string + config: string +} + export type _Error = { data: { [key: string]: unknown @@ -1173,10 +1178,17 @@ export type WellKnownAuth = { token: string } +/** + * Working directory path (defaults to current working directory) + */ +export type Directory = string + export type ProjectListData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/project" } @@ -1192,7 +1204,9 @@ export type ProjectListResponse = ProjectListResponses[keyof ProjectListResponse export type EventSubscribeData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/event" } @@ -1208,7 +1222,9 @@ export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscrib export type ConfigGetData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/config" } @@ -1221,10 +1237,30 @@ export type ConfigGetResponses = { export type ConfigGetResponse = ConfigGetResponses[keyof ConfigGetResponses] +export type PathGetData = { + body?: never + path?: never + query?: { + directory?: string + } + url: "/path" +} + +export type PathGetResponses = { + /** + * Path + */ + 200: Path +} + +export type PathGetResponse = PathGetResponses[keyof PathGetResponses] + export type SessionListData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/session" } @@ -1243,7 +1279,9 @@ export type SessionCreateData = { title?: string } path?: never - query?: never + query?: { + directory?: string + } url: "/session" } @@ -1270,7 +1308,9 @@ export type SessionDeleteData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}" } @@ -1288,7 +1328,9 @@ export type SessionGetData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}" } @@ -1308,7 +1350,9 @@ export type SessionUpdateData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}" } @@ -1326,7 +1370,9 @@ export type SessionChildrenData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/children" } @@ -1351,7 +1397,9 @@ export type SessionInitData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/init" } @@ -1369,7 +1417,9 @@ export type SessionAbortData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/abort" } @@ -1387,7 +1437,9 @@ export type SessionUnshareData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/share" } @@ -1405,7 +1457,9 @@ export type SessionShareData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/share" } @@ -1429,7 +1483,9 @@ export type SessionSummarizeData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/summarize" } @@ -1450,7 +1506,9 @@ export type SessionMessagesData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/message" } @@ -1494,7 +1552,9 @@ export type SessionChatData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/message" } @@ -1522,7 +1582,9 @@ export type SessionMessageData = { */ messageID: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/message/{messageID}" } @@ -1552,7 +1614,9 @@ export type SessionCommandData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/command" } @@ -1579,7 +1643,9 @@ export type SessionShellData = { */ id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/shell" } @@ -1600,7 +1666,9 @@ export type SessionRevertData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/revert" } @@ -1618,7 +1686,9 @@ export type SessionUnrevertData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/unrevert" } @@ -1639,7 +1709,9 @@ export type PostSessionByIdPermissionsByPermissionIdData = { id: string permissionID: string } - query?: never + query?: { + directory?: string + } url: "/session/{id}/permissions/{permissionID}" } @@ -1656,7 +1728,9 @@ export type PostSessionByIdPermissionsByPermissionIdResponse = export type CommandListData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/command" } @@ -1672,7 +1746,9 @@ export type CommandListResponse = CommandListResponses[keyof CommandListResponse export type ConfigProvidersData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/config/providers" } @@ -1694,6 +1770,7 @@ export type FindTextData = { body?: never path?: never query: { + directory?: string pattern: string } url: "/find" @@ -1728,6 +1805,7 @@ export type FindFilesData = { body?: never path?: never query: { + directory?: string query: string } url: "/find/file" @@ -1746,6 +1824,7 @@ export type FindSymbolsData = { body?: never path?: never query: { + directory?: string query: string } url: "/find/symbol" @@ -1764,6 +1843,7 @@ export type FileListData = { body?: never path?: never query: { + directory?: string path: string } url: "/file" @@ -1782,6 +1862,7 @@ export type FileReadData = { body?: never path?: never query: { + directory?: string path: string } url: "/file/content" @@ -1802,7 +1883,9 @@ export type FileReadResponse = FileReadResponses[keyof FileReadResponses] export type FileStatusData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/file/status" } @@ -1837,7 +1920,9 @@ export type AppLogData = { } } path?: never - query?: never + query?: { + directory?: string + } url: "/log" } @@ -1853,7 +1938,9 @@ export type AppLogResponse = AppLogResponses[keyof AppLogResponses] export type AppAgentsData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/agent" } @@ -1871,7 +1958,9 @@ export type TuiAppendPromptData = { text: string } path?: never - query?: never + query?: { + directory?: string + } url: "/tui/append-prompt" } @@ -1887,7 +1976,9 @@ export type TuiAppendPromptResponse = TuiAppendPromptResponses[keyof TuiAppendPr export type TuiOpenHelpData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/open-help" } @@ -1903,7 +1994,9 @@ export type TuiOpenHelpResponse = TuiOpenHelpResponses[keyof TuiOpenHelpResponse export type TuiOpenSessionsData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/open-sessions" } @@ -1919,7 +2012,9 @@ export type TuiOpenSessionsResponse = TuiOpenSessionsResponses[keyof TuiOpenSess export type TuiOpenThemesData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/open-themes" } @@ -1935,7 +2030,9 @@ export type TuiOpenThemesResponse = TuiOpenThemesResponses[keyof TuiOpenThemesRe export type TuiOpenModelsData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/open-models" } @@ -1951,7 +2048,9 @@ export type TuiOpenModelsResponse = TuiOpenModelsResponses[keyof TuiOpenModelsRe export type TuiSubmitPromptData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/submit-prompt" } @@ -1967,7 +2066,9 @@ export type TuiSubmitPromptResponse = TuiSubmitPromptResponses[keyof TuiSubmitPr export type TuiClearPromptData = { body?: never path?: never - query?: never + query?: { + directory?: string + } url: "/tui/clear-prompt" } @@ -1985,7 +2086,9 @@ export type TuiExecuteCommandData = { command: string } path?: never - query?: never + query?: { + directory?: string + } url: "/tui/execute-command" } @@ -2005,7 +2108,9 @@ export type TuiShowToastData = { variant: "info" | "success" | "warning" | "error" } path?: never - query?: never + query?: { + directory?: string + } url: "/tui/show-toast" } @@ -2023,7 +2128,9 @@ export type AuthSetData = { path: { id: string } - query?: never + query?: { + directory?: string + } url: "/auth/{id}" }