Packages
opencode_sdk
0.1.76
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Unofficial OpenCode SDK for Elixir. A complete Elixir SDK for OpenCode, providing server creation, session management, messaging, file operations, and more. Mirrors the functionality of the official JavaScript SDK (@opencode-ai/sdk). Not affiliated with or built by the OpenCode team.
Current section
Files
Jump to
Current section
Files
lib/opencode/generated/sync.ex
defmodule OpenCode.Generated.Sync do
@moduledoc """
Provides API endpoints related to sync
"""
@default_client OpenCode.Client
@type sync_history_list_200_json_resp :: %{
aggregate_id: String.t(),
data: map,
id: String.t(),
seq: integer,
type: String.t()
}
@doc """
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.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec sync_history_list(body :: map, opts :: keyword) ::
{:ok, [OpenCode.Generated.Sync.sync_history_list_200_json_resp()]}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()}
def sync_history_list(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Sync, :sync_history_list},
url: "/sync/history",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, [{OpenCode.Generated.Sync, :sync_history_list_200_json_resp}]},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}}
],
opts: opts
})
end
@type sync_replay_200_json_resp :: %{session_id: String.t()}
@doc """
Replay sync events
Validate and replay a complete sync event history.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec sync_replay(body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Sync.sync_replay_200_json_resp()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()}
def sync_replay(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Sync, :sync_replay},
url: "/sync/replay",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Sync, :sync_replay_200_json_resp}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}}
],
opts: opts
})
end
@doc """
Start workspace sync
Start sync loops for workspaces in the current project that have active sessions.
## Options
* `directory`
* `workspace`
"""
@spec sync_start(opts :: keyword) ::
{:ok, boolean} | {:error, OpenCode.Generated.BadRequestError.t()}
def sync_start(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Sync, :sync_start},
url: "/sync/start",
method: :post,
query: query,
response: [{200, :boolean}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@type sync_steal_200_json_resp :: %{session_id: String.t()}
@doc """
Steal session into workspace
Update a session to belong to the current workspace through the sync event system.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec sync_steal(body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.Sync.sync_steal_200_json_resp()}
| {:error,
OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()}
def sync_steal(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Sync, :sync_steal},
url: "/sync/steal",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.Sync, :sync_steal_200_json_resp}},
{400,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}}
],
opts: opts
})
end
@doc false
@spec __fields__(atom) :: keyword
def __fields__(:sync_history_list_200_json_resp) do
[aggregate_id: :string, data: :map, id: :string, seq: :integer, type: :string]
end
def __fields__(:sync_replay_200_json_resp) do
[session_id: :string]
end
def __fields__(:sync_steal_200_json_resp) do
[session_id: :string]
end
end