@getpaseo/server 0.9.2 → 0.10.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/scripts/supervisor.js +51 -21
  2. package/dist/server/server/agent/agent-manager.js +22 -2
  3. package/dist/server/server/agent/agent-prompt.js +12 -0
  4. package/dist/server/server/agent/agent-sdk-types.d.ts +3 -0
  5. package/dist/server/server/agent/mcp-shared.d.ts +5 -1
  6. package/dist/server/server/agent/mcp-shared.js +2 -1
  7. package/dist/server/server/agent/provider-registry.js +2 -2
  8. package/dist/server/server/agent/providers/acp-agent.js +20 -11
  9. package/dist/server/server/agent/providers/claude/agent.d.ts +1 -2
  10. package/dist/server/server/agent/providers/claude/agent.js +10 -9
  11. package/dist/server/server/agent/providers/claude/models.d.ts +1 -1
  12. package/dist/server/server/agent/providers/claude/models.js +1 -5
  13. package/dist/server/server/agent/providers/claude/project-dir.d.ts +1 -0
  14. package/dist/server/server/agent/providers/claude/project-dir.js +5 -1
  15. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +6 -1
  16. package/dist/server/server/agent/providers/codex-app-server-agent.js +10 -1
  17. package/dist/server/server/agent/providers/generic-acp-agent.js +3 -1
  18. package/dist/server/server/agent/providers/omp/agent.js +23 -6
  19. package/dist/server/server/agent/providers/omp/rpc-types.d.ts +1 -0
  20. package/dist/server/server/agent/providers/omp/rpc-types.js +1 -0
  21. package/dist/server/server/agent/providers/opencode/bridge.d.ts +5 -1
  22. package/dist/server/server/agent/providers/opencode/bridge.js +56 -5
  23. package/dist/server/server/agent/providers/opencode/http-error.d.ts +8 -0
  24. package/dist/server/server/agent/providers/opencode/http-error.js +13 -0
  25. package/dist/server/server/agent/providers/opencode/runtime-client.d.ts +38 -0
  26. package/dist/server/server/agent/providers/opencode/runtime-client.js +131 -0
  27. package/dist/server/server/agent/providers/opencode/runtime-notice.d.ts +3 -0
  28. package/dist/server/server/agent/providers/opencode/runtime-notice.js +47 -0
  29. package/dist/server/server/agent/providers/opencode/server-manager.js +19 -8
  30. package/dist/server/server/agent/providers/opencode/v2/agent.d.ts +36 -0
  31. package/dist/server/server/agent/providers/opencode/v2/agent.js +208 -0
  32. package/dist/server/server/agent/providers/opencode/v2/api.d.ts +18 -0
  33. package/dist/server/server/agent/providers/opencode/v2/api.js +2 -0
  34. package/dist/server/server/agent/providers/opencode/v2/bridge-plugin.bundle.mjs +6693 -0
  35. package/dist/server/server/agent/providers/opencode/v2/capabilities.d.ts +3 -0
  36. package/dist/server/server/agent/providers/opencode/v2/capabilities.js +13 -0
  37. package/dist/server/server/agent/providers/opencode/v2/children.d.ts +20 -0
  38. package/dist/server/server/agent/providers/opencode/v2/children.js +75 -0
  39. package/dist/server/server/agent/providers/opencode/v2/commands.d.ts +4 -0
  40. package/dist/server/server/agent/providers/opencode/v2/commands.js +36 -0
  41. package/dist/server/server/agent/providers/opencode/v2/configuration.d.ts +8 -0
  42. package/dist/server/server/agent/providers/opencode/v2/configuration.js +64 -0
  43. package/dist/server/server/agent/providers/opencode/v2/history.d.ts +4 -0
  44. package/dist/server/server/agent/providers/opencode/v2/history.js +15 -0
  45. package/dist/server/server/agent/providers/opencode/v2/mapping.d.ts +7 -0
  46. package/dist/server/server/agent/providers/opencode/v2/mapping.js +42 -0
  47. package/dist/server/server/agent/providers/opencode/v2/permissions.d.ts +18 -0
  48. package/dist/server/server/agent/providers/opencode/v2/permissions.js +157 -0
  49. package/dist/server/server/agent/providers/opencode/v2/readiness.d.ts +18 -0
  50. package/dist/server/server/agent/providers/opencode/v2/readiness.js +51 -0
  51. package/dist/server/server/agent/providers/opencode/v2/runtime.d.ts +36 -0
  52. package/dist/server/server/agent/providers/opencode/v2/runtime.js +230 -0
  53. package/dist/server/server/agent/providers/opencode/v2/session.d.ts +84 -0
  54. package/dist/server/server/agent/providers/opencode/v2/session.js +465 -0
  55. package/dist/server/server/agent/providers/opencode/v2/structured-output.d.ts +8 -0
  56. package/dist/server/server/agent/providers/opencode/v2/structured-output.js +32 -0
  57. package/dist/server/server/agent/providers/opencode/v2/timeline.d.ts +28 -0
  58. package/dist/server/server/agent/providers/opencode/v2/timeline.js +154 -0
  59. package/dist/server/server/agent/providers/opencode/v2/turns.d.ts +40 -0
  60. package/dist/server/server/agent/providers/opencode/v2/turns.js +226 -0
  61. package/dist/server/server/agent/providers/opencode-agent.d.ts +26 -7
  62. package/dist/server/server/agent/providers/opencode-agent.js +100 -40
  63. package/dist/server/server/agent/providers/pi/agent.d.ts +6 -6
  64. package/dist/server/server/agent/providers/pi/agent.js +114 -165
  65. package/dist/server/server/agent/providers/pi/extensions/child-session.d.ts +4 -0
  66. package/dist/server/server/agent/providers/pi/extensions/child-session.js +59 -0
  67. package/dist/server/server/agent/providers/pi/extensions/contract.d.ts +68 -0
  68. package/dist/server/server/agent/providers/pi/extensions/contract.js +2 -0
  69. package/dist/server/server/agent/providers/pi/extensions/gotgenes-pi-subagents/index.d.ts +3 -0
  70. package/dist/server/server/agent/providers/pi/extensions/gotgenes-pi-subagents/index.js +159 -0
  71. package/dist/server/server/agent/providers/pi/extensions/host.d.ts +28 -0
  72. package/dist/server/server/agent/providers/pi/extensions/host.js +94 -0
  73. package/dist/server/server/agent/providers/pi/extensions/index.d.ts +7 -0
  74. package/dist/server/server/agent/providers/pi/extensions/index.js +6 -0
  75. package/dist/server/server/agent/providers/pi/extensions/pi-ask-user/index.d.ts +3 -0
  76. package/dist/server/server/agent/providers/pi/extensions/pi-ask-user/index.js +138 -0
  77. package/dist/server/server/agent/providers/pi/extensions/pi-example-todo/index.d.ts +3 -0
  78. package/dist/server/server/agent/providers/pi/extensions/pi-example-todo/index.js +38 -0
  79. package/dist/server/server/agent/providers/pi/extensions/pi-goal-x/index.d.ts +3 -0
  80. package/dist/server/server/agent/providers/pi/extensions/pi-goal-x/index.js +63 -0
  81. package/dist/server/server/agent/providers/pi/extensions/pi-mcp-adapter/index.d.ts +3 -0
  82. package/dist/server/server/agent/providers/pi/extensions/pi-mcp-adapter/index.js +48 -0
  83. package/dist/server/server/agent/providers/pi/extensions/pi-subagents/index.d.ts +3 -0
  84. package/dist/server/server/agent/providers/pi/extensions/pi-subagents/index.js +131 -0
  85. package/dist/server/server/agent/providers/pi/extensions/registry.d.ts +2 -0
  86. package/dist/server/server/agent/providers/pi/extensions/registry.js +21 -0
  87. package/dist/server/server/agent/providers/pi/extensions/rpiv-ask-user-question/index.d.ts +3 -0
  88. package/dist/server/server/agent/providers/pi/extensions/rpiv-ask-user-question/index.js +180 -0
  89. package/dist/server/server/agent/providers/pi/extensions/rpiv-todo/index.d.ts +3 -0
  90. package/dist/server/server/agent/providers/pi/extensions/rpiv-todo/index.js +51 -0
  91. package/dist/server/server/agent/providers/pi/extensions/subagent-fixture-test.d.ts +22 -0
  92. package/dist/server/server/agent/providers/pi/extensions/subagent-fixture-test.js +66 -0
  93. package/dist/server/server/agent/providers/pi/extensions/task-fixture-test.d.ts +4 -0
  94. package/dist/server/server/agent/providers/pi/extensions/task-fixture-test.js +79 -0
  95. package/dist/server/server/agent/providers/pi/extensions/tintinweb-pi-subagents/index.d.ts +3 -0
  96. package/dist/server/server/agent/providers/pi/extensions/tintinweb-pi-subagents/index.js +149 -0
  97. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +7 -2
  98. package/dist/server/server/agent/providers/pi/history-mapper.js +78 -35
  99. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +3 -0
  100. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +170 -0
  101. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +355 -0
  102. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +1 -6
  103. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +1 -97
  104. package/dist/server/server/agent/tools/paseo-tools.js +22 -15
  105. package/dist/server/server/auth.d.ts +1 -2
  106. package/dist/server/server/auth.js +8 -14
  107. package/dist/server/server/bootstrap.js +10 -2
  108. package/dist/server/server/daemon-instance.d.ts +1 -0
  109. package/dist/server/server/daemon-instance.js +1 -0
  110. package/dist/server/server/exports.d.ts +1 -1
  111. package/dist/server/server/exports.js +1 -1
  112. package/dist/server/server/local-credential.d.ts +6 -0
  113. package/dist/server/server/local-credential.js +82 -0
  114. package/dist/server/server/session-admission-auth.d.ts +16 -0
  115. package/dist/server/server/session-admission-auth.js +26 -0
  116. package/dist/server/server/websocket-server.d.ts +6 -1
  117. package/dist/server/server/websocket-server.js +132 -55
  118. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js → desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js} +1 -1
  119. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js.br → desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js.br} +0 -0
  120. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js.gz +0 -0
  121. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js → desktop-attachment-store-d5d3402a752965d3037191484127123b.js} +1 -1
  122. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js.br → desktop-attachment-store-d5d3402a752965d3037191484127123b.js.br} +0 -0
  123. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-d5d3402a752965d3037191484127123b.js.gz +0 -0
  124. package/dist/server/web-ui/_expo/static/js/web/{index-8868523fc6d311c5da524c067d1cd426.js → index-69ce3c243032c3bedfc6f2ad379a4cdd.js} +1579 -1575
  125. package/dist/server/web-ui/_expo/static/js/web/index-69ce3c243032c3bedfc6f2ad379a4cdd.js.br +0 -0
  126. package/dist/server/web-ui/_expo/static/js/web/index-69ce3c243032c3bedfc6f2ad379a4cdd.js.gz +0 -0
  127. package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js → indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js} +1 -1
  128. package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js.br → indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js.br} +0 -0
  129. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js.gz +0 -0
  130. package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js → native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.js} +3 -3
  131. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.js.br +0 -0
  132. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.js.gz +0 -0
  133. package/dist/server/web-ui/index.html +1 -1
  134. package/dist/server/web-ui/index.html.br +0 -0
  135. package/dist/server/web-ui/index.html.gz +0 -0
  136. package/dist/src/server/daemon-instance.js +1 -0
  137. package/dist/src/server/local-credential.js +82 -0
  138. package/package.json +8 -7
  139. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js.gz +0 -0
  140. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js.gz +0 -0
  141. package/dist/server/web-ui/_expo/static/js/web/index-8868523fc6d311c5da524c067d1cd426.js.br +0 -0
  142. package/dist/server/web-ui/_expo/static/js/web/index-8868523fc6d311c5da524c067d1cd426.js.gz +0 -0
  143. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js.gz +0 -0
  144. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js.br +0 -0
  145. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js.gz +0 -0
@@ -0,0 +1,230 @@
1
+ import { decorateOpenCodeV2Env, materializeOpenCodeV2Plugin } from "../bridge.js";
2
+ import { resolvePaseoHome } from "../../../../paseo-home.js";
3
+ import { OpenCode } from "@opencode/client";
4
+ import { randomBytes } from "node:crypto";
5
+ import { mkdir } from "node:fs/promises";
6
+ import { spawnProcess } from "../../../../../utils/spawn.js";
7
+ import { terminateWithTreeKill } from "../../../../../utils/tree-kill.js";
8
+ import { createProviderEnvSpec, resolveProviderLaunch, } from "../../../provider-launch-config.js";
9
+ import { resolveOpenCodeHomeDir } from "../paths.js";
10
+ import { OpenCodeHttpError } from "../http-error.js";
11
+ import { raceProviderRefreshAbort } from "../../../provider-refresh-deadline.js";
12
+ // The runtime owns a credential for each subprocess; sessions only receive its authenticated client.
13
+ export class V2Runtime {
14
+ constructor(options) {
15
+ this.options = options;
16
+ this.current = null;
17
+ this.generations = new Set();
18
+ this.starts = new Set();
19
+ this.closed = false;
20
+ }
21
+ async acquire(input = {}) {
22
+ if (this.closed)
23
+ throw new Error("OpenCode runtime is closed");
24
+ input.signal?.throwIfAborted();
25
+ let pending;
26
+ if (input.env || input.dedicated) {
27
+ pending = this.startTracked(input.env);
28
+ }
29
+ else {
30
+ if (input.fresh || !this.current)
31
+ this.current = this.startTracked();
32
+ pending = this.current;
33
+ }
34
+ let generation;
35
+ try {
36
+ generation = await raceProviderRefreshAbort(input.signal, pending);
37
+ }
38
+ catch (error) {
39
+ if (this.current === pending)
40
+ this.current = null;
41
+ if (input.signal?.aborted) {
42
+ void pending
43
+ .then(async (started) => {
44
+ if (started.users !== 0)
45
+ return undefined;
46
+ this.generations.delete(started);
47
+ await started.stop();
48
+ return undefined;
49
+ })
50
+ .catch((cleanupError) => {
51
+ this.options.logger.warn({ error: String(cleanupError) }, "OpenCode canceled startup cleanup failed");
52
+ });
53
+ }
54
+ throw error;
55
+ }
56
+ if (!this.generations.has(generation)) {
57
+ if (this.current === pending)
58
+ this.current = null;
59
+ throw new Error("OpenCode helper server exited");
60
+ }
61
+ const connection = this.lease(generation, pending);
62
+ if (input.signal?.aborted || this.closed) {
63
+ await connection.release();
64
+ input.signal?.throwIfAborted();
65
+ throw new Error("OpenCode runtime is closed");
66
+ }
67
+ return connection;
68
+ }
69
+ lease(generation, pending) {
70
+ if (this.closed || !this.generations.has(generation))
71
+ throw new Error("OpenCode helper server is no longer running");
72
+ generation.users += 1;
73
+ let released = false;
74
+ const release = async () => {
75
+ if (released)
76
+ return;
77
+ released = true;
78
+ generation.users -= 1;
79
+ if (generation.users !== 0)
80
+ return;
81
+ if (this.current === pending)
82
+ this.current = null;
83
+ this.generations.delete(generation);
84
+ await generation.stop();
85
+ };
86
+ return {
87
+ client: generation.client,
88
+ release,
89
+ retain: () => this.lease(generation, pending),
90
+ exited: generation.exited,
91
+ };
92
+ }
93
+ async shutdown() {
94
+ this.closed = true;
95
+ await Promise.allSettled(this.starts);
96
+ await Promise.all([...this.generations].map((generation) => generation.stop()));
97
+ this.generations.clear();
98
+ this.current = null;
99
+ }
100
+ startTracked(env) {
101
+ const pending = this.start(env);
102
+ this.starts.add(pending);
103
+ void pending.then((generation) => generation.exited.then(() => {
104
+ if (this.current === pending)
105
+ this.current = null;
106
+ return undefined;
107
+ }), () => undefined);
108
+ void pending.then(() => this.starts.delete(pending), () => this.starts.delete(pending));
109
+ return pending;
110
+ }
111
+ async start(env = {}) {
112
+ const { settings, managedProcesses, logger } = this.options;
113
+ const launch = await resolveProviderLaunch({
114
+ commandConfig: settings?.command,
115
+ defaultBinary: "opencode",
116
+ });
117
+ const cwd = resolveOpenCodeHomeDir();
118
+ await mkdir(cwd, { recursive: true });
119
+ const password = randomBytes(32).toString("base64url");
120
+ const inheritedConfig = globalThis.process.env.OPENCODE_CONFIG_CONTENT;
121
+ const configured = {
122
+ ...(inheritedConfig ? { OPENCODE_CONFIG_CONTENT: inheritedConfig } : {}),
123
+ ...settings?.env,
124
+ ...env,
125
+ };
126
+ const decorated = this.options.decorateEnv
127
+ ? await this.options.decorateEnv(configured)
128
+ : decorateOpenCodeV2Env(configured, await materializeOpenCodeV2Plugin(resolvePaseoHome()));
129
+ const args = [...launch.args, "serve", "--hostname", "127.0.0.1", "--port", "0"];
130
+ const process = spawnProcess(launch.command, args, {
131
+ cwd,
132
+ detached: globalThis.process.platform !== "win32",
133
+ stdio: ["ignore", "pipe", "pipe"],
134
+ ...createProviderEnvSpec({
135
+ runtimeSettings: settings,
136
+ overlays: [{ ...decorated, OPENCODE_PASSWORD: password }],
137
+ }),
138
+ });
139
+ const processAbort = new AbortController();
140
+ const exited = new Promise((resolve) => process.once("exit", (code) => {
141
+ const error = new Error(`OpenCode helper server exited (${code})`);
142
+ processAbort.abort(error);
143
+ resolve(error);
144
+ }));
145
+ let stopped;
146
+ const record = process.pid && managedProcesses
147
+ ? managedProcesses
148
+ .record({
149
+ owner: { provider: "opencode", kind: "helper-server" },
150
+ pid: process.pid,
151
+ command: launch.command,
152
+ args,
153
+ })
154
+ .catch((error) => {
155
+ logger.warn({ error }, "Could not record OpenCode helper process");
156
+ return null;
157
+ })
158
+ : Promise.resolve(null);
159
+ const stop = () => {
160
+ stopped ?? (stopped = (async () => {
161
+ await terminateWithTreeKill(process, { gracefulTimeoutMs: 5000, forceTimeoutMs: 1000 });
162
+ const entry = await record;
163
+ if (entry)
164
+ await managedProcesses?.remove(entry.id);
165
+ })());
166
+ return stopped;
167
+ };
168
+ const deadline = Date.now() + 30000;
169
+ try {
170
+ const url = await new Promise((resolve, reject) => {
171
+ const timer = setTimeout(() => finish(new Error("OpenCode v2 server startup timed out after 30s")), 30000);
172
+ let buffer = "";
173
+ const finish = (result) => {
174
+ clearTimeout(timer);
175
+ process.stdout?.off("data", onData);
176
+ process.off("error", onError);
177
+ process.off("exit", onExit);
178
+ if (result instanceof Error)
179
+ reject(result);
180
+ else
181
+ resolve(result);
182
+ };
183
+ const onData = (chunk) => {
184
+ buffer = (buffer + chunk.toString()).slice(-8192);
185
+ const match = buffer.match(/server listening on (http:\/\/127\.0\.0\.1:\d+)(?:\r?\n)/);
186
+ if (match)
187
+ finish(match[1]);
188
+ };
189
+ const onError = (error) => finish(error);
190
+ const onExit = (code) => finish(new Error(`OpenCode v2 server exited during startup (${code})`));
191
+ process.stdout?.on("data", onData);
192
+ process.once("error", onError);
193
+ process.once("exit", onExit);
194
+ // Drain stderr without retaining provider output that may contain credentials.
195
+ process.stderr?.on("data", () => undefined);
196
+ });
197
+ const client = OpenCode.make({
198
+ baseUrl: url,
199
+ headers: {
200
+ Authorization: `Basic ${Buffer.from(`opencode:${password}`).toString("base64")}`,
201
+ },
202
+ fetch: async (request, init) => {
203
+ const signal = init?.signal
204
+ ? AbortSignal.any([init.signal, processAbort.signal])
205
+ : processAbort.signal;
206
+ const response = await fetch(request, { ...init, signal });
207
+ const html = response.headers.get("content-type")?.includes("text/html") ?? false;
208
+ if (!response.ok || html) {
209
+ const requestUrl = request instanceof Request ? request.url : String(request);
210
+ throw new OpenCodeHttpError(new URL(requestUrl).pathname, response.status, html);
211
+ }
212
+ return response;
213
+ },
214
+ });
215
+ await client.server.info({ signal: AbortSignal.timeout(Math.max(1, deadline - Date.now())) });
216
+ const generation = { client, users: 0, stop, exited };
217
+ this.generations.add(generation);
218
+ process.once("exit", () => {
219
+ this.generations.delete(generation);
220
+ void stop().catch((error) => logger.warn({ error }, "OpenCode process cleanup failed"));
221
+ });
222
+ return generation;
223
+ }
224
+ catch (error) {
225
+ await stop();
226
+ throw error;
227
+ }
228
+ }
229
+ }
230
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1,84 @@
1
+ import type { SessionInfo } from "@opencode/client";
2
+ import type { Logger } from "pino";
3
+ import type { AgentLaunchContext, AgentMode, AgentPermissionResponse, AgentPersistenceHandle, AgentPromptInput, AgentRunOptions, AgentSession, AgentSessionConfig, AgentStreamEvent, SteerActiveTurnOptions, SteerResult } from "../../../agent-sdk-types.js";
4
+ import { type V2Connection } from "./runtime.js";
5
+ export declare class OpenCodeV2Session implements AgentSession {
6
+ private connection;
7
+ private info;
8
+ private readonly config;
9
+ private readonly logger;
10
+ private readonly persist;
11
+ private readonly requiresPaseoPlugin;
12
+ private readonly unbind?;
13
+ private readonly acquire?;
14
+ private readonly moved?;
15
+ readonly provider = "opencode";
16
+ readonly capabilities: import("../../../agent-sdk-types.js").AgentCapabilityFlags;
17
+ private readonly listeners;
18
+ private readonly timeline;
19
+ private readonly abort;
20
+ private readonly permissions;
21
+ private readonly turns;
22
+ private readonly children;
23
+ private stream;
24
+ private streamAbort;
25
+ private exited;
26
+ private reconnecting;
27
+ private launchEnv;
28
+ private sync;
29
+ private dirty;
30
+ private refreshTimer;
31
+ private closed;
32
+ private history;
33
+ private modes;
34
+ constructor(connection: V2Connection, info: SessionInfo, config: AgentSessionConfig, logger: Logger, persist: boolean, requiresPaseoPlugin: boolean, unbind?: (() => void) | undefined, bindChild?: (id: string) => void, acquire?: (() => Promise<V2Connection>) | undefined, moved?: ((connection: V2Connection) => void) | undefined);
35
+ get id(): string;
36
+ get features(): import("../../../agent-sdk-types.js").AgentFeature[];
37
+ private get client();
38
+ initialize(launch?: AgentLaunchContext): Promise<void>;
39
+ private watchExit;
40
+ private configureConnection;
41
+ private startStream;
42
+ private reconnectIfExited;
43
+ private reconnect;
44
+ subscribe(callback: (event: AgentStreamEvent) => void): () => void;
45
+ private awaitMcp;
46
+ private emit;
47
+ private emitTimeline;
48
+ streamHistory(): AsyncGenerator<AgentStreamEvent, void, unknown>;
49
+ getRuntimeInfo(): Promise<{
50
+ provider: string;
51
+ sessionId: string;
52
+ model: string | null;
53
+ modeId: string | null;
54
+ thinkingOptionId: string | null;
55
+ }>;
56
+ getAvailableModes(): Promise<AgentMode[]>;
57
+ getCurrentMode(): Promise<string | null>;
58
+ setMode(modeId: string): Promise<void>;
59
+ setModel(model: string | null): Promise<void>;
60
+ setThinkingOption(variant: string | null): Promise<void>;
61
+ setFeature(id: string, value: unknown): Promise<void>;
62
+ listCommands(): Promise<import("../../../agent-sdk-types.js").AgentSlashCommand[]>;
63
+ describePersistence(): AgentPersistenceHandle;
64
+ run(prompt: AgentPromptInput, options?: AgentRunOptions): Promise<import("../../../agent-sdk-types.js").AgentRunResult>;
65
+ startTurn(prompt: AgentPromptInput, options?: AgentRunOptions): Promise<{
66
+ turnId: `${string}-${string}-${string}-${string}-${string}`;
67
+ }>;
68
+ steerActiveTurn(prompt: AgentPromptInput, options: SteerActiveTurnOptions): Promise<SteerResult>;
69
+ interrupt(): Promise<void>;
70
+ revertBoth(input: {
71
+ messageId: string;
72
+ }): Promise<void>;
73
+ getPendingPermissions(): import("../../../agent-sdk-types.js").AgentPermissionRequest[];
74
+ respondToPermission(requestId: string, response: AgentPermissionResponse): Promise<void>;
75
+ private reconcileSnapshot;
76
+ private reconcile;
77
+ private drainReconciliation;
78
+ private reconcileConnection;
79
+ private scheduleReconcile;
80
+ private observeOwnEvent;
81
+ private consume;
82
+ close(): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=session.d.ts.map