@a5c-ai/adapters-cli 5.1.1-staging.0ad6ac75ae4a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/bootstrap.d.ts +13 -0
  4. package/dist/bootstrap.d.ts.map +1 -0
  5. package/dist/bootstrap.js +59 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/commands/adapters.d.ts +4 -0
  8. package/dist/commands/adapters.d.ts.map +1 -0
  9. package/dist/commands/adapters.js +5 -0
  10. package/dist/commands/adapters.js.map +1 -0
  11. package/dist/commands/agent.d.ts +11 -0
  12. package/dist/commands/agent.d.ts.map +1 -0
  13. package/dist/commands/agent.js +219 -0
  14. package/dist/commands/agent.js.map +1 -0
  15. package/dist/commands/auth.d.ts +4 -0
  16. package/dist/commands/auth.d.ts.map +1 -0
  17. package/dist/commands/auth.js +5 -0
  18. package/dist/commands/auth.js.map +1 -0
  19. package/dist/commands/config.d.ts +4 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +5 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/detect-host.d.ts +4 -0
  24. package/dist/commands/detect-host.d.ts.map +1 -0
  25. package/dist/commands/detect-host.js +5 -0
  26. package/dist/commands/detect-host.js.map +1 -0
  27. package/dist/commands/doctor.d.ts +3 -0
  28. package/dist/commands/doctor.d.ts.map +1 -0
  29. package/dist/commands/doctor.js +120 -0
  30. package/dist/commands/doctor.js.map +1 -0
  31. package/dist/commands/gateway/index.d.ts +5 -0
  32. package/dist/commands/gateway/index.d.ts.map +1 -0
  33. package/dist/commands/gateway/index.js +39 -0
  34. package/dist/commands/gateway/index.js.map +1 -0
  35. package/dist/commands/gateway/serve.d.ts +5 -0
  36. package/dist/commands/gateway/serve.d.ts.map +1 -0
  37. package/dist/commands/gateway/serve.js +76 -0
  38. package/dist/commands/gateway/serve.js.map +1 -0
  39. package/dist/commands/gateway/status.d.ts +2 -0
  40. package/dist/commands/gateway/status.d.ts.map +1 -0
  41. package/dist/commands/gateway/status.js +24 -0
  42. package/dist/commands/gateway/status.js.map +1 -0
  43. package/dist/commands/gateway/tokens.d.ts +2 -0
  44. package/dist/commands/gateway/tokens.d.ts.map +1 -0
  45. package/dist/commands/gateway/tokens.js +85 -0
  46. package/dist/commands/gateway/tokens.js.map +1 -0
  47. package/dist/commands/help.d.ts +13 -0
  48. package/dist/commands/help.d.ts.map +1 -0
  49. package/dist/commands/help.js +501 -0
  50. package/dist/commands/help.js.map +1 -0
  51. package/dist/commands/hooks.d.ts +16 -0
  52. package/dist/commands/hooks.d.ts.map +1 -0
  53. package/dist/commands/hooks.js +207 -0
  54. package/dist/commands/hooks.js.map +1 -0
  55. package/dist/commands/install-helpers.d.ts +5 -0
  56. package/dist/commands/install-helpers.d.ts.map +1 -0
  57. package/dist/commands/install-helpers.js +5 -0
  58. package/dist/commands/install-helpers.js.map +1 -0
  59. package/dist/commands/install.d.ts +4 -0
  60. package/dist/commands/install.d.ts.map +1 -0
  61. package/dist/commands/install.js +5 -0
  62. package/dist/commands/install.js.map +1 -0
  63. package/dist/commands/launch-bridge-hooks.d.ts +8 -0
  64. package/dist/commands/launch-bridge-hooks.d.ts.map +1 -0
  65. package/dist/commands/launch-bridge-hooks.js +8 -0
  66. package/dist/commands/launch-bridge-hooks.js.map +1 -0
  67. package/dist/commands/launch-completion-engine.d.ts +7 -0
  68. package/dist/commands/launch-completion-engine.d.ts.map +1 -0
  69. package/dist/commands/launch-completion-engine.js +8 -0
  70. package/dist/commands/launch-completion-engine.js.map +1 -0
  71. package/dist/commands/launch.d.ts +8 -0
  72. package/dist/commands/launch.d.ts.map +1 -0
  73. package/dist/commands/launch.js +8 -0
  74. package/dist/commands/launch.js.map +1 -0
  75. package/dist/commands/mcp.d.ts +3 -0
  76. package/dist/commands/mcp.d.ts.map +1 -0
  77. package/dist/commands/mcp.js +93 -0
  78. package/dist/commands/mcp.js.map +1 -0
  79. package/dist/commands/models.d.ts +8 -0
  80. package/dist/commands/models.d.ts.map +1 -0
  81. package/dist/commands/models.js +306 -0
  82. package/dist/commands/models.js.map +1 -0
  83. package/dist/commands/plugin.d.ts +3 -0
  84. package/dist/commands/plugin.d.ts.map +1 -0
  85. package/dist/commands/plugin.js +96 -0
  86. package/dist/commands/plugin.js.map +1 -0
  87. package/dist/commands/profiles.d.ts +8 -0
  88. package/dist/commands/profiles.d.ts.map +1 -0
  89. package/dist/commands/profiles.js +206 -0
  90. package/dist/commands/profiles.js.map +1 -0
  91. package/dist/commands/remote.d.ts +30 -0
  92. package/dist/commands/remote.d.ts.map +1 -0
  93. package/dist/commands/remote.js +204 -0
  94. package/dist/commands/remote.js.map +1 -0
  95. package/dist/commands/run.d.ts +27 -0
  96. package/dist/commands/run.d.ts.map +1 -0
  97. package/dist/commands/run.js +355 -0
  98. package/dist/commands/run.js.map +1 -0
  99. package/dist/commands/sessions.d.ts +8 -0
  100. package/dist/commands/sessions.d.ts.map +1 -0
  101. package/dist/commands/sessions.js +225 -0
  102. package/dist/commands/sessions.js.map +1 -0
  103. package/dist/commands/skill.d.ts +10 -0
  104. package/dist/commands/skill.d.ts.map +1 -0
  105. package/dist/commands/skill.js +217 -0
  106. package/dist/commands/skill.js.map +1 -0
  107. package/dist/commands/tui.d.ts +3 -0
  108. package/dist/commands/tui.d.ts.map +1 -0
  109. package/dist/commands/tui.js +57 -0
  110. package/dist/commands/tui.js.map +1 -0
  111. package/dist/commands/workspaces.d.ts +4 -0
  112. package/dist/commands/workspaces.d.ts.map +1 -0
  113. package/dist/commands/workspaces.js +187 -0
  114. package/dist/commands/workspaces.js.map +1 -0
  115. package/dist/exit-codes.d.ts +32 -0
  116. package/dist/exit-codes.d.ts.map +1 -0
  117. package/dist/exit-codes.js +68 -0
  118. package/dist/exit-codes.js.map +1 -0
  119. package/dist/index.d.ts +23 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +216 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/index.test.d.ts +1 -0
  124. package/dist/index.test.d.ts.map +1 -0
  125. package/dist/index.test.js +23 -0
  126. package/dist/index.test.js.map +1 -0
  127. package/dist/lib/agent-capabilities.d.ts +6 -0
  128. package/dist/lib/agent-capabilities.d.ts.map +1 -0
  129. package/dist/lib/agent-capabilities.js +63 -0
  130. package/dist/lib/agent-capabilities.js.map +1 -0
  131. package/dist/lib/agent-skill-paths.d.ts +9 -0
  132. package/dist/lib/agent-skill-paths.d.ts.map +1 -0
  133. package/dist/lib/agent-skill-paths.js +70 -0
  134. package/dist/lib/agent-skill-paths.js.map +1 -0
  135. package/dist/lib/agent-subagent-paths.d.ts +8 -0
  136. package/dist/lib/agent-subagent-paths.d.ts.map +1 -0
  137. package/dist/lib/agent-subagent-paths.js +64 -0
  138. package/dist/lib/agent-subagent-paths.js.map +1 -0
  139. package/dist/loggingConfig.d.ts +11 -0
  140. package/dist/loggingConfig.d.ts.map +1 -0
  141. package/dist/loggingConfig.js +17 -0
  142. package/dist/loggingConfig.js.map +1 -0
  143. package/dist/output.d.ts +55 -0
  144. package/dist/output.d.ts.map +1 -0
  145. package/dist/output.js +129 -0
  146. package/dist/output.js.map +1 -0
  147. package/dist/parse-args.d.ts +57 -0
  148. package/dist/parse-args.d.ts.map +1 -0
  149. package/dist/parse-args.js +261 -0
  150. package/dist/parse-args.js.map +1 -0
  151. package/dist/read-stdin.d.ts +1 -0
  152. package/dist/read-stdin.d.ts.map +1 -0
  153. package/dist/read-stdin.js +14 -0
  154. package/dist/read-stdin.js.map +1 -0
  155. 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,4 @@
1
+ /**
2
+ * Re-export shim — adapters logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { adaptersCommand } from '@a5c-ai/config-adapter';
@@ -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,5 @@
1
+ /**
2
+ * Re-export shim — adapters logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { adaptersCommand } from '@a5c-ai/config-adapter';
5
+ //# sourceMappingURL=adapters.js.map
@@ -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,4 @@
1
+ /**
2
+ * Re-export shim — auth logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { authCommand } from '@a5c-ai/config-adapter';
@@ -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,5 @@
1
+ /**
2
+ * Re-export shim — auth logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { authCommand } from '@a5c-ai/config-adapter';
5
+ //# sourceMappingURL=auth.js.map
@@ -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,4 @@
1
+ /**
2
+ * Re-export shim — config logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { configCommand } from '@a5c-ai/config-adapter';
@@ -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,5 @@
1
+ /**
2
+ * Re-export shim — config logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { configCommand } from '@a5c-ai/config-adapter';
5
+ //# sourceMappingURL=config.js.map
@@ -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,4 @@
1
+ /**
2
+ * Re-export shim — detect-host logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { detectHostCommand } from '@a5c-ai/config-adapter';
@@ -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,5 @@
1
+ /**
2
+ * Re-export shim — detect-host logic now lives in @a5c-ai/config-adapter.
3
+ */
4
+ export { detectHostCommand } from '@a5c-ai/config-adapter';
5
+ //# sourceMappingURL=detect-host.js.map
@@ -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,3 @@
1
+ import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
2
+ import type { ParsedArgs } from '../parse-args.js';
3
+ export declare function doctorCommand(client: AgentMuxClient, args: ParsedArgs): Promise<number>;
@@ -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"}