@a5c-ai/agent-mux-adapters 0.2.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/adapter-install.d.ts +21 -0
  4. package/dist/adapter-install.d.ts.map +1 -0
  5. package/dist/adapter-install.js +114 -0
  6. package/dist/adapter-install.js.map +1 -0
  7. package/dist/agent-mux-remote-adapter.d.ts +66 -0
  8. package/dist/agent-mux-remote-adapter.d.ts.map +1 -0
  9. package/dist/agent-mux-remote-adapter.js +283 -0
  10. package/dist/agent-mux-remote-adapter.js.map +1 -0
  11. package/dist/auth-config.d.ts +14 -0
  12. package/dist/auth-config.d.ts.map +1 -0
  13. package/dist/auth-config.js +52 -0
  14. package/dist/auth-config.js.map +1 -0
  15. package/dist/base-adapter.d.ts +150 -0
  16. package/dist/base-adapter.d.ts.map +1 -0
  17. package/dist/base-adapter.js +458 -0
  18. package/dist/base-adapter.js.map +1 -0
  19. package/dist/claude-adapter.d.ts +52 -0
  20. package/dist/claude-adapter.d.ts.map +1 -0
  21. package/dist/claude-adapter.js +375 -0
  22. package/dist/claude-adapter.js.map +1 -0
  23. package/dist/codex-adapter.d.ts +26 -0
  24. package/dist/codex-adapter.d.ts.map +1 -0
  25. package/dist/codex-adapter.js +243 -0
  26. package/dist/codex-adapter.js.map +1 -0
  27. package/dist/copilot-adapter.d.ts +26 -0
  28. package/dist/copilot-adapter.d.ts.map +1 -0
  29. package/dist/copilot-adapter.js +199 -0
  30. package/dist/copilot-adapter.js.map +1 -0
  31. package/dist/cursor-adapter.d.ts +39 -0
  32. package/dist/cursor-adapter.d.ts.map +1 -0
  33. package/dist/cursor-adapter.js +247 -0
  34. package/dist/cursor-adapter.js.map +1 -0
  35. package/dist/gemini-adapter.d.ts +36 -0
  36. package/dist/gemini-adapter.d.ts.map +1 -0
  37. package/dist/gemini-adapter.js +287 -0
  38. package/dist/gemini-adapter.js.map +1 -0
  39. package/dist/hermes-adapter.d.ts +33 -0
  40. package/dist/hermes-adapter.d.ts.map +1 -0
  41. package/dist/hermes-adapter.js +269 -0
  42. package/dist/hermes-adapter.js.map +1 -0
  43. package/dist/index.d.ts +20 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +21 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/mcp-plugins.d.ts +13 -0
  48. package/dist/mcp-plugins.d.ts.map +1 -0
  49. package/dist/mcp-plugins.js +63 -0
  50. package/dist/mcp-plugins.js.map +1 -0
  51. package/dist/omp-adapter.d.ts +26 -0
  52. package/dist/omp-adapter.d.ts.map +1 -0
  53. package/dist/omp-adapter.js +195 -0
  54. package/dist/omp-adapter.js.map +1 -0
  55. package/dist/openclaw-adapter.d.ts +30 -0
  56. package/dist/openclaw-adapter.d.ts.map +1 -0
  57. package/dist/openclaw-adapter.js +212 -0
  58. package/dist/openclaw-adapter.js.map +1 -0
  59. package/dist/opencode-adapter.d.ts +30 -0
  60. package/dist/opencode-adapter.d.ts.map +1 -0
  61. package/dist/opencode-adapter.js +231 -0
  62. package/dist/opencode-adapter.js.map +1 -0
  63. package/dist/pi-adapter.d.ts +26 -0
  64. package/dist/pi-adapter.d.ts.map +1 -0
  65. package/dist/pi-adapter.js +196 -0
  66. package/dist/pi-adapter.js.map +1 -0
  67. package/dist/qwen-adapter.d.ts +36 -0
  68. package/dist/qwen-adapter.d.ts.map +1 -0
  69. package/dist/qwen-adapter.js +257 -0
  70. package/dist/qwen-adapter.js.map +1 -0
  71. package/dist/session-fs.d.ts +83 -0
  72. package/dist/session-fs.d.ts.map +1 -0
  73. package/dist/session-fs.js +255 -0
  74. package/dist/session-fs.js.map +1 -0
  75. package/package.json +56 -0
@@ -0,0 +1,243 @@
1
+ /**
2
+ * CodexAdapter — OpenAI Codex CLI adapter.
3
+ */
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ import { BaseAgentAdapter } from './base-adapter.js';
7
+ import { listJsonlFiles, parseJsonlSessionFile, readJsonFile, writeJsonFileAtomic, } from './session-fs.js';
8
+ import { readAuthConfigIdentity } from './auth-config.js';
9
+ export class CodexAdapter extends BaseAgentAdapter {
10
+ agent = 'codex';
11
+ displayName = 'OpenAI Codex';
12
+ cliCommand = 'codex';
13
+ minVersion = '0.1.0';
14
+ hostEnvSignals = ['CODEX_SESSION_ID', 'CODEX_RUN_ID', 'CODEX_CLI'];
15
+ capabilities = {
16
+ agent: 'codex',
17
+ canResume: true,
18
+ canFork: false,
19
+ supportsMultiTurn: true,
20
+ sessionPersistence: 'file',
21
+ supportsTextStreaming: true,
22
+ supportsToolCallStreaming: true,
23
+ supportsThinkingStreaming: false,
24
+ supportsNativeTools: true,
25
+ supportsMCP: false,
26
+ supportsParallelToolCalls: true,
27
+ requiresToolApproval: true,
28
+ approvalModes: ['yolo', 'prompt', 'deny'],
29
+ supportsThinking: false,
30
+ thinkingEffortLevels: [],
31
+ supportsThinkingBudgetTokens: false,
32
+ supportsJsonMode: true,
33
+ supportsStructuredOutput: true,
34
+ supportsSkills: false,
35
+ supportsAgentsMd: false,
36
+ skillsFormat: null,
37
+ supportsSubagentDispatch: false,
38
+ supportsParallelExecution: false,
39
+ supportsInteractiveMode: true,
40
+ supportsStdinInjection: true,
41
+ supportsImageInput: false,
42
+ supportsImageOutput: false,
43
+ supportsFileAttachments: false,
44
+ supportsPlugins: false,
45
+ pluginFormats: [],
46
+ pluginRegistries: [],
47
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
48
+ requiresGitRepo: false,
49
+ requiresPty: false,
50
+ authMethods: [
51
+ { type: 'api_key', name: 'API Key', description: 'OPENAI_API_KEY environment variable' },
52
+ ],
53
+ authFiles: ['.codex/config.json'],
54
+ installMethods: [
55
+ { platform: 'all', type: 'npm', command: 'npm install -g @openai/codex' },
56
+ ],
57
+ };
58
+ models = [
59
+ {
60
+ agent: 'codex',
61
+ modelId: 'o4-mini',
62
+ displayName: 'o4-mini',
63
+ deprecated: false,
64
+ contextWindow: 200000,
65
+ maxOutputTokens: 100000,
66
+ supportsThinking: true,
67
+ thinkingEffortLevels: ['low', 'medium', 'high'],
68
+ supportsToolCalling: true,
69
+ supportsParallelToolCalls: true,
70
+ supportsToolCallStreaming: true,
71
+ supportsJsonMode: true,
72
+ supportsStructuredOutput: true,
73
+ supportsTextStreaming: true,
74
+ supportsThinkingStreaming: false,
75
+ supportsImageInput: false,
76
+ supportsImageOutput: false,
77
+ supportsFileInput: false,
78
+ cliArgKey: '--model',
79
+ cliArgValue: 'o4-mini',
80
+ lastUpdated: '2025-04-01',
81
+ source: 'bundled',
82
+ },
83
+ {
84
+ agent: 'codex',
85
+ modelId: 'codex-mini-latest',
86
+ displayName: 'Codex Mini',
87
+ deprecated: false,
88
+ contextWindow: 200000,
89
+ maxOutputTokens: 100000,
90
+ supportsThinking: false,
91
+ supportsToolCalling: true,
92
+ supportsParallelToolCalls: true,
93
+ supportsToolCallStreaming: true,
94
+ supportsJsonMode: true,
95
+ supportsStructuredOutput: true,
96
+ supportsTextStreaming: true,
97
+ supportsThinkingStreaming: false,
98
+ supportsImageInput: false,
99
+ supportsImageOutput: false,
100
+ supportsFileInput: false,
101
+ cliArgKey: '--model',
102
+ cliArgValue: 'codex-mini-latest',
103
+ lastUpdated: '2025-04-01',
104
+ source: 'bundled',
105
+ },
106
+ ];
107
+ defaultModelId = 'o4-mini';
108
+ configSchema = {
109
+ agent: 'codex',
110
+ version: 1,
111
+ fields: [],
112
+ configFilePaths: [path.join(os.homedir(), '.codex', 'config.json')],
113
+ configFormat: 'json',
114
+ supportsProjectConfig: false,
115
+ };
116
+ buildSpawnArgs(options) {
117
+ const args = [];
118
+ if (options.model) {
119
+ args.push('--model', options.model);
120
+ }
121
+ if (options.approvalMode === 'yolo') {
122
+ args.push('--full-auto');
123
+ }
124
+ const prompt = Array.isArray(options.prompt) ? options.prompt.join('\n') : options.prompt;
125
+ args.push('--quiet', prompt);
126
+ return {
127
+ command: this.cliCommand,
128
+ args,
129
+ env: this.buildEnvFromOptions(options),
130
+ cwd: options.cwd ?? process.cwd(),
131
+ usePty: false,
132
+ timeout: options.timeout,
133
+ inactivityTimeout: options.inactivityTimeout,
134
+ };
135
+ }
136
+ parseEvent(line, context) {
137
+ const parsed = this.parseJsonLine(line);
138
+ if (parsed == null || typeof parsed !== 'object')
139
+ return null;
140
+ const obj = parsed;
141
+ const ts = Date.now();
142
+ const base = { runId: context.runId, agent: this.agent, timestamp: ts };
143
+ const type = obj['type'];
144
+ if (type === 'message' || type === 'text') {
145
+ const content = (obj['content'] ?? obj['text'] ?? '');
146
+ if (content) {
147
+ return { ...base, type: 'text_delta', delta: content, accumulated: content };
148
+ }
149
+ }
150
+ if (type === 'function_call' || type === 'tool_call') {
151
+ return {
152
+ ...base,
153
+ type: 'tool_call_start',
154
+ toolCallId: (obj['id'] ?? obj['call_id'] ?? ''),
155
+ toolName: (obj['name'] ?? ''),
156
+ inputAccumulated: JSON.stringify(obj['arguments'] ?? obj['input'] ?? {}),
157
+ };
158
+ }
159
+ if (type === 'function_call_output' || type === 'tool_result') {
160
+ return {
161
+ ...base,
162
+ type: 'tool_result',
163
+ toolCallId: (obj['call_id'] ?? obj['id'] ?? ''),
164
+ toolName: (obj['name'] ?? ''),
165
+ output: obj['output'] ?? '',
166
+ durationMs: 0,
167
+ };
168
+ }
169
+ if (type === 'error') {
170
+ return {
171
+ ...base,
172
+ type: 'error',
173
+ code: 'INTERNAL',
174
+ message: (obj['message'] ?? 'Unknown error'),
175
+ recoverable: false,
176
+ };
177
+ }
178
+ return null;
179
+ }
180
+ async detectAuth() {
181
+ const apiKey = process.env['OPENAI_API_KEY'];
182
+ if (apiKey) {
183
+ return {
184
+ status: 'authenticated',
185
+ method: 'api_key',
186
+ identity: `sk-...${apiKey.slice(-4)}`,
187
+ };
188
+ }
189
+ const codexHome = process.env['CODEX_HOME'] ?? path.join(os.homedir(), '.codex');
190
+ const found = await readAuthConfigIdentity([
191
+ path.join(codexHome, 'auth.json'),
192
+ path.join(codexHome, 'credentials.json'),
193
+ ]);
194
+ if (found) {
195
+ return { status: 'authenticated', method: 'config_file', identity: found.identity };
196
+ }
197
+ return { status: 'unauthenticated' };
198
+ }
199
+ getAuthGuidance() {
200
+ return {
201
+ agent: 'codex',
202
+ providerName: 'OpenAI',
203
+ steps: [
204
+ { step: 1, description: 'Get an API key from https://platform.openai.com/api-keys', url: 'https://platform.openai.com/api-keys' },
205
+ { step: 2, description: 'Set the OPENAI_API_KEY environment variable', command: 'export OPENAI_API_KEY=sk-...' },
206
+ ],
207
+ envVars: [
208
+ { name: 'OPENAI_API_KEY', description: 'OpenAI API key', required: true, exampleFormat: 'sk-...' },
209
+ ],
210
+ documentationUrls: ['https://github.com/openai/codex'],
211
+ verifyCommand: 'codex --version',
212
+ };
213
+ }
214
+ sessionDir(_cwd) {
215
+ return path.join(os.homedir(), '.codex', 'sessions');
216
+ }
217
+ async parseSessionFile(filePath) {
218
+ const parsed = await parseJsonlSessionFile(filePath, 'codex');
219
+ return { ...parsed, agent: 'codex' };
220
+ }
221
+ async listSessionFiles(_cwd) {
222
+ return listJsonlFiles(this.sessionDir());
223
+ }
224
+ async readConfig(_cwd) {
225
+ const filePath = this.configSchema.configFilePaths?.[0];
226
+ if (!filePath)
227
+ return { agent: 'codex', source: 'global' };
228
+ const data = (await readJsonFile(filePath)) ?? {};
229
+ return { agent: 'codex', source: 'global', filePaths: [filePath], ...data };
230
+ }
231
+ async writeConfig(config, _cwd) {
232
+ const filePath = this.configSchema.configFilePaths?.[0];
233
+ if (!filePath)
234
+ return;
235
+ const existing = (await readJsonFile(filePath)) ?? {};
236
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
237
+ void _a;
238
+ void _s;
239
+ void _fp;
240
+ await writeJsonFileAtomic(filePath, { ...existing, ...rest });
241
+ }
242
+ }
243
+ //# sourceMappingURL=codex-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../src/codex-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CopilotAdapter — GitHub Copilot CLI adapter.
3
+ */
4
+ import type { AgentCapabilities, ModelCapabilities, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, SpawnArgs, ParseContext, RunOptions, AgentEvent, AgentConfig } from '@a5c-ai/agent-mux-core';
5
+ import { BaseAgentAdapter } from './base-adapter.js';
6
+ export declare class CopilotAdapter extends BaseAgentAdapter {
7
+ readonly agent: "copilot";
8
+ readonly displayName = "GitHub Copilot";
9
+ readonly cliCommand = "gh copilot";
10
+ readonly minVersion = "1.0.0";
11
+ readonly hostEnvSignals: readonly ["COPILOT_CLI_SESSION", "GH_COPILOT_SESSION"];
12
+ readonly capabilities: AgentCapabilities;
13
+ readonly models: ModelCapabilities[];
14
+ readonly defaultModelId = "gpt-4o";
15
+ readonly configSchema: AgentConfigSchema;
16
+ buildSpawnArgs(options: RunOptions): SpawnArgs;
17
+ parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
18
+ detectAuth(): Promise<AuthState>;
19
+ getAuthGuidance(): AuthSetupGuidance;
20
+ sessionDir(_cwd?: string): string;
21
+ parseSessionFile(filePath: string): Promise<Session>;
22
+ listSessionFiles(_cwd?: string): Promise<string[]>;
23
+ readConfig(_cwd?: string): Promise<AgentConfig>;
24
+ writeConfig(config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=copilot-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-adapter.d.ts","sourceRoot":"","sources":["../src/copilot-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,cAAe,SAAQ,gBAAgB;IAClD,QAAQ,CAAC,KAAK,EAAG,SAAS,CAAU;IACpC,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,UAAU,gBAAgB;IACnC,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,cAAc,yDAA0D;IAEjF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA4CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAwBlC;IAEF,QAAQ,CAAC,cAAc,YAAY;IAEnC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAOtC;IAEF,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAe9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAwC3E,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAYtC,eAAe,IAAI,iBAAiB;IAkBpC,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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * CopilotAdapter — GitHub Copilot CLI adapter.
3
+ */
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ import { BaseAgentAdapter } from './base-adapter.js';
7
+ import { listJsonlFiles, parseJsonlSessionFile, readJsonFile, writeJsonFileAtomic, } from './session-fs.js';
8
+ export class CopilotAdapter extends BaseAgentAdapter {
9
+ agent = 'copilot';
10
+ displayName = 'GitHub Copilot';
11
+ cliCommand = 'gh copilot';
12
+ minVersion = '1.0.0';
13
+ hostEnvSignals = ['COPILOT_CLI_SESSION', 'GH_COPILOT_SESSION'];
14
+ capabilities = {
15
+ agent: 'copilot',
16
+ canResume: false,
17
+ canFork: false,
18
+ supportsMultiTurn: false,
19
+ sessionPersistence: 'file',
20
+ supportsTextStreaming: true,
21
+ supportsToolCallStreaming: false,
22
+ supportsThinkingStreaming: false,
23
+ supportsNativeTools: false,
24
+ supportsMCP: false,
25
+ supportsParallelToolCalls: false,
26
+ requiresToolApproval: false,
27
+ approvalModes: ['prompt'],
28
+ supportsThinking: false,
29
+ thinkingEffortLevels: [],
30
+ supportsThinkingBudgetTokens: false,
31
+ supportsJsonMode: false,
32
+ supportsStructuredOutput: false,
33
+ supportsSkills: false,
34
+ supportsAgentsMd: false,
35
+ skillsFormat: null,
36
+ supportsSubagentDispatch: false,
37
+ supportsParallelExecution: false,
38
+ supportsInteractiveMode: true,
39
+ supportsStdinInjection: false,
40
+ supportsImageInput: false,
41
+ supportsImageOutput: false,
42
+ supportsFileAttachments: false,
43
+ supportsPlugins: false,
44
+ pluginFormats: [],
45
+ pluginRegistries: [],
46
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
47
+ requiresGitRepo: false,
48
+ requiresPty: false,
49
+ authMethods: [
50
+ { type: 'github_token', name: 'GitHub Token', description: 'GITHUB_TOKEN environment variable' },
51
+ { type: 'oauth_device', name: 'OAuth Device Flow', description: 'GitHub CLI OAuth device flow' },
52
+ ],
53
+ authFiles: ['.config/github-copilot/settings.json'],
54
+ installMethods: [
55
+ { platform: 'all', type: 'npm', command: 'npm install -g @github/copilot-cli' },
56
+ { platform: 'all', type: 'gh-extension', command: 'gh extension install github/gh-copilot' },
57
+ ],
58
+ };
59
+ models = [
60
+ {
61
+ agent: 'copilot',
62
+ modelId: 'gpt-4o',
63
+ displayName: 'GPT-4o',
64
+ deprecated: false,
65
+ contextWindow: 128000,
66
+ maxOutputTokens: 16384,
67
+ supportsThinking: false,
68
+ supportsToolCalling: false,
69
+ supportsParallelToolCalls: false,
70
+ supportsToolCallStreaming: false,
71
+ supportsJsonMode: false,
72
+ supportsStructuredOutput: false,
73
+ supportsTextStreaming: true,
74
+ supportsThinkingStreaming: false,
75
+ supportsImageInput: false,
76
+ supportsImageOutput: false,
77
+ supportsFileInput: false,
78
+ cliArgKey: '--model',
79
+ cliArgValue: 'gpt-4o',
80
+ lastUpdated: '2025-01-01',
81
+ source: 'bundled',
82
+ },
83
+ ];
84
+ defaultModelId = 'gpt-4o';
85
+ configSchema = {
86
+ agent: 'copilot',
87
+ version: 1,
88
+ fields: [],
89
+ configFilePaths: [path.join(os.homedir(), '.config', 'github-copilot', 'settings.json')],
90
+ configFormat: 'json',
91
+ supportsProjectConfig: false,
92
+ };
93
+ buildSpawnArgs(options) {
94
+ const prompt = Array.isArray(options.prompt) ? options.prompt.join('\n') : options.prompt;
95
+ return {
96
+ command: 'gh',
97
+ args: ['copilot', 'suggest', prompt],
98
+ env: this.buildEnvFromOptions(options),
99
+ cwd: options.cwd ?? process.cwd(),
100
+ usePty: false,
101
+ shell: true,
102
+ timeout: options.timeout,
103
+ inactivityTimeout: options.inactivityTimeout,
104
+ };
105
+ }
106
+ parseEvent(line, context) {
107
+ const parsed = this.parseJsonLine(line);
108
+ if (parsed != null && typeof parsed === 'object') {
109
+ const obj = parsed;
110
+ const ts = Date.now();
111
+ const base = { runId: context.runId, agent: this.agent, timestamp: ts };
112
+ const type = obj['type'];
113
+ if (type === 'text' || type === 'message') {
114
+ const content = (obj['content'] ?? obj['text'] ?? '');
115
+ if (content) {
116
+ return { ...base, type: 'text_delta', delta: content, accumulated: content };
117
+ }
118
+ }
119
+ if (type === 'error') {
120
+ return {
121
+ ...base,
122
+ type: 'error',
123
+ code: 'INTERNAL',
124
+ message: (obj['message'] ?? 'Unknown error'),
125
+ recoverable: false,
126
+ };
127
+ }
128
+ }
129
+ // Plain text output
130
+ if (line.trim()) {
131
+ return {
132
+ runId: context.runId,
133
+ agent: this.agent,
134
+ timestamp: Date.now(),
135
+ type: 'text_delta',
136
+ delta: line,
137
+ accumulated: line,
138
+ };
139
+ }
140
+ return null;
141
+ }
142
+ async detectAuth() {
143
+ const token = process.env['GITHUB_TOKEN'];
144
+ if (token) {
145
+ return {
146
+ status: 'authenticated',
147
+ method: 'github_token',
148
+ identity: `ghp_...${token.slice(-4)}`,
149
+ };
150
+ }
151
+ return { status: 'unauthenticated' };
152
+ }
153
+ getAuthGuidance() {
154
+ return {
155
+ agent: 'copilot',
156
+ providerName: 'GitHub',
157
+ steps: [
158
+ { step: 1, description: 'Install the GitHub CLI: https://cli.github.com', url: 'https://cli.github.com' },
159
+ { step: 2, description: 'Authenticate with GitHub', command: 'gh auth login' },
160
+ { step: 3, description: 'Install the Copilot extension', command: 'gh extension install github/gh-copilot' },
161
+ ],
162
+ envVars: [
163
+ { name: 'GITHUB_TOKEN', description: 'GitHub personal access token', required: false, exampleFormat: 'ghp_...' },
164
+ ],
165
+ documentationUrls: ['https://docs.github.com/en/copilot/using-github-copilot/using-github-copilot-in-the-command-line'],
166
+ loginCommand: 'gh auth login',
167
+ verifyCommand: 'gh copilot --version',
168
+ };
169
+ }
170
+ sessionDir(_cwd) {
171
+ return path.join(os.homedir(), '.config', 'github-copilot', 'sessions');
172
+ }
173
+ async parseSessionFile(filePath) {
174
+ const parsed = await parseJsonlSessionFile(filePath, 'copilot');
175
+ return { ...parsed, agent: 'copilot' };
176
+ }
177
+ async listSessionFiles(_cwd) {
178
+ return listJsonlFiles(this.sessionDir());
179
+ }
180
+ async readConfig(_cwd) {
181
+ const filePath = this.configSchema.configFilePaths?.[0];
182
+ if (!filePath)
183
+ return { agent: 'copilot', source: 'global' };
184
+ const data = (await readJsonFile(filePath)) ?? {};
185
+ return { agent: 'copilot', source: 'global', filePaths: [filePath], ...data };
186
+ }
187
+ async writeConfig(config, _cwd) {
188
+ const filePath = this.configSchema.configFilePaths?.[0];
189
+ if (!filePath)
190
+ return;
191
+ const existing = (await readJsonFile(filePath)) ?? {};
192
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
193
+ void _a;
194
+ void _s;
195
+ void _fp;
196
+ await writeJsonFileAtomic(filePath, { ...existing, ...rest });
197
+ }
198
+ }
199
+ //# sourceMappingURL=copilot-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-adapter.js","sourceRoot":"","sources":["../src/copilot-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAgBlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IACzC,KAAK,GAAG,SAAkB,CAAC;IAC3B,WAAW,GAAG,gBAAgB,CAAC;IAC/B,UAAU,GAAG,YAAY,CAAC;IAC1B,UAAU,GAAG,OAAO,CAAC;IACrB,cAAc,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAU,CAAC;IAExE,YAAY,GAAsB;QACzC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,MAAM;QAC1B,qBAAqB,EAAE,IAAI;QAC3B,yBAAyB,EAAE,KAAK;QAChC,yBAAyB,EAAE,KAAK;QAChC,mBAAmB,EAAE,KAAK;QAC1B,WAAW,EAAE,KAAK;QAClB,yBAAyB,EAAE,KAAK;QAChC,oBAAoB,EAAE,KAAK;QAC3B,aAAa,EAAE,CAAC,QAAQ,CAAC;QACzB,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,EAAE;QACxB,4BAA4B,EAAE,KAAK;QACnC,gBAAgB,EAAE,KAAK;QACvB,wBAAwB,EAAE,KAAK;QAC/B,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,IAAI;QAClB,wBAAwB,EAAE,KAAK;QAC/B,yBAAyB,EAAE,KAAK;QAChC,uBAAuB,EAAE,IAAI;QAC7B,sBAAsB,EAAE,KAAK;QAC7B,kBAAkB,EAAE,KAAK;QACzB,mBAAmB,EAAE,KAAK;QAC1B,uBAAuB,EAAE,KAAK;QAC9B,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QAChD,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE;YACX,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mCAAmC,EAAE;YAChG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,8BAA8B,EAAE;SACjG;QACD,SAAS,EAAE,CAAC,sCAAsC,CAAC;QACnD,cAAc,EAAE;YACd,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE;YAC/E,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,wCAAwC,EAAE;SAC7F;KACF,CAAC;IAEO,MAAM,GAAwB;QACrC;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,KAAK;YAC1B,yBAAyB,EAAE,KAAK;YAChC,yBAAyB,EAAE,KAAK;YAChC,gBAAgB,EAAE,KAAK;YACvB,wBAAwB,EAAE,KAAK;YAC/B,qBAAqB,EAAE,IAAI;YAC3B,yBAAyB,EAAE,KAAK;YAChC,kBAAkB,EAAE,KAAK;YACzB,mBAAmB,EAAE,KAAK;YAC1B,iBAAiB,EAAE,KAAK;YACxB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,YAAY;YACzB,MAAM,EAAE,SAAS;SAClB;KACF,CAAC;IAEO,cAAc,GAAG,QAAQ,CAAC;IAE1B,YAAY,GAAsB;QACzC,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QACxF,YAAY,EAAE,MAAM;QACpB,qBAAqB,EAAE,KAAK;KAC7B,CAAC;IAEF,cAAc,CAAC,OAAmB;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAE1F,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;YACpC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAqB;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,MAAiC,CAAC;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAExE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAuB,CAAC;YAC/C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAW,CAAC;gBAChE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAgB,CAAC;gBAC7F,CAAC;YACH,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO;oBACL,GAAG,IAAI;oBACP,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAmB;oBACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,eAAe,CAAW;oBACtD,WAAW,EAAE,KAAK;iBACL,CAAC;YAClB,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;aACJ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,UAAU,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACtC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACvC,CAAC;IAED,eAAe;QACb,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,QAAQ;YACtB,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,GAAG,EAAE,wBAAwB,EAAE;gBACzG,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,eAAe,EAAE;gBAC9E,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,wCAAwC,EAAE;aAC7G;YACD,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE;aACjH;YACD,iBAAiB,EAAE,CAAC,kGAAkG,CAAC;YACvH,YAAY,EAAE,eAAe;YAC7B,aAAa,EAAE,sBAAsB;SACtC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAa;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAa;QAClC,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAa;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,CAAC,MAAM,YAAY,CAA0B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA4B,EAAE,IAAa;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAA0B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAiC,CAAC;QAC7F,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,CAAC;QAAC,KAAK,GAAG,CAAC;QAC3B,MAAM,mBAAmB,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * CursorAdapter — Cursor IDE CLI adapter.
3
+ */
4
+ import type { AgentCapabilities, ModelCapabilities, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, SpawnArgs, ParseContext, RunOptions, AgentEvent, InstalledPlugin, PluginInstallOptions, AgentConfig } from '@a5c-ai/agent-mux-core';
5
+ import { BaseAgentAdapter } from './base-adapter.js';
6
+ export declare class CursorAdapter extends BaseAgentAdapter {
7
+ readonly agent: "cursor";
8
+ readonly displayName = "Cursor";
9
+ readonly cliCommand = "cursor-agent";
10
+ readonly minVersion = "0.40.0";
11
+ readonly hostEnvSignals: readonly ["CURSOR_SESSION", "CURSOR_AGENT_SESSION"];
12
+ readonly capabilities: AgentCapabilities;
13
+ readonly models: ModelCapabilities[];
14
+ readonly defaultModelId = "cursor-fast";
15
+ readonly configSchema: AgentConfigSchema;
16
+ buildSpawnArgs(options: RunOptions): SpawnArgs;
17
+ parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
18
+ detectAuth(): Promise<AuthState>;
19
+ getAuthGuidance(): AuthSetupGuidance;
20
+ sessionDir(_cwd?: string): string;
21
+ parseSessionFile(filePath: string): Promise<Session>;
22
+ listSessionFiles(_cwd?: string): Promise<string[]>;
23
+ readConfig(_cwd?: string): Promise<AgentConfig>;
24
+ writeConfig(config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
25
+ /**
26
+ * Override: Cursor is install-only via manual download. Return a clear
27
+ * message rather than attempting to spawn anything.
28
+ */
29
+ install(_opts?: import('@a5c-ai/agent-mux-core').AdapterInstallOptions): Promise<import('@a5c-ai/agent-mux-core').InstallResult>;
30
+ /**
31
+ * Override: no programmatic update path; surface a manual-update message.
32
+ */
33
+ update(_opts?: import('@a5c-ai/agent-mux-core').AdapterUpdateOptions): Promise<import('@a5c-ai/agent-mux-core').InstallResult>;
34
+ private pluginsPath;
35
+ listPlugins(): Promise<InstalledPlugin[]>;
36
+ installPlugin(pluginId: string, options?: PluginInstallOptions): Promise<InstalledPlugin>;
37
+ uninstallPlugin(pluginId: string): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=cursor-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-adapter.d.ts","sourceRoot":"","sources":["../src/cursor-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,eAAe,EACf,oBAAoB,EACpB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUrD,qBAAa,aAAc,SAAQ,gBAAgB;IACjD,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAU;IACnC,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,UAAU,kBAAkB;IACrC,QAAQ,CAAC,UAAU,YAAY;IAC/B,QAAQ,CAAC,cAAc,sDAAuD;IAE9E,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA2CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAwBlC;IAEF,QAAQ,CAAC,cAAc,iBAAiB;IAExC,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;IAqBtC,eAAe,IAAI,iBAAiB;IAiBpC,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;IAS7E;;;OAGG;IACY,OAAO,CACpB,KAAK,CAAC,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,GAC7D,OAAO,CAAC,OAAO,wBAAwB,EAAE,aAAa,CAAC;IAW1D;;OAEG;IACY,MAAM,CACnB,KAAK,CAAC,EAAE,OAAO,wBAAwB,EAAE,oBAAoB,GAC5D,OAAO,CAAC,OAAO,wBAAwB,EAAE,aAAa,CAAC;IAS1D,OAAO,CAAC,WAAW;IAIJ,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIzC,aAAa,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAIZ,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhE"}