@a5c-ai/agent-mux-adapters 0.3.0 → 0.4.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 (164) hide show
  1. package/README.md +3 -1
  2. package/dist/agent-mux-remote-adapter.d.ts.map +1 -1
  3. package/dist/agent-mux-remote-adapter.js +4 -0
  4. package/dist/agent-mux-remote-adapter.js.map +1 -1
  5. package/dist/amp-adapter.d.ts +32 -0
  6. package/dist/amp-adapter.d.ts.map +1 -0
  7. package/dist/amp-adapter.js +412 -0
  8. package/dist/amp-adapter.js.map +1 -0
  9. package/dist/babysitter-adapter.d.ts +29 -0
  10. package/dist/babysitter-adapter.d.ts.map +1 -0
  11. package/dist/babysitter-adapter.js +338 -0
  12. package/dist/babysitter-adapter.js.map +1 -0
  13. package/dist/base-adapter-helpers.d.ts +8 -0
  14. package/dist/base-adapter-helpers.d.ts.map +1 -0
  15. package/dist/base-adapter-helpers.js +68 -0
  16. package/dist/base-adapter-helpers.js.map +1 -0
  17. package/dist/base-adapter.d.ts +21 -9
  18. package/dist/base-adapter.d.ts.map +1 -1
  19. package/dist/base-adapter.js +136 -67
  20. package/dist/base-adapter.js.map +1 -1
  21. package/dist/claude-adapter.d.ts +14 -3
  22. package/dist/claude-adapter.d.ts.map +1 -1
  23. package/dist/claude-adapter.js +224 -24
  24. package/dist/claude-adapter.js.map +1 -1
  25. package/dist/claude-agent-sdk-adapter.d.ts +40 -0
  26. package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
  27. package/dist/claude-agent-sdk-adapter.js +839 -0
  28. package/dist/claude-agent-sdk-adapter.js.map +1 -0
  29. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts +12 -0
  30. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts.map +1 -0
  31. package/dist/claude-code/runtime-hooks/ephemeral-config.js +143 -0
  32. package/dist/claude-code/runtime-hooks/ephemeral-config.js.map +1 -0
  33. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts +10 -0
  34. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts.map +1 -0
  35. package/dist/claude-code/runtime-hooks/hook-socket-server.js +79 -0
  36. package/dist/claude-code/runtime-hooks/hook-socket-server.js.map +1 -0
  37. package/dist/claude-code/runtime-hooks/lifecycle.d.ts +3 -0
  38. package/dist/claude-code/runtime-hooks/lifecycle.d.ts.map +1 -0
  39. package/dist/claude-code/runtime-hooks/lifecycle.js +24 -0
  40. package/dist/claude-code/runtime-hooks/lifecycle.js.map +1 -0
  41. package/dist/claude-remote-control-adapter.d.ts +43 -0
  42. package/dist/claude-remote-control-adapter.d.ts.map +1 -0
  43. package/dist/claude-remote-control-adapter.js +505 -0
  44. package/dist/claude-remote-control-adapter.js.map +1 -0
  45. package/dist/codex-adapter.d.ts.map +1 -1
  46. package/dist/codex-adapter.js +128 -17
  47. package/dist/codex-adapter.js.map +1 -1
  48. package/dist/codex-sdk-adapter.d.ts +32 -0
  49. package/dist/codex-sdk-adapter.d.ts.map +1 -0
  50. package/dist/codex-sdk-adapter.js +388 -0
  51. package/dist/codex-sdk-adapter.js.map +1 -0
  52. package/dist/codex-sdk-mocks.d.ts +51 -0
  53. package/dist/codex-sdk-mocks.d.ts.map +1 -0
  54. package/dist/codex-sdk-mocks.js +97 -0
  55. package/dist/codex-sdk-mocks.js.map +1 -0
  56. package/dist/codex-websocket-adapter.d.ts +34 -0
  57. package/dist/codex-websocket-adapter.d.ts.map +1 -0
  58. package/dist/codex-websocket-adapter.js +398 -0
  59. package/dist/codex-websocket-adapter.js.map +1 -0
  60. package/dist/codex-websocket-connection.d.ts +78 -0
  61. package/dist/codex-websocket-connection.d.ts.map +1 -0
  62. package/dist/codex-websocket-connection.js +733 -0
  63. package/dist/codex-websocket-connection.js.map +1 -0
  64. package/dist/copilot-adapter.d.ts.map +1 -1
  65. package/dist/copilot-adapter.js +11 -3
  66. package/dist/copilot-adapter.js.map +1 -1
  67. package/dist/cursor-adapter.d.ts +3 -1
  68. package/dist/cursor-adapter.d.ts.map +1 -1
  69. package/dist/cursor-adapter.js +10 -3
  70. package/dist/cursor-adapter.js.map +1 -1
  71. package/dist/droid-adapter.d.ts +32 -0
  72. package/dist/droid-adapter.d.ts.map +1 -0
  73. package/dist/droid-adapter.js +378 -0
  74. package/dist/droid-adapter.js.map +1 -0
  75. package/dist/gemini-adapter.d.ts +3 -1
  76. package/dist/gemini-adapter.d.ts.map +1 -1
  77. package/dist/gemini-adapter.js +10 -3
  78. package/dist/gemini-adapter.js.map +1 -1
  79. package/dist/hermes-adapter.d.ts.map +1 -1
  80. package/dist/hermes-adapter.js +10 -2
  81. package/dist/hermes-adapter.js.map +1 -1
  82. package/dist/index.d.ts +13 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +13 -1
  85. package/dist/index.js.map +1 -1
  86. package/dist/mcp-plugins.d.ts +5 -3
  87. package/dist/mcp-plugins.d.ts.map +1 -1
  88. package/dist/mcp-plugins.js +58 -24
  89. package/dist/mcp-plugins.js.map +1 -1
  90. package/dist/omp-adapter.d.ts.map +1 -1
  91. package/dist/omp-adapter.js +10 -3
  92. package/dist/omp-adapter.js.map +1 -1
  93. package/dist/openclaw-adapter.d.ts +3 -1
  94. package/dist/openclaw-adapter.d.ts.map +1 -1
  95. package/dist/openclaw-adapter.js +11 -4
  96. package/dist/openclaw-adapter.js.map +1 -1
  97. package/dist/opencode-adapter.d.ts +5 -3
  98. package/dist/opencode-adapter.d.ts.map +1 -1
  99. package/dist/opencode-adapter.js +179 -63
  100. package/dist/opencode-adapter.js.map +1 -1
  101. package/dist/opencode-http-adapter.d.ts +43 -0
  102. package/dist/opencode-http-adapter.d.ts.map +1 -0
  103. package/dist/opencode-http-adapter.js +374 -0
  104. package/dist/opencode-http-adapter.js.map +1 -0
  105. package/dist/opencode-http-connection.d.ts +33 -0
  106. package/dist/opencode-http-connection.d.ts.map +1 -0
  107. package/dist/opencode-http-connection.js +198 -0
  108. package/dist/opencode-http-connection.js.map +1 -0
  109. package/dist/pi-adapter.d.ts.map +1 -1
  110. package/dist/pi-adapter.js +9 -2
  111. package/dist/pi-adapter.js.map +1 -1
  112. package/dist/pi-sdk-adapter.d.ts +46 -0
  113. package/dist/pi-sdk-adapter.d.ts.map +1 -0
  114. package/dist/pi-sdk-adapter.js +553 -0
  115. package/dist/pi-sdk-adapter.js.map +1 -0
  116. package/dist/programmatic-adapter-base.d.ts +88 -0
  117. package/dist/programmatic-adapter-base.d.ts.map +1 -0
  118. package/dist/programmatic-adapter-base.js +169 -0
  119. package/dist/programmatic-adapter-base.js.map +1 -0
  120. package/dist/provider-translation.d.ts +10 -0
  121. package/dist/provider-translation.d.ts.map +1 -0
  122. package/dist/provider-translation.js +2 -0
  123. package/dist/provider-translation.js.map +1 -0
  124. package/dist/qwen-adapter.d.ts +3 -1
  125. package/dist/qwen-adapter.d.ts.map +1 -1
  126. package/dist/qwen-adapter.js +10 -3
  127. package/dist/qwen-adapter.js.map +1 -1
  128. package/dist/remote-adapter-base.d.ts +85 -0
  129. package/dist/remote-adapter-base.d.ts.map +1 -0
  130. package/dist/remote-adapter-base.js +102 -0
  131. package/dist/remote-adapter-base.js.map +1 -0
  132. package/dist/session-fs.d.ts +15 -5
  133. package/dist/session-fs.d.ts.map +1 -1
  134. package/dist/session-fs.js +249 -0
  135. package/dist/session-fs.js.map +1 -1
  136. package/dist/shared/runtime-hooks-virtual.d.ts +3 -0
  137. package/dist/shared/runtime-hooks-virtual.d.ts.map +1 -0
  138. package/dist/shared/runtime-hooks-virtual.js +13 -0
  139. package/dist/shared/runtime-hooks-virtual.js.map +1 -0
  140. package/dist/translate-for-harness.d.ts +6 -0
  141. package/dist/translate-for-harness.d.ts.map +1 -0
  142. package/dist/translate-for-harness.js +36 -0
  143. package/dist/translate-for-harness.js.map +1 -0
  144. package/dist/translations/claude-translation.d.ts +4 -0
  145. package/dist/translations/claude-translation.d.ts.map +1 -0
  146. package/dist/translations/claude-translation.js +50 -0
  147. package/dist/translations/claude-translation.js.map +1 -0
  148. package/dist/translations/codex-translation.d.ts +4 -0
  149. package/dist/translations/codex-translation.d.ts.map +1 -0
  150. package/dist/translations/codex-translation.js +32 -0
  151. package/dist/translations/codex-translation.js.map +1 -0
  152. package/dist/translations/gemini-translation.d.ts +4 -0
  153. package/dist/translations/gemini-translation.d.ts.map +1 -0
  154. package/dist/translations/gemini-translation.js +20 -0
  155. package/dist/translations/gemini-translation.js.map +1 -0
  156. package/dist/translations/generic-openai-translation.d.ts +4 -0
  157. package/dist/translations/generic-openai-translation.d.ts.map +1 -0
  158. package/dist/translations/generic-openai-translation.js +19 -0
  159. package/dist/translations/generic-openai-translation.js.map +1 -0
  160. package/dist/translations/opencode-translation.d.ts +4 -0
  161. package/dist/translations/opencode-translation.d.ts.map +1 -0
  162. package/dist/translations/opencode-translation.js +51 -0
  163. package/dist/translations/opencode-translation.js.map +1 -0
  164. package/package.json +4 -2
@@ -0,0 +1,374 @@
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 { createVirtualRuntimeHookCapabilities } from './shared/runtime-hooks-virtual.js';
12
+ import { readAuthConfigIdentity } from './auth-config.js';
13
+ import { parseJsonlSessionFile, listJsonlFiles } from './session-fs.js';
14
+ import { mcpListPlugins, mcpInstallPlugin, mcpUninstallPlugin } from './mcp-plugins.js';
15
+ import { OpenCodeHttpConnection } from './opencode-http-connection.js';
16
+ /**
17
+ * HTTP-based OpenCode adapter using server mode for full capabilities.
18
+ */
19
+ export class OpenCodeHttpAdapter extends BaseRemoteAdapter {
20
+ agent = 'opencode-http';
21
+ displayName = 'OpenCode (HTTP)';
22
+ connectionType = 'http';
23
+ minVersion = '0.1.0';
24
+ hostEnvSignals = ['OPENCODE_SESSION_ID', 'OPENCODE_CONFIG'];
25
+ capabilities = {
26
+ agent: 'opencode-http',
27
+ canResume: true,
28
+ canFork: true,
29
+ supportsMultiTurn: true,
30
+ sessionPersistence: 'file',
31
+ supportsTextStreaming: true,
32
+ supportsToolCallStreaming: true,
33
+ supportsThinkingStreaming: false,
34
+ supportsNativeTools: true,
35
+ supportsMCP: true,
36
+ supportsParallelToolCalls: true,
37
+ requiresToolApproval: true,
38
+ approvalModes: ['yolo', 'prompt'],
39
+ runtimeHooks: createVirtualRuntimeHookCapabilities(),
40
+ supportsThinking: false,
41
+ thinkingEffortLevels: [],
42
+ supportsThinkingBudgetTokens: false,
43
+ supportsJsonMode: true,
44
+ supportsStructuredOutput: true,
45
+ structuredSessionTransport: 'restart-per-turn',
46
+ sessionControlPlane: 'external-host',
47
+ supportsSkills: true,
48
+ supportsAgentsMd: true,
49
+ skillsFormat: 'file',
50
+ supportsSubagentDispatch: true,
51
+ supportsParallelExecution: true,
52
+ maxParallelTasks: 5,
53
+ supportsInteractiveMode: true,
54
+ supportsStdinInjection: true,
55
+ supportsImageInput: true,
56
+ supportsImageOutput: false,
57
+ supportsFileAttachments: true,
58
+ supportsPlugins: true,
59
+ pluginFormats: ['mcp-server'],
60
+ pluginRegistries: [{ name: 'mcp', url: 'https://modelcontextprotocol.io', searchable: false }],
61
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
62
+ requiresGitRepo: false,
63
+ requiresPty: false,
64
+ authMethods: [
65
+ { type: 'api_key', name: 'API Key', description: 'Provider API keys via opencode auth' },
66
+ { type: 'oauth', name: 'OAuth', description: 'Provider OAuth via opencode auth' },
67
+ ],
68
+ authFiles: ['.config/opencode/config.json', '.opencode/config.json'],
69
+ installMethods: [
70
+ { platform: 'all', type: 'npm', command: 'npm install -g @anomalyco/opencode' },
71
+ { platform: 'darwin', type: 'brew', command: 'brew install --cask opencode' },
72
+ { platform: 'all', type: 'curl', command: 'curl -fsSL https://opencode.ai/install | bash' },
73
+ ],
74
+ };
75
+ models = [
76
+ {
77
+ agent: 'opencode-http',
78
+ modelId: 'claude-3-5-sonnet-20241022',
79
+ modelAlias: 'claude-sonnet',
80
+ displayName: 'Claude 3.5 Sonnet',
81
+ deprecated: false,
82
+ contextWindow: 200000,
83
+ maxOutputTokens: 8192,
84
+ inputPricePerMillion: 3,
85
+ outputPricePerMillion: 15,
86
+ supportsThinking: false,
87
+ thinkingEffortLevels: [],
88
+ supportsToolCalling: true,
89
+ supportsParallelToolCalls: true,
90
+ supportsToolCallStreaming: true,
91
+ supportsJsonMode: true,
92
+ supportsStructuredOutput: true,
93
+ supportsTextStreaming: true,
94
+ supportsThinkingStreaming: false,
95
+ supportsImageInput: true,
96
+ supportsImageOutput: false,
97
+ supportsFileInput: true,
98
+ cliArgKey: '--model',
99
+ cliArgValue: 'claude-3-5-sonnet-20241022',
100
+ lastUpdated: '2024-10-22',
101
+ source: 'bundled',
102
+ },
103
+ {
104
+ agent: 'opencode-http',
105
+ modelId: 'gpt-4o',
106
+ modelAlias: 'gpt-4o',
107
+ displayName: 'GPT-4o',
108
+ deprecated: false,
109
+ contextWindow: 128000,
110
+ maxOutputTokens: 4096,
111
+ inputPricePerMillion: 2.5,
112
+ outputPricePerMillion: 10,
113
+ supportsThinking: false,
114
+ thinkingEffortLevels: [],
115
+ supportsToolCalling: true,
116
+ supportsParallelToolCalls: true,
117
+ supportsToolCallStreaming: true,
118
+ supportsJsonMode: true,
119
+ supportsStructuredOutput: true,
120
+ supportsTextStreaming: true,
121
+ supportsThinkingStreaming: false,
122
+ supportsImageInput: true,
123
+ supportsImageOutput: false,
124
+ supportsFileInput: true,
125
+ cliArgKey: '--model',
126
+ cliArgValue: 'gpt-4o',
127
+ lastUpdated: '2024-05-13',
128
+ source: 'bundled',
129
+ },
130
+ ];
131
+ defaultModelId = 'claude-3-5-sonnet-20241022';
132
+ configSchema = {
133
+ agent: 'opencode-http',
134
+ version: 1,
135
+ fields: [],
136
+ configFilePaths: [path.join(os.homedir(), '.config', 'opencode', 'config.json')],
137
+ configFormat: 'json',
138
+ supportsProjectConfig: true,
139
+ };
140
+ async connect(options) {
141
+ // Ensure OpenCode server is running
142
+ const serverInfo = await this.ensureServer();
143
+ // Create HTTP connection to server
144
+ const connection = new OpenCodeHttpConnection({
145
+ connectionId: this.generateConnectionId(),
146
+ baseUrl: serverInfo.endpoint,
147
+ runOptions: options,
148
+ adapter: this,
149
+ });
150
+ // Register for cleanup tracking
151
+ this.registerConnection(connection);
152
+ return connection;
153
+ }
154
+ async disconnect(connection) {
155
+ await connection.close();
156
+ this.unregisterConnection(connection.connectionId);
157
+ }
158
+ async startServer(options) {
159
+ const port = options?.port || await this.findAvailablePort(3000);
160
+ const host = options?.host || 'localhost';
161
+ const args = [
162
+ 'serve',
163
+ '--port', String(port),
164
+ '--host', host,
165
+ ];
166
+ // Add additional args if provided
167
+ if (options?.args) {
168
+ args.push(...options.args);
169
+ }
170
+ const serverProcess = spawn('opencode', args, {
171
+ env: { ...process.env, ...options?.env },
172
+ stdio: ['ignore', 'pipe', 'pipe'],
173
+ });
174
+ const serverId = this.generateServerId();
175
+ const endpoint = `http://${host}:${port}`;
176
+ const serverInfo = {
177
+ serverId,
178
+ serverType: 'opencode-http',
179
+ endpoint,
180
+ pid: serverProcess.pid,
181
+ port,
182
+ startedAt: new Date(),
183
+ };
184
+ // Wait for server to be ready
185
+ await this.waitForServerReady(endpoint, options?.timeout || 30000);
186
+ // Register server for tracking
187
+ this.registerServer(serverInfo);
188
+ return serverInfo;
189
+ }
190
+ async stopServer(serverInfo) {
191
+ if (serverInfo.pid) {
192
+ try {
193
+ process.kill(serverInfo.pid, 'SIGTERM');
194
+ // Give it time to shut down gracefully
195
+ await new Promise(resolve => setTimeout(resolve, 2000));
196
+ }
197
+ catch (error) {
198
+ // Process might already be dead
199
+ }
200
+ }
201
+ this.unregisterServer(serverInfo.serverId);
202
+ }
203
+ async healthCheck(serverInfo) {
204
+ try {
205
+ const response = await fetch(`${serverInfo.endpoint}/health`, {
206
+ method: 'GET',
207
+ signal: AbortSignal.timeout(5000),
208
+ });
209
+ if (response.ok) {
210
+ return {
211
+ status: 'healthy',
212
+ uptime: Date.now() - serverInfo.startedAt.getTime(),
213
+ lastCheck: new Date(),
214
+ };
215
+ }
216
+ else {
217
+ return {
218
+ status: 'unhealthy',
219
+ lastCheck: new Date(),
220
+ details: `HTTP ${response.status}: ${response.statusText}`,
221
+ };
222
+ }
223
+ }
224
+ catch (error) {
225
+ return {
226
+ status: 'unhealthy',
227
+ lastCheck: new Date(),
228
+ details: error instanceof Error ? error.message : 'Unknown error',
229
+ };
230
+ }
231
+ }
232
+ async detectAuth() {
233
+ // Check for provider API keys in environment
234
+ const anthropicKey = process.env['ANTHROPIC_API_KEY'];
235
+ const openaiKey = process.env['OPENAI_API_KEY'];
236
+ const googleKey = process.env['GOOGLE_API_KEY'];
237
+ if (anthropicKey || openaiKey || googleKey) {
238
+ const provider = anthropicKey ? 'anthropic' : openaiKey ? 'openai' : 'google';
239
+ const key = anthropicKey || openaiKey || googleKey;
240
+ return {
241
+ status: 'authenticated',
242
+ method: 'api_key',
243
+ identity: `${provider}:...${key.slice(-4)}`,
244
+ };
245
+ }
246
+ // Check OpenCode configuration files
247
+ const home = os.homedir();
248
+ const found = await readAuthConfigIdentity([
249
+ path.join(home, '.config', 'opencode', 'config.json'),
250
+ path.join(home, '.opencode', 'config.json'),
251
+ ]);
252
+ if (found) {
253
+ return { status: 'authenticated', method: found.method, identity: found.identity };
254
+ }
255
+ return { status: 'unauthenticated' };
256
+ }
257
+ getAuthGuidance() {
258
+ return {
259
+ agent: 'opencode-http',
260
+ providerName: 'OpenCode (HTTP)',
261
+ steps: [
262
+ { step: 1, description: 'Configure authentication using OpenCode CLI', command: 'opencode auth' },
263
+ { step: 2, description: 'Alternatively, set provider API keys directly' },
264
+ { step: 3, description: 'For Anthropic: export ANTHROPIC_API_KEY=sk-ant-...', command: 'export ANTHROPIC_API_KEY=sk-ant-...' },
265
+ { step: 4, description: 'For OpenAI: export OPENAI_API_KEY=sk-...', command: 'export OPENAI_API_KEY=sk-...' },
266
+ { step: 5, description: 'For Google: export GOOGLE_API_KEY=...', command: 'export GOOGLE_API_KEY=...' },
267
+ ],
268
+ envVars: [
269
+ { name: 'ANTHROPIC_API_KEY', description: 'Anthropic API key', required: false },
270
+ { name: 'OPENAI_API_KEY', description: 'OpenAI API key', required: false },
271
+ { name: 'GOOGLE_API_KEY', description: 'Google API key', required: false },
272
+ ],
273
+ documentationUrls: ['https://github.com/anomalyco/opencode'],
274
+ loginCommand: 'opencode auth',
275
+ verifyCommand: 'opencode --version',
276
+ };
277
+ }
278
+ sessionDir(_cwd) {
279
+ return path.join(os.homedir(), '.config', 'opencode', 'sessions');
280
+ }
281
+ async parseSessionFile(filePath) {
282
+ const parsed = await parseJsonlSessionFile(filePath, 'opencode-http');
283
+ return { ...parsed, agent: 'opencode-http' };
284
+ }
285
+ async listSessionFiles(_cwd) {
286
+ return listJsonlFiles(this.sessionDir());
287
+ }
288
+ async readConfig(_cwd) {
289
+ const filePath = this.configSchema.configFilePaths?.[0];
290
+ if (!filePath)
291
+ return { agent: 'opencode-http', source: 'global' };
292
+ try {
293
+ const fs = await import('node:fs/promises');
294
+ const data = await fs.readFile(filePath, 'utf8');
295
+ const config = JSON.parse(data);
296
+ return { agent: 'opencode-http', source: 'global', filePaths: [filePath], ...config };
297
+ }
298
+ catch {
299
+ return { agent: 'opencode-http', source: 'global' };
300
+ }
301
+ }
302
+ async writeConfig(config, _cwd) {
303
+ const filePath = this.configSchema.configFilePaths?.[0];
304
+ if (!filePath)
305
+ return;
306
+ const fs = await import('node:fs/promises');
307
+ const path_module = await import('node:path');
308
+ // Ensure directory exists
309
+ await fs.mkdir(path_module.dirname(filePath), { recursive: true });
310
+ // Read existing config
311
+ let existing = {};
312
+ try {
313
+ const data = await fs.readFile(filePath, 'utf8');
314
+ existing = JSON.parse(data);
315
+ }
316
+ catch {
317
+ // File doesn't exist or is invalid, start with empty config
318
+ }
319
+ // Remove agent-mux specific fields before writing
320
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
321
+ void _a;
322
+ void _s;
323
+ void _fp;
324
+ // Merge and write
325
+ const merged = { ...existing, ...rest };
326
+ await fs.writeFile(filePath, JSON.stringify(merged, null, 2), 'utf8');
327
+ }
328
+ // ── Plugin Management ─────────────────────────────────────────────
329
+ pluginsPath() {
330
+ return this.configSchema.configFilePaths?.[0] ?? '';
331
+ }
332
+ async listPlugins() {
333
+ return mcpListPlugins(this.pluginsPath());
334
+ }
335
+ async installPlugin(pluginId, options) {
336
+ return mcpInstallPlugin(this.pluginsPath(), pluginId, options);
337
+ }
338
+ async uninstallPlugin(pluginId, options) {
339
+ return mcpUninstallPlugin(this.pluginsPath(), pluginId);
340
+ }
341
+ // ── Private implementation ────────────────────────────────────────
342
+ async ensureServer() {
343
+ // Check if we already have a running server
344
+ for (const server of this.managedServers.values()) {
345
+ const health = await this.healthCheck(server);
346
+ if (health.status === 'healthy') {
347
+ return server;
348
+ }
349
+ }
350
+ // Need to start a new server
351
+ return this.startServer();
352
+ }
353
+ async waitForServerReady(endpoint, timeoutMs) {
354
+ const startTime = Date.now();
355
+ while (Date.now() - startTime < timeoutMs) {
356
+ try {
357
+ const response = await fetch(`${endpoint}/health`, {
358
+ method: 'GET',
359
+ signal: AbortSignal.timeout(1000),
360
+ });
361
+ if (response.ok) {
362
+ return; // Server is ready
363
+ }
364
+ }
365
+ catch {
366
+ // Server not ready yet, continue waiting
367
+ }
368
+ // Wait a bit before retrying
369
+ await new Promise(resolve => setTimeout(resolve, 200));
370
+ }
371
+ throw new Error(`OpenCode server did not become ready within ${timeoutMs}ms`);
372
+ }
373
+ }
374
+ //# 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;AASrD,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,CA6CtC;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"}