@a5c-ai/adapters-cli 5.1.1-staging.52898ebfc24f
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/bootstrap.d.ts +13 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +59 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/commands/adapters.d.ts +4 -0
- package/dist/commands/adapters.d.ts.map +1 -0
- package/dist/commands/adapters.js +5 -0
- package/dist/commands/adapters.js.map +1 -0
- package/dist/commands/agent.d.ts +11 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +219 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/auth.d.ts +4 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +5 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +5 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/detect-host.d.ts +4 -0
- package/dist/commands/detect-host.d.ts.map +1 -0
- package/dist/commands/detect-host.js +5 -0
- package/dist/commands/detect-host.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +120 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/gateway/index.d.ts +5 -0
- package/dist/commands/gateway/index.d.ts.map +1 -0
- package/dist/commands/gateway/index.js +39 -0
- package/dist/commands/gateway/index.js.map +1 -0
- package/dist/commands/gateway/serve.d.ts +5 -0
- package/dist/commands/gateway/serve.d.ts.map +1 -0
- package/dist/commands/gateway/serve.js +76 -0
- package/dist/commands/gateway/serve.js.map +1 -0
- package/dist/commands/gateway/status.d.ts +2 -0
- package/dist/commands/gateway/status.d.ts.map +1 -0
- package/dist/commands/gateway/status.js +24 -0
- package/dist/commands/gateway/status.js.map +1 -0
- package/dist/commands/gateway/tokens.d.ts +2 -0
- package/dist/commands/gateway/tokens.d.ts.map +1 -0
- package/dist/commands/gateway/tokens.js +85 -0
- package/dist/commands/gateway/tokens.js.map +1 -0
- package/dist/commands/help.d.ts +13 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +501 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/hooks.d.ts +16 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +207 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/install-helpers.d.ts +5 -0
- package/dist/commands/install-helpers.d.ts.map +1 -0
- package/dist/commands/install-helpers.js +5 -0
- package/dist/commands/install-helpers.js.map +1 -0
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +5 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/launch-bridge-hooks.d.ts +8 -0
- package/dist/commands/launch-bridge-hooks.d.ts.map +1 -0
- package/dist/commands/launch-bridge-hooks.js +8 -0
- package/dist/commands/launch-bridge-hooks.js.map +1 -0
- package/dist/commands/launch-completion-engine.d.ts +7 -0
- package/dist/commands/launch-completion-engine.d.ts.map +1 -0
- package/dist/commands/launch-completion-engine.js +8 -0
- package/dist/commands/launch-completion-engine.js.map +1 -0
- package/dist/commands/launch.d.ts +8 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +8 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +93 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/models.d.ts +8 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +306 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/plugin.d.ts +3 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +96 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/profiles.d.ts +8 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +206 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/remote.d.ts +30 -0
- package/dist/commands/remote.d.ts.map +1 -0
- package/dist/commands/remote.js +204 -0
- package/dist/commands/remote.js.map +1 -0
- package/dist/commands/run.d.ts +27 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +355 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/sessions.d.ts +8 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +225 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/skill.d.ts +10 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +217 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/tui.d.ts +3 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +57 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/workspaces.d.ts +4 -0
- package/dist/commands/workspaces.d.ts.map +1 -0
- package/dist/commands/workspaces.js +187 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/exit-codes.d.ts +32 -0
- package/dist/exit-codes.d.ts.map +1 -0
- package/dist/exit-codes.js +68 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +216 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +23 -0
- package/dist/index.test.js.map +1 -0
- package/dist/lib/agent-capabilities.d.ts +6 -0
- package/dist/lib/agent-capabilities.d.ts.map +1 -0
- package/dist/lib/agent-capabilities.js +63 -0
- package/dist/lib/agent-capabilities.js.map +1 -0
- package/dist/lib/agent-skill-paths.d.ts +9 -0
- package/dist/lib/agent-skill-paths.d.ts.map +1 -0
- package/dist/lib/agent-skill-paths.js +70 -0
- package/dist/lib/agent-skill-paths.js.map +1 -0
- package/dist/lib/agent-subagent-paths.d.ts +8 -0
- package/dist/lib/agent-subagent-paths.d.ts.map +1 -0
- package/dist/lib/agent-subagent-paths.js +64 -0
- package/dist/lib/agent-subagent-paths.js.map +1 -0
- package/dist/loggingConfig.d.ts +11 -0
- package/dist/loggingConfig.d.ts.map +1 -0
- package/dist/loggingConfig.js +17 -0
- package/dist/loggingConfig.js.map +1 -0
- package/dist/output.d.ts +55 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +129 -0
- package/dist/output.js.map +1 -0
- package/dist/parse-args.d.ts +57 -0
- package/dist/parse-args.d.ts.map +1 -0
- package/dist/parse-args.js +261 -0
- package/dist/parse-args.js.map +1 -0
- package/dist/read-stdin.d.ts +1 -0
- package/dist/read-stdin.d.ts.map +1 -0
- package/dist/read-stdin.js +14 -0
- package/dist/read-stdin.js.map +1 -0
- package/package.json +79 -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-cli
|
|
2
|
+
|
|
3
|
+
The `adapters` command-line interface for [adapters](https://github.com/a5c-ai/adapters).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @a5c-ai/adapters-cli
|
|
9
|
+
# or
|
|
10
|
+
npx @a5c-ai/adapters-cli --help
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Node.js >= 20.9.0.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
adapters --help
|
|
19
|
+
adapters run --agent claude-code --prompt "Summarize README.md"
|
|
20
|
+
adapters adapters list
|
|
21
|
+
adapters sessions list
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
See the [repository README](https://github.com/a5c-ai/adapters#readme) for full command documentation.
|
|
25
|
+
|
|
26
|
+
## License
|
|
27
|
+
|
|
28
|
+
MIT © a5c-ai
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap helper: registers all built-in agent adapters with a client.
|
|
3
|
+
*
|
|
4
|
+
* The core `AdapterRegistry` starts empty — adapters must be explicitly
|
|
5
|
+
* registered. This module centralises that wiring so the CLI (and any
|
|
6
|
+
* consumer) gets all built-in adapters with a single call.
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
|
|
9
|
+
/**
|
|
10
|
+
* Registers every built-in adapter on the given client's adapter registry.
|
|
11
|
+
* Safe to call multiple times — `register()` replaces existing entries.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerBuiltInAdapters(client: AgentMuxClient): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0B3D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgDpE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap helper: registers all built-in agent adapters with a client.
|
|
3
|
+
*
|
|
4
|
+
* The core `AdapterRegistry` starts empty — adapters must be explicitly
|
|
5
|
+
* registered. This module centralises that wiring so the CLI (and any
|
|
6
|
+
* consumer) gets all built-in adapters with a single call.
|
|
7
|
+
*/
|
|
8
|
+
import { ClaudeAdapter, ClaudeAgentSdkAdapter, ClaudeRemoteControlAdapter, CodexAdapter, CodexSdkAdapter, CodexWebSocketAdapter, DroidAdapter, AmpAdapter, GeminiAdapter, CopilotAdapter, CursorAdapter, OpenCodeAdapter, OpenCodeHttpAdapter, PiAdapter, PiSdkAdapter, OmpAdapter, OpenClawAdapter, HermesAdapter, AgentMuxRemoteAdapter, QwenAdapter, BabysitterAdapter, } from '@a5c-ai/adapters-codecs';
|
|
9
|
+
/**
|
|
10
|
+
* Registers every built-in adapter on the given client's adapter registry.
|
|
11
|
+
* Safe to call multiple times — `register()` replaces existing entries.
|
|
12
|
+
*/
|
|
13
|
+
export function registerBuiltInAdapters(client) {
|
|
14
|
+
const adapters = [
|
|
15
|
+
new ClaudeAdapter(),
|
|
16
|
+
new ClaudeAgentSdkAdapter(),
|
|
17
|
+
new ClaudeRemoteControlAdapter(),
|
|
18
|
+
new CodexAdapter(),
|
|
19
|
+
new CodexSdkAdapter(),
|
|
20
|
+
new CodexWebSocketAdapter(),
|
|
21
|
+
new DroidAdapter(),
|
|
22
|
+
new AmpAdapter(),
|
|
23
|
+
new GeminiAdapter(),
|
|
24
|
+
new CopilotAdapter(),
|
|
25
|
+
new CursorAdapter(),
|
|
26
|
+
new OpenCodeAdapter(),
|
|
27
|
+
new OpenCodeHttpAdapter(),
|
|
28
|
+
new PiAdapter(),
|
|
29
|
+
new PiSdkAdapter(),
|
|
30
|
+
new OmpAdapter(),
|
|
31
|
+
new OpenClawAdapter(),
|
|
32
|
+
new HermesAdapter(),
|
|
33
|
+
new AgentMuxRemoteAdapter(),
|
|
34
|
+
new QwenAdapter(),
|
|
35
|
+
new BabysitterAdapter(),
|
|
36
|
+
];
|
|
37
|
+
// Prefer `registerBuiltIn` on the impl so the `source` shows as 'built-in';
|
|
38
|
+
// fall back to the public `register()` (which marks as 'plugin') for any
|
|
39
|
+
// AdapterRegistry implementation that doesn't expose the built-in helper.
|
|
40
|
+
const registry = client.adapters;
|
|
41
|
+
for (const adapter of adapters) {
|
|
42
|
+
try {
|
|
43
|
+
if (typeof registry.registerBuiltIn === 'function') {
|
|
44
|
+
registry.registerBuiltIn(adapter);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
registry.register(adapter);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
// Skip adapters that fail validation (e.g. partially-implemented
|
|
52
|
+
// programmatic/HTTP adapters). Log to stderr so callers can diagnose
|
|
53
|
+
// without crashing the whole process.
|
|
54
|
+
const name = adapter.agent ?? adapter.constructor.name;
|
|
55
|
+
process.stderr.write(`[adapters] skipping adapter ${name}: ${e.message}\n`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,MAAM,QAAQ,GAAwB;QACpC,IAAI,aAAa,EAAE;QACnB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,0BAA0B,EAAE;QAChC,IAAI,YAAY,EAAE;QAClB,IAAI,eAAe,EAAE;QACrB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,YAAY,EAAE;QAClB,IAAI,UAAU,EAAE;QAChB,IAAI,aAAa,EAAE;QACnB,IAAI,cAAc,EAAE;QACpB,IAAI,aAAa,EAAE;QACnB,IAAI,eAAe,EAAE;QACrB,IAAI,mBAAmB,EAAE;QACzB,IAAI,SAAS,EAAE;QACf,IAAI,YAAY,EAAE;QAClB,IAAI,UAAU,EAAE;QAChB,IAAI,eAAe,EAAE;QACrB,IAAI,aAAa,EAAE;QACnB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,WAAW,EAAE;QACjB,IAAI,iBAAiB,EAAE;KACxB,CAAC;IAEF,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAGvB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBACnD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iEAAiE;YACjE,qEAAqE;YACrE,sCAAsC;YACtC,MAAM,IAAI,GAAI,OAA8B,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAM,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/commands/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/commands/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adapters agent <subcommand> <agent> [args] [--global|--project]`
|
|
3
|
+
*
|
|
4
|
+
* Custom sub-agent management. Like skills, this is file-convention only
|
|
5
|
+
* — no underlying harness command. We copy/remove agent definition files
|
|
6
|
+
* (typically markdown) into per-agent locations.
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
|
|
9
|
+
import type { ParsedArgs, FlagDef } from '../parse-args.js';
|
|
10
|
+
export declare const AGENT_FLAGS: Record<string, FlagDef>;
|
|
11
|
+
export declare function agentCommand(_client: AgentMuxClient, args: ParsedArgs): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAW5D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAK/C,CAAC;AA2CF,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CA0IjB"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adapters agent <subcommand> <agent> [args] [--global|--project]`
|
|
3
|
+
*
|
|
4
|
+
* Custom sub-agent management. Like skills, this is file-convention only
|
|
5
|
+
* — no underlying harness command. We copy/remove agent definition files
|
|
6
|
+
* (typically markdown) into per-agent locations.
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import { flagBool, flagStr } from '../parse-args.js';
|
|
11
|
+
import { ExitCode } from '../exit-codes.js';
|
|
12
|
+
import { printError, printJsonOk, printJsonError, printTable } from '../output.js';
|
|
13
|
+
import { getSubagentPaths, getSubagentDir, listSupportedAgents, } from '../lib/agent-subagent-paths.js';
|
|
14
|
+
export const AGENT_FLAGS = {
|
|
15
|
+
global: { type: 'boolean' },
|
|
16
|
+
project: { type: 'boolean' },
|
|
17
|
+
name: { type: 'string' },
|
|
18
|
+
force: { type: 'boolean' },
|
|
19
|
+
};
|
|
20
|
+
function jsonMode(args) {
|
|
21
|
+
return flagBool(args.flags, 'json') === true;
|
|
22
|
+
}
|
|
23
|
+
function resolveScope(args, fallback = 'project') {
|
|
24
|
+
if (flagBool(args.flags, 'global') === true)
|
|
25
|
+
return 'global';
|
|
26
|
+
if (flagBool(args.flags, 'project') === true)
|
|
27
|
+
return 'project';
|
|
28
|
+
return fallback;
|
|
29
|
+
}
|
|
30
|
+
function copyPath(src, dst) {
|
|
31
|
+
const st = fs.statSync(src);
|
|
32
|
+
if (st.isDirectory()) {
|
|
33
|
+
fs.mkdirSync(dst, { recursive: true });
|
|
34
|
+
for (const name of fs.readdirSync(src))
|
|
35
|
+
copyPath(path.join(src, name), path.join(dst, name));
|
|
36
|
+
}
|
|
37
|
+
else if (st.isFile()) {
|
|
38
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
39
|
+
fs.copyFileSync(src, dst);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function removePath(target) {
|
|
43
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
44
|
+
}
|
|
45
|
+
const AGENT_FILE_EXTS = ['.md', '.markdown', '.yaml', '.yml', '.json', '.toml'];
|
|
46
|
+
function listAgentFiles(dir) {
|
|
47
|
+
if (!fs.existsSync(dir))
|
|
48
|
+
return [];
|
|
49
|
+
return fs.readdirSync(dir).filter((name) => {
|
|
50
|
+
try {
|
|
51
|
+
const full = path.join(dir, name);
|
|
52
|
+
const st = fs.statSync(full);
|
|
53
|
+
if (st.isDirectory())
|
|
54
|
+
return true;
|
|
55
|
+
return AGENT_FILE_EXTS.includes(path.extname(name).toLowerCase());
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export async function agentCommand(_client, args) {
|
|
63
|
+
const json = jsonMode(args);
|
|
64
|
+
if (args.flags.help || (!args.subcommand && args.positionals.length === 0)) {
|
|
65
|
+
process.stdout.write([
|
|
66
|
+
'Usage: adapters agent <subcommand> <agent> [args] [--global|--project]',
|
|
67
|
+
'',
|
|
68
|
+
'Manage custom sub-agents for a harness (file-convention based, no native command).',
|
|
69
|
+
'',
|
|
70
|
+
'Subcommands:',
|
|
71
|
+
' list <agent> List installed sub-agents',
|
|
72
|
+
' add <agent> <source> Copy an agent file or folder into the agents dir',
|
|
73
|
+
' [--name <name>] [--force]',
|
|
74
|
+
' remove <agent> <name> Remove an agent file or folder',
|
|
75
|
+
' where <agent> Show agent directory paths',
|
|
76
|
+
' agents List harnesses with known agent conventions',
|
|
77
|
+
'',
|
|
78
|
+
'Scope flags (default: --project):',
|
|
79
|
+
' --global Use the user-level agents dir',
|
|
80
|
+
' --project Use the project-level agents dir',
|
|
81
|
+
'',
|
|
82
|
+
'Examples:',
|
|
83
|
+
' adapters agent list claude',
|
|
84
|
+
' adapters agent add claude ./my-agent.md --global',
|
|
85
|
+
' adapters agent remove claude my-agent.md --project',
|
|
86
|
+
].join('\n') + '\n');
|
|
87
|
+
return ExitCode.SUCCESS;
|
|
88
|
+
}
|
|
89
|
+
const sub = args.subcommand;
|
|
90
|
+
if (!sub) {
|
|
91
|
+
if (json)
|
|
92
|
+
printJsonError('VALIDATION_ERROR', 'Missing subcommand');
|
|
93
|
+
else
|
|
94
|
+
printError('Missing subcommand. Available: list, add, remove, where, agents');
|
|
95
|
+
return ExitCode.USAGE_ERROR;
|
|
96
|
+
}
|
|
97
|
+
if (sub === 'agents') {
|
|
98
|
+
const agents = listSupportedAgents();
|
|
99
|
+
if (json)
|
|
100
|
+
printJsonOk({ agents });
|
|
101
|
+
else
|
|
102
|
+
process.stdout.write(agents.join('\n') + '\n');
|
|
103
|
+
return ExitCode.SUCCESS;
|
|
104
|
+
}
|
|
105
|
+
const agent = args.positionals[0];
|
|
106
|
+
if (!agent) {
|
|
107
|
+
if (json)
|
|
108
|
+
printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
|
|
109
|
+
else
|
|
110
|
+
printError('Missing required argument: <agent>');
|
|
111
|
+
return ExitCode.USAGE_ERROR;
|
|
112
|
+
}
|
|
113
|
+
const paths = getSubagentPaths(agent);
|
|
114
|
+
if (!paths) {
|
|
115
|
+
if (json)
|
|
116
|
+
printJsonError('VALIDATION_ERROR', `Unknown agent for sub-agents: ${agent}`);
|
|
117
|
+
else
|
|
118
|
+
printError(`Unknown agent for sub-agents: ${agent}. Try: adapters agent agents`);
|
|
119
|
+
return ExitCode.USAGE_ERROR;
|
|
120
|
+
}
|
|
121
|
+
switch (sub) {
|
|
122
|
+
case 'where': {
|
|
123
|
+
if (json)
|
|
124
|
+
printJsonOk({ agent, ...paths });
|
|
125
|
+
else {
|
|
126
|
+
printTable(['Scope', 'Path'], [
|
|
127
|
+
['global', paths.global],
|
|
128
|
+
['project', paths.project],
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
return ExitCode.SUCCESS;
|
|
132
|
+
}
|
|
133
|
+
case 'list': {
|
|
134
|
+
const scope = resolveScope(args, 'project');
|
|
135
|
+
const dir = getSubagentDir(agent, scope);
|
|
136
|
+
const entries = listAgentFiles(dir);
|
|
137
|
+
if (json)
|
|
138
|
+
printJsonOk({ agent, scope, dir, subagents: entries });
|
|
139
|
+
else if (entries.length === 0)
|
|
140
|
+
process.stdout.write(`(no sub-agents in ${dir})\n`);
|
|
141
|
+
else
|
|
142
|
+
printTable(['Name', 'Path'], entries.map((n) => [n, path.join(dir, n)]));
|
|
143
|
+
return ExitCode.SUCCESS;
|
|
144
|
+
}
|
|
145
|
+
case 'add': {
|
|
146
|
+
const source = args.positionals[1];
|
|
147
|
+
if (!source) {
|
|
148
|
+
if (json)
|
|
149
|
+
printJsonError('VALIDATION_ERROR', 'Missing source path');
|
|
150
|
+
else
|
|
151
|
+
printError('Usage: adapters agent add <agent> <source> [--name <n>] [--global|--project]');
|
|
152
|
+
return ExitCode.USAGE_ERROR;
|
|
153
|
+
}
|
|
154
|
+
const absSource = path.resolve(source);
|
|
155
|
+
if (!fs.existsSync(absSource)) {
|
|
156
|
+
if (json)
|
|
157
|
+
printJsonError('VALIDATION_ERROR', `Source does not exist: ${absSource}`);
|
|
158
|
+
else
|
|
159
|
+
printError(`Source does not exist: ${absSource}`);
|
|
160
|
+
return ExitCode.GENERAL_ERROR;
|
|
161
|
+
}
|
|
162
|
+
const scope = resolveScope(args, 'project');
|
|
163
|
+
const dir = getSubagentDir(agent, scope);
|
|
164
|
+
const name = flagStr(args.flags, 'name') ?? path.basename(absSource);
|
|
165
|
+
const dst = path.join(dir, name);
|
|
166
|
+
if (fs.existsSync(dst)) {
|
|
167
|
+
if (flagBool(args.flags, 'force') !== true) {
|
|
168
|
+
if (json)
|
|
169
|
+
printJsonError('CONFLICT', `Already exists: ${dst} (use --force)`);
|
|
170
|
+
else
|
|
171
|
+
printError(`Already exists: ${dst} (use --force)`);
|
|
172
|
+
return ExitCode.GENERAL_ERROR;
|
|
173
|
+
}
|
|
174
|
+
removePath(dst);
|
|
175
|
+
}
|
|
176
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
177
|
+
copyPath(absSource, dst);
|
|
178
|
+
if (json)
|
|
179
|
+
printJsonOk({ added: name, scope, path: dst });
|
|
180
|
+
else
|
|
181
|
+
process.stdout.write(`Installed sub-agent ${name} (${scope}) → ${dst}\n`);
|
|
182
|
+
return ExitCode.SUCCESS;
|
|
183
|
+
}
|
|
184
|
+
case 'remove': {
|
|
185
|
+
const name = args.positionals[1];
|
|
186
|
+
if (!name) {
|
|
187
|
+
if (json)
|
|
188
|
+
printJsonError('VALIDATION_ERROR', 'Missing sub-agent name');
|
|
189
|
+
else
|
|
190
|
+
printError('Usage: adapters agent remove <agent> <name> [--global|--project]');
|
|
191
|
+
return ExitCode.USAGE_ERROR;
|
|
192
|
+
}
|
|
193
|
+
const scope = resolveScope(args, 'project');
|
|
194
|
+
const dir = getSubagentDir(agent, scope);
|
|
195
|
+
const target = path.join(dir, name);
|
|
196
|
+
if (!fs.existsSync(target)) {
|
|
197
|
+
if (json)
|
|
198
|
+
printJsonError('NOT_FOUND', `No sub-agent ${name} in ${dir}`);
|
|
199
|
+
else
|
|
200
|
+
printError(`No sub-agent ${name} in ${dir}`);
|
|
201
|
+
return ExitCode.GENERAL_ERROR;
|
|
202
|
+
}
|
|
203
|
+
removePath(target);
|
|
204
|
+
if (json)
|
|
205
|
+
printJsonOk({ removed: name, scope, path: target });
|
|
206
|
+
else
|
|
207
|
+
process.stdout.write(`Removed sub-agent ${name} (${scope})\n`);
|
|
208
|
+
return ExitCode.SUCCESS;
|
|
209
|
+
}
|
|
210
|
+
default: {
|
|
211
|
+
if (json)
|
|
212
|
+
printJsonError('VALIDATION_ERROR', `Unknown agent subcommand: ${sub}`);
|
|
213
|
+
else
|
|
214
|
+
printError(`Unknown agent subcommand: ${sub}`);
|
|
215
|
+
return ExitCode.USAGE_ERROR;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-host.d.ts","sourceRoot":"","sources":["../../src/commands/detect-host.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-host.js","sourceRoot":"","sources":["../../src/commands/detect-host.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAuC,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA6HnD,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adapters doctor` — aggregated environment health check.
|
|
3
|
+
*
|
|
4
|
+
* Reports Node.js version, per-adapter install + auth + config-file status,
|
|
5
|
+
* and hook registry paths. Designed for copy/paste into bug reports.
|
|
6
|
+
*/
|
|
7
|
+
import * as os from 'node:os';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import * as fs from 'node:fs/promises';
|
|
10
|
+
import { flagBool } from '../parse-args.js';
|
|
11
|
+
import { ExitCode } from '../exit-codes.js';
|
|
12
|
+
import { printJsonOk } from '../output.js';
|
|
13
|
+
async function fileExists(p) {
|
|
14
|
+
try {
|
|
15
|
+
await fs.access(p);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function meetsNodeMinimum(version) {
|
|
23
|
+
const m = version.replace(/^v/, '').split('.').map((n) => parseInt(n, 10));
|
|
24
|
+
if (m[0] > 20)
|
|
25
|
+
return true;
|
|
26
|
+
if (m[0] === 20 && m[1] >= 9)
|
|
27
|
+
return true;
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
async function buildReport(client) {
|
|
31
|
+
const adapters = client.adapters.list();
|
|
32
|
+
const agents = [];
|
|
33
|
+
for (const info of adapters) {
|
|
34
|
+
const adapter = client.adapters.get(info.agent);
|
|
35
|
+
if (!adapter)
|
|
36
|
+
continue;
|
|
37
|
+
let install;
|
|
38
|
+
try {
|
|
39
|
+
install = adapter.detectInstallation
|
|
40
|
+
? await adapter.detectInstallation()
|
|
41
|
+
: { installed: false, notes: 'detectInstallation() not implemented' };
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
install = { installed: false, notes: `error: ${e instanceof Error ? e.message : String(e)}` };
|
|
45
|
+
}
|
|
46
|
+
let auth;
|
|
47
|
+
try {
|
|
48
|
+
auth = await adapter.detectAuth();
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
auth = { status: 'unauthenticated' };
|
|
52
|
+
process.stderr.write(`[adapters] auth detection failed for ${adapter.agent}: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
53
|
+
}
|
|
54
|
+
const configFiles = [];
|
|
55
|
+
const paths = adapter.configSchema?.configFilePaths ?? [];
|
|
56
|
+
for (const p of paths) {
|
|
57
|
+
configFiles.push({ path: p, exists: await fileExists(p) });
|
|
58
|
+
}
|
|
59
|
+
agents.push({ agent: info.agent, install, auth, configFiles });
|
|
60
|
+
}
|
|
61
|
+
const globalHookPath = path.join(os.homedir(), '.adapters', 'hooks.json');
|
|
62
|
+
const projectHookPath = path.join(process.cwd(), '.adapters', 'hooks.json');
|
|
63
|
+
const installedAgents = agents.filter((a) => a.install.installed).length;
|
|
64
|
+
const authenticatedAgents = agents.filter((a) => a.auth.status === 'authenticated').length;
|
|
65
|
+
return {
|
|
66
|
+
node: {
|
|
67
|
+
version: process.version,
|
|
68
|
+
platform: process.platform,
|
|
69
|
+
arch: process.arch,
|
|
70
|
+
meetsMinimum: meetsNodeMinimum(process.version),
|
|
71
|
+
},
|
|
72
|
+
agents,
|
|
73
|
+
hooks: {
|
|
74
|
+
globalPath: globalHookPath,
|
|
75
|
+
projectPath: projectHookPath,
|
|
76
|
+
globalExists: await fileExists(globalHookPath),
|
|
77
|
+
projectExists: await fileExists(projectHookPath),
|
|
78
|
+
},
|
|
79
|
+
summary: {
|
|
80
|
+
installedAgents,
|
|
81
|
+
authenticatedAgents,
|
|
82
|
+
totalAgents: agents.length,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function formatReport(r) {
|
|
87
|
+
const lines = [];
|
|
88
|
+
lines.push('adapters doctor');
|
|
89
|
+
lines.push('───────────');
|
|
90
|
+
lines.push(`Node: ${r.node.version} on ${r.node.platform}/${r.node.arch} ${r.node.meetsMinimum ? 'OK' : '— below minimum (needs >= 20.9.0)'}`);
|
|
91
|
+
lines.push(`Agents: ${r.summary.installedAgents}/${r.summary.totalAgents} installed, ${r.summary.authenticatedAgents} authenticated`);
|
|
92
|
+
lines.push('');
|
|
93
|
+
for (const a of r.agents) {
|
|
94
|
+
const installed = a.install.installed ? 'installed' : 'not installed';
|
|
95
|
+
const version = 'version' in a.install && a.install.version ? ` v${a.install.version}` : '';
|
|
96
|
+
const authed = a.auth.status === 'authenticated' ? 'authenticated' : a.auth.status;
|
|
97
|
+
const cfg = a.configFiles.length === 0
|
|
98
|
+
? 'none'
|
|
99
|
+
: a.configFiles.map((c) => `${c.path}${c.exists ? '' : ' (missing)'}`).join(', ');
|
|
100
|
+
lines.push(` ${a.agent.padEnd(20)} ${installed}${version}; auth: ${authed}`);
|
|
101
|
+
lines.push(` config: ${cfg}`);
|
|
102
|
+
}
|
|
103
|
+
lines.push('');
|
|
104
|
+
lines.push('Hooks:');
|
|
105
|
+
lines.push(` global: ${r.hooks.globalPath}${r.hooks.globalExists ? '' : ' (missing)'}`);
|
|
106
|
+
lines.push(` project: ${r.hooks.projectPath}${r.hooks.projectExists ? '' : ' (missing)'}`);
|
|
107
|
+
return lines.join('\n') + '\n';
|
|
108
|
+
}
|
|
109
|
+
export async function doctorCommand(client, args) {
|
|
110
|
+
const jsonMode = flagBool(args.flags, 'json') === true;
|
|
111
|
+
const report = await buildReport(client);
|
|
112
|
+
if (jsonMode) {
|
|
113
|
+
printJsonOk(report);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
process.stdout.write(formatReport(report));
|
|
117
|
+
}
|
|
118
|
+
return ExitCode.SUCCESS;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
|
|
2
|
+
import type { ParsedArgs } from '../../parse-args.js';
|
|
3
|
+
import type { FlagDef } from '../../parse-args.js';
|
|
4
|
+
export declare const GATEWAY_FLAGS: Record<string, FlagDef>;
|
|
5
|
+
export declare function gatewayCommand(_client: AgentMuxClient, args: ParsedArgs): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQnD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWjD,CAAC;AAEF,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB/F"}
|