@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,31 @@
1
+ /**
2
+ * Adapter for Sourcegraph Amp CLI.
3
+ *
4
+ * Amp is Sourcegraph's agentic coding assistant with multi-model support,
5
+ * specialized subagents (Oracle, Librarian), and advanced code understanding.
6
+ */
7
+ import { BaseAgentAdapter } from './base-adapter.js';
8
+ import type { AgentCapabilities, ModelCapabilities, AuthState, AuthSetupGuidance, Session, RunOptions, SpawnArgs, ParseContext, AgentEvent, InstalledPlugin, PluginInstallOptions, AgentConfig } from '@a5c-ai/agent-mux-core';
9
+ export declare class AmpAdapter extends BaseAgentAdapter {
10
+ readonly agent: "amp";
11
+ readonly displayName = "Sourcegraph Amp";
12
+ readonly cliCommand = "amp";
13
+ readonly minVersion = "2.0.0";
14
+ readonly hostEnvSignals: string[];
15
+ readonly capabilities: AgentCapabilities;
16
+ readonly models: ModelCapabilities[];
17
+ readonly defaultModelId = "amp-oracle";
18
+ buildSpawnArgs(options: RunOptions): SpawnArgs;
19
+ parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
20
+ sessionDir(_cwd?: string): string;
21
+ parseSessionFile(filePath: string): Promise<Session>;
22
+ listSessionFiles(_cwd?: string): Promise<string[]>;
23
+ detectAuth(): Promise<AuthState>;
24
+ getAuthGuidance(): AuthSetupGuidance;
25
+ readConfig(_cwd?: string): Promise<AgentConfig>;
26
+ writeConfig(config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
27
+ listPlugins(): Promise<InstalledPlugin[]>;
28
+ installPlugin(_pluginId: string, _options?: PluginInstallOptions): Promise<InstalledPlugin>;
29
+ uninstallPlugin(_pluginId: string): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=amp-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp-adapter.d.ts","sourceRoot":"","sources":["../src/amp-adapter.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAUhC,qBAAa,UAAW,SAAQ,gBAAgB;IAC9C,QAAQ,CAAC,KAAK,EAAG,KAAK,CAAU;IAChC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,UAAU,SAAS;IAC5B,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,cAAc,WAAmD;IAE1E,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAgDtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAoDlC;IAEF,QAAQ,CAAC,cAAc,gBAAgB;IAEvC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAyD9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IA0FjF,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,IAAI,OAAO,CAAC,SAAS,CAAC;IAYtC,eAAe,IAAI,iBAAiB;IAwC9B,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAM/C,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKzC,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAIrB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxD"}
@@ -0,0 +1,336 @@
1
+ // @ts-nocheck -- TODO(amp-adapter): align with current ModelCapabilities/AgentEvent types
2
+ /**
3
+ * Adapter for Sourcegraph Amp CLI.
4
+ *
5
+ * Amp is Sourcegraph's agentic coding assistant with multi-model support,
6
+ * specialized subagents (Oracle, Librarian), and advanced code understanding.
7
+ */
8
+ import { BaseAgentAdapter } from './base-adapter.js';
9
+ import { homedir } from 'node:os';
10
+ import { join } from 'node:path';
11
+ import { listJsonlFiles, parseJsonlSessionFile, readJsonFile, writeJsonFileAtomic, } from './session-fs.js';
12
+ export class AmpAdapter extends BaseAgentAdapter {
13
+ agent = 'amp';
14
+ displayName = 'Sourcegraph Amp';
15
+ cliCommand = 'amp';
16
+ minVersion = '2.0.0';
17
+ hostEnvSignals = ['SOURCEGRAPH_ACCESS_TOKEN', 'AMP_CONFIG_PATH'];
18
+ capabilities = {
19
+ agent: 'amp',
20
+ canResume: true,
21
+ canFork: true,
22
+ supportsMultiTurn: true,
23
+ sessionPersistence: 'file',
24
+ supportsTextStreaming: true,
25
+ supportsToolCallStreaming: true,
26
+ supportsNativeTools: true,
27
+ supportsMCP: true,
28
+ supportsSubagentDispatch: true,
29
+ supportsParallelExecution: true,
30
+ maxParallelTasks: 8,
31
+ requiresToolApproval: true,
32
+ approvalModes: ['yolo', 'prompt'],
33
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
34
+ requiresGitRepo: false,
35
+ requiresPty: false,
36
+ authMethods: [
37
+ {
38
+ type: 'api_key',
39
+ name: 'Sourcegraph Access Token',
40
+ description: 'SOURCEGRAPH_ACCESS_TOKEN environment variable',
41
+ },
42
+ {
43
+ type: 'browser_login',
44
+ name: 'Sourcegraph OAuth',
45
+ description: 'Interactive browser-based login',
46
+ },
47
+ ],
48
+ installMethods: [
49
+ {
50
+ platform: 'all',
51
+ type: 'npm',
52
+ command: 'npm install -g @sourcegraph/amp-cli',
53
+ },
54
+ {
55
+ platform: 'unix',
56
+ type: 'curl',
57
+ command: 'curl -fsSL https://get.sourcegraph.com/amp | bash',
58
+ },
59
+ {
60
+ platform: 'all',
61
+ type: 'manual',
62
+ description: 'Download from GitHub Releases',
63
+ url: 'https://github.com/sourcegraph/amp/releases',
64
+ },
65
+ ],
66
+ };
67
+ models = [
68
+ {
69
+ agent: 'amp',
70
+ modelId: 'claude-3-5-sonnet-20241022',
71
+ displayName: 'Claude 3.5 Sonnet',
72
+ modelAlias: 'claude-sonnet',
73
+ deprecated: false,
74
+ contextWindow: 200000,
75
+ maxOutputTokens: 8192,
76
+ inputPricePerMillion: 3.0,
77
+ outputPricePerMillion: 15.0,
78
+ supportsToolCalling: true,
79
+ supportsParallelToolCalls: true,
80
+ },
81
+ {
82
+ agent: 'amp',
83
+ modelId: 'gpt-4o',
84
+ displayName: 'GPT-4o',
85
+ modelAlias: 'gpt-4o',
86
+ deprecated: false,
87
+ contextWindow: 128000,
88
+ maxOutputTokens: 4096,
89
+ inputPricePerMillion: 5.0,
90
+ outputPricePerMillion: 15.0,
91
+ supportsToolCalling: true,
92
+ supportsParallelToolCalls: true,
93
+ },
94
+ {
95
+ agent: 'amp',
96
+ modelId: 'amp-oracle',
97
+ displayName: 'Amp Oracle (Multi-Model)',
98
+ modelAlias: 'oracle',
99
+ deprecated: false,
100
+ contextWindow: 200000,
101
+ maxOutputTokens: 8192,
102
+ description: 'Multi-model routing with specialized subagents',
103
+ supportsToolCalling: true,
104
+ supportsParallelToolCalls: true,
105
+ },
106
+ {
107
+ agent: 'amp',
108
+ modelId: 'gemini-1.5-pro',
109
+ displayName: 'Gemini 1.5 Pro',
110
+ modelAlias: 'gemini-pro',
111
+ deprecated: false,
112
+ contextWindow: 2000000,
113
+ maxOutputTokens: 8192,
114
+ inputPricePerMillion: 1.25,
115
+ outputPricePerMillion: 5.0,
116
+ supportsToolCalling: true,
117
+ supportsParallelToolCalls: true,
118
+ },
119
+ ];
120
+ defaultModelId = 'amp-oracle';
121
+ buildSpawnArgs(options) {
122
+ const args = [];
123
+ // Command selection
124
+ if (options.sessionId) {
125
+ args.push('resume', options.sessionId);
126
+ }
127
+ else {
128
+ args.push('chat');
129
+ }
130
+ // Output format
131
+ args.push('--output', 'jsonl');
132
+ args.push('--stream');
133
+ // Model selection
134
+ if (options.model) {
135
+ args.push('--model', options.model);
136
+ }
137
+ // System prompt
138
+ if (options.systemPrompt) {
139
+ args.push('--system', options.systemPrompt);
140
+ }
141
+ // Tool approval mode
142
+ if (options.approvalMode === 'yolo') {
143
+ args.push('--auto-approve');
144
+ }
145
+ // Max turns
146
+ if (options.maxTurns) {
147
+ args.push('--max-turns', String(options.maxTurns));
148
+ }
149
+ // Working directory
150
+ if (options.cwd) {
151
+ args.push('--cwd', options.cwd);
152
+ }
153
+ const { prompt, stdin } = this.buildPromptTransport(options);
154
+ if (stdin === undefined) {
155
+ args.push('--headless');
156
+ args.push('--prompt', prompt);
157
+ }
158
+ return {
159
+ command: this.cliCommand,
160
+ args,
161
+ cwd: options.cwd,
162
+ env: {
163
+ ...process.env,
164
+ ...options.env,
165
+ },
166
+ stdin,
167
+ };
168
+ }
169
+ parseEvent(line, context) {
170
+ const trimmed = line.trim();
171
+ if (!trimmed)
172
+ return null;
173
+ try {
174
+ const parsed = JSON.parse(trimmed);
175
+ const baseEvent = {
176
+ agent: this.agent,
177
+ runId: context.runId,
178
+ timestamp: Date.now(),
179
+ };
180
+ switch (parsed.type) {
181
+ case 'session_start':
182
+ return {
183
+ type: 'session_start',
184
+ ...baseEvent,
185
+ sessionId: parsed.sessionId,
186
+ turnCount: 0,
187
+ resumed: false,
188
+ };
189
+ case 'text_delta':
190
+ return {
191
+ type: 'text_delta',
192
+ ...baseEvent,
193
+ delta: parsed.content || parsed.delta,
194
+ accumulated: parsed.accumulated,
195
+ };
196
+ case 'tool_call_start':
197
+ return {
198
+ type: 'tool_call_start',
199
+ ...baseEvent,
200
+ toolCallId: parsed.id,
201
+ toolName: parsed.tool || parsed.name,
202
+ arguments: parsed.arguments || parsed.args,
203
+ };
204
+ case 'tool_result':
205
+ return {
206
+ type: 'tool_result',
207
+ ...baseEvent,
208
+ toolCallId: parsed.id,
209
+ toolName: parsed.tool || parsed.name,
210
+ output: parsed.result || parsed.output,
211
+ durationMs: parsed.duration || parsed.durationMs,
212
+ };
213
+ case 'cost':
214
+ return {
215
+ type: 'cost',
216
+ ...baseEvent,
217
+ cost: {
218
+ totalUsd: parsed.totalUsd || parsed.total,
219
+ inputTokens: parsed.inputTokens || parsed.input || 0,
220
+ outputTokens: parsed.outputTokens || parsed.output || 0,
221
+ thinkingTokens: parsed.thinkingTokens || 0,
222
+ cacheReadTokens: parsed.cacheReadTokens,
223
+ cacheCreationTokens: parsed.cacheCreationTokens,
224
+ },
225
+ };
226
+ case 'error':
227
+ return {
228
+ type: 'error',
229
+ ...baseEvent,
230
+ code: parsed.code,
231
+ message: parsed.message,
232
+ recoverable: parsed.recoverable ?? true,
233
+ fatal: parsed.fatal ?? false,
234
+ };
235
+ case 'session_end':
236
+ return {
237
+ type: 'session_end',
238
+ ...baseEvent,
239
+ sessionId: parsed.sessionId,
240
+ reason: parsed.reason,
241
+ finalTurnCount: parsed.turnCount || parsed.turns,
242
+ };
243
+ default:
244
+ return null;
245
+ }
246
+ }
247
+ catch {
248
+ return null;
249
+ }
250
+ }
251
+ sessionDir(_cwd) {
252
+ return join(homedir(), '.config', 'amp', 'sessions');
253
+ }
254
+ async parseSessionFile(filePath) {
255
+ const parsed = await parseJsonlSessionFile(filePath, 'amp');
256
+ return { ...parsed, agent: 'amp', title: parsed.sessionId };
257
+ }
258
+ async listSessionFiles(_cwd) {
259
+ return listJsonlFiles(this.sessionDir());
260
+ }
261
+ async detectAuth() {
262
+ const token = process.env['SOURCEGRAPH_ACCESS_TOKEN'];
263
+ if (token) {
264
+ return {
265
+ status: 'authenticated',
266
+ method: 'api_key',
267
+ identity: `token-...${token.slice(-4)}`,
268
+ };
269
+ }
270
+ return { status: 'unauthenticated' };
271
+ }
272
+ getAuthGuidance() {
273
+ return {
274
+ agent: 'amp',
275
+ providerName: 'Sourcegraph Amp',
276
+ steps: [
277
+ {
278
+ step: 1,
279
+ description: 'Sign up for a Sourcegraph account at sourcegraph.com',
280
+ url: 'https://sourcegraph.com/sign-up',
281
+ },
282
+ {
283
+ step: 2,
284
+ description: 'Install the Amp CLI',
285
+ command: 'npm install -g @sourcegraph/amp-cli',
286
+ },
287
+ {
288
+ step: 3,
289
+ description: 'Generate an access token in Sourcegraph settings',
290
+ url: 'https://sourcegraph.com/users/settings/tokens',
291
+ },
292
+ {
293
+ step: 4,
294
+ description: 'Authenticate with Sourcegraph',
295
+ command: 'amp auth login',
296
+ },
297
+ ],
298
+ envVars: [
299
+ {
300
+ name: 'SOURCEGRAPH_ACCESS_TOKEN',
301
+ description: 'Sourcegraph access token for API authentication',
302
+ required: false,
303
+ exampleFormat: 'sgp_...',
304
+ },
305
+ ],
306
+ documentationUrls: ['https://docs.sourcegraph.com/amp'],
307
+ loginCommand: 'amp auth login',
308
+ verifyCommand: 'amp --version',
309
+ };
310
+ }
311
+ async readConfig(_cwd) {
312
+ const configPath = join(homedir(), '.config', 'amp', 'config.json');
313
+ const data = (await readJsonFile(configPath)) ?? {};
314
+ return { agent: 'amp', source: 'global', filePaths: [configPath], ...data };
315
+ }
316
+ async writeConfig(config, _cwd) {
317
+ const configPath = join(homedir(), '.config', 'amp', 'config.json');
318
+ const existing = (await readJsonFile(configPath)) ?? {};
319
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
320
+ void _a;
321
+ void _s;
322
+ void _fp;
323
+ await writeJsonFileAtomic(configPath, { ...existing, ...rest });
324
+ }
325
+ async listPlugins() {
326
+ // Amp doesn't have native plugin support in the same way Claude does
327
+ return [];
328
+ }
329
+ async installPlugin(_pluginId, _options) {
330
+ throw new Error('Amp does not support plugin installation via agent-mux');
331
+ }
332
+ async uninstallPlugin(_pluginId) {
333
+ throw new Error('Amp does not support plugin uninstallation via agent-mux');
334
+ }
335
+ }
336
+ //# sourceMappingURL=amp-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp-adapter.js","sourceRoot":"","sources":["../src/amp-adapter.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,43 @@
3
3
  * home directory and return the first one that exists.
4
4
  */
5
5
  export declare function findExistingAuthFile(candidates: string[]): Promise<string | null>;
6
+ export type AuthMethod = 'api_key' | 'oauth' | 'config_file';
7
+ export interface AuthIdentityInfo {
8
+ filePath: string;
9
+ identity: string;
10
+ method: AuthMethod;
11
+ hasRefreshToken?: boolean;
12
+ expiresAt?: number;
13
+ }
14
+ /**
15
+ * Best-effort decode of a JWT payload (no signature verification). Returns
16
+ * the parsed payload object, or null if the input doesn't look like a JWT.
17
+ */
18
+ export declare function decodeJwtPayload(jwt: string): Record<string, unknown> | null;
19
+ /**
20
+ * Inspect a parsed auth-config object and return a best-effort identity +
21
+ * method. Recognized shapes:
22
+ *
23
+ * - Top-level api key: `{ apiKey | OPENAI_API_KEY | … }`
24
+ * - OAuth nested: `{ tokens: { access_token, refresh_token, id_token, … } }`
25
+ * - OAuth flat: `{ access_token, refresh_token, id_token, expiry_date }`
26
+ * - Email present: `{ email: "you@…" }` or JWT id_token containing email
27
+ */
28
+ export declare function parseAuthConfig(parsed: unknown, tokenKeys?: string[]): {
29
+ identity: string | null;
30
+ method: AuthMethod;
31
+ hasRefreshToken: boolean;
32
+ expiresAt?: number;
33
+ };
6
34
  /**
7
35
  * Read an agent auth config file (if present) and attempt to extract a
8
- * recognizable token/email identity. Returns null if no candidate exists.
36
+ * recognizable identity. Returns null if no candidate exists.
9
37
  */
10
- export declare function readAuthConfigIdentity(candidates: string[], tokenKeys?: string[]): Promise<{
11
- filePath: string;
12
- identity: string;
13
- } | null>;
38
+ export declare function readAuthConfigIdentity(candidates: string[], tokenKeys?: string[]): Promise<AuthIdentityInfo | null>;
39
+ /**
40
+ * Probe the OS keychain (via optional `keytar`) for a credential. Returns
41
+ * null when keytar is not installed, the lookup fails, or no entry exists.
42
+ * Never throws — keytar is treated as a soft optional dependency.
43
+ */
44
+ export declare function tryKeychainLookup(service: string, account: string): Promise<string | null>;
14
45
  //# sourceMappingURL=auth-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcvF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,GAAE,MAAM,EAAoF,GACpG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAmBxD"}
1
+ {"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcvF;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAW5E;AAQD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,MAAM,EAAuB,GACvC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAmD/F;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAyBlC;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB"}
@@ -22,31 +22,146 @@ export async function findExistingAuthFile(candidates) {
22
22
  }
23
23
  return null;
24
24
  }
25
+ const DEFAULT_TOKEN_KEYS = [
26
+ 'apiKey',
27
+ 'api_key',
28
+ 'OPENAI_API_KEY',
29
+ 'ANTHROPIC_API_KEY',
30
+ 'GEMINI_API_KEY',
31
+ 'token',
32
+ 'accessToken',
33
+ 'access_token',
34
+ ];
35
+ /**
36
+ * Best-effort decode of a JWT payload (no signature verification). Returns
37
+ * the parsed payload object, or null if the input doesn't look like a JWT.
38
+ */
39
+ export function decodeJwtPayload(jwt) {
40
+ const parts = jwt.split('.');
41
+ if (parts.length < 2)
42
+ return null;
43
+ try {
44
+ const payloadB64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
45
+ const padded = payloadB64 + '='.repeat((4 - (payloadB64.length % 4)) % 4);
46
+ const json = Buffer.from(padded, 'base64').toString('utf8');
47
+ return JSON.parse(json);
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ function pickString(obj, key) {
54
+ if (!obj || typeof obj !== 'object')
55
+ return undefined;
56
+ const v = obj[key];
57
+ return typeof v === 'string' ? v : undefined;
58
+ }
59
+ /**
60
+ * Inspect a parsed auth-config object and return a best-effort identity +
61
+ * method. Recognized shapes:
62
+ *
63
+ * - Top-level api key: `{ apiKey | OPENAI_API_KEY | … }`
64
+ * - OAuth nested: `{ tokens: { access_token, refresh_token, id_token, … } }`
65
+ * - OAuth flat: `{ access_token, refresh_token, id_token, expiry_date }`
66
+ * - Email present: `{ email: "you@…" }` or JWT id_token containing email
67
+ */
68
+ export function parseAuthConfig(parsed, tokenKeys = DEFAULT_TOKEN_KEYS) {
69
+ if (!parsed || typeof parsed !== 'object') {
70
+ return { identity: null, method: 'config_file', hasRefreshToken: false };
71
+ }
72
+ const obj = parsed;
73
+ const nestedTokens = (obj['tokens'] && typeof obj['tokens'] === 'object')
74
+ ? obj['tokens']
75
+ : null;
76
+ const idToken = pickString(nestedTokens, 'id_token') ?? pickString(obj, 'id_token');
77
+ const accessToken = pickString(nestedTokens, 'access_token') ?? pickString(obj, 'access_token');
78
+ const refreshToken = pickString(nestedTokens, 'refresh_token') ?? pickString(obj, 'refresh_token');
79
+ const expiryDate = (() => {
80
+ const v = obj['expiry_date'] ?? obj['expiresAt'] ?? obj['expires_at'];
81
+ return typeof v === 'number' ? v : undefined;
82
+ })();
83
+ let identity = null;
84
+ if (idToken) {
85
+ const payload = decodeJwtPayload(idToken);
86
+ const email = payload && typeof payload['email'] === 'string' ? payload['email'] : null;
87
+ const sub = payload && typeof payload['sub'] === 'string' ? payload['sub'] : null;
88
+ if (email)
89
+ identity = email;
90
+ else if (sub)
91
+ identity = `sub:${sub.slice(0, 8)}`;
92
+ }
93
+ if (!identity && typeof obj['email'] === 'string') {
94
+ identity = obj['email'];
95
+ }
96
+ if (refreshToken || accessToken || idToken) {
97
+ if (!identity && accessToken && accessToken.length > 4) {
98
+ identity = `oauth:...${accessToken.slice(-4)}`;
99
+ }
100
+ return {
101
+ identity,
102
+ method: 'oauth',
103
+ hasRefreshToken: Boolean(refreshToken),
104
+ ...(expiryDate !== undefined ? { expiresAt: expiryDate } : {}),
105
+ };
106
+ }
107
+ for (const k of tokenKeys) {
108
+ const v = obj[k];
109
+ if (typeof v === 'string' && v.length > 4) {
110
+ return { identity: identity ?? `...${v.slice(-4)}`, method: 'api_key', hasRefreshToken: false };
111
+ }
112
+ }
113
+ return { identity, method: 'config_file', hasRefreshToken: false };
114
+ }
25
115
  /**
26
116
  * Read an agent auth config file (if present) and attempt to extract a
27
- * recognizable token/email identity. Returns null if no candidate exists.
117
+ * recognizable identity. Returns null if no candidate exists.
28
118
  */
29
- export async function readAuthConfigIdentity(candidates, tokenKeys = ['apiKey', 'api_key', 'OPENAI_API_KEY', 'token', 'accessToken', 'access_token']) {
119
+ export async function readAuthConfigIdentity(candidates, tokenKeys) {
30
120
  const filePath = await findExistingAuthFile(candidates);
31
121
  if (!filePath)
32
122
  return null;
33
123
  let identity = path.basename(filePath);
124
+ let method = 'config_file';
125
+ let hasRefreshToken = false;
126
+ let expiresAt;
34
127
  try {
35
128
  const raw = await fsp.readFile(filePath, 'utf8');
36
129
  const parsed = JSON.parse(raw);
37
- for (const k of tokenKeys) {
38
- const v = parsed[k];
39
- if (typeof v === 'string' && v.length > 4) {
40
- identity = `...${v.slice(-4)}`;
41
- break;
42
- }
43
- }
44
- if (typeof parsed['email'] === 'string')
45
- identity = parsed['email'];
130
+ const info = parseAuthConfig(parsed, tokenKeys);
131
+ if (info.identity)
132
+ identity = info.identity;
133
+ method = info.method;
134
+ hasRefreshToken = info.hasRefreshToken;
135
+ if (info.expiresAt !== undefined)
136
+ expiresAt = info.expiresAt;
46
137
  }
47
138
  catch {
48
139
  // opaque file; keep the basename identity
49
140
  }
50
- return { filePath, identity };
141
+ return {
142
+ filePath,
143
+ identity,
144
+ method,
145
+ hasRefreshToken,
146
+ ...(expiresAt !== undefined ? { expiresAt } : {}),
147
+ };
148
+ }
149
+ /**
150
+ * Probe the OS keychain (via optional `keytar`) for a credential. Returns
151
+ * null when keytar is not installed, the lookup fails, or no entry exists.
152
+ * Never throws — keytar is treated as a soft optional dependency.
153
+ */
154
+ export async function tryKeychainLookup(service, account) {
155
+ try {
156
+ const dynamicImport = new Function('m', 'return import(m)');
157
+ const mod = (await dynamicImport('keytar').catch(() => null));
158
+ if (!mod || typeof mod.getPassword !== 'function')
159
+ return null;
160
+ const v = await mod.getPassword(service, account);
161
+ return v ?? null;
162
+ }
163
+ catch {
164
+ return null;
165
+ }
51
166
  }
52
167
  //# sourceMappingURL=auth-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-config.js","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,GAAG,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,MAAM,EAAE;gBAAE,OAAO,GAAG,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAoB,EACpB,YAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC;IAErG,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ;YAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAW,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"auth-config.js","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CostRecord, Spawner } from '@a5c-ai/agent-mux-core';
2
+ /**
3
+ * Default Spawner that runs the command via `child_process.spawn`, capturing
4
+ * stdout/stderr. `shell: false`, `windowsHide: true`.
5
+ */
6
+ export declare const defaultSpawner: Spawner;
7
+ export declare function assembleCostRecord(raw: unknown): CostRecord | null;
8
+ //# sourceMappingURL=base-adapter-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter-helpers.d.ts","sourceRoot":"","sources":["../src/base-adapter-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAiBzB,CAAC;AAEL,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CA2BlE"}