@a5c-ai/adapters-codecs 5.1.1-staging.00ceebd28cf2
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/LICENSE +21 -0
- package/README.md +28 -0
- package/dist/adapter-install.d.ts +20 -0
- package/dist/adapter-install.d.ts.map +1 -0
- package/dist/adapter-install.js +134 -0
- package/dist/adapter-install.js.map +1 -0
- package/dist/adapters-remote-adapter.d.ts +66 -0
- package/dist/adapters-remote-adapter.d.ts.map +1 -0
- package/dist/adapters-remote-adapter.js +292 -0
- package/dist/adapters-remote-adapter.js.map +1 -0
- package/dist/amp-adapter.d.ts +32 -0
- package/dist/amp-adapter.d.ts.map +1 -0
- package/dist/amp-adapter.js +417 -0
- package/dist/amp-adapter.js.map +1 -0
- package/dist/auth-config.d.ts +44 -0
- package/dist/auth-config.d.ts.map +1 -0
- package/dist/auth-config.js +167 -0
- package/dist/auth-config.js.map +1 -0
- package/dist/babysitter-adapter.d.ts +29 -0
- package/dist/babysitter-adapter.d.ts.map +1 -0
- package/dist/babysitter-adapter.js +335 -0
- package/dist/babysitter-adapter.js.map +1 -0
- package/dist/base-adapter-helpers.d.ts +7 -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 +157 -0
- package/dist/base-adapter.d.ts.map +1 -0
- package/dist/base-adapter.js +552 -0
- package/dist/base-adapter.js.map +1 -0
- package/dist/claude-adapter.d.ts +63 -0
- package/dist/claude-adapter.d.ts.map +1 -0
- package/dist/claude-adapter.js +546 -0
- package/dist/claude-adapter.js.map +1 -0
- package/dist/claude-agent-sdk-adapter.d.ts +40 -0
- package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
- package/dist/claude-agent-sdk-adapter.js +843 -0
- package/dist/claude-agent-sdk-adapter.js.map +1 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts +11 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.js +153 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.js.map +1 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts +9 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.js +89 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.js.map +1 -0
- package/dist/claude-code/runtime-hooks/lifecycle.d.ts +2 -0
- package/dist/claude-code/runtime-hooks/lifecycle.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/lifecycle.js +24 -0
- package/dist/claude-code/runtime-hooks/lifecycle.js.map +1 -0
- package/dist/claude-remote-control-adapter.d.ts +43 -0
- package/dist/claude-remote-control-adapter.d.ts.map +1 -0
- package/dist/claude-remote-control-adapter.js +509 -0
- package/dist/claude-remote-control-adapter.js.map +1 -0
- package/dist/codex-adapter.d.ts +26 -0
- package/dist/codex-adapter.d.ts.map +1 -0
- package/dist/codex-adapter.js +336 -0
- package/dist/codex-adapter.js.map +1 -0
- 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 +392 -0
- package/dist/codex-sdk-adapter.js.map +1 -0
- package/dist/codex-sdk-mocks.d.ts +50 -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 +34 -0
- package/dist/codex-websocket-adapter.d.ts.map +1 -0
- package/dist/codex-websocket-adapter.js +402 -0
- package/dist/codex-websocket-adapter.js.map +1 -0
- package/dist/codex-websocket-connection.d.ts +77 -0
- package/dist/codex-websocket-connection.d.ts.map +1 -0
- package/dist/codex-websocket-connection.js +733 -0
- package/dist/codex-websocket-connection.js.map +1 -0
- package/dist/copilot-adapter.d.ts +27 -0
- package/dist/copilot-adapter.d.ts.map +1 -0
- package/dist/copilot-adapter.js +224 -0
- package/dist/copilot-adapter.js.map +1 -0
- package/dist/cursor-adapter.d.ts +32 -0
- package/dist/cursor-adapter.d.ts.map +1 -0
- package/dist/cursor-adapter.js +239 -0
- package/dist/cursor-adapter.js.map +1 -0
- package/dist/droid-adapter.d.ts +32 -0
- package/dist/droid-adapter.d.ts.map +1 -0
- package/dist/droid-adapter.js +383 -0
- package/dist/droid-adapter.js.map +1 -0
- package/dist/gemini-adapter.d.ts +38 -0
- package/dist/gemini-adapter.d.ts.map +1 -0
- package/dist/gemini-adapter.js +270 -0
- package/dist/gemini-adapter.js.map +1 -0
- package/dist/hermes-adapter.d.ts +33 -0
- package/dist/hermes-adapter.d.ts.map +1 -0
- package/dist/hermes-adapter.js +269 -0
- package/dist/hermes-adapter.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-plugins.d.ts +14 -0
- package/dist/mcp-plugins.d.ts.map +1 -0
- package/dist/mcp-plugins.js +97 -0
- package/dist/mcp-plugins.js.map +1 -0
- package/dist/omp-adapter.d.ts +26 -0
- package/dist/omp-adapter.d.ts.map +1 -0
- package/dist/omp-adapter.js +203 -0
- package/dist/omp-adapter.js.map +1 -0
- package/dist/openclaw-adapter.d.ts +32 -0
- package/dist/openclaw-adapter.d.ts.map +1 -0
- package/dist/openclaw-adapter.js +220 -0
- package/dist/openclaw-adapter.js.map +1 -0
- package/dist/opencode-adapter.d.ts +32 -0
- package/dist/opencode-adapter.d.ts.map +1 -0
- package/dist/opencode-adapter.js +315 -0
- package/dist/opencode-adapter.js.map +1 -0
- package/dist/opencode-http-adapter.d.ts +43 -0
- package/dist/opencode-http-adapter.d.ts.map +1 -0
- package/dist/opencode-http-adapter.js +378 -0
- package/dist/opencode-http-adapter.js.map +1 -0
- package/dist/opencode-http-connection.d.ts +32 -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 +26 -0
- package/dist/pi-adapter.d.ts.map +1 -0
- package/dist/pi-adapter.js +204 -0
- package/dist/pi-adapter.js.map +1 -0
- 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 +557 -0
- package/dist/pi-sdk-adapter.js.map +1 -0
- package/dist/programmatic-adapter-base.d.ts +87 -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/provider-translation.d.ts +9 -0
- package/dist/provider-translation.d.ts.map +1 -0
- package/dist/provider-translation.js +2 -0
- package/dist/provider-translation.js.map +1 -0
- package/dist/qwen-adapter.d.ts +38 -0
- package/dist/qwen-adapter.d.ts.map +1 -0
- package/dist/qwen-adapter.js +269 -0
- package/dist/qwen-adapter.js.map +1 -0
- package/dist/remote-adapter-base.d.ts +84 -0
- package/dist/remote-adapter-base.d.ts.map +1 -0
- package/dist/remote-adapter-base.js +100 -0
- package/dist/remote-adapter-base.js.map +1 -0
- package/dist/session-fs.d.ts +89 -0
- package/dist/session-fs.d.ts.map +1 -0
- package/dist/session-fs.js +722 -0
- package/dist/session-fs.js.map +1 -0
- package/dist/shared/runtime-hooks-virtual.d.ts +2 -0
- package/dist/shared/runtime-hooks-virtual.d.ts.map +1 -0
- package/dist/shared/runtime-hooks-virtual.js +13 -0
- package/dist/shared/runtime-hooks-virtual.js.map +1 -0
- package/dist/translate-for-harness.d.ts +8 -0
- package/dist/translate-for-harness.d.ts.map +1 -0
- package/dist/translate-for-harness.js +89 -0
- package/dist/translate-for-harness.js.map +1 -0
- package/dist/translations/claude-translation.d.ts +3 -0
- package/dist/translations/claude-translation.d.ts.map +1 -0
- package/dist/translations/claude-translation.js +53 -0
- package/dist/translations/claude-translation.js.map +1 -0
- package/dist/translations/codex-translation.d.ts +3 -0
- package/dist/translations/codex-translation.d.ts.map +1 -0
- package/dist/translations/codex-translation.js +54 -0
- package/dist/translations/codex-translation.js.map +1 -0
- package/dist/translations/gemini-translation.d.ts +3 -0
- package/dist/translations/gemini-translation.d.ts.map +1 -0
- package/dist/translations/gemini-translation.js +45 -0
- package/dist/translations/gemini-translation.js.map +1 -0
- package/dist/translations/generic-openai-translation.d.ts +3 -0
- package/dist/translations/generic-openai-translation.d.ts.map +1 -0
- package/dist/translations/generic-openai-translation.js +47 -0
- package/dist/translations/generic-openai-translation.js.map +1 -0
- package/dist/translations/opencode-translation.d.ts +3 -0
- package/dist/translations/opencode-translation.d.ts.map +1 -0
- package/dist/translations/opencode-translation.js +48 -0
- package/dist/translations/opencode-translation.js.map +1 -0
- package/dist/translations/pi-translation.d.ts +3 -0
- package/dist/translations/pi-translation.d.ts.map +1 -0
- package/dist/translations/pi-translation.js +43 -0
- package/dist/translations/pi-translation.js.map +1 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 a5c-ai
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @a5c-ai/adapters-codecs
|
|
2
|
+
|
|
3
|
+
Built-in agent adapters for [adapters](https://github.com/a5c-ai/adapters): `claude`, `claude-agent-sdk`, `codex`, `codex-sdk`, `codex-websocket`, `gemini`, `copilot`, `cursor`, `opencode`, `opencode-http`, `pi`, `pi-sdk`, `omp`, `openclaw`, `hermes`, `amp`, `droid`, `qwen`, plus a remote `adapters` adapter.
|
|
4
|
+
|
|
5
|
+
Mock infrastructure is not part of this package anymore. Import subprocess, SDK, HTTP, and WebSocket mocks from `@a5c-ai/adapters-harness-mock`.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @a5c-ai/adapters-codecs @a5c-ai/comm-adapter
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Node.js >= 20.9.0. ESM-only.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { registerBuiltinAdapters } from '@a5c-ai/adapters-codecs';
|
|
19
|
+
import { defaultRegistry } from '@a5c-ai/comm-adapter';
|
|
20
|
+
|
|
21
|
+
registerBuiltinAdapters(defaultRegistry);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
See the [repository README](https://github.com/a5c-ai/adapters#readme) for full documentation.
|
|
25
|
+
|
|
26
|
+
## License
|
|
27
|
+
|
|
28
|
+
MIT © a5c-ai
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install/update helpers for BaseAgentAdapter.
|
|
3
|
+
*
|
|
4
|
+
* The install and update flows share the "pick method → resolve command →
|
|
5
|
+
* spawn → re-detect" skeleton. Extracted here so the base class stays
|
|
6
|
+
* small; no behavior change.
|
|
7
|
+
*/
|
|
8
|
+
import type { AdapterInstallOptions, AdapterUpdateOptions, DetectInstallationResult, InstallMethod, InstallResult, Spawner } from '@a5c-ai/comm-adapter';
|
|
9
|
+
/** Collaborators the helpers need from the adapter. */
|
|
10
|
+
export interface InstallContext {
|
|
11
|
+
readonly cliCommand: string;
|
|
12
|
+
readonly displayName: string;
|
|
13
|
+
readonly spawner: Spawner;
|
|
14
|
+
detectInstallation(): Promise<DetectInstallationResult>;
|
|
15
|
+
pickInstallMethod(): InstallMethod | undefined;
|
|
16
|
+
applyVersionToCommand(method: InstallMethod, version?: string): string;
|
|
17
|
+
deriveUpdateCommand(method: InstallMethod): string | null;
|
|
18
|
+
}
|
|
19
|
+
export declare function runInstall(ctx: InstallContext, opts: AdapterInstallOptions): Promise<InstallResult>;
|
|
20
|
+
export declare function runUpdate(ctx: InstallContext, opts: AdapterUpdateOptions): Promise<InstallResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-install.d.ts","sourceRoot":"","sources":["../src/adapter-install.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,OAAO,EACR,MAAM,sBAAsB,CAAC;AAE9B,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxD,iBAAiB,IAAI,aAAa,GAAG,SAAS,CAAC;IAC/C,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC;CAC3D;AA4DD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,CAAC,CA8CxB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install/update helpers for BaseAgentAdapter.
|
|
3
|
+
*
|
|
4
|
+
* The install and update flows share the "pick method → resolve command →
|
|
5
|
+
* spawn → re-detect" skeleton. Extracted here so the base class stays
|
|
6
|
+
* small; no behavior change.
|
|
7
|
+
*/
|
|
8
|
+
import * as os from 'node:os';
|
|
9
|
+
/** Returns true when a command string contains shell operators (pipe, &&, etc.). */
|
|
10
|
+
function needsShell(command) {
|
|
11
|
+
return /[|&;><]/.test(command);
|
|
12
|
+
}
|
|
13
|
+
async function executeCommand(ctx, method, command) {
|
|
14
|
+
let cmd;
|
|
15
|
+
let argv;
|
|
16
|
+
if (needsShell(command)) {
|
|
17
|
+
// The command contains shell operators (e.g. "curl ... | bash").
|
|
18
|
+
// Spawner uses shell:false, so we wrap in an explicit shell invocation.
|
|
19
|
+
if (os.platform() === 'win32') {
|
|
20
|
+
cmd = 'cmd';
|
|
21
|
+
argv = ['/c', command];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
cmd = 'sh';
|
|
25
|
+
argv = ['-c', command];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const parts = command.split(/\s+/).filter(Boolean);
|
|
30
|
+
[cmd, ...argv] = parts;
|
|
31
|
+
}
|
|
32
|
+
let runResult;
|
|
33
|
+
try {
|
|
34
|
+
runResult = await ctx.spawner(cmd, argv);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
method: method.type,
|
|
40
|
+
command,
|
|
41
|
+
stderr: err instanceof Error ? err.message : String(err),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const ok = runResult.code === 0;
|
|
45
|
+
let installedVersion;
|
|
46
|
+
if (ok) {
|
|
47
|
+
const det = await ctx.detectInstallation().catch(() => null);
|
|
48
|
+
if (det?.version)
|
|
49
|
+
installedVersion = det.version;
|
|
50
|
+
}
|
|
51
|
+
const result = {
|
|
52
|
+
ok,
|
|
53
|
+
method: method.type,
|
|
54
|
+
command,
|
|
55
|
+
stdout: runResult.stdout,
|
|
56
|
+
stderr: runResult.stderr,
|
|
57
|
+
};
|
|
58
|
+
if (installedVersion)
|
|
59
|
+
result.installedVersion = installedVersion;
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
export async function runInstall(ctx, opts) {
|
|
63
|
+
if (!opts.force && !opts.dryRun) {
|
|
64
|
+
const existing = await ctx.detectInstallation();
|
|
65
|
+
if (existing.installed) {
|
|
66
|
+
const r = {
|
|
67
|
+
ok: true,
|
|
68
|
+
method: 'already-installed',
|
|
69
|
+
command: '',
|
|
70
|
+
message: `${ctx.cliCommand} is already installed${existing.version ? ` (${existing.version})` : ''}`,
|
|
71
|
+
};
|
|
72
|
+
if (existing.version)
|
|
73
|
+
r.installedVersion = existing.version;
|
|
74
|
+
return r;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const method = ctx.pickInstallMethod();
|
|
78
|
+
if (!method) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
method: 'none',
|
|
82
|
+
command: '',
|
|
83
|
+
message: `No compatible install method for platform ${os.platform()}`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (method.type === 'manual') {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
method: 'manual',
|
|
90
|
+
command: method.command,
|
|
91
|
+
message: `${ctx.displayName} must be installed manually: ${method.command}`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const command = ctx.applyVersionToCommand(method, opts.version);
|
|
95
|
+
if (opts.dryRun) {
|
|
96
|
+
return {
|
|
97
|
+
ok: true,
|
|
98
|
+
method: method.type,
|
|
99
|
+
command,
|
|
100
|
+
message: `[dry-run] would execute: ${command}`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return executeCommand(ctx, method, command);
|
|
104
|
+
}
|
|
105
|
+
export async function runUpdate(ctx, opts) {
|
|
106
|
+
const method = ctx.pickInstallMethod();
|
|
107
|
+
if (!method) {
|
|
108
|
+
return {
|
|
109
|
+
ok: false,
|
|
110
|
+
method: 'none',
|
|
111
|
+
command: '',
|
|
112
|
+
message: `No compatible update method for platform ${os.platform()}`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const command = ctx.deriveUpdateCommand(method);
|
|
116
|
+
if (!command) {
|
|
117
|
+
return {
|
|
118
|
+
ok: false,
|
|
119
|
+
method: method.type,
|
|
120
|
+
command: method.command,
|
|
121
|
+
message: `Update not supported for method "${method.type}". Install command: ${method.command}`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (opts.dryRun) {
|
|
125
|
+
return {
|
|
126
|
+
ok: true,
|
|
127
|
+
method: method.type,
|
|
128
|
+
command,
|
|
129
|
+
message: `[dry-run] would execute: ${command}`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return executeCommand(ctx, method, command);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=adapter-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-install.js","sourceRoot":"","sources":["../src/adapter-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentMuxRemoteAdapter — pass-through adapter that delegates to another
|
|
3
|
+
* `adapters` CLI installation. Transport is out of scope: this adapter emits
|
|
4
|
+
* plain `adapters run ...` spawn args, and the caller wraps them with the
|
|
5
|
+
* desired invocation mode (local/docker/ssh/k8s) via
|
|
6
|
+
* `buildInvocationCommand()`.
|
|
7
|
+
*
|
|
8
|
+
* This lets adapters nest: a local adapters invocation dispatches to a second
|
|
9
|
+
* adapters executing in a docker container, on a remote SSH host, or in a k8s
|
|
10
|
+
* pod. All structured events are forwarded verbatim — the remote `adapters run`
|
|
11
|
+
* emits JSONL which we pass through unchanged.
|
|
12
|
+
*
|
|
13
|
+
* Configuration is read from RunOptions.env:
|
|
14
|
+
* AGENT_MUX_REMOTE_AGENT — agent name to invoke on the remote (default: claude)
|
|
15
|
+
*
|
|
16
|
+
* The transport-specific bits (host, identity file, docker image, ...) live
|
|
17
|
+
* on `RunOptions.invocation` — not on this adapter.
|
|
18
|
+
*/
|
|
19
|
+
import type { AgentCapabilities, ModelCapabilities, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, SpawnArgs, ParseContext, RunOptions, AgentEvent, AgentConfig } from '@a5c-ai/comm-adapter';
|
|
20
|
+
import { BaseAgentAdapter } from './base-adapter.js';
|
|
21
|
+
export declare class AgentMuxRemoteAdapter extends BaseAgentAdapter {
|
|
22
|
+
readonly agent: string;
|
|
23
|
+
readonly displayName = "adapters (remote via invocation mode)";
|
|
24
|
+
readonly cliCommand: string;
|
|
25
|
+
readonly minVersion = "0.1.0";
|
|
26
|
+
constructor(agent?: string, cliCommand?: string);
|
|
27
|
+
readonly hostEnvSignals: readonly [];
|
|
28
|
+
readonly capabilities: AgentCapabilities;
|
|
29
|
+
readonly models: ModelCapabilities[];
|
|
30
|
+
readonly defaultModelId: undefined;
|
|
31
|
+
readonly configSchema: AgentConfigSchema;
|
|
32
|
+
/** Resolve the remote agent name (which agent to invoke inside the nested adapters). */
|
|
33
|
+
private resolveRemoteAgent;
|
|
34
|
+
/**
|
|
35
|
+
* Emit `adapters run --json --agent <agent> --prompt <...>` args.
|
|
36
|
+
*
|
|
37
|
+
* The caller is responsible for wrapping these with an invocation mode
|
|
38
|
+
* (ssh/docker/k8s) via `buildInvocationCommand()`. This keeps the adapter
|
|
39
|
+
* transport-agnostic so the same binary can be used inside a docker
|
|
40
|
+
* container, on a remote SSH host, or in a k8s pod.
|
|
41
|
+
*/
|
|
42
|
+
buildSpawnArgs(options: RunOptions): SpawnArgs;
|
|
43
|
+
parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
|
|
44
|
+
/** Detect version via the local spawner running plain `adapters --version`. */
|
|
45
|
+
detectVersion(): Promise<string | null>;
|
|
46
|
+
protected detectVersionFromCli(): Promise<string | null>;
|
|
47
|
+
detectAuth(): Promise<AuthState>;
|
|
48
|
+
getAuthGuidance(): AuthSetupGuidance;
|
|
49
|
+
sessionDir(_cwd?: string): string;
|
|
50
|
+
parseSessionFile(_filePath: string): Promise<Session>;
|
|
51
|
+
/** List remote sessions via plain `adapters sessions list --json` (transport is external). */
|
|
52
|
+
listSessionFiles(_cwd?: string): Promise<string[]>;
|
|
53
|
+
readConfig(_cwd?: string): Promise<AgentConfig>;
|
|
54
|
+
writeConfig(_config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Detect whether `adapters` is available at the current spawner scope (local or
|
|
57
|
+
* wrapped). The wrapper — docker/ssh/k8s — is applied externally.
|
|
58
|
+
*/
|
|
59
|
+
detectInstallation(): Promise<import('@a5c-ai/comm-adapter').DetectInstallationResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Install adapters via `npm install -g @a5c-ai/adapters-cli`.
|
|
62
|
+
* Transport wrapping (ssh/docker/k8s) is the caller's responsibility.
|
|
63
|
+
*/
|
|
64
|
+
install(opts?: import('@a5c-ai/comm-adapter').AdapterInstallOptions): Promise<import('@a5c-ai/comm-adapter').InstallResult>;
|
|
65
|
+
update(opts?: import('@a5c-ai/comm-adapter').AdapterUpdateOptions): Promise<import('@a5c-ai/comm-adapter').InstallResult>;
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters-remote-adapter.d.ts","sourceRoot":"","sources":["../src/adapters-remote-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,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,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,2CAA2C;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,WAAW;gBAElB,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK/C,QAAQ,CAAC,cAAc,cAAe;IAEtC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA6CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAM;IAC1C,QAAQ,CAAC,cAAc,YAAa;IAEpC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAOtC;IAEF,wFAAwF;IACxF,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAsB9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAajF,+EAA+E;IACzE,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAWpB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIjE,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAQtC,eAAe,IAAI,iBAAiB;IAiBpC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,8FAA8F;IACxF,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBlD,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;;OAGG;IACY,kBAAkB,IAAI,OAAO,CAAC,OAAO,sBAAsB,EAAE,wBAAwB,CAAC;IAqBrG;;;OAGG;IACY,OAAO,CACpB,IAAI,GAAE,OAAO,sBAAsB,EAAE,qBAA0B,GAC9D,OAAO,CAAC,OAAO,sBAAsB,EAAE,aAAa,CAAC;IAwBzC,MAAM,CACnB,IAAI,GAAE,OAAO,sBAAsB,EAAE,oBAAyB,GAC7D,OAAO,CAAC,OAAO,sBAAsB,EAAE,aAAa,CAAC;CAuBzD"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentMuxRemoteAdapter — pass-through adapter that delegates to another
|
|
3
|
+
* `adapters` CLI installation. Transport is out of scope: this adapter emits
|
|
4
|
+
* plain `adapters run ...` spawn args, and the caller wraps them with the
|
|
5
|
+
* desired invocation mode (local/docker/ssh/k8s) via
|
|
6
|
+
* `buildInvocationCommand()`.
|
|
7
|
+
*
|
|
8
|
+
* This lets adapters nest: a local adapters invocation dispatches to a second
|
|
9
|
+
* adapters executing in a docker container, on a remote SSH host, or in a k8s
|
|
10
|
+
* pod. All structured events are forwarded verbatim — the remote `adapters run`
|
|
11
|
+
* emits JSONL which we pass through unchanged.
|
|
12
|
+
*
|
|
13
|
+
* Configuration is read from RunOptions.env:
|
|
14
|
+
* AGENT_MUX_REMOTE_AGENT — agent name to invoke on the remote (default: claude)
|
|
15
|
+
*
|
|
16
|
+
* The transport-specific bits (host, identity file, docker image, ...) live
|
|
17
|
+
* on `RunOptions.invocation` — not on this adapter.
|
|
18
|
+
*/
|
|
19
|
+
import { BaseAgentAdapter } from './base-adapter.js';
|
|
20
|
+
import { createVirtualRuntimeHookCapabilities } from './shared/runtime-hooks-virtual.js';
|
|
21
|
+
export class AgentMuxRemoteAdapter extends BaseAgentAdapter {
|
|
22
|
+
agent;
|
|
23
|
+
displayName = 'adapters (remote via invocation mode)';
|
|
24
|
+
cliCommand;
|
|
25
|
+
minVersion = '0.1.0';
|
|
26
|
+
constructor(agent, cliCommand) {
|
|
27
|
+
super();
|
|
28
|
+
this.agent = agent ?? this.constructor.name.replace(/Adapter$/, '').toLowerCase().replace(/agentmuxremote/, 'adapters-remote');
|
|
29
|
+
this.cliCommand = cliCommand ?? 'adapters';
|
|
30
|
+
}
|
|
31
|
+
hostEnvSignals = [];
|
|
32
|
+
capabilities = {
|
|
33
|
+
agent: 'adapters-remote',
|
|
34
|
+
canResume: true,
|
|
35
|
+
canFork: false,
|
|
36
|
+
supportsMultiTurn: true,
|
|
37
|
+
sessionPersistence: 'none',
|
|
38
|
+
supportsTextStreaming: true,
|
|
39
|
+
supportsToolCallStreaming: true,
|
|
40
|
+
supportsThinkingStreaming: true,
|
|
41
|
+
supportsNativeTools: true,
|
|
42
|
+
supportsMCP: false,
|
|
43
|
+
supportsParallelToolCalls: true,
|
|
44
|
+
requiresToolApproval: false,
|
|
45
|
+
approvalModes: ['yolo', 'prompt', 'deny'],
|
|
46
|
+
runtimeHooks: createVirtualRuntimeHookCapabilities(),
|
|
47
|
+
supportsThinking: true,
|
|
48
|
+
thinkingEffortLevels: ['low', 'medium', 'high'],
|
|
49
|
+
supportsThinkingBudgetTokens: true,
|
|
50
|
+
supportsJsonMode: true,
|
|
51
|
+
supportsStructuredOutput: true,
|
|
52
|
+
structuredSessionTransport: 'restart-per-turn',
|
|
53
|
+
sessionControlPlane: 'external-host',
|
|
54
|
+
supportsSkills: false,
|
|
55
|
+
supportsAgentsMd: false,
|
|
56
|
+
skillsFormat: null,
|
|
57
|
+
supportsSubagentDispatch: true,
|
|
58
|
+
supportsParallelExecution: true,
|
|
59
|
+
supportsInteractiveMode: false,
|
|
60
|
+
supportsStdinInjection: true,
|
|
61
|
+
supportsImageInput: false,
|
|
62
|
+
supportsImageOutput: false,
|
|
63
|
+
supportsFileAttachments: false,
|
|
64
|
+
supportsPlugins: false,
|
|
65
|
+
pluginFormats: [],
|
|
66
|
+
pluginRegistries: [],
|
|
67
|
+
supportedPlatforms: ['darwin', 'linux', 'win32'],
|
|
68
|
+
requiresGitRepo: false,
|
|
69
|
+
requiresPty: false,
|
|
70
|
+
authMethods: [
|
|
71
|
+
{ type: 'api_key', name: 'Transport', description: 'Handled by invocation mode (local/docker/ssh/k8s).' },
|
|
72
|
+
],
|
|
73
|
+
authFiles: [],
|
|
74
|
+
installMethods: [
|
|
75
|
+
{ platform: 'all', type: 'manual', command: 'Install adapters on the target (see `adapters remote install <host>`).' },
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
models = [];
|
|
79
|
+
defaultModelId = undefined;
|
|
80
|
+
configSchema = {
|
|
81
|
+
agent: 'adapters-remote',
|
|
82
|
+
version: 1,
|
|
83
|
+
fields: [],
|
|
84
|
+
configFilePaths: [],
|
|
85
|
+
configFormat: 'json',
|
|
86
|
+
supportsProjectConfig: false,
|
|
87
|
+
};
|
|
88
|
+
/** Resolve the remote agent name (which agent to invoke inside the nested adapters). */
|
|
89
|
+
resolveRemoteAgent(options) {
|
|
90
|
+
const env = options.env ?? {};
|
|
91
|
+
return env['AGENT_MUX_REMOTE_AGENT'] ?? process.env['AGENT_MUX_REMOTE_AGENT'] ?? 'claude';
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Emit `adapters run --json --agent <agent> --prompt <...>` args.
|
|
95
|
+
*
|
|
96
|
+
* The caller is responsible for wrapping these with an invocation mode
|
|
97
|
+
* (ssh/docker/k8s) via `buildInvocationCommand()`. This keeps the adapter
|
|
98
|
+
* transport-agnostic so the same binary can be used inside a docker
|
|
99
|
+
* container, on a remote SSH host, or in a k8s pod.
|
|
100
|
+
*/
|
|
101
|
+
buildSpawnArgs(options) {
|
|
102
|
+
const remoteAgent = this.resolveRemoteAgent(options);
|
|
103
|
+
const prompt = Array.isArray(options.prompt) ? options.prompt.join('\n') : options.prompt;
|
|
104
|
+
const args = ['run', '--json', '--agent', remoteAgent, '--prompt', prompt];
|
|
105
|
+
if (options.model)
|
|
106
|
+
args.push('--model', options.model);
|
|
107
|
+
if (options.sessionId)
|
|
108
|
+
args.push('--session', options.sessionId);
|
|
109
|
+
if (options.approvalMode === 'yolo')
|
|
110
|
+
args.push('--yolo');
|
|
111
|
+
if (options.approvalMode === 'deny')
|
|
112
|
+
args.push('--deny');
|
|
113
|
+
return {
|
|
114
|
+
command: this.cliCommand,
|
|
115
|
+
args,
|
|
116
|
+
env: this.buildEnvFromOptions(options),
|
|
117
|
+
cwd: options.cwd ?? process.cwd(),
|
|
118
|
+
usePty: false,
|
|
119
|
+
timeout: options.timeout,
|
|
120
|
+
inactivityTimeout: options.inactivityTimeout,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
parseEvent(line, context) {
|
|
124
|
+
const parsed = this.parseJsonLine(line);
|
|
125
|
+
if (parsed == null || typeof parsed !== 'object')
|
|
126
|
+
return null;
|
|
127
|
+
const obj = parsed;
|
|
128
|
+
const event = { ...obj };
|
|
129
|
+
if (typeof event['runId'] !== 'string')
|
|
130
|
+
event['runId'] = context.runId;
|
|
131
|
+
if (typeof event['timestamp'] !== 'number')
|
|
132
|
+
event['timestamp'] = Date.now();
|
|
133
|
+
event['agent'] = this.agent;
|
|
134
|
+
if (typeof event['type'] !== 'string')
|
|
135
|
+
return null;
|
|
136
|
+
return event;
|
|
137
|
+
}
|
|
138
|
+
/** Detect version via the local spawner running plain `adapters --version`. */
|
|
139
|
+
async detectVersion() {
|
|
140
|
+
try {
|
|
141
|
+
const res = await this._spawner('adapters', ['--version']);
|
|
142
|
+
if (res.code !== 0)
|
|
143
|
+
return null;
|
|
144
|
+
const match = (res.stdout + '\n' + res.stderr).match(/\d+\.\d+\.\d+(?:-[\w.]+)?/);
|
|
145
|
+
return match ? match[0] : null;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async detectVersionFromCli() {
|
|
152
|
+
return this.detectVersion();
|
|
153
|
+
}
|
|
154
|
+
async detectAuth() {
|
|
155
|
+
return {
|
|
156
|
+
status: 'authenticated',
|
|
157
|
+
method: 'transport',
|
|
158
|
+
identity: 'handled by invocation mode',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
getAuthGuidance() {
|
|
162
|
+
return {
|
|
163
|
+
agent: 'adapters-remote',
|
|
164
|
+
providerName: 'adapters (remote)',
|
|
165
|
+
steps: [
|
|
166
|
+
{ step: 1, description: 'Install adapters on the target (local, remote SSH host, docker image, or k8s pod).' },
|
|
167
|
+
{ step: 2, description: 'Set RunOptions.invocation to select the transport (ssh/docker/k8s).' },
|
|
168
|
+
{ step: 3, description: 'Optionally set AGENT_MUX_REMOTE_AGENT to choose which agent the nested adapters invokes.' },
|
|
169
|
+
],
|
|
170
|
+
envVars: [
|
|
171
|
+
{ name: 'AGENT_MUX_REMOTE_AGENT', description: 'Agent to invoke on the remote (default: claude)', required: false },
|
|
172
|
+
],
|
|
173
|
+
documentationUrls: [],
|
|
174
|
+
verifyCommand: 'adapters --version',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
sessionDir(_cwd) {
|
|
178
|
+
return '';
|
|
179
|
+
}
|
|
180
|
+
async parseSessionFile(_filePath) {
|
|
181
|
+
throw new Error('adapters-remote does not store sessions locally; use `adapters sessions list` on the remote.');
|
|
182
|
+
}
|
|
183
|
+
/** List remote sessions via plain `adapters sessions list --json` (transport is external). */
|
|
184
|
+
async listSessionFiles(_cwd) {
|
|
185
|
+
try {
|
|
186
|
+
const res = await this._spawner('adapters', ['sessions', 'list', '--json']);
|
|
187
|
+
if (res.code !== 0)
|
|
188
|
+
return [];
|
|
189
|
+
const parsed = JSON.parse(res.stdout);
|
|
190
|
+
const data = Array.isArray(parsed) ? parsed : (parsed?.data ?? []);
|
|
191
|
+
if (!Array.isArray(data))
|
|
192
|
+
return [];
|
|
193
|
+
return data
|
|
194
|
+
.map((s) => {
|
|
195
|
+
if (s && typeof s === 'object') {
|
|
196
|
+
const sid = s['sessionId'] ?? s['id'];
|
|
197
|
+
return typeof sid === 'string' ? sid : null;
|
|
198
|
+
}
|
|
199
|
+
return null;
|
|
200
|
+
})
|
|
201
|
+
.filter((s) => typeof s === 'string');
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async readConfig(_cwd) {
|
|
208
|
+
return { agent: 'adapters-remote', source: 'global' };
|
|
209
|
+
}
|
|
210
|
+
async writeConfig(_config, _cwd) {
|
|
211
|
+
/* No local config to write. */
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Detect whether `adapters` is available at the current spawner scope (local or
|
|
215
|
+
* wrapped). The wrapper — docker/ssh/k8s — is applied externally.
|
|
216
|
+
*/
|
|
217
|
+
async detectInstallation() {
|
|
218
|
+
try {
|
|
219
|
+
const res = await this._spawner('adapters', ['--version']);
|
|
220
|
+
if (res.code !== 0) {
|
|
221
|
+
return { installed: false, notes: `adapters probe failed (code ${res.code})` };
|
|
222
|
+
}
|
|
223
|
+
const version = this.parseVersionOutput(res.stdout + '\n' + res.stderr);
|
|
224
|
+
const out = {
|
|
225
|
+
installed: true,
|
|
226
|
+
path: 'adapters',
|
|
227
|
+
};
|
|
228
|
+
if (version)
|
|
229
|
+
out.version = version;
|
|
230
|
+
return out;
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
return {
|
|
234
|
+
installed: false,
|
|
235
|
+
notes: err instanceof Error ? `adapters probe error: ${err.message}` : 'adapters probe error',
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Install adapters via `npm install -g @a5c-ai/adapters-cli`.
|
|
241
|
+
* Transport wrapping (ssh/docker/k8s) is the caller's responsibility.
|
|
242
|
+
*/
|
|
243
|
+
async install(opts = {}) {
|
|
244
|
+
const command = 'npm install -g @a5c-ai/adapters-cli';
|
|
245
|
+
if (opts.dryRun) {
|
|
246
|
+
return { ok: true, method: 'npm', command, message: `[dry-run] would execute: ${command}` };
|
|
247
|
+
}
|
|
248
|
+
try {
|
|
249
|
+
const res = await this._spawner('npm', ['install', '-g', '@a5c-ai/adapters-cli']);
|
|
250
|
+
return {
|
|
251
|
+
ok: res.code === 0,
|
|
252
|
+
method: 'npm',
|
|
253
|
+
command,
|
|
254
|
+
stdout: res.stdout,
|
|
255
|
+
stderr: res.stderr,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
return {
|
|
260
|
+
ok: false,
|
|
261
|
+
method: 'npm',
|
|
262
|
+
command,
|
|
263
|
+
stderr: err instanceof Error ? err.message : String(err),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async update(opts = {}) {
|
|
268
|
+
const command = 'npm update -g @a5c-ai/adapters-cli';
|
|
269
|
+
if (opts.dryRun) {
|
|
270
|
+
return { ok: true, method: 'npm', command, message: `[dry-run] would execute: ${command}` };
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
const res = await this._spawner('npm', ['update', '-g', '@a5c-ai/adapters-cli']);
|
|
274
|
+
return {
|
|
275
|
+
ok: res.code === 0,
|
|
276
|
+
method: 'npm',
|
|
277
|
+
command,
|
|
278
|
+
stdout: res.stdout,
|
|
279
|
+
stderr: res.stderr,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
return {
|
|
284
|
+
ok: false,
|
|
285
|
+
method: 'npm',
|
|
286
|
+
command,
|
|
287
|
+
stderr: err instanceof Error ? err.message : String(err),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=adapters-remote-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters-remote-adapter.js","sourceRoot":"","sources":["../src/adapters-remote-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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, AgentConfigSchema, ModelCapabilities, AuthState, AuthSetupGuidance, Session, RunOptions, SpawnArgs, ParseContext, AgentEvent, InstalledPlugin, PluginInstallOptions, AgentConfig } from '@a5c-ai/comm-adapter';
|
|
9
|
+
export declare class AmpAdapter extends BaseAgentAdapter {
|
|
10
|
+
readonly agent: string;
|
|
11
|
+
readonly displayName = "Sourcegraph Amp";
|
|
12
|
+
readonly cliCommand: string;
|
|
13
|
+
readonly minVersion = "2.0.0";
|
|
14
|
+
constructor(agent?: string, cliCommand?: string);
|
|
15
|
+
readonly hostEnvSignals: string[];
|
|
16
|
+
readonly capabilities: AgentCapabilities;
|
|
17
|
+
readonly models: ModelCapabilities[];
|
|
18
|
+
readonly defaultModelId = "amp-oracle";
|
|
19
|
+
readonly configSchema: AgentConfigSchema;
|
|
20
|
+
buildSpawnArgs(options: RunOptions): SpawnArgs;
|
|
21
|
+
parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
|
|
22
|
+
sessionDir(_cwd?: string): string;
|
|
23
|
+
parseSessionFile(filePath: string): Promise<Session>;
|
|
24
|
+
listSessionFiles(_cwd?: string): Promise<string[]>;
|
|
25
|
+
detectAuth(): Promise<AuthState>;
|
|
26
|
+
getAuthGuidance(): AuthSetupGuidance;
|
|
27
|
+
readConfig(_cwd?: string): Promise<AgentConfig>;
|
|
28
|
+
writeConfig(config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
|
|
29
|
+
listPlugins(): Promise<InstalledPlugin[]>;
|
|
30
|
+
installPlugin(_pluginId: string, _options?: PluginInstallOptions): Promise<InstalledPlugin>;
|
|
31
|
+
uninstallPlugin(_pluginId: string): Promise<void>;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amp-adapter.d.ts","sourceRoot":"","sources":["../src/amp-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EACV,iBAAiB,EACjB,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,sBAAsB,CAAC;AAU9B,qBAAa,UAAW,SAAQ,gBAAgB;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,WAAW;gBAElB,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK/C,QAAQ,CAAC,cAAc,WAAmD;IAE1E,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAsEtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAuGlC;IAEF,QAAQ,CAAC,cAAc,gBAAgB;IAEvC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAOtC;IAEF,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAuD9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAuFjF,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"}
|