@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.
- package/dist/amp-adapter.d.ts +31 -0
- package/dist/amp-adapter.d.ts.map +1 -0
- package/dist/amp-adapter.js +336 -0
- package/dist/amp-adapter.js.map +1 -0
- package/dist/auth-config.d.ts +36 -5
- package/dist/auth-config.d.ts.map +1 -1
- package/dist/auth-config.js +127 -12
- package/dist/auth-config.js.map +1 -1
- package/dist/base-adapter-helpers.d.ts +8 -0
- package/dist/base-adapter-helpers.d.ts.map +1 -0
- package/dist/base-adapter-helpers.js +68 -0
- package/dist/base-adapter-helpers.js.map +1 -0
- package/dist/base-adapter.d.ts +14 -9
- package/dist/base-adapter.d.ts.map +1 -1
- package/dist/base-adapter.js +23 -66
- package/dist/base-adapter.js.map +1 -1
- package/dist/claude-adapter.d.ts.map +1 -1
- package/dist/claude-adapter.js +5 -2
- package/dist/claude-adapter.js.map +1 -1
- package/dist/claude-agent-sdk-adapter.d.ts +53 -0
- package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
- package/dist/claude-agent-sdk-adapter.js +607 -0
- package/dist/claude-agent-sdk-adapter.js.map +1 -0
- package/dist/codex-adapter.d.ts.map +1 -1
- package/dist/codex-adapter.js +100 -12
- package/dist/codex-adapter.js.map +1 -1
- package/dist/codex-sdk-adapter.d.ts +32 -0
- package/dist/codex-sdk-adapter.d.ts.map +1 -0
- package/dist/codex-sdk-adapter.js +384 -0
- package/dist/codex-sdk-adapter.js.map +1 -0
- package/dist/codex-sdk-mocks.d.ts +51 -0
- package/dist/codex-sdk-mocks.d.ts.map +1 -0
- package/dist/codex-sdk-mocks.js +97 -0
- package/dist/codex-sdk-mocks.js.map +1 -0
- package/dist/codex-websocket-adapter.d.ts +41 -0
- package/dist/codex-websocket-adapter.d.ts.map +1 -0
- package/dist/codex-websocket-adapter.js +289 -0
- package/dist/codex-websocket-adapter.js.map +1 -0
- package/dist/codex-websocket-connection.d.ts +58 -0
- package/dist/codex-websocket-connection.d.ts.map +1 -0
- package/dist/codex-websocket-connection.js +244 -0
- package/dist/codex-websocket-connection.js.map +1 -0
- package/dist/copilot-adapter.d.ts.map +1 -1
- package/dist/copilot-adapter.js +7 -3
- package/dist/copilot-adapter.js.map +1 -1
- package/dist/cursor-adapter.d.ts.map +1 -1
- package/dist/cursor-adapter.js +11 -4
- package/dist/cursor-adapter.js.map +1 -1
- package/dist/droid-adapter.d.ts +30 -0
- package/dist/droid-adapter.d.ts.map +1 -0
- package/dist/droid-adapter.js +377 -0
- package/dist/droid-adapter.js.map +1 -0
- package/dist/gemini-adapter.d.ts.map +1 -1
- package/dist/gemini-adapter.js +6 -3
- package/dist/gemini-adapter.js.map +1 -1
- package/dist/hermes-adapter.d.ts.map +1 -1
- package/dist/hermes-adapter.js +6 -2
- package/dist/hermes-adapter.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/mocks/index.d.ts +60 -0
- package/dist/mocks/index.d.ts.map +1 -0
- package/dist/mocks/index.js +203 -0
- package/dist/mocks/index.js.map +1 -0
- package/dist/mocks/mock-types.d.ts +260 -0
- package/dist/mocks/mock-types.d.ts.map +1 -0
- package/dist/mocks/mock-types.js +12 -0
- package/dist/mocks/mock-types.js.map +1 -0
- package/dist/mocks/programmatic-mocks.d.ts +50 -0
- package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
- package/dist/mocks/programmatic-mocks.js +330 -0
- package/dist/mocks/programmatic-mocks.js.map +1 -0
- package/dist/mocks/remote-mocks.d.ts +52 -0
- package/dist/mocks/remote-mocks.d.ts.map +1 -0
- package/dist/mocks/remote-mocks.js +436 -0
- package/dist/mocks/remote-mocks.js.map +1 -0
- package/dist/omp-adapter.d.ts.map +1 -1
- package/dist/omp-adapter.js +6 -3
- package/dist/omp-adapter.js.map +1 -1
- package/dist/openclaw-adapter.d.ts.map +1 -1
- package/dist/openclaw-adapter.js +6 -3
- package/dist/openclaw-adapter.js.map +1 -1
- package/dist/opencode-adapter.d.ts +2 -2
- package/dist/opencode-adapter.d.ts.map +1 -1
- package/dist/opencode-adapter.js +173 -61
- package/dist/opencode-adapter.js.map +1 -1
- package/dist/opencode-http-adapter.d.ts +41 -0
- package/dist/opencode-http-adapter.d.ts.map +1 -0
- package/dist/opencode-http-adapter.js +370 -0
- package/dist/opencode-http-adapter.js.map +1 -0
- package/dist/opencode-http-connection.d.ts +33 -0
- package/dist/opencode-http-connection.d.ts.map +1 -0
- package/dist/opencode-http-connection.js +198 -0
- package/dist/opencode-http-connection.js.map +1 -0
- package/dist/pi-adapter.d.ts.map +1 -1
- package/dist/pi-adapter.js +5 -2
- package/dist/pi-adapter.js.map +1 -1
- package/dist/pi-sdk-adapter.d.ts +46 -0
- package/dist/pi-sdk-adapter.d.ts.map +1 -0
- package/dist/pi-sdk-adapter.js +549 -0
- package/dist/pi-sdk-adapter.js.map +1 -0
- package/dist/programmatic-adapter-base.d.ts +88 -0
- package/dist/programmatic-adapter-base.d.ts.map +1 -0
- package/dist/programmatic-adapter-base.js +169 -0
- package/dist/programmatic-adapter-base.js.map +1 -0
- package/dist/qwen-adapter.d.ts.map +1 -1
- package/dist/qwen-adapter.js +5 -2
- package/dist/qwen-adapter.js.map +1 -1
- package/dist/remote-adapter-base.d.ts +85 -0
- package/dist/remote-adapter-base.d.ts.map +1 -0
- package/dist/remote-adapter-base.js +102 -0
- package/dist/remote-adapter-base.js.map +1 -0
- 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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"}
|
package/dist/auth-config.d.ts
CHANGED
|
@@ -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
|
|
36
|
+
* recognizable identity. Returns null if no candidate exists.
|
|
9
37
|
*/
|
|
10
|
-
export declare function readAuthConfigIdentity(candidates: string[], tokenKeys?: string[]): Promise<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
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"}
|
package/dist/auth-config.js
CHANGED
|
@@ -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
|
|
117
|
+
* recognizable identity. Returns null if no candidate exists.
|
|
28
118
|
*/
|
|
29
|
-
export async function readAuthConfigIdentity(candidates, tokenKeys
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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 {
|
|
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
|
package/dist/auth-config.js.map
CHANGED
|
@@ -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;
|
|
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"}
|