summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sdk')
-rw-r--r--packages/sdk/js/package.json2
-rw-r--r--packages/sdk/js/src/gen/core/serverSentEvents.gen.ts2
-rw-r--r--packages/sdk/js/src/v2/client.ts10
-rw-r--r--packages/sdk/js/src/v2/data.ts2
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts248
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts739
-rw-r--r--packages/sdk/openapi.json1837
7 files changed, 1970 insertions, 870 deletions
diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json
index 47e09dfab..49c441600 100644
--- a/packages/sdk/js/package.json
+++ b/packages/sdk/js/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/sdk",
- "version": "1.4.3",
+ "version": "1.4.6",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts b/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts
index 8f7fac549..ffc4f16dc 100644
--- a/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts
+++ b/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts
@@ -111,7 +111,7 @@ export const createSseClient = <TData = unknown>({
const abortHandler = () => {
try {
- reader.cancel()
+ void reader.cancel()
} catch {
// noop
}
diff --git a/packages/sdk/js/src/v2/client.ts b/packages/sdk/js/src/v2/client.ts
index 67fe1de32..2d71d8446 100644
--- a/packages/sdk/js/src/v2/client.ts
+++ b/packages/sdk/js/src/v2/client.ts
@@ -77,6 +77,12 @@ export function createOpencodeClient(config?: Config & { directory?: string; exp
workspace: config?.experimental_workspaceID,
}),
)
- const result = new OpencodeClient({ client })
- return result
+ client.interceptors.response.use((response) => {
+ const contentType = response.headers.get("content-type")
+ if (contentType === "text/html")
+ throw new Error("Request is not supported by this version of OpenCode Server (Server responded with text/html)")
+
+ return response
+ })
+ return new OpencodeClient({ client })
}
diff --git a/packages/sdk/js/src/v2/data.ts b/packages/sdk/js/src/v2/data.ts
index baae6f278..776b168ad 100644
--- a/packages/sdk/js/src/v2/data.ts
+++ b/packages/sdk/js/src/v2/data.ts
@@ -5,7 +5,7 @@ export const message = {
info: UserMessage
parts: Part[]
} {
- const { parts, ...rest } = input
+ const { parts: _parts, ...rest } = input
const info: UserMessage = {
...rest,
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index b2e37db59..d7bf43f50 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -29,11 +29,15 @@ import type {
ExperimentalConsoleSwitchOrgResponses,
ExperimentalResourceListResponses,
ExperimentalSessionListResponses,
+ ExperimentalWorkspaceAdaptorListResponses,
ExperimentalWorkspaceCreateErrors,
ExperimentalWorkspaceCreateResponses,
ExperimentalWorkspaceListResponses,
ExperimentalWorkspaceRemoveErrors,
ExperimentalWorkspaceRemoveResponses,
+ ExperimentalWorkspaceSessionRestoreErrors,
+ ExperimentalWorkspaceSessionRestoreResponses,
+ ExperimentalWorkspaceStatusResponses,
FileListResponses,
FilePartInput,
FilePartSource,
@@ -49,7 +53,6 @@ import type {
GlobalDisposeResponses,
GlobalEventResponses,
GlobalHealthResponses,
- GlobalSyncEventSubscribeResponses,
GlobalUpgradeErrors,
GlobalUpgradeResponses,
InstanceDisposeResponses,
@@ -156,6 +159,10 @@ import type {
SessionUpdateErrors,
SessionUpdateResponses,
SubtaskPartInput,
+ SyncHistoryListErrors,
+ SyncHistoryListResponses,
+ SyncReplayErrors,
+ SyncReplayResponses,
TextPartInput,
ToolIdsErrors,
ToolIdsResponses,
@@ -235,20 +242,6 @@ class HeyApiRegistry<T> {
}
}
-export class SyncEvent extends HeyApiClient {
- /**
- * Subscribe to global sync events
- *
- * Get global sync events
- */
- public subscribe<ThrowOnError extends boolean = false>(options?: Options<never, ThrowOnError>) {
- return (options?.client ?? this.client).sse.get<GlobalSyncEventSubscribeResponses, unknown, ThrowOnError>({
- url: "/global/sync-event",
- ...options,
- })
- }
-}
-
export class Config extends HeyApiClient {
/**
* Get global configuration
@@ -348,11 +341,6 @@ export class Global extends HeyApiClient {
})
}
- private _syncEvent?: SyncEvent
- get syncEvent(): SyncEvent {
- return (this._syncEvent ??= new SyncEvent({ client: this.client }))
- }
-
private _config?: Config
get config(): Config {
return (this._config ??= new Config({ client: this.client }))
@@ -1085,6 +1073,38 @@ export class Console extends HeyApiClient {
}
}
+export class Adaptor extends HeyApiClient {
+ /**
+ * List workspace adaptors
+ *
+ * List all available workspace adaptors for the current project.
+ */
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<ExperimentalWorkspaceAdaptorListResponses, unknown, ThrowOnError>({
+ url: "/experimental/workspace/adaptor",
+ ...options,
+ ...params,
+ })
+ }
+}
+
export class Workspace extends HeyApiClient {
/**
* List workspaces
@@ -1164,6 +1184,36 @@ export class Workspace extends HeyApiClient {
}
/**
+ * Workspace status
+ *
+ * Get connection status for workspaces in the current project.
+ */
+ public status<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<ExperimentalWorkspaceStatusResponses, unknown, ThrowOnError>({
+ url: "/experimental/workspace/status",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
* Remove workspace
*
* Remove an existing workspace.
@@ -1198,6 +1248,54 @@ export class Workspace extends HeyApiClient {
...params,
})
}
+
+ /**
+ * Restore session into workspace
+ *
+ * Replay a session's sync events into the target workspace in batches.
+ */
+ public sessionRestore<ThrowOnError extends boolean = false>(
+ parameters: {
+ id: string
+ directory?: string
+ workspace?: string
+ sessionID?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "path", key: "id" },
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ { in: "body", key: "sessionID" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<
+ ExperimentalWorkspaceSessionRestoreResponses,
+ ExperimentalWorkspaceSessionRestoreErrors,
+ ThrowOnError
+ >({
+ url: "/experimental/workspace/{id}/session-restore",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+
+ private _adaptor?: Adaptor
+ get adaptor(): Adaptor {
+ return (this._adaptor ??= new Adaptor({ client: this.client }))
+ }
}
export class Session extends HeyApiClient {
@@ -1694,6 +1792,7 @@ export class Session2 extends HeyApiClient {
directory?: string
workspace?: string
title?: string
+ permission?: PermissionRuleset
time?: {
archived?: number
}
@@ -1709,6 +1808,7 @@ export class Session2 extends HeyApiClient {
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
{ in: "body", key: "title" },
+ { in: "body", key: "permission" },
{ in: "body", key: "time" },
],
},
@@ -2910,6 +3010,109 @@ export class Provider extends HeyApiClient {
}
}
+export class History extends HeyApiClient {
+ /**
+ * List sync events
+ *
+ * List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.
+ */
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ body?: {
+ [key: string]: number
+ }
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ { key: "body", map: "body" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<SyncHistoryListResponses, SyncHistoryListErrors, ThrowOnError>({
+ url: "/sync/history",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+}
+
+export class Sync extends HeyApiClient {
+ /**
+ * Replay sync events
+ *
+ * Validate and replay a complete sync event history.
+ */
+ public replay<ThrowOnError extends boolean = false>(
+ parameters?: {
+ query_directory?: string
+ workspace?: string
+ body_directory?: string
+ events?: Array<{
+ id: string
+ aggregateID: string
+ seq: number
+ type: string
+ data: {
+ [key: string]: unknown
+ }
+ }>
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ {
+ in: "query",
+ key: "query_directory",
+ map: "directory",
+ },
+ { in: "query", key: "workspace" },
+ {
+ in: "body",
+ key: "body_directory",
+ map: "directory",
+ },
+ { in: "body", key: "events" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<SyncReplayResponses, SyncReplayErrors, ThrowOnError>({
+ url: "/sync/replay",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+
+ private _history?: History
+ get history(): History {
+ return (this._history ??= new History({ client: this.client }))
+ }
+}
+
export class Find extends HeyApiClient {
/**
* Find text
@@ -4166,6 +4369,11 @@ export class OpencodeClient extends HeyApiClient {
return (this._provider ??= new Provider({ client: this.client }))
}
+ private _sync?: Sync
+ get sync(): Sync {
+ return (this._sync ??= new Sync({ client: this.client }))
+ }
+
private _find?: Find
get find(): Find {
return (this._find ??= new Find({ client: this.client }))
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 62c62e138..795c2f264 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -33,20 +33,6 @@ export type EventProjectUpdated = {
properties: Project
}
-export type EventInstallationUpdated = {
- type: "installation.updated"
- properties: {
- version: string
- }
-}
-
-export type EventInstallationUpdateAvailable = {
- type: "installation.update-available"
- properties: {
- version: string
- }
-}
-
export type EventServerInstanceDisposed = {
type: "server.instance.disposed"
properties: {
@@ -68,6 +54,21 @@ export type EventGlobalDisposed = {
}
}
+export type EventFileEdited = {
+ type: "file.edited"
+ properties: {
+ file: string
+ }
+}
+
+export type EventFileWatcherUpdated = {
+ type: "file.watcher.updated"
+ properties: {
+ file: string
+ event: "add" | "change" | "unlink"
+ }
+}
+
export type EventLspClientDiagnostics = {
type: "lsp.client.diagnostics"
properties: {
@@ -83,6 +84,20 @@ export type EventLspUpdated = {
}
}
+export type EventInstallationUpdated = {
+ type: "installation.updated"
+ properties: {
+ version: string
+ }
+}
+
+export type EventInstallationUpdateAvailable = {
+ type: "installation.update-available"
+ properties: {
+ version: string
+ }
+}
+
export type EventMessagePartDelta = {
type: "message.part.delta"
properties: {
@@ -215,121 +230,6 @@ export type EventSessionError = {
}
}
-export type EventFileEdited = {
- type: "file.edited"
- properties: {
- file: string
- }
-}
-
-export type EventFileWatcherUpdated = {
- type: "file.watcher.updated"
- properties: {
- file: string
- event: "add" | "change" | "unlink"
- }
-}
-
-export type EventVcsBranchUpdated = {
- type: "vcs.branch.updated"
- properties: {
- branch?: string
- }
-}
-
-export type EventTuiPromptAppend = {
- type: "tui.prompt.append"
- properties: {
- text: string
- }
-}
-
-export type EventTuiCommandExecute = {
- type: "tui.command.execute"
- properties: {
- command:
- | "session.list"
- | "session.new"
- | "session.share"
- | "session.interrupt"
- | "session.compact"
- | "session.page.up"
- | "session.page.down"
- | "session.line.up"
- | "session.line.down"
- | "session.half.page.up"
- | "session.half.page.down"
- | "session.first"
- | "session.last"
- | "prompt.clear"
- | "prompt.submit"
- | "agent.cycle"
- | string
- }
-}
-
-export type EventTuiToastShow = {
- type: "tui.toast.show"
- properties: {
- title?: string
- message: string
- variant: "info" | "success" | "warning" | "error"
- /**
- * Duration in milliseconds
- */
- duration?: number
- }
-}
-
-export type EventTuiSessionSelect = {
- type: "tui.session.select"
- properties: {
- /**
- * Session ID to navigate to
- */
- sessionID: string
- }
-}
-
-export type EventMcpToolsChanged = {
- type: "mcp.tools.changed"
- properties: {
- server: string
- }
-}
-
-export type EventMcpBrowserOpenFailed = {
- type: "mcp.browser.open.failed"
- properties: {
- mcpName: string
- url: string
- }
-}
-
-export type EventCommandExecuted = {
- type: "command.executed"
- properties: {
- name: string
- sessionID: string
- arguments: string
- messageID: string
- }
-}
-
-export type EventWorkspaceReady = {
- type: "workspace.ready"
- properties: {
- name: string
- }
-}
-
-export type EventWorkspaceFailed = {
- type: "workspace.failed"
- properties: {
- message: string
- }
-}
-
export type QuestionOption = {
/**
* Display text (1-5 words, concise)
@@ -364,6 +264,11 @@ export type QuestionInfo = {
custom?: boolean
}
+export type QuestionTool = {
+ messageID: string
+ callID: string
+}
+
export type QuestionRequest = {
id: string
sessionID: string
@@ -371,10 +276,7 @@ export type QuestionRequest = {
* Questions to ask
*/
questions: Array<QuestionInfo>
- tool?: {
- messageID: string
- callID: string
- }
+ tool?: QuestionTool
}
export type EventQuestionAsked = {
@@ -384,20 +286,47 @@ export type EventQuestionAsked = {
export type QuestionAnswer = Array<string>
+export type QuestionReplied = {
+ sessionID: string
+ requestID: string
+ answers: Array<QuestionAnswer>
+}
+
export type EventQuestionReplied = {
type: "question.replied"
- properties: {
- sessionID: string
- requestID: string
- answers: Array<QuestionAnswer>
- }
+ properties: QuestionReplied
+}
+
+export type QuestionRejected = {
+ sessionID: string
+ requestID: string
}
export type EventQuestionRejected = {
type: "question.rejected"
+ properties: QuestionRejected
+}
+
+export type Todo = {
+ /**
+ * Brief description of the task
+ */
+ content: string
+ /**
+ * Current status of the task: pending, in_progress, completed, cancelled
+ */
+ status: string
+ /**
+ * Priority level of the task: high, medium, low
+ */
+ priority: string
+}
+
+export type EventTodoUpdated = {
+ type: "todo.updated"
properties: {
sessionID: string
- requestID: string
+ todos: Array<Todo>
}
}
@@ -437,26 +366,104 @@ export type EventSessionCompacted = {
}
}
-export type Todo = {
- /**
- * Brief description of the task
- */
- content: string
- /**
- * Current status of the task: pending, in_progress, completed, cancelled
- */
- status: string
- /**
- * Priority level of the task: high, medium, low
- */
- priority: string
+export type EventTuiPromptAppend = {
+ type: "tui.prompt.append"
+ properties: {
+ text: string
+ }
}
-export type EventTodoUpdated = {
- type: "todo.updated"
+export type EventTuiCommandExecute = {
+ type: "tui.command.execute"
+ properties: {
+ command:
+ | "session.list"
+ | "session.new"
+ | "session.share"
+ | "session.interrupt"
+ | "session.compact"
+ | "session.page.up"
+ | "session.page.down"
+ | "session.line.up"
+ | "session.line.down"
+ | "session.half.page.up"
+ | "session.half.page.down"
+ | "session.first"
+ | "session.last"
+ | "prompt.clear"
+ | "prompt.submit"
+ | "agent.cycle"
+ | string
+ }
+}
+
+export type EventTuiToastShow = {
+ type: "tui.toast.show"
+ properties: {
+ title?: string
+ message: string
+ variant: "info" | "success" | "warning" | "error"
+ /**
+ * Duration in milliseconds
+ */
+ duration?: number
+ }
+}
+
+export type EventTuiSessionSelect = {
+ type: "tui.session.select"
properties: {
+ /**
+ * Session ID to navigate to
+ */
sessionID: string
- todos: Array<Todo>
+ }
+}
+
+export type EventMcpToolsChanged = {
+ type: "mcp.tools.changed"
+ properties: {
+ server: string
+ }
+}
+
+export type EventMcpBrowserOpenFailed = {
+ type: "mcp.browser.open.failed"
+ properties: {
+ mcpName: string
+ url: string
+ }
+}
+
+export type EventCommandExecuted = {
+ type: "command.executed"
+ properties: {
+ name: string
+ sessionID: string
+ arguments: string
+ messageID: string
+ }
+}
+
+export type EventVcsBranchUpdated = {
+ type: "vcs.branch.updated"
+ properties: {
+ branch?: string
+ }
+}
+
+export type EventWorktreeReady = {
+ type: "worktree.ready"
+ properties: {
+ name: string
+ branch: string
+ }
+}
+
+export type EventWorktreeFailed = {
+ type: "worktree.failed"
+ properties: {
+ message: string
}
}
@@ -499,21 +506,39 @@ export type EventPtyDeleted = {
}
}
-export type EventWorktreeReady = {
- type: "worktree.ready"
+export type EventWorkspaceReady = {
+ type: "workspace.ready"
properties: {
name: string
- branch: string
}
}
-export type EventWorktreeFailed = {
- type: "worktree.failed"
+export type EventWorkspaceFailed = {
+ type: "workspace.failed"
properties: {
message: string
}
}
+export type EventWorkspaceRestore = {
+ type: "workspace.restore"
+ properties: {
+ workspaceID: string
+ sessionID: string
+ total: number
+ step: number
+ }
+}
+
+export type EventWorkspaceStatus = {
+ type: "workspace.status"
+ properties: {
+ workspaceID: string
+ status: "connected" | "connecting" | "disconnected" | "error"
+ error?: string
+ }
+}
+
export type OutputFormatText = {
type: "text"
}
@@ -962,61 +987,12 @@ export type EventSessionDeleted = {
}
}
-export type Event =
- | EventProjectUpdated
- | EventInstallationUpdated
- | EventInstallationUpdateAvailable
- | EventServerInstanceDisposed
- | EventServerConnected
- | EventGlobalDisposed
- | EventLspClientDiagnostics
- | EventLspUpdated
- | EventMessagePartDelta
- | EventPermissionAsked
- | EventPermissionReplied
- | EventSessionDiff
- | EventSessionError
- | EventFileEdited
- | EventFileWatcherUpdated
- | EventVcsBranchUpdated
- | EventTuiPromptAppend
- | EventTuiCommandExecute
- | EventTuiToastShow
- | EventTuiSessionSelect
- | EventMcpToolsChanged
- | EventMcpBrowserOpenFailed
- | EventCommandExecuted
- | EventWorkspaceReady
- | EventWorkspaceFailed
- | EventQuestionAsked
- | EventQuestionReplied
- | EventQuestionRejected
- | EventSessionStatus
- | EventSessionIdle
- | EventSessionCompacted
- | EventTodoUpdated
- | EventPtyCreated
- | EventPtyUpdated
- | EventPtyExited
- | EventPtyDeleted
- | EventWorktreeReady
- | EventWorktreeFailed
- | EventMessageUpdated
- | EventMessageRemoved
- | EventMessagePartUpdated
- | EventMessagePartRemoved
- | EventSessionCreated
- | EventSessionUpdated
- | EventSessionDeleted
-
-export type GlobalEvent = {
- directory: string
- payload: Event
-}
-
export type SyncEventMessageUpdated = {
- type: "message.updated.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "message.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
info: Message
@@ -1024,8 +1000,11 @@ export type SyncEventMessageUpdated = {
}
export type SyncEventMessageRemoved = {
- type: "message.removed.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "message.removed.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
messageID: string
@@ -1033,8 +1012,11 @@ export type SyncEventMessageRemoved = {
}
export type SyncEventMessagePartUpdated = {
- type: "message.part.updated.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "message.part.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
part: Part
@@ -1043,8 +1025,11 @@ export type SyncEventMessagePartUpdated = {
}
export type SyncEventMessagePartRemoved = {
- type: "message.part.removed.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "message.part.removed.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
messageID: string
@@ -1053,8 +1038,11 @@ export type SyncEventMessagePartRemoved = {
}
export type SyncEventSessionCreated = {
- type: "session.created.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "session.created.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
info: Session
@@ -1062,8 +1050,11 @@ export type SyncEventSessionCreated = {
}
export type SyncEventSessionUpdated = {
- type: "session.updated.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "session.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
info: {
@@ -1102,16 +1093,76 @@ export type SyncEventSessionUpdated = {
}
export type SyncEventSessionDeleted = {
- type: "session.deleted.1"
- aggregate: "sessionID"
+ type: "sync"
+ name: "session.deleted.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
data: {
sessionID: string
info: Session
}
}
-export type SyncEvent = {
- payload: SyncEvent
+export type GlobalEvent = {
+ directory: string
+ project?: string
+ workspace?: string
+ payload:
+ | EventProjectUpdated
+ | EventServerInstanceDisposed
+ | EventServerConnected
+ | EventGlobalDisposed
+ | EventFileEdited
+ | EventFileWatcherUpdated
+ | EventLspClientDiagnostics
+ | EventLspUpdated
+ | EventInstallationUpdated
+ | EventInstallationUpdateAvailable
+ | EventMessagePartDelta
+ | EventPermissionAsked
+ | EventPermissionReplied
+ | EventSessionDiff
+ | EventSessionError
+ | EventQuestionAsked
+ | EventQuestionReplied
+ | EventQuestionRejected
+ | EventTodoUpdated
+ | EventSessionStatus
+ | EventSessionIdle
+ | EventSessionCompacted
+ | EventTuiPromptAppend
+ | EventTuiCommandExecute
+ | EventTuiToastShow
+ | EventTuiSessionSelect
+ | EventMcpToolsChanged
+ | EventMcpBrowserOpenFailed
+ | EventCommandExecuted
+ | EventVcsBranchUpdated
+ | EventWorktreeReady
+ | EventWorktreeFailed
+ | EventPtyCreated
+ | EventPtyUpdated
+ | EventPtyExited
+ | EventPtyDeleted
+ | EventWorkspaceReady
+ | EventWorkspaceFailed
+ | EventWorkspaceRestore
+ | EventWorkspaceStatus
+ | EventMessageUpdated
+ | EventMessageRemoved
+ | EventMessagePartUpdated
+ | EventMessagePartRemoved
+ | EventSessionCreated
+ | EventSessionUpdated
+ | EventSessionDeleted
+ | SyncEventMessageUpdated
+ | SyncEventMessageRemoved
+ | SyncEventMessagePartUpdated
+ | SyncEventMessagePartRemoved
+ | SyncEventSessionCreated
+ | SyncEventSessionUpdated
+ | SyncEventSessionDeleted
}
/**
@@ -1760,8 +1811,8 @@ export type ToolList = Array<ToolListItem>
export type Workspace = {
id: string
type: string
+ name: string
branch: string | null
- name: string | null
directory: string | null
extra: unknown | null
projectID: string
@@ -1970,6 +2021,55 @@ export type File = {
status: "added" | "deleted" | "modified"
}
+export type Event =
+ | EventProjectUpdated
+ | EventServerInstanceDisposed
+ | EventServerConnected
+ | EventGlobalDisposed
+ | EventFileEdited
+ | EventFileWatcherUpdated
+ | EventLspClientDiagnostics
+ | EventLspUpdated
+ | EventInstallationUpdated
+ | EventInstallationUpdateAvailable
+ | EventMessagePartDelta
+ | EventPermissionAsked
+ | EventPermissionReplied
+ | EventSessionDiff
+ | EventSessionError
+ | EventQuestionAsked
+ | EventQuestionReplied
+ | EventQuestionRejected
+ | EventTodoUpdated
+ | EventSessionStatus
+ | EventSessionIdle
+ | EventSessionCompacted
+ | EventTuiPromptAppend
+ | EventTuiCommandExecute
+ | EventTuiToastShow
+ | EventTuiSessionSelect
+ | EventMcpToolsChanged
+ | EventMcpBrowserOpenFailed
+ | EventCommandExecuted
+ | EventVcsBranchUpdated
+ | EventWorktreeReady
+ | EventWorktreeFailed
+ | EventPtyCreated
+ | EventPtyUpdated
+ | EventPtyExited
+ | EventPtyDeleted
+ | EventWorkspaceReady
+ | EventWorkspaceFailed
+ | EventWorkspaceRestore
+ | EventWorkspaceStatus
+ | EventMessageUpdated
+ | EventMessageRemoved
+ | EventMessagePartUpdated
+ | EventMessagePartRemoved
+ | EventSessionCreated
+ | EventSessionUpdated
+ | EventSessionDeleted
+
export type McpStatusConnected = {
status: "connected"
}
@@ -2101,23 +2201,6 @@ export type GlobalEventResponses = {
export type GlobalEventResponse = GlobalEventResponses[keyof GlobalEventResponses]
-export type GlobalSyncEventSubscribeData = {
- body?: never
- path?: never
- query?: never
- url: "/global/sync-event"
-}
-
-export type GlobalSyncEventSubscribeResponses = {
- /**
- * Event stream
- */
- 200: SyncEvent
-}
-
-export type GlobalSyncEventSubscribeResponse =
- GlobalSyncEventSubscribeResponses[keyof GlobalSyncEventSubscribeResponses]
-
export type GlobalConfigGetData = {
body?: never
path?: never
@@ -2800,6 +2883,30 @@ export type ToolListResponses = {
export type ToolListResponse = ToolListResponses[keyof ToolListResponses]
+export type ExperimentalWorkspaceAdaptorListData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/workspace/adaptor"
+}
+
+export type ExperimentalWorkspaceAdaptorListResponses = {
+ /**
+ * Workspace adaptors
+ */
+ 200: Array<{
+ type: string
+ name: string
+ description: string
+ }>
+}
+
+export type ExperimentalWorkspaceAdaptorListResponse =
+ ExperimentalWorkspaceAdaptorListResponses[keyof ExperimentalWorkspaceAdaptorListResponses]
+
export type ExperimentalWorkspaceListData = {
body?: never
path?: never
@@ -2855,6 +2962,30 @@ export type ExperimentalWorkspaceCreateResponses = {
export type ExperimentalWorkspaceCreateResponse =
ExperimentalWorkspaceCreateResponses[keyof ExperimentalWorkspaceCreateResponses]
+export type ExperimentalWorkspaceStatusData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/workspace/status"
+}
+
+export type ExperimentalWorkspaceStatusResponses = {
+ /**
+ * Workspace status
+ */
+ 200: Array<{
+ workspaceID: string
+ status: "connected" | "connecting" | "disconnected" | "error"
+ error?: string
+ }>
+}
+
+export type ExperimentalWorkspaceStatusResponse =
+ ExperimentalWorkspaceStatusResponses[keyof ExperimentalWorkspaceStatusResponses]
+
export type ExperimentalWorkspaceRemoveData = {
body?: never
path: {
@@ -2887,6 +3018,42 @@ export type ExperimentalWorkspaceRemoveResponses = {
export type ExperimentalWorkspaceRemoveResponse =
ExperimentalWorkspaceRemoveResponses[keyof ExperimentalWorkspaceRemoveResponses]
+export type ExperimentalWorkspaceSessionRestoreData = {
+ body?: {
+ sessionID: string
+ }
+ path: {
+ id: string
+ }
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/workspace/{id}/session-restore"
+}
+
+export type ExperimentalWorkspaceSessionRestoreErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type ExperimentalWorkspaceSessionRestoreError =
+ ExperimentalWorkspaceSessionRestoreErrors[keyof ExperimentalWorkspaceSessionRestoreErrors]
+
+export type ExperimentalWorkspaceSessionRestoreResponses = {
+ /**
+ * Session replay started
+ */
+ 200: {
+ total: number
+ }
+}
+
+export type ExperimentalWorkspaceSessionRestoreResponse =
+ ExperimentalWorkspaceSessionRestoreResponses[keyof ExperimentalWorkspaceSessionRestoreResponses]
+
export type WorktreeRemoveData = {
body?: WorktreeRemoveInput
path?: never
@@ -3230,6 +3397,7 @@ export type SessionGetResponse = SessionGetResponses[keyof SessionGetResponses]
export type SessionUpdateData = {
body?: {
title?: string
+ permission?: PermissionRuleset
time?: {
archived?: number
}
@@ -4336,6 +4504,85 @@ export type ProviderOauthCallbackResponses = {
export type ProviderOauthCallbackResponse = ProviderOauthCallbackResponses[keyof ProviderOauthCallbackResponses]
+export type SyncReplayData = {
+ body?: {
+ directory: string
+ events: Array<{
+ id: string
+ aggregateID: string
+ seq: number
+ type: string
+ data: {
+ [key: string]: unknown
+ }
+ }>
+ }
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/sync/replay"
+}
+
+export type SyncReplayErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type SyncReplayError = SyncReplayErrors[keyof SyncReplayErrors]
+
+export type SyncReplayResponses = {
+ /**
+ * Replayed sync events
+ */
+ 200: {
+ sessionID: string
+ }
+}
+
+export type SyncReplayResponse = SyncReplayResponses[keyof SyncReplayResponses]
+
+export type SyncHistoryListData = {
+ body?: {
+ [key: string]: number
+ }
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/sync/history"
+}
+
+export type SyncHistoryListErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type SyncHistoryListError = SyncHistoryListErrors[keyof SyncHistoryListErrors]
+
+export type SyncHistoryListResponses = {
+ /**
+ * Sync events
+ */
+ 200: Array<{
+ id: string
+ aggregate_id: string
+ seq: number
+ type: string
+ data: {
+ [key: string]: unknown
+ }
+ }>
+}
+
+export type SyncHistoryListResponse = SyncHistoryListResponses[keyof SyncHistoryListResponses]
+
export type FindTextData = {
body?: never
path?: never
diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json
index 450de5131..d11f9ad73 100644
--- a/packages/sdk/openapi.json
+++ b/packages/sdk/openapi.json
@@ -66,31 +66,6 @@
]
}
},
- "/global/sync-event": {
- "get": {
- "operationId": "global.sync-event.subscribe",
- "summary": "Subscribe to global sync events",
- "description": "Get global sync events",
- "responses": {
- "200": {
- "description": "Event stream",
- "content": {
- "text/event-stream": {
- "schema": {
- "$ref": "#/components/schemas/SyncEvent"
- }
- }
- }
- }
- },
- "x-codeSamples": [
- {
- "lang": "js",
- "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.sync-event.subscribe({\n ...\n})"
- }
- ]
- }
- },
"/global/config": {
"get": {
"operationId": "global.config.get",
@@ -1526,6 +1501,62 @@
]
}
},
+ "/experimental/workspace/adaptor": {
+ "get": {
+ "operationId": "experimental.workspace.adaptor.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "List workspace adaptors",
+ "description": "List all available workspace adaptors for the current project.",
+ "responses": {
+ "200": {
+ "description": "Workspace adaptors",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "required": ["type", "name", "description"]
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.experimental.workspace.adaptor.list({\n ...\n})"
+ }
+ ]
+ }
+ },
"/experimental/workspace": {
"post": {
"operationId": "experimental.workspace.create",
@@ -1656,6 +1687,64 @@
]
}
},
+ "/experimental/workspace/status": {
+ "get": {
+ "operationId": "experimental.workspace.status",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "Workspace status",
+ "description": "Get connection status for workspaces in the current project.",
+ "responses": {
+ "200": {
+ "description": "Workspace status",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "workspaceID": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "status": {
+ "type": "string",
+ "enum": ["connected", "connecting", "disconnected", "error"]
+ },
+ "error": {
+ "type": "string"
+ }
+ },
+ "required": ["workspaceID", "status"]
+ }
+ }
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.experimental.workspace.status({\n ...\n})"
+ }
+ ]
+ }
+ },
"/experimental/workspace/{id}": {
"delete": {
"operationId": "experimental.workspace.remove",
@@ -1716,6 +1805,90 @@
]
}
},
+ "/experimental/workspace/{id}/session-restore": {
+ "post": {
+ "operationId": "experimental.workspace.sessionRestore",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "required": true
+ }
+ ],
+ "summary": "Restore session into workspace",
+ "description": "Replay a session's sync events into the target workspace in batches.",
+ "responses": {
+ "200": {
+ "description": "Session replay started",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": ["total"]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ }
+ },
+ "required": ["sessionID"]
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.experimental.workspace.sessionRestore({\n ...\n})"
+ }
+ ]
+ }
+ },
"/experimental/worktree": {
"post": {
"operationId": "worktree.create",
@@ -2492,6 +2665,9 @@
"title": {
"type": "string"
},
+ "permission": {
+ "$ref": "#/components/schemas/PermissionRuleset"
+ },
"time": {
"type": "object",
"properties": {
@@ -5051,6 +5227,202 @@
]
}
},
+ "/sync/replay": {
+ "post": {
+ "operationId": "sync.replay",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "Replay sync events",
+ "description": "Validate and replay a complete sync event history.",
+ "responses": {
+ "200": {
+ "description": "Replayed sync events",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string"
+ }
+ },
+ "required": ["sessionID"]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "directory": {
+ "type": "string"
+ },
+ "events": {
+ "minItems": 1,
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "aggregateID": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ },
+ "type": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": ["id", "aggregateID", "seq", "type", "data"]
+ }
+ }
+ },
+ "required": ["directory", "events"]
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.sync.replay({\n ...\n})"
+ }
+ ]
+ }
+ },
+ "/sync/history": {
+ "get": {
+ "operationId": "sync.history.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "List sync events",
+ "description": "List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.",
+ "responses": {
+ "200": {
+ "description": "Sync events",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "aggregate_id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "type": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": ["id", "aggregate_id", "seq", "type", "data"]
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.sync.history.list({\n ...\n})"
+ }
+ ]
+ }
+ },
"/find": {
"get": {
"operationId": "find.text",
@@ -7169,87 +7541,103 @@
},
"required": ["type", "properties"]
},
- "Event.installation.updated": {
+ "Event.server.instance.disposed": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "installation.updated"
+ "const": "server.instance.disposed"
},
"properties": {
"type": "object",
"properties": {
- "version": {
+ "directory": {
"type": "string"
}
},
- "required": ["version"]
+ "required": ["directory"]
}
},
"required": ["type", "properties"]
},
- "Event.installation.update-available": {
+ "Event.server.connected": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "installation.update-available"
+ "const": "server.connected"
},
"properties": {
"type": "object",
- "properties": {
- "version": {
- "type": "string"
- }
- },
- "required": ["version"]
+ "properties": {}
}
},
"required": ["type", "properties"]
},
- "Event.server.instance.disposed": {
+ "Event.global.disposed": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "server.instance.disposed"
+ "const": "global.disposed"
},
"properties": {
"type": "object",
- "properties": {
- "directory": {
- "type": "string"
- }
- },
- "required": ["directory"]
+ "properties": {}
}
},
"required": ["type", "properties"]
},
- "Event.server.connected": {
+ "Event.file.edited": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "server.connected"
+ "const": "file.edited"
},
"properties": {
"type": "object",
- "properties": {}
+ "properties": {
+ "file": {
+ "type": "string"
+ }
+ },
+ "required": ["file"]
}
},
"required": ["type", "properties"]
},
- "Event.global.disposed": {
+ "Event.file.watcher.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "global.disposed"
+ "const": "file.watcher.updated"
},
"properties": {
"type": "object",
- "properties": {}
+ "properties": {
+ "file": {
+ "type": "string"
+ },
+ "event": {
+ "anyOf": [
+ {
+ "type": "string",
+ "const": "add"
+ },
+ {
+ "type": "string",
+ "const": "change"
+ },
+ {
+ "type": "string",
+ "const": "unlink"
+ }
+ ]
+ }
+ },
+ "required": ["file", "event"]
}
},
"required": ["type", "properties"]
@@ -7290,6 +7678,44 @@
},
"required": ["type", "properties"]
},
+ "Event.installation.updated": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "installation.updated"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "string"
+ }
+ },
+ "required": ["version"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "Event.installation.update-available": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "installation.update-available"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "string"
+ }
+ },
+ "required": ["version"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
"Event.message.part.delta": {
"type": "object",
"properties": {
@@ -7670,74 +8096,311 @@
},
"required": ["type", "properties"]
},
- "Event.file.edited": {
+ "QuestionOption": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "description": "Display text (1-5 words, concise)",
+ "type": "string"
+ },
+ "description": {
+ "description": "Explanation of choice",
+ "type": "string"
+ }
+ },
+ "required": ["label", "description"]
+ },
+ "QuestionInfo": {
+ "type": "object",
+ "properties": {
+ "question": {
+ "description": "Complete question",
+ "type": "string"
+ },
+ "header": {
+ "description": "Very short label (max 30 chars)",
+ "type": "string"
+ },
+ "options": {
+ "description": "Available choices",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/QuestionOption"
+ }
+ },
+ "multiple": {
+ "description": "Allow selecting multiple choices",
+ "type": "boolean"
+ },
+ "custom": {
+ "description": "Allow typing a custom answer (default: true)",
+ "type": "boolean"
+ }
+ },
+ "required": ["question", "header", "options"]
+ },
+ "QuestionTool": {
+ "type": "object",
+ "properties": {
+ "messageID": {
+ "type": "string",
+ "pattern": "^msg.*"
+ },
+ "callID": {
+ "type": "string"
+ }
+ },
+ "required": ["messageID", "callID"]
+ },
+ "QuestionRequest": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^que.*"
+ },
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "questions": {
+ "description": "Questions to ask",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/QuestionInfo"
+ }
+ },
+ "tool": {
+ "$ref": "#/components/schemas/QuestionTool"
+ }
+ },
+ "required": ["id", "sessionID", "questions"]
+ },
+ "Event.question.asked": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "file.edited"
+ "const": "question.asked"
+ },
+ "properties": {
+ "$ref": "#/components/schemas/QuestionRequest"
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "QuestionAnswer": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "QuestionReplied": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "requestID": {
+ "type": "string",
+ "pattern": "^que.*"
+ },
+ "answers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/QuestionAnswer"
+ }
+ }
+ },
+ "required": ["sessionID", "requestID", "answers"]
+ },
+ "Event.question.replied": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "question.replied"
+ },
+ "properties": {
+ "$ref": "#/components/schemas/QuestionReplied"
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "QuestionRejected": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "requestID": {
+ "type": "string",
+ "pattern": "^que.*"
+ }
+ },
+ "required": ["sessionID", "requestID"]
+ },
+ "Event.question.rejected": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "question.rejected"
+ },
+ "properties": {
+ "$ref": "#/components/schemas/QuestionRejected"
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "Todo": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "description": "Brief description of the task",
+ "type": "string"
+ },
+ "status": {
+ "description": "Current status of the task: pending, in_progress, completed, cancelled",
+ "type": "string"
+ },
+ "priority": {
+ "description": "Priority level of the task: high, medium, low",
+ "type": "string"
+ }
+ },
+ "required": ["content", "status", "priority"]
+ },
+ "Event.todo.updated": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "todo.updated"
},
"properties": {
"type": "object",
"properties": {
- "file": {
- "type": "string"
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "todos": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Todo"
+ }
}
},
- "required": ["file"]
+ "required": ["sessionID", "todos"]
}
},
"required": ["type", "properties"]
},
- "Event.file.watcher.updated": {
+ "SessionStatus": {
+ "anyOf": [
+ {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "idle"
+ }
+ },
+ "required": ["type"]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "retry"
+ },
+ "attempt": {
+ "type": "number"
+ },
+ "message": {
+ "type": "string"
+ },
+ "next": {
+ "type": "number"
+ }
+ },
+ "required": ["type", "attempt", "message", "next"]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "busy"
+ }
+ },
+ "required": ["type"]
+ }
+ ]
+ },
+ "Event.session.status": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "file.watcher.updated"
+ "const": "session.status"
},
"properties": {
"type": "object",
"properties": {
- "file": {
- "type": "string"
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
},
- "event": {
- "anyOf": [
- {
- "type": "string",
- "const": "add"
- },
- {
- "type": "string",
- "const": "change"
- },
- {
- "type": "string",
- "const": "unlink"
- }
- ]
+ "status": {
+ "$ref": "#/components/schemas/SessionStatus"
}
},
- "required": ["file", "event"]
+ "required": ["sessionID", "status"]
}
},
"required": ["type", "properties"]
},
- "Event.vcs.branch.updated": {
+ "Event.session.idle": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "vcs.branch.updated"
+ "const": "session.idle"
},
"properties": {
"type": "object",
"properties": {
- "branch": {
- "type": "string"
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
}
- }
+ },
+ "required": ["sessionID"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "Event.session.compacted": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "session.compacted"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ }
+ },
+ "required": ["sessionID"]
}
},
"required": ["type", "properties"]
@@ -7928,340 +8591,61 @@
},
"required": ["type", "properties"]
},
- "Event.workspace.ready": {
+ "Event.vcs.branch.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "workspace.ready"
+ "const": "vcs.branch.updated"
},
"properties": {
"type": "object",
"properties": {
- "name": {
+ "branch": {
"type": "string"
}
- },
- "required": ["name"]
+ }
}
},
"required": ["type", "properties"]
},
- "Event.workspace.failed": {
+ "Event.worktree.ready": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "workspace.failed"
+ "const": "worktree.ready"
},
"properties": {
"type": "object",
"properties": {
- "message": {
+ "name": {
"type": "string"
- }
- },
- "required": ["message"]
- }
- },
- "required": ["type", "properties"]
- },
- "QuestionOption": {
- "type": "object",
- "properties": {
- "label": {
- "description": "Display text (1-5 words, concise)",
- "type": "string"
- },
- "description": {
- "description": "Explanation of choice",
- "type": "string"
- }
- },
- "required": ["label", "description"]
- },
- "QuestionInfo": {
- "type": "object",
- "properties": {
- "question": {
- "description": "Complete question",
- "type": "string"
- },
- "header": {
- "description": "Very short label (max 30 chars)",
- "type": "string"
- },
- "options": {
- "description": "Available choices",
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/QuestionOption"
- }
- },
- "multiple": {
- "description": "Allow selecting multiple choices",
- "type": "boolean"
- },
- "custom": {
- "description": "Allow typing a custom answer (default: true)",
- "type": "boolean"
- }
- },
- "required": ["question", "header", "options"]
- },
- "QuestionRequest": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "pattern": "^que.*"
- },
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- },
- "questions": {
- "description": "Questions to ask",
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/QuestionInfo"
- }
- },
- "tool": {
- "type": "object",
- "properties": {
- "messageID": {
- "type": "string",
- "pattern": "^msg.*"
},
- "callID": {
+ "branch": {
"type": "string"
}
},
- "required": ["messageID", "callID"]
- }
- },
- "required": ["id", "sessionID", "questions"]
- },
- "Event.question.asked": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "question.asked"
- },
- "properties": {
- "$ref": "#/components/schemas/QuestionRequest"
- }
- },
- "required": ["type", "properties"]
- },
- "QuestionAnswer": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "Event.question.replied": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "question.replied"
- },
- "properties": {
- "type": "object",
- "properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- },
- "requestID": {
- "type": "string",
- "pattern": "^que.*"
- },
- "answers": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/QuestionAnswer"
- }
- }
- },
- "required": ["sessionID", "requestID", "answers"]
+ "required": ["name", "branch"]
}
},
"required": ["type", "properties"]
},
- "Event.question.rejected": {
+ "Event.worktree.failed": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "question.rejected"
+ "const": "worktree.failed"
},
"properties": {
"type": "object",
"properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- },
- "requestID": {
- "type": "string",
- "pattern": "^que.*"
- }
- },
- "required": ["sessionID", "requestID"]
- }
- },
- "required": ["type", "properties"]
- },
- "SessionStatus": {
- "anyOf": [
- {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "idle"
- }
- },
- "required": ["type"]
- },
- {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "retry"
- },
- "attempt": {
- "type": "number"
- },
"message": {
"type": "string"
- },
- "next": {
- "type": "number"
}
},
- "required": ["type", "attempt", "message", "next"]
- },
- {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "busy"
- }
- },
- "required": ["type"]
- }
- ]
- },
- "Event.session.status": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "session.status"
- },
- "properties": {
- "type": "object",
- "properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- },
- "status": {
- "$ref": "#/components/schemas/SessionStatus"
- }
- },
- "required": ["sessionID", "status"]
- }
- },
- "required": ["type", "properties"]
- },
- "Event.session.idle": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "session.idle"
- },
- "properties": {
- "type": "object",
- "properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- }
- },
- "required": ["sessionID"]
- }
- },
- "required": ["type", "properties"]
- },
- "Event.session.compacted": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "session.compacted"
- },
- "properties": {
- "type": "object",
- "properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- }
- },
- "required": ["sessionID"]
- }
- },
- "required": ["type", "properties"]
- },
- "Todo": {
- "type": "object",
- "properties": {
- "content": {
- "description": "Brief description of the task",
- "type": "string"
- },
- "status": {
- "description": "Current status of the task: pending, in_progress, completed, cancelled",
- "type": "string"
- },
- "priority": {
- "description": "Priority level of the task: high, medium, low",
- "type": "string"
- }
- },
- "required": ["content", "status", "priority"]
- },
- "Event.todo.updated": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "todo.updated"
- },
- "properties": {
- "type": "object",
- "properties": {
- "sessionID": {
- "type": "string",
- "pattern": "^ses.*"
- },
- "todos": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Todo"
- }
- }
- },
- "required": ["sessionID", "todos"]
+ "required": ["message"]
}
},
"required": ["type", "properties"]
@@ -8379,34 +8763,31 @@
},
"required": ["type", "properties"]
},
- "Event.worktree.ready": {
+ "Event.workspace.ready": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "worktree.ready"
+ "const": "workspace.ready"
},
"properties": {
"type": "object",
"properties": {
"name": {
"type": "string"
- },
- "branch": {
- "type": "string"
}
},
- "required": ["name", "branch"]
+ "required": ["name"]
}
},
"required": ["type", "properties"]
},
- "Event.worktree.failed": {
+ "Event.workspace.failed": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "const": "worktree.failed"
+ "const": "workspace.failed"
},
"properties": {
"type": "object",
@@ -8420,6 +8801,67 @@
},
"required": ["type", "properties"]
},
+ "Event.workspace.restore": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "workspace.restore"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "workspaceID": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "total": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ },
+ "step": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": ["workspaceID", "sessionID", "total", "step"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
+ "Event.workspace.status": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "workspace.status"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "workspaceID": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "status": {
+ "type": "string",
+ "enum": ["connected", "connecting", "disconnected", "error"]
+ },
+ "error": {
+ "type": "string"
+ }
+ },
+ "required": ["workspaceID", "status"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
"OutputFormatText": {
"type": "object",
"properties": {
@@ -9781,165 +10223,24 @@
},
"required": ["type", "properties"]
},
- "Event": {
- "anyOf": [
- {
- "$ref": "#/components/schemas/Event.project.updated"
- },
- {
- "$ref": "#/components/schemas/Event.installation.updated"
- },
- {
- "$ref": "#/components/schemas/Event.installation.update-available"
- },
- {
- "$ref": "#/components/schemas/Event.server.instance.disposed"
- },
- {
- "$ref": "#/components/schemas/Event.server.connected"
- },
- {
- "$ref": "#/components/schemas/Event.global.disposed"
- },
- {
- "$ref": "#/components/schemas/Event.lsp.client.diagnostics"
- },
- {
- "$ref": "#/components/schemas/Event.lsp.updated"
- },
- {
- "$ref": "#/components/schemas/Event.message.part.delta"
- },
- {
- "$ref": "#/components/schemas/Event.permission.asked"
- },
- {
- "$ref": "#/components/schemas/Event.permission.replied"
- },
- {
- "$ref": "#/components/schemas/Event.session.diff"
- },
- {
- "$ref": "#/components/schemas/Event.session.error"
- },
- {
- "$ref": "#/components/schemas/Event.file.edited"
- },
- {
- "$ref": "#/components/schemas/Event.file.watcher.updated"
- },
- {
- "$ref": "#/components/schemas/Event.vcs.branch.updated"
- },
- {
- "$ref": "#/components/schemas/Event.tui.prompt.append"
- },
- {
- "$ref": "#/components/schemas/Event.tui.command.execute"
- },
- {
- "$ref": "#/components/schemas/Event.tui.toast.show"
- },
- {
- "$ref": "#/components/schemas/Event.tui.session.select"
- },
- {
- "$ref": "#/components/schemas/Event.mcp.tools.changed"
- },
- {
- "$ref": "#/components/schemas/Event.mcp.browser.open.failed"
- },
- {
- "$ref": "#/components/schemas/Event.command.executed"
- },
- {
- "$ref": "#/components/schemas/Event.workspace.ready"
- },
- {
- "$ref": "#/components/schemas/Event.workspace.failed"
- },
- {
- "$ref": "#/components/schemas/Event.question.asked"
- },
- {
- "$ref": "#/components/schemas/Event.question.replied"
- },
- {
- "$ref": "#/components/schemas/Event.question.rejected"
- },
- {
- "$ref": "#/components/schemas/Event.session.status"
- },
- {
- "$ref": "#/components/schemas/Event.session.idle"
- },
- {
- "$ref": "#/components/schemas/Event.session.compacted"
- },
- {
- "$ref": "#/components/schemas/Event.todo.updated"
- },
- {
- "$ref": "#/components/schemas/Event.pty.created"
- },
- {
- "$ref": "#/components/schemas/Event.pty.updated"
- },
- {
- "$ref": "#/components/schemas/Event.pty.exited"
- },
- {
- "$ref": "#/components/schemas/Event.pty.deleted"
- },
- {
- "$ref": "#/components/schemas/Event.worktree.ready"
- },
- {
- "$ref": "#/components/schemas/Event.worktree.failed"
- },
- {
- "$ref": "#/components/schemas/Event.message.updated"
- },
- {
- "$ref": "#/components/schemas/Event.message.removed"
- },
- {
- "$ref": "#/components/schemas/Event.message.part.updated"
- },
- {
- "$ref": "#/components/schemas/Event.message.part.removed"
- },
- {
- "$ref": "#/components/schemas/Event.session.created"
- },
- {
- "$ref": "#/components/schemas/Event.session.updated"
- },
- {
- "$ref": "#/components/schemas/Event.session.deleted"
- }
- ]
- },
- "GlobalEvent": {
- "type": "object",
- "properties": {
- "directory": {
- "type": "string"
- },
- "payload": {
- "$ref": "#/components/schemas/Event"
- }
- },
- "required": ["directory", "payload"]
- },
"SyncEvent.message.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "message.updated.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -9957,16 +10258,26 @@
"required": ["sessionID", "info"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.message.removed": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "message.removed.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -9985,16 +10296,26 @@
"required": ["sessionID", "messageID"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.message.part.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "message.part.updated.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -10015,16 +10336,26 @@
"required": ["sessionID", "part", "time"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.message.part.removed": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "message.part.removed.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -10047,16 +10378,26 @@
"required": ["sessionID", "messageID", "partID"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.session.created": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "session.created.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -10074,16 +10415,26 @@
"required": ["sessionID", "info"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.session.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "session.updated.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -10326,16 +10677,26 @@
"required": ["sessionID", "info"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
"SyncEvent.session.deleted": {
"type": "object",
"properties": {
"type": {
"type": "string",
+ "const": "sync"
+ },
+ "name": {
+ "type": "string",
"const": "session.deleted.1"
},
- "aggregate": {
+ "id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "aggregateID": {
"type": "string",
"const": "sessionID"
},
@@ -10353,16 +10714,188 @@
"required": ["sessionID", "info"]
}
},
- "required": ["type", "aggregate", "data"]
+ "required": ["type", "name", "id", "seq", "aggregateID", "data"]
},
- "SyncEvent": {
+ "GlobalEvent": {
"type": "object",
"properties": {
+ "directory": {
+ "type": "string"
+ },
+ "project": {
+ "type": "string"
+ },
+ "workspace": {
+ "type": "string"
+ },
"payload": {
- "$ref": "#/components/schemas/SyncEvent"
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/Event.project.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.server.instance.disposed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.server.connected"
+ },
+ {
+ "$ref": "#/components/schemas/Event.global.disposed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.edited"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.watcher.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.lsp.client.diagnostics"
+ },
+ {
+ "$ref": "#/components/schemas/Event.lsp.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.installation.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.installation.update-available"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.delta"
+ },
+ {
+ "$ref": "#/components/schemas/Event.permission.asked"
+ },
+ {
+ "$ref": "#/components/schemas/Event.permission.replied"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.diff"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.error"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.asked"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.replied"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.rejected"
+ },
+ {
+ "$ref": "#/components/schemas/Event.todo.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.status"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.idle"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.compacted"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.prompt.append"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.command.execute"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.toast.show"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.session.select"
+ },
+ {
+ "$ref": "#/components/schemas/Event.mcp.tools.changed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.mcp.browser.open.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.command.executed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.vcs.branch.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.worktree.ready"
+ },
+ {
+ "$ref": "#/components/schemas/Event.worktree.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.created"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.exited"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.deleted"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.ready"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.restore"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.status"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.removed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.removed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.created"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.deleted"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.message.updated"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.message.removed"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.message.part.updated"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.message.part.removed"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.session.created"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.session.updated"
+ },
+ {
+ "$ref": "#/components/schemas/SyncEvent.session.deleted"
+ }
+ ]
}
},
- "required": ["payload"]
+ "required": ["directory", "payload"]
},
"LogLevel": {
"description": "Log level",
@@ -11788,17 +12321,10 @@
"type": {
"type": "string"
},
- "branch": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
"name": {
+ "type": "string"
+ },
+ "branch": {
"anyOf": [
{
"type": "string"
@@ -11830,7 +12356,7 @@
"type": "string"
}
},
- "required": ["id", "type", "branch", "name", "directory", "extra", "projectID"]
+ "required": ["id", "type", "name", "branch", "directory", "extra", "projectID"]
},
"Worktree": {
"type": "object",
@@ -12173,16 +12699,8 @@
"type": "object",
"properties": {
"type": {
- "anyOf": [
- {
- "type": "string",
- "const": "oauth"
- },
- {
- "type": "string",
- "const": "api"
- }
- ]
+ "type": "string",
+ "enum": ["oauth", "api"]
},
"label": {
"type": "string"
@@ -12214,16 +12732,8 @@
"type": "string"
},
"op": {
- "anyOf": [
- {
- "type": "string",
- "const": "eq"
- },
- {
- "type": "string",
- "const": "neq"
- }
- ]
+ "type": "string",
+ "enum": ["eq", "neq"]
},
"value": {
"type": "string"
@@ -12272,16 +12782,8 @@
"type": "string"
},
"op": {
- "anyOf": [
- {
- "type": "string",
- "const": "eq"
- },
- {
- "type": "string",
- "const": "neq"
- }
- ]
+ "type": "string",
+ "enum": ["eq", "neq"]
},
"value": {
"type": "string"
@@ -12305,16 +12807,8 @@
"type": "string"
},
"method": {
- "anyOf": [
- {
- "type": "string",
- "const": "auto"
- },
- {
- "type": "string",
- "const": "code"
- }
- ]
+ "type": "string",
+ "enum": ["auto", "code"]
},
"instructions": {
"type": "string"
@@ -12462,6 +12956,151 @@
},
"required": ["path", "added", "removed", "status"]
},
+ "Event": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/Event.project.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.server.instance.disposed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.server.connected"
+ },
+ {
+ "$ref": "#/components/schemas/Event.global.disposed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.edited"
+ },
+ {
+ "$ref": "#/components/schemas/Event.file.watcher.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.lsp.client.diagnostics"
+ },
+ {
+ "$ref": "#/components/schemas/Event.lsp.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.installation.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.installation.update-available"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.delta"
+ },
+ {
+ "$ref": "#/components/schemas/Event.permission.asked"
+ },
+ {
+ "$ref": "#/components/schemas/Event.permission.replied"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.diff"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.error"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.asked"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.replied"
+ },
+ {
+ "$ref": "#/components/schemas/Event.question.rejected"
+ },
+ {
+ "$ref": "#/components/schemas/Event.todo.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.status"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.idle"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.compacted"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.prompt.append"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.command.execute"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.toast.show"
+ },
+ {
+ "$ref": "#/components/schemas/Event.tui.session.select"
+ },
+ {
+ "$ref": "#/components/schemas/Event.mcp.tools.changed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.mcp.browser.open.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.command.executed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.vcs.branch.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.worktree.ready"
+ },
+ {
+ "$ref": "#/components/schemas/Event.worktree.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.created"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.exited"
+ },
+ {
+ "$ref": "#/components/schemas/Event.pty.deleted"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.ready"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.failed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.restore"
+ },
+ {
+ "$ref": "#/components/schemas/Event.workspace.status"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.removed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.message.part.removed"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.created"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.updated"
+ },
+ {
+ "$ref": "#/components/schemas/Event.session.deleted"
+ }
+ ]
+ },
"MCPStatusConnected": {
"type": "object",
"properties": {