@a5c-ai/agent-mux-adapters 0.2.0 → 0.4.0

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 (115) hide show
  1. package/dist/amp-adapter.d.ts +31 -0
  2. package/dist/amp-adapter.d.ts.map +1 -0
  3. package/dist/amp-adapter.js +336 -0
  4. package/dist/amp-adapter.js.map +1 -0
  5. package/dist/auth-config.d.ts +36 -5
  6. package/dist/auth-config.d.ts.map +1 -1
  7. package/dist/auth-config.js +127 -12
  8. package/dist/auth-config.js.map +1 -1
  9. package/dist/base-adapter-helpers.d.ts +8 -0
  10. package/dist/base-adapter-helpers.d.ts.map +1 -0
  11. package/dist/base-adapter-helpers.js +68 -0
  12. package/dist/base-adapter-helpers.js.map +1 -0
  13. package/dist/base-adapter.d.ts +14 -9
  14. package/dist/base-adapter.d.ts.map +1 -1
  15. package/dist/base-adapter.js +23 -66
  16. package/dist/base-adapter.js.map +1 -1
  17. package/dist/claude-adapter.d.ts.map +1 -1
  18. package/dist/claude-adapter.js +5 -2
  19. package/dist/claude-adapter.js.map +1 -1
  20. package/dist/claude-agent-sdk-adapter.d.ts +53 -0
  21. package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
  22. package/dist/claude-agent-sdk-adapter.js +607 -0
  23. package/dist/claude-agent-sdk-adapter.js.map +1 -0
  24. package/dist/codex-adapter.d.ts.map +1 -1
  25. package/dist/codex-adapter.js +100 -12
  26. package/dist/codex-adapter.js.map +1 -1
  27. package/dist/codex-sdk-adapter.d.ts +32 -0
  28. package/dist/codex-sdk-adapter.d.ts.map +1 -0
  29. package/dist/codex-sdk-adapter.js +384 -0
  30. package/dist/codex-sdk-adapter.js.map +1 -0
  31. package/dist/codex-sdk-mocks.d.ts +51 -0
  32. package/dist/codex-sdk-mocks.d.ts.map +1 -0
  33. package/dist/codex-sdk-mocks.js +97 -0
  34. package/dist/codex-sdk-mocks.js.map +1 -0
  35. package/dist/codex-websocket-adapter.d.ts +41 -0
  36. package/dist/codex-websocket-adapter.d.ts.map +1 -0
  37. package/dist/codex-websocket-adapter.js +289 -0
  38. package/dist/codex-websocket-adapter.js.map +1 -0
  39. package/dist/codex-websocket-connection.d.ts +58 -0
  40. package/dist/codex-websocket-connection.d.ts.map +1 -0
  41. package/dist/codex-websocket-connection.js +244 -0
  42. package/dist/codex-websocket-connection.js.map +1 -0
  43. package/dist/copilot-adapter.d.ts.map +1 -1
  44. package/dist/copilot-adapter.js +7 -3
  45. package/dist/copilot-adapter.js.map +1 -1
  46. package/dist/cursor-adapter.d.ts.map +1 -1
  47. package/dist/cursor-adapter.js +11 -4
  48. package/dist/cursor-adapter.js.map +1 -1
  49. package/dist/droid-adapter.d.ts +30 -0
  50. package/dist/droid-adapter.d.ts.map +1 -0
  51. package/dist/droid-adapter.js +377 -0
  52. package/dist/droid-adapter.js.map +1 -0
  53. package/dist/gemini-adapter.d.ts.map +1 -1
  54. package/dist/gemini-adapter.js +6 -3
  55. package/dist/gemini-adapter.js.map +1 -1
  56. package/dist/hermes-adapter.d.ts.map +1 -1
  57. package/dist/hermes-adapter.js +6 -2
  58. package/dist/hermes-adapter.js.map +1 -1
  59. package/dist/index.d.ts +10 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +20 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/mocks/index.d.ts +60 -0
  64. package/dist/mocks/index.d.ts.map +1 -0
  65. package/dist/mocks/index.js +203 -0
  66. package/dist/mocks/index.js.map +1 -0
  67. package/dist/mocks/mock-types.d.ts +260 -0
  68. package/dist/mocks/mock-types.d.ts.map +1 -0
  69. package/dist/mocks/mock-types.js +12 -0
  70. package/dist/mocks/mock-types.js.map +1 -0
  71. package/dist/mocks/programmatic-mocks.d.ts +50 -0
  72. package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
  73. package/dist/mocks/programmatic-mocks.js +330 -0
  74. package/dist/mocks/programmatic-mocks.js.map +1 -0
  75. package/dist/mocks/remote-mocks.d.ts +52 -0
  76. package/dist/mocks/remote-mocks.d.ts.map +1 -0
  77. package/dist/mocks/remote-mocks.js +436 -0
  78. package/dist/mocks/remote-mocks.js.map +1 -0
  79. package/dist/omp-adapter.d.ts.map +1 -1
  80. package/dist/omp-adapter.js +6 -3
  81. package/dist/omp-adapter.js.map +1 -1
  82. package/dist/openclaw-adapter.d.ts.map +1 -1
  83. package/dist/openclaw-adapter.js +6 -3
  84. package/dist/openclaw-adapter.js.map +1 -1
  85. package/dist/opencode-adapter.d.ts +2 -2
  86. package/dist/opencode-adapter.d.ts.map +1 -1
  87. package/dist/opencode-adapter.js +173 -61
  88. package/dist/opencode-adapter.js.map +1 -1
  89. package/dist/opencode-http-adapter.d.ts +41 -0
  90. package/dist/opencode-http-adapter.d.ts.map +1 -0
  91. package/dist/opencode-http-adapter.js +370 -0
  92. package/dist/opencode-http-adapter.js.map +1 -0
  93. package/dist/opencode-http-connection.d.ts +33 -0
  94. package/dist/opencode-http-connection.d.ts.map +1 -0
  95. package/dist/opencode-http-connection.js +198 -0
  96. package/dist/opencode-http-connection.js.map +1 -0
  97. package/dist/pi-adapter.d.ts.map +1 -1
  98. package/dist/pi-adapter.js +5 -2
  99. package/dist/pi-adapter.js.map +1 -1
  100. package/dist/pi-sdk-adapter.d.ts +46 -0
  101. package/dist/pi-sdk-adapter.d.ts.map +1 -0
  102. package/dist/pi-sdk-adapter.js +549 -0
  103. package/dist/pi-sdk-adapter.js.map +1 -0
  104. package/dist/programmatic-adapter-base.d.ts +88 -0
  105. package/dist/programmatic-adapter-base.d.ts.map +1 -0
  106. package/dist/programmatic-adapter-base.js +169 -0
  107. package/dist/programmatic-adapter-base.js.map +1 -0
  108. package/dist/qwen-adapter.d.ts.map +1 -1
  109. package/dist/qwen-adapter.js +5 -2
  110. package/dist/qwen-adapter.js.map +1 -1
  111. package/dist/remote-adapter-base.d.ts +85 -0
  112. package/dist/remote-adapter-base.d.ts.map +1 -0
  113. package/dist/remote-adapter-base.js +102 -0
  114. package/dist/remote-adapter-base.js.map +1 -0
  115. package/package.json +2 -2
@@ -0,0 +1,370 @@
1
+ /**
2
+ * OpenCodeHttpAdapter — HTTP server-based OpenCode integration.
3
+ *
4
+ * Uses 'opencode serve' + REST API for full OpenCode capabilities including
5
+ * real-time streaming via Server-Sent Events (SSE).
6
+ */
7
+ import * as os from 'node:os';
8
+ import * as path from 'node:path';
9
+ import { spawn } from 'node:child_process';
10
+ import { BaseRemoteAdapter } from './remote-adapter-base.js';
11
+ import { readAuthConfigIdentity } from './auth-config.js';
12
+ import { parseJsonlSessionFile, listJsonlFiles } from './session-fs.js';
13
+ import { mcpListPlugins, mcpInstallPlugin, mcpUninstallPlugin } from './mcp-plugins.js';
14
+ import { OpenCodeHttpConnection } from './opencode-http-connection.js';
15
+ /**
16
+ * HTTP-based OpenCode adapter using server mode for full capabilities.
17
+ */
18
+ export class OpenCodeHttpAdapter extends BaseRemoteAdapter {
19
+ agent = 'opencode-http';
20
+ displayName = 'OpenCode (HTTP)';
21
+ connectionType = 'http';
22
+ minVersion = '0.1.0';
23
+ hostEnvSignals = ['OPENCODE_SESSION_ID', 'OPENCODE_CONFIG'];
24
+ capabilities = {
25
+ agent: 'opencode-http',
26
+ canResume: true,
27
+ canFork: true,
28
+ supportsMultiTurn: true,
29
+ sessionPersistence: 'file',
30
+ supportsTextStreaming: true,
31
+ supportsToolCallStreaming: true,
32
+ supportsThinkingStreaming: false,
33
+ supportsNativeTools: true,
34
+ supportsMCP: true,
35
+ supportsParallelToolCalls: true,
36
+ requiresToolApproval: true,
37
+ approvalModes: ['yolo', 'prompt'],
38
+ supportsThinking: false,
39
+ thinkingEffortLevels: [],
40
+ supportsThinkingBudgetTokens: false,
41
+ supportsJsonMode: true,
42
+ supportsStructuredOutput: true,
43
+ supportsSkills: true,
44
+ supportsAgentsMd: true,
45
+ skillsFormat: 'file',
46
+ supportsSubagentDispatch: true,
47
+ supportsParallelExecution: true,
48
+ maxParallelTasks: 5,
49
+ supportsInteractiveMode: true,
50
+ supportsStdinInjection: true,
51
+ supportsImageInput: true,
52
+ supportsImageOutput: false,
53
+ supportsFileAttachments: true,
54
+ supportsPlugins: true,
55
+ pluginFormats: ['mcp-server'],
56
+ pluginRegistries: [{ name: 'mcp', url: 'https://modelcontextprotocol.io', searchable: false }],
57
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
58
+ requiresGitRepo: false,
59
+ requiresPty: false,
60
+ authMethods: [
61
+ { type: 'api_key', name: 'API Key', description: 'Provider API keys via opencode auth' },
62
+ { type: 'oauth', name: 'OAuth', description: 'Provider OAuth via opencode auth' },
63
+ ],
64
+ authFiles: ['.config/opencode/config.json', '.opencode/config.json'],
65
+ installMethods: [
66
+ { platform: 'all', type: 'npm', command: 'npm install -g @anomalyco/opencode' },
67
+ { platform: 'darwin', type: 'brew', command: 'brew install --cask opencode' },
68
+ { platform: 'all', type: 'curl', command: 'curl -fsSL https://opencode.ai/install | bash' },
69
+ ],
70
+ };
71
+ models = [
72
+ {
73
+ agent: 'opencode-http',
74
+ modelId: 'claude-3-5-sonnet-20241022',
75
+ modelAlias: 'claude-sonnet',
76
+ displayName: 'Claude 3.5 Sonnet',
77
+ deprecated: false,
78
+ contextWindow: 200000,
79
+ maxOutputTokens: 8192,
80
+ inputPricePerMillion: 3,
81
+ outputPricePerMillion: 15,
82
+ supportsThinking: false,
83
+ thinkingEffortLevels: [],
84
+ supportsToolCalling: true,
85
+ supportsParallelToolCalls: true,
86
+ supportsToolCallStreaming: true,
87
+ supportsJsonMode: true,
88
+ supportsStructuredOutput: true,
89
+ supportsTextStreaming: true,
90
+ supportsThinkingStreaming: false,
91
+ supportsImageInput: true,
92
+ supportsImageOutput: false,
93
+ supportsFileInput: true,
94
+ cliArgKey: '--model',
95
+ cliArgValue: 'claude-3-5-sonnet-20241022',
96
+ lastUpdated: '2024-10-22',
97
+ source: 'bundled',
98
+ },
99
+ {
100
+ agent: 'opencode-http',
101
+ modelId: 'gpt-4o',
102
+ modelAlias: 'gpt-4o',
103
+ displayName: 'GPT-4o',
104
+ deprecated: false,
105
+ contextWindow: 128000,
106
+ maxOutputTokens: 4096,
107
+ inputPricePerMillion: 2.5,
108
+ outputPricePerMillion: 10,
109
+ supportsThinking: false,
110
+ thinkingEffortLevels: [],
111
+ supportsToolCalling: true,
112
+ supportsParallelToolCalls: true,
113
+ supportsToolCallStreaming: true,
114
+ supportsJsonMode: true,
115
+ supportsStructuredOutput: true,
116
+ supportsTextStreaming: true,
117
+ supportsThinkingStreaming: false,
118
+ supportsImageInput: true,
119
+ supportsImageOutput: false,
120
+ supportsFileInput: true,
121
+ cliArgKey: '--model',
122
+ cliArgValue: 'gpt-4o',
123
+ lastUpdated: '2024-05-13',
124
+ source: 'bundled',
125
+ },
126
+ ];
127
+ defaultModelId = 'claude-3-5-sonnet-20241022';
128
+ configSchema = {
129
+ agent: 'opencode-http',
130
+ version: 1,
131
+ fields: [],
132
+ configFilePaths: [path.join(os.homedir(), '.config', 'opencode', 'config.json')],
133
+ configFormat: 'json',
134
+ supportsProjectConfig: true,
135
+ };
136
+ async connect(options) {
137
+ // Ensure OpenCode server is running
138
+ const serverInfo = await this.ensureServer();
139
+ // Create HTTP connection to server
140
+ const connection = new OpenCodeHttpConnection({
141
+ connectionId: this.generateConnectionId(),
142
+ baseUrl: serverInfo.endpoint,
143
+ runOptions: options,
144
+ adapter: this,
145
+ });
146
+ // Register for cleanup tracking
147
+ this.registerConnection(connection);
148
+ return connection;
149
+ }
150
+ async disconnect(connection) {
151
+ await connection.close();
152
+ this.unregisterConnection(connection.connectionId);
153
+ }
154
+ async startServer(options) {
155
+ const port = options?.port || await this.findAvailablePort(3000);
156
+ const host = options?.host || 'localhost';
157
+ const args = [
158
+ 'serve',
159
+ '--port', String(port),
160
+ '--host', host,
161
+ ];
162
+ // Add additional args if provided
163
+ if (options?.args) {
164
+ args.push(...options.args);
165
+ }
166
+ const serverProcess = spawn('opencode', args, {
167
+ env: { ...process.env, ...options?.env },
168
+ stdio: ['ignore', 'pipe', 'pipe'],
169
+ });
170
+ const serverId = this.generateServerId();
171
+ const endpoint = `http://${host}:${port}`;
172
+ const serverInfo = {
173
+ serverId,
174
+ serverType: 'opencode-http',
175
+ endpoint,
176
+ pid: serverProcess.pid,
177
+ port,
178
+ startedAt: new Date(),
179
+ };
180
+ // Wait for server to be ready
181
+ await this.waitForServerReady(endpoint, options?.timeout || 30000);
182
+ // Register server for tracking
183
+ this.registerServer(serverInfo);
184
+ return serverInfo;
185
+ }
186
+ async stopServer(serverInfo) {
187
+ if (serverInfo.pid) {
188
+ try {
189
+ process.kill(serverInfo.pid, 'SIGTERM');
190
+ // Give it time to shut down gracefully
191
+ await new Promise(resolve => setTimeout(resolve, 2000));
192
+ }
193
+ catch (error) {
194
+ // Process might already be dead
195
+ }
196
+ }
197
+ this.unregisterServer(serverInfo.serverId);
198
+ }
199
+ async healthCheck(serverInfo) {
200
+ try {
201
+ const response = await fetch(`${serverInfo.endpoint}/health`, {
202
+ method: 'GET',
203
+ signal: AbortSignal.timeout(5000),
204
+ });
205
+ if (response.ok) {
206
+ return {
207
+ status: 'healthy',
208
+ uptime: Date.now() - serverInfo.startedAt.getTime(),
209
+ lastCheck: new Date(),
210
+ };
211
+ }
212
+ else {
213
+ return {
214
+ status: 'unhealthy',
215
+ lastCheck: new Date(),
216
+ details: `HTTP ${response.status}: ${response.statusText}`,
217
+ };
218
+ }
219
+ }
220
+ catch (error) {
221
+ return {
222
+ status: 'unhealthy',
223
+ lastCheck: new Date(),
224
+ details: error instanceof Error ? error.message : 'Unknown error',
225
+ };
226
+ }
227
+ }
228
+ async detectAuth() {
229
+ // Check for provider API keys in environment
230
+ const anthropicKey = process.env['ANTHROPIC_API_KEY'];
231
+ const openaiKey = process.env['OPENAI_API_KEY'];
232
+ const googleKey = process.env['GOOGLE_API_KEY'];
233
+ if (anthropicKey || openaiKey || googleKey) {
234
+ const provider = anthropicKey ? 'anthropic' : openaiKey ? 'openai' : 'google';
235
+ const key = anthropicKey || openaiKey || googleKey;
236
+ return {
237
+ status: 'authenticated',
238
+ method: 'api_key',
239
+ identity: `${provider}:...${key.slice(-4)}`,
240
+ };
241
+ }
242
+ // Check OpenCode configuration files
243
+ const home = os.homedir();
244
+ const found = await readAuthConfigIdentity([
245
+ path.join(home, '.config', 'opencode', 'config.json'),
246
+ path.join(home, '.opencode', 'config.json'),
247
+ ]);
248
+ if (found) {
249
+ return { status: 'authenticated', method: found.method, identity: found.identity };
250
+ }
251
+ return { status: 'unauthenticated' };
252
+ }
253
+ getAuthGuidance() {
254
+ return {
255
+ agent: 'opencode-http',
256
+ providerName: 'OpenCode (HTTP)',
257
+ steps: [
258
+ { step: 1, description: 'Configure authentication using OpenCode CLI', command: 'opencode auth' },
259
+ { step: 2, description: 'Alternatively, set provider API keys directly' },
260
+ { step: 3, description: 'For Anthropic: export ANTHROPIC_API_KEY=sk-ant-...', command: 'export ANTHROPIC_API_KEY=sk-ant-...' },
261
+ { step: 4, description: 'For OpenAI: export OPENAI_API_KEY=sk-...', command: 'export OPENAI_API_KEY=sk-...' },
262
+ { step: 5, description: 'For Google: export GOOGLE_API_KEY=...', command: 'export GOOGLE_API_KEY=...' },
263
+ ],
264
+ envVars: [
265
+ { name: 'ANTHROPIC_API_KEY', description: 'Anthropic API key', required: false },
266
+ { name: 'OPENAI_API_KEY', description: 'OpenAI API key', required: false },
267
+ { name: 'GOOGLE_API_KEY', description: 'Google API key', required: false },
268
+ ],
269
+ documentationUrls: ['https://github.com/anomalyco/opencode'],
270
+ loginCommand: 'opencode auth',
271
+ verifyCommand: 'opencode --version',
272
+ };
273
+ }
274
+ sessionDir(_cwd) {
275
+ return path.join(os.homedir(), '.config', 'opencode', 'sessions');
276
+ }
277
+ async parseSessionFile(filePath) {
278
+ const parsed = await parseJsonlSessionFile(filePath, 'opencode-http');
279
+ return { ...parsed, agent: 'opencode-http' };
280
+ }
281
+ async listSessionFiles(_cwd) {
282
+ return listJsonlFiles(this.sessionDir());
283
+ }
284
+ async readConfig(_cwd) {
285
+ const filePath = this.configSchema.configFilePaths?.[0];
286
+ if (!filePath)
287
+ return { agent: 'opencode-http', source: 'global' };
288
+ try {
289
+ const fs = await import('node:fs/promises');
290
+ const data = await fs.readFile(filePath, 'utf8');
291
+ const config = JSON.parse(data);
292
+ return { agent: 'opencode-http', source: 'global', filePaths: [filePath], ...config };
293
+ }
294
+ catch {
295
+ return { agent: 'opencode-http', source: 'global' };
296
+ }
297
+ }
298
+ async writeConfig(config, _cwd) {
299
+ const filePath = this.configSchema.configFilePaths?.[0];
300
+ if (!filePath)
301
+ return;
302
+ const fs = await import('node:fs/promises');
303
+ const path_module = await import('node:path');
304
+ // Ensure directory exists
305
+ await fs.mkdir(path_module.dirname(filePath), { recursive: true });
306
+ // Read existing config
307
+ let existing = {};
308
+ try {
309
+ const data = await fs.readFile(filePath, 'utf8');
310
+ existing = JSON.parse(data);
311
+ }
312
+ catch {
313
+ // File doesn't exist or is invalid, start with empty config
314
+ }
315
+ // Remove agent-mux specific fields before writing
316
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
317
+ void _a;
318
+ void _s;
319
+ void _fp;
320
+ // Merge and write
321
+ const merged = { ...existing, ...rest };
322
+ await fs.writeFile(filePath, JSON.stringify(merged, null, 2), 'utf8');
323
+ }
324
+ // ── Plugin Management ─────────────────────────────────────────────
325
+ pluginsPath() {
326
+ return this.configSchema.configFilePaths?.[0] ?? '';
327
+ }
328
+ async listPlugins() {
329
+ return mcpListPlugins(this.pluginsPath());
330
+ }
331
+ async installPlugin(pluginId, options) {
332
+ return mcpInstallPlugin(this.pluginsPath(), pluginId, options);
333
+ }
334
+ async uninstallPlugin(pluginId) {
335
+ return mcpUninstallPlugin(this.pluginsPath(), pluginId);
336
+ }
337
+ // ── Private implementation ────────────────────────────────────────
338
+ async ensureServer() {
339
+ // Check if we already have a running server
340
+ for (const server of this.managedServers.values()) {
341
+ const health = await this.healthCheck(server);
342
+ if (health.status === 'healthy') {
343
+ return server;
344
+ }
345
+ }
346
+ // Need to start a new server
347
+ return this.startServer();
348
+ }
349
+ async waitForServerReady(endpoint, timeoutMs) {
350
+ const startTime = Date.now();
351
+ while (Date.now() - startTime < timeoutMs) {
352
+ try {
353
+ const response = await fetch(`${endpoint}/health`, {
354
+ method: 'GET',
355
+ signal: AbortSignal.timeout(1000),
356
+ });
357
+ if (response.ok) {
358
+ return; // Server is ready
359
+ }
360
+ }
361
+ catch {
362
+ // Server not ready yet, continue waiting
363
+ }
364
+ // Wait a bit before retrying
365
+ await new Promise(resolve => setTimeout(resolve, 200));
366
+ }
367
+ throw new Error(`OpenCode server did not become ready within ${timeoutMs}ms`);
368
+ }
369
+ }
370
+ //# sourceMappingURL=opencode-http-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-http-adapter.js","sourceRoot":"","sources":["../src/opencode-http-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * HTTP connection implementation for OpenCodeHttpAdapter.
3
+ * Extracted to keep opencode-http-adapter.ts under the 400-line cap.
4
+ */
5
+ import type { AgentEvent, HttpConnection, RunOptions } from '@a5c-ai/agent-mux-core';
6
+ import type { OpenCodeHttpAdapter } from './opencode-http-adapter.js';
7
+ export interface OpenCodeHttpConnectionOptions {
8
+ connectionId: string;
9
+ baseUrl: string;
10
+ runOptions: RunOptions;
11
+ adapter: OpenCodeHttpAdapter;
12
+ }
13
+ export declare class OpenCodeHttpConnection implements HttpConnection {
14
+ readonly connectionType: "http";
15
+ readonly connectionId: string;
16
+ readonly baseUrl: string;
17
+ readonly endpoint: string;
18
+ private options;
19
+ private adapter;
20
+ private closed;
21
+ constructor(options: OpenCodeHttpConnectionOptions);
22
+ send(data: unknown): Promise<void>;
23
+ get(path: string, params?: Record<string, unknown>): Promise<unknown>;
24
+ post(path: string, data?: unknown): Promise<unknown>;
25
+ put(path: string, data?: unknown): Promise<unknown>;
26
+ delete(path: string): Promise<unknown>;
27
+ stream(path: string, data?: unknown): AsyncIterableIterator<AgentEvent>;
28
+ receive(): AsyncIterableIterator<AgentEvent>;
29
+ close(): Promise<void>;
30
+ private parseServerSentEvent;
31
+ private extractCostFromUsage;
32
+ }
33
+ //# sourceMappingURL=opencode-http-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-http-connection.d.ts","sourceRoot":"","sources":["../src/opencode-http-connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EAEV,cAAc,EACd,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAED,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,QAAQ,CAAC,cAAc,EAAG,MAAM,CAAU;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,6BAA6B;IAQ5C,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IASrE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC;IAiCvE,OAAO,IAAI,qBAAqB,CAAC,UAAU,CAAC;IAW7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,oBAAoB;CAY7B"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * HTTP connection implementation for OpenCodeHttpAdapter.
3
+ * Extracted to keep opencode-http-adapter.ts under the 400-line cap.
4
+ */
5
+ export class OpenCodeHttpConnection {
6
+ connectionType = 'http';
7
+ connectionId;
8
+ baseUrl;
9
+ endpoint;
10
+ options;
11
+ adapter;
12
+ closed = false;
13
+ constructor(options) {
14
+ this.connectionId = options.connectionId;
15
+ this.baseUrl = options.baseUrl;
16
+ this.endpoint = options.baseUrl;
17
+ this.options = options.runOptions;
18
+ this.adapter = options.adapter;
19
+ }
20
+ async send(data) {
21
+ if (this.closed)
22
+ throw new Error('Connection is closed');
23
+ const response = await fetch(`${this.baseUrl}/api/send`, {
24
+ method: 'POST',
25
+ headers: { 'Content-Type': 'application/json' },
26
+ body: JSON.stringify(data),
27
+ });
28
+ if (!response.ok)
29
+ throw new Error(`Send failed: HTTP ${response.status}`);
30
+ }
31
+ async get(path, params) {
32
+ if (this.closed)
33
+ throw new Error('Connection is closed');
34
+ const url = new URL(path, this.baseUrl);
35
+ if (params)
36
+ for (const [k, v] of Object.entries(params))
37
+ url.searchParams.set(k, String(v));
38
+ const response = await fetch(url, { method: 'GET' });
39
+ if (!response.ok)
40
+ throw new Error(`GET ${path} failed: HTTP ${response.status}`);
41
+ return response.json();
42
+ }
43
+ async post(path, data) {
44
+ if (this.closed)
45
+ throw new Error('Connection is closed');
46
+ const response = await fetch(`${this.baseUrl}${path}`, {
47
+ method: 'POST',
48
+ headers: { 'Content-Type': 'application/json' },
49
+ body: data ? JSON.stringify(data) : undefined,
50
+ });
51
+ if (!response.ok)
52
+ throw new Error(`POST ${path} failed: HTTP ${response.status}`);
53
+ return response.json();
54
+ }
55
+ async put(path, data) {
56
+ if (this.closed)
57
+ throw new Error('Connection is closed');
58
+ const response = await fetch(`${this.baseUrl}${path}`, {
59
+ method: 'PUT',
60
+ headers: { 'Content-Type': 'application/json' },
61
+ body: data ? JSON.stringify(data) : undefined,
62
+ });
63
+ if (!response.ok)
64
+ throw new Error(`PUT ${path} failed: HTTP ${response.status}`);
65
+ return response.json();
66
+ }
67
+ async delete(path) {
68
+ if (this.closed)
69
+ throw new Error('Connection is closed');
70
+ const response = await fetch(`${this.baseUrl}${path}`, { method: 'DELETE' });
71
+ if (!response.ok)
72
+ throw new Error(`DELETE ${path} failed: HTTP ${response.status}`);
73
+ return response.json();
74
+ }
75
+ async *stream(path, data) {
76
+ if (this.closed)
77
+ throw new Error('Connection is closed');
78
+ const response = await fetch(`${this.baseUrl}${path}`, {
79
+ method: 'POST',
80
+ headers: { 'Content-Type': 'application/json', Accept: 'text/event-stream' },
81
+ body: data ? JSON.stringify(data) : undefined,
82
+ });
83
+ if (!response.ok)
84
+ throw new Error(`Stream ${path} failed: HTTP ${response.status}`);
85
+ if (!response.body)
86
+ throw new Error('No response body for streaming');
87
+ const reader = response.body.getReader();
88
+ const decoder = new TextDecoder();
89
+ try {
90
+ while (true) {
91
+ const { done, value } = await reader.read();
92
+ if (done)
93
+ break;
94
+ const chunk = decoder.decode(value, { stream: true });
95
+ for (const line of chunk.split('\n')) {
96
+ if (line.trim() && line.startsWith('data: ')) {
97
+ try {
98
+ const parsed = JSON.parse(line.slice(6));
99
+ const event = this.parseServerSentEvent(parsed);
100
+ if (event)
101
+ yield event;
102
+ }
103
+ catch (error) {
104
+ console.warn('Failed to parse SSE event:', error);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ finally {
111
+ reader.releaseLock();
112
+ }
113
+ }
114
+ async *receive() {
115
+ const requestData = {
116
+ prompt: this.options.prompt,
117
+ model: this.options.model || this.adapter.defaultModelId,
118
+ sessionId: this.options.sessionId,
119
+ maxTurns: this.options.maxTurns,
120
+ systemPrompt: this.options.systemPrompt,
121
+ };
122
+ yield* this.stream('/api/chat/stream', requestData);
123
+ }
124
+ async close() {
125
+ this.closed = true;
126
+ }
127
+ parseServerSentEvent(data) {
128
+ const ts = Date.now();
129
+ const runId = this.connectionId;
130
+ const base = { runId, agent: this.adapter.agent, timestamp: ts };
131
+ const type = data.type;
132
+ const event = data.event;
133
+ if (event === 'message' || type === 'message') {
134
+ const content = (data.content ?? data.data ?? '');
135
+ if (content) {
136
+ return { ...base, type: 'text_delta', delta: content, accumulated: content };
137
+ }
138
+ }
139
+ if (event === 'tool_start' || type === 'tool_start') {
140
+ return {
141
+ ...base,
142
+ type: 'tool_call_start',
143
+ toolCallId: (data.id ?? data.tool_id ?? ''),
144
+ toolName: (data.name ?? data.tool_name ?? ''),
145
+ inputAccumulated: JSON.stringify(data.input ?? data.arguments ?? {}),
146
+ };
147
+ }
148
+ if (event === 'tool_result' || type === 'tool_result') {
149
+ return {
150
+ ...base,
151
+ type: 'tool_result',
152
+ toolCallId: (data.id ?? data.tool_id ?? ''),
153
+ toolName: (data.name ?? data.tool_name ?? ''),
154
+ output: data.result ?? data.output ?? '',
155
+ durationMs: (data.duration ?? 0),
156
+ };
157
+ }
158
+ if (event === 'session_end' || type === 'session_end') {
159
+ const events = [];
160
+ const finalMessage = (data.final_message ?? data.message ?? '');
161
+ if (finalMessage)
162
+ events.push({ ...base, type: 'message_stop', text: finalMessage });
163
+ const usage = data.usage;
164
+ if (usage) {
165
+ const cost = this.extractCostFromUsage(usage);
166
+ if (cost)
167
+ events.push({ ...base, type: 'cost', cost });
168
+ }
169
+ return events.length > 0 ? (events.length === 1 ? events[0] : events) : null;
170
+ }
171
+ if (event === 'error' || type === 'error') {
172
+ return {
173
+ ...base,
174
+ type: 'error',
175
+ code: 'INTERNAL',
176
+ message: (data.message ?? data.error ?? 'Unknown error'),
177
+ recoverable: (data.recoverable ?? false),
178
+ };
179
+ }
180
+ return null;
181
+ }
182
+ extractCostFromUsage(usage) {
183
+ const totalUsd = Number(usage.totalUsd || usage.total_usd || usage.cost || 0);
184
+ const inputTokens = Number(usage.inputTokens || usage.input_tokens || usage.prompt_tokens || 0);
185
+ const outputTokens = Number(usage.outputTokens || usage.output_tokens || usage.completion_tokens || 0);
186
+ const cacheCreationTokens = usage.cacheCreationTokens || usage.cache_creation_tokens;
187
+ const cacheReadTokens = usage.cacheReadTokens || usage.cache_read_tokens;
188
+ if (totalUsd === 0 && inputTokens === 0 && outputTokens === 0)
189
+ return null;
190
+ const cost = { totalUsd, inputTokens, outputTokens };
191
+ if (cacheCreationTokens != null)
192
+ cost.cacheCreationTokens = Number(cacheCreationTokens);
193
+ if (cacheReadTokens != null)
194
+ cost.cacheReadTokens = Number(cacheReadTokens);
195
+ return cost;
196
+ }
197
+ }
198
+ //# sourceMappingURL=opencode-http-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-http-connection.js","sourceRoot":"","sources":["../src/opencode-http-connection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pi-adapter.d.ts","sourceRoot":"","sources":["../src/pi-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,qBAAa,SAAU,SAAQ,gBAAgB;IAC7C,QAAQ,CAAC,KAAK,EAAG,IAAI,CAAU;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,UAAU,QAAQ;IAC3B,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,cAAc,0CAA2C;IAElE,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA0CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAwBlC;IAEF,QAAQ,CAAC,cAAc,aAAa;IAEpC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAOtC;IAEF,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAqB9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAwC3E,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAWtC,eAAe,IAAI,iBAAiB;IAgBpC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO/C,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ9E"}
1
+ {"version":3,"file":"pi-adapter.d.ts","sourceRoot":"","sources":["../src/pi-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,qBAAa,SAAU,SAAQ,gBAAgB;IAC7C,QAAQ,CAAC,KAAK,EAAG,IAAI,CAAU;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,UAAU,QAAQ;IAC3B,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,cAAc,0CAA2C;IAElE,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA0CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAwBlC;IAEF,QAAQ,CAAC,cAAc,aAAa;IAEpC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAOtC;IAEF,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAwB9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAwC3E,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAWtC,eAAe,IAAI,iBAAiB;IAgBpC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO/C,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ9E"}