// This file is auto-generated by @hey-api/openapi-ts import { client } from "./client.gen.js" import { buildClientParams, type Client, type Options as Options2, type TDataShape } from "./client/index.js" import type { AgentPartInput, AppAgentsResponses, AppLogErrors, AppLogResponses, Auth as Auth2, AuthSetErrors, AuthSetResponses, CommandListResponses, Config as Config2, ConfigGetResponses, ConfigProvidersResponses, ConfigUpdateErrors, ConfigUpdateResponses, EventSubscribeResponses, EventTuiCommandExecute, EventTuiPromptAppend, EventTuiToastShow, FileListResponses, FilePartInput, FileReadResponses, FileStatusResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, FormatterStatusResponses, GlobalEventResponses, InstanceDisposeResponses, LspStatusResponses, McpAddErrors, McpAddResponses, McpAuthAuthenticateErrors, McpAuthAuthenticateResponses, McpAuthCallbackErrors, McpAuthCallbackResponses, McpAuthRemoveErrors, McpAuthRemoveResponses, McpAuthStartErrors, McpAuthStartResponses, McpLocalConfig, McpRemoteConfig, McpStatusResponses, PathGetResponses, PermissionRespondErrors, PermissionRespondResponses, ProjectCurrentResponses, ProjectListResponses, ProviderAuthResponses, ProviderListResponses, ProviderOauthAuthorizeErrors, ProviderOauthAuthorizeResponses, ProviderOauthCallbackErrors, ProviderOauthCallbackResponses, PtyConnectErrors, PtyConnectResponses, PtyCreateErrors, PtyCreateResponses, PtyGetErrors, PtyGetResponses, PtyListResponses, PtyRemoveErrors, PtyRemoveResponses, PtyUpdateErrors, PtyUpdateResponses, SessionAbortErrors, SessionAbortResponses, SessionChildrenErrors, SessionChildrenResponses, SessionCommandErrors, SessionCommandResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteErrors, SessionDeleteResponses, SessionDiffErrors, SessionDiffResponses, SessionForkResponses, SessionGetErrors, SessionGetResponses, SessionInitErrors, SessionInitResponses, SessionListResponses, SessionMessageErrors, SessionMessageResponses, SessionMessagesErrors, SessionMessagesResponses, SessionPromptAsyncErrors, SessionPromptAsyncResponses, SessionPromptErrors, SessionPromptResponses, SessionRevertErrors, SessionRevertResponses, SessionShareErrors, SessionShareResponses, SessionShellErrors, SessionShellResponses, SessionStatusErrors, SessionStatusResponses, SessionSummarizeErrors, SessionSummarizeResponses, SessionTodoErrors, SessionTodoResponses, SessionUnrevertErrors, SessionUnrevertResponses, SessionUnshareErrors, SessionUnshareResponses, SessionUpdateErrors, SessionUpdateResponses, SubtaskPartInput, TextPartInput, ToolIdsErrors, ToolIdsResponses, ToolListErrors, ToolListResponses, TuiAppendPromptErrors, TuiAppendPromptResponses, TuiClearPromptResponses, TuiControlNextResponses, TuiControlResponseResponses, TuiExecuteCommandErrors, TuiExecuteCommandResponses, TuiOpenHelpResponses, TuiOpenModelsResponses, TuiOpenSessionsResponses, TuiOpenThemesResponses, TuiPublishErrors, TuiPublishResponses, TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses, } from "./types.gen.js" export type Options = Options2< TData, ThrowOnError > & { /** * You can provide a client instance returned by `createClient()` instead of * individual options. This might be also useful if you want to implement a * custom client. */ client?: Client /** * You can pass arbitrary values through the `meta` object. This can be * used to access values that aren't defined as part of the SDK function. */ meta?: Record } class HeyApiClient { protected client: Client constructor(args?: { client?: Client }) { this.client = args?.client ?? client } } class HeyApiRegistry { private readonly defaultKey = "default" private readonly instances: Map = new Map() get(key?: string): T { const instance = this.instances.get(key ?? this.defaultKey) if (!instance) { throw new Error(`No SDK client found. Create one with "new OpencodeClient()" to fix this error.`) } return instance } set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value) } } export class Global extends HeyApiClient { /** * Get events */ public event(options?: Options) { return (options?.client ?? this.client).sse.get({ url: "/global/event", ...options, }) } } export class Project extends HeyApiClient { /** * List all projects * * List all projects */ public list( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/project", ...options, ...params, }) } /** * Get the current project */ public current( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/project/current", ...options, ...params, }) } } export class Pty extends HeyApiClient { /** * List all PTY sessions */ public list( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/pty", ...options, ...params, }) } /** * Create a new PTY session */ public create( parameters?: { directory?: string command?: string args?: Array cwd?: string title?: string env?: { [key: string]: string } }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "command" }, { in: "body", key: "args" }, { in: "body", key: "cwd" }, { in: "body", key: "title" }, { in: "body", key: "env" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/pty", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Remove a PTY session */ public remove( parameters: { ptyID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "ptyID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).delete({ url: "/pty/{ptyID}", ...options, ...params, }) } /** * Get PTY session info */ public get( parameters: { ptyID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "ptyID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/pty/{ptyID}", ...options, ...params, }) } /** * Update PTY session */ public update( parameters: { ptyID: string directory?: string title?: string size?: { rows: number cols: number } }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "ptyID" }, { in: "query", key: "directory" }, { in: "body", key: "title" }, { in: "body", key: "size" }, ], }, ], ) return (options?.client ?? this.client).put({ url: "/pty/{ptyID}", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Connect to a PTY session */ public connect( parameters: { ptyID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "ptyID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/pty/{ptyID}/connect", ...options, ...params, }) } } export class Config extends HeyApiClient { /** * Get config info */ public get( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/config", ...options, ...params, }) } /** * Update config */ public update( parameters?: { directory?: string config?: Config2 }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { key: "config", map: "body" }, ], }, ], ) return (options?.client ?? this.client).patch({ url: "/config", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * List all providers */ public providers( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/config/providers", ...options, ...params, }) } } export class Tool extends HeyApiClient { /** * List all tool IDs (including built-in and dynamically registered) */ public ids( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/experimental/tool/ids", ...options, ...params, }) } /** * List tools with JSON schema parameters for a provider/model */ public list( parameters: { directory?: string provider: string model: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "provider" }, { in: "query", key: "model" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/experimental/tool", ...options, ...params, }) } } export class Instance extends HeyApiClient { /** * Dispose the current instance */ public dispose( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/instance/dispose", ...options, ...params, }) } } export class Path extends HeyApiClient { /** * Get the current path */ public get( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/path", ...options, ...params, }) } } export class Vcs extends HeyApiClient { /** * Get VCS info for the current instance */ public get( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/vcs", ...options, ...params, }) } } export class Session extends HeyApiClient { /** * List all sessions */ public list( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/session", ...options, ...params, }) } /** * Create a new session */ public create( parameters?: { directory?: string parentID?: string title?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "parentID" }, { in: "body", key: "title" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Get session status */ public status( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/session/status", ...options, ...params, }) } /** * Delete a session and all its data */ public delete( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).delete({ url: "/session/{sessionID}", ...options, ...params, }) } /** * Get session */ public get( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}", ...options, ...params, }) } /** * Update session properties */ public update( parameters: { sessionID: string directory?: string title?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "title" }, ], }, ], ) return (options?.client ?? this.client).patch({ url: "/session/{sessionID}", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Get a session's children */ public children( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}/children", ...options, ...params, }) } /** * Get the todo list for a session */ public todo( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}/todo", ...options, ...params, }) } /** * Analyze the app and create an AGENTS.md file */ public init( parameters: { sessionID: string directory?: string modelID?: string providerID?: string messageID?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "modelID" }, { in: "body", key: "providerID" }, { in: "body", key: "messageID" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/init", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Fork an existing session at a specific message */ public fork( parameters: { sessionID: string directory?: string messageID?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "messageID" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/fork", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Abort a session */ public abort( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/abort", ...options, ...params, }) } /** * Unshare the session */ public unshare( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).delete({ url: "/session/{sessionID}/share", ...options, ...params, }) } /** * Share a session */ public share( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/share", ...options, ...params, }) } /** * Get the diff for this session */ public diff( parameters: { sessionID: string directory?: string messageID?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "query", key: "messageID" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}/diff", ...options, ...params, }) } /** * Summarize the session */ public summarize( parameters: { sessionID: string directory?: string providerID?: string modelID?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "providerID" }, { in: "body", key: "modelID" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/summarize", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * List messages for a session */ public messages( parameters: { sessionID: string directory?: string limit?: number }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "query", key: "limit" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}/message", ...options, ...params, }) } /** * Create and send a new message to a session */ public prompt( parameters: { sessionID: string directory?: string messageID?: string model?: { providerID: string modelID: string } agent?: string noReply?: boolean system?: string tools?: { [key: string]: boolean } parts?: Array }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "messageID" }, { in: "body", key: "model" }, { in: "body", key: "agent" }, { in: "body", key: "noReply" }, { in: "body", key: "system" }, { in: "body", key: "tools" }, { in: "body", key: "parts" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/message", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Get a message from a session */ public message( parameters: { sessionID: string messageID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "path", key: "messageID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/session/{sessionID}/message/{messageID}", ...options, ...params, }) } /** * Create and send a new message to a session, start if needed and return immediately */ public promptAsync( parameters: { sessionID: string directory?: string messageID?: string model?: { providerID: string modelID: string } agent?: string noReply?: boolean system?: string tools?: { [key: string]: boolean } parts?: Array }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "messageID" }, { in: "body", key: "model" }, { in: "body", key: "agent" }, { in: "body", key: "noReply" }, { in: "body", key: "system" }, { in: "body", key: "tools" }, { in: "body", key: "parts" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/prompt_async", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Send a new command to a session */ public command( parameters: { sessionID: string directory?: string messageID?: string agent?: string model?: string arguments?: string command?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "messageID" }, { in: "body", key: "agent" }, { in: "body", key: "model" }, { in: "body", key: "arguments" }, { in: "body", key: "command" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/command", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Run a shell command */ public shell( parameters: { sessionID: string directory?: string agent?: string model?: { providerID: string modelID: string } command?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "agent" }, { in: "body", key: "model" }, { in: "body", key: "command" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/shell", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Revert a message */ public revert( parameters: { sessionID: string directory?: string messageID?: string partID?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, { in: "body", key: "messageID" }, { in: "body", key: "partID" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/revert", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Restore all reverted messages */ public unrevert( parameters: { sessionID: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/unrevert", ...options, ...params, }) } } export class Permission extends HeyApiClient { /** * Respond to a permission request */ public respond( parameters: { sessionID: string permissionID: string directory?: string response?: "once" | "always" | "reject" }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "sessionID" }, { in: "path", key: "permissionID" }, { in: "query", key: "directory" }, { in: "body", key: "response" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/session/{sessionID}/permissions/{permissionID}", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } } export class Command extends HeyApiClient { /** * List all commands */ public list( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/command", ...options, ...params, }) } } export class Oauth extends HeyApiClient { /** * Authorize a provider using OAuth */ public authorize( parameters: { providerID: string directory?: string method?: number }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "providerID" }, { in: "query", key: "directory" }, { in: "body", key: "method" }, ], }, ], ) return (options?.client ?? this.client).post< ProviderOauthAuthorizeResponses, ProviderOauthAuthorizeErrors, ThrowOnError >({ url: "/provider/{providerID}/oauth/authorize", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Handle OAuth callback for a provider */ public callback( parameters: { providerID: string directory?: string method?: number code?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "providerID" }, { in: "query", key: "directory" }, { in: "body", key: "method" }, { in: "body", key: "code" }, ], }, ], ) return (options?.client ?? this.client).post< ProviderOauthCallbackResponses, ProviderOauthCallbackErrors, ThrowOnError >({ url: "/provider/{providerID}/oauth/callback", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } } export class Provider extends HeyApiClient { /** * List all providers */ public list( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/provider", ...options, ...params, }) } /** * Get provider authentication methods */ public auth( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/provider/auth", ...options, ...params, }) } oauth = new Oauth({ client: this.client }) } export class Find extends HeyApiClient { /** * Find text in files */ public text( parameters: { directory?: string pattern: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "pattern" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/find", ...options, ...params, }) } /** * Find files */ public files( parameters: { directory?: string query: string dirs?: "true" | "false" }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "query" }, { in: "query", key: "dirs" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/find/file", ...options, ...params, }) } /** * Find workspace symbols */ public symbols( parameters: { directory?: string query: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "query" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/find/symbol", ...options, ...params, }) } } export class File extends HeyApiClient { /** * List files and directories */ public list( parameters: { directory?: string path: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "path" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/file", ...options, ...params, }) } /** * Read a file */ public read( parameters: { directory?: string path: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "query", key: "path" }, ], }, ], ) return (options?.client ?? this.client).get({ url: "/file/content", ...options, ...params, }) } /** * Get file status */ public status( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/file/status", ...options, ...params, }) } } export class App extends HeyApiClient { /** * Write a log entry to the server logs */ public log( parameters?: { directory?: string service?: string level?: "debug" | "info" | "error" | "warn" message?: string extra?: { [key: string]: unknown } }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "service" }, { in: "body", key: "level" }, { in: "body", key: "message" }, { in: "body", key: "extra" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/log", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * List all agents */ public agents( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/agent", ...options, ...params, }) } } export class Auth extends HeyApiClient { /** * Remove OAuth credentials for an MCP server */ public remove( parameters: { name: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "name" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).delete({ url: "/mcp/{name}/auth", ...options, ...params, }) } /** * Start OAuth authentication flow for an MCP server */ public start( parameters: { name: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "name" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/mcp/{name}/auth", ...options, ...params, }) } /** * Complete OAuth authentication with authorization code */ public callback( parameters: { name: string directory?: string code?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "name" }, { in: "query", key: "directory" }, { in: "body", key: "code" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/mcp/{name}/auth/callback", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Start OAuth flow and wait for callback (opens browser) */ public authenticate( parameters: { name: string directory?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "name" }, { in: "query", key: "directory" }, ], }, ], ) return (options?.client ?? this.client).post( { url: "/mcp/{name}/auth/authenticate", ...options, ...params, }, ) } /** * Set authentication credentials */ public set( parameters: { providerID: string directory?: string auth?: Auth2 }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "path", key: "providerID" }, { in: "query", key: "directory" }, { key: "auth", map: "body" }, ], }, ], ) return (options?.client ?? this.client).put({ url: "/auth/{providerID}", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } } export class Mcp extends HeyApiClient { /** * Get MCP server status */ public status( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/mcp", ...options, ...params, }) } /** * Add MCP server dynamically */ public add( parameters?: { directory?: string name?: string config?: McpLocalConfig | McpRemoteConfig }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "name" }, { in: "body", key: "config" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/mcp", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } auth = new Auth({ client: this.client }) } export class Lsp extends HeyApiClient { /** * Get LSP server status */ public status( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/lsp", ...options, ...params, }) } } export class Formatter extends HeyApiClient { /** * Get formatter status */ public status( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/formatter", ...options, ...params, }) } } export class Control extends HeyApiClient { /** * Get the next TUI request from the queue */ public next( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).get({ url: "/tui/control/next", ...options, ...params, }) } /** * Submit a response to the TUI request queue */ public response( parameters?: { directory?: string body?: unknown }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }, { in: "body" }] }]) return (options?.client ?? this.client).post({ url: "/tui/control/response", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } } export class Tui extends HeyApiClient { /** * Append prompt to the TUI */ public appendPrompt( parameters?: { directory?: string text?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "text" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/tui/append-prompt", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Open the help dialog */ public openHelp( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/open-help", ...options, ...params, }) } /** * Open the session dialog */ public openSessions( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/open-sessions", ...options, ...params, }) } /** * Open the theme dialog */ public openThemes( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/open-themes", ...options, ...params, }) } /** * Open the model dialog */ public openModels( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/open-models", ...options, ...params, }) } /** * Submit the prompt */ public submitPrompt( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/submit-prompt", ...options, ...params, }) } /** * Clear the prompt */ public clearPrompt( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).post({ url: "/tui/clear-prompt", ...options, ...params, }) } /** * Execute a TUI command (e.g. agent_cycle) */ public executeCommand( parameters?: { directory?: string command?: string }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "command" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/tui/execute-command", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Show a toast notification in the TUI */ public showToast( parameters?: { directory?: string title?: string message?: string variant?: "info" | "success" | "warning" | "error" duration?: number }, options?: Options, ) { const params = buildClientParams( [parameters], [ { args: [ { in: "query", key: "directory" }, { in: "body", key: "title" }, { in: "body", key: "message" }, { in: "body", key: "variant" }, { in: "body", key: "duration" }, ], }, ], ) return (options?.client ?? this.client).post({ url: "/tui/show-toast", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } /** * Publish a TUI event */ public publish( parameters?: { directory?: string body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }, { in: "body" }] }]) return (options?.client ?? this.client).post({ url: "/tui/publish", ...options, ...params, headers: { "Content-Type": "application/json", ...options?.headers, ...params.headers, }, }) } control = new Control({ client: this.client }) } export class Event extends HeyApiClient { /** * Get events */ public subscribe( parameters?: { directory?: string }, options?: Options, ) { const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) return (options?.client ?? this.client).sse.get({ url: "/event", ...options, ...params, }) } } export class OpencodeClient extends HeyApiClient { public static readonly __registry = new HeyApiRegistry() constructor(args?: { client?: Client; key?: string }) { super(args) OpencodeClient.__registry.set(this, args?.key) } global = new Global({ client: this.client }) project = new Project({ client: this.client }) pty = new Pty({ client: this.client }) config = new Config({ client: this.client }) tool = new Tool({ client: this.client }) instance = new Instance({ client: this.client }) path = new Path({ client: this.client }) vcs = new Vcs({ client: this.client }) session = new Session({ client: this.client }) permission = new Permission({ client: this.client }) command = new Command({ client: this.client }) provider = new Provider({ client: this.client }) find = new Find({ client: this.client }) file = new File({ client: this.client }) app = new App({ client: this.client }) mcp = new Mcp({ client: this.client }) lsp = new Lsp({ client: this.client }) formatter = new Formatter({ client: this.client }) tui = new Tui({ client: this.client }) auth = new Auth({ client: this.client }) event = new Event({ client: this.client }) }