@a5c-ai/agent-comm-mux 5.0.1-staging.04ca6ab00d21

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 (263) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/dist/adapter-registry.d.ts +51 -0
  4. package/dist/adapter-registry.d.ts.map +1 -0
  5. package/dist/adapter-registry.js +208 -0
  6. package/dist/adapter-registry.js.map +1 -0
  7. package/dist/adapter-types.d.ts +164 -0
  8. package/dist/adapter-types.d.ts.map +1 -0
  9. package/dist/adapter-types.js +27 -0
  10. package/dist/adapter-types.js.map +1 -0
  11. package/dist/adapter.d.ts +248 -0
  12. package/dist/adapter.d.ts.map +1 -0
  13. package/dist/adapter.js +18 -0
  14. package/dist/adapter.js.map +1 -0
  15. package/dist/atomic-fs.d.ts +33 -0
  16. package/dist/atomic-fs.d.ts.map +1 -0
  17. package/dist/atomic-fs.js +190 -0
  18. package/dist/atomic-fs.js.map +1 -0
  19. package/dist/auth-manager.d.ts +37 -0
  20. package/dist/auth-manager.d.ts.map +1 -0
  21. package/dist/auth-manager.js +94 -0
  22. package/dist/auth-manager.js.map +1 -0
  23. package/dist/auth-types.d.ts +83 -0
  24. package/dist/auth-types.d.ts.map +1 -0
  25. package/dist/auth-types.js +10 -0
  26. package/dist/auth-types.js.map +1 -0
  27. package/dist/automation.d.ts +104 -0
  28. package/dist/automation.d.ts.map +1 -0
  29. package/dist/automation.js +2 -0
  30. package/dist/automation.js.map +1 -0
  31. package/dist/browser.d.ts +5 -0
  32. package/dist/browser.d.ts.map +1 -0
  33. package/dist/browser.js +2 -0
  34. package/dist/browser.js.map +1 -0
  35. package/dist/builtin-hooks.d.ts +24 -0
  36. package/dist/builtin-hooks.d.ts.map +1 -0
  37. package/dist/builtin-hooks.js +80 -0
  38. package/dist/builtin-hooks.js.map +1 -0
  39. package/dist/capabilities.d.ts +251 -0
  40. package/dist/capabilities.d.ts.map +1 -0
  41. package/dist/capabilities.js +7 -0
  42. package/dist/capabilities.js.map +1 -0
  43. package/dist/client.d.ts +118 -0
  44. package/dist/client.d.ts.map +1 -0
  45. package/dist/client.js +316 -0
  46. package/dist/client.js.map +1 -0
  47. package/dist/config-manager.d.ts +85 -0
  48. package/dist/config-manager.d.ts.map +1 -0
  49. package/dist/config-manager.js +202 -0
  50. package/dist/config-manager.js.map +1 -0
  51. package/dist/config-types.d.ts +134 -0
  52. package/dist/config-types.d.ts.map +1 -0
  53. package/dist/config-types.js +10 -0
  54. package/dist/config-types.js.map +1 -0
  55. package/dist/cost-utils.d.ts +31 -0
  56. package/dist/cost-utils.d.ts.map +1 -0
  57. package/dist/cost-utils.js +69 -0
  58. package/dist/cost-utils.js.map +1 -0
  59. package/dist/errors.d.ts +50 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +85 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/events-control.d.ts +91 -0
  64. package/dist/events-control.d.ts.map +1 -0
  65. package/dist/events-control.js +8 -0
  66. package/dist/events-control.js.map +1 -0
  67. package/dist/events.d.ts +285 -0
  68. package/dist/events.d.ts.map +1 -0
  69. package/dist/events.js +8 -0
  70. package/dist/events.js.map +1 -0
  71. package/dist/hook-catalog.d.ts +20 -0
  72. package/dist/hook-catalog.d.ts.map +1 -0
  73. package/dist/hook-catalog.js +63 -0
  74. package/dist/hook-catalog.js.map +1 -0
  75. package/dist/hook-dispatcher.d.ts +24 -0
  76. package/dist/hook-dispatcher.d.ts.map +1 -0
  77. package/dist/hook-dispatcher.js +91 -0
  78. package/dist/hook-dispatcher.js.map +1 -0
  79. package/dist/hook-payload.d.ts +24 -0
  80. package/dist/hook-payload.d.ts.map +1 -0
  81. package/dist/hook-payload.js +62 -0
  82. package/dist/hook-payload.js.map +1 -0
  83. package/dist/hooks.d.ts +59 -0
  84. package/dist/hooks.d.ts.map +1 -0
  85. package/dist/hooks.js +118 -0
  86. package/dist/hooks.js.map +1 -0
  87. package/dist/host-detection.d.ts +67 -0
  88. package/dist/host-detection.d.ts.map +1 -0
  89. package/dist/host-detection.js +147 -0
  90. package/dist/host-detection.js.map +1 -0
  91. package/dist/index.d.ts +88 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +50 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/interaction-channel-impl.d.ts +56 -0
  96. package/dist/interaction-channel-impl.d.ts.map +1 -0
  97. package/dist/interaction-channel-impl.js +159 -0
  98. package/dist/interaction-channel-impl.js.map +1 -0
  99. package/dist/interaction.d.ts +93 -0
  100. package/dist/interaction.d.ts.map +1 -0
  101. package/dist/interaction.js +8 -0
  102. package/dist/interaction.js.map +1 -0
  103. package/dist/invocation.d.ts +100 -0
  104. package/dist/invocation.d.ts.map +1 -0
  105. package/dist/invocation.js +17 -0
  106. package/dist/invocation.js.map +1 -0
  107. package/dist/kanban.d.ts +894 -0
  108. package/dist/kanban.d.ts.map +1 -0
  109. package/dist/kanban.js +1155 -0
  110. package/dist/kanban.js.map +1 -0
  111. package/dist/merge.d.ts +37 -0
  112. package/dist/merge.d.ts.map +1 -0
  113. package/dist/merge.js +102 -0
  114. package/dist/merge.js.map +1 -0
  115. package/dist/model-registry.d.ts +61 -0
  116. package/dist/model-registry.d.ts.map +1 -0
  117. package/dist/model-registry.js +198 -0
  118. package/dist/model-registry.js.map +1 -0
  119. package/dist/plugin-manager-impl.d.ts +48 -0
  120. package/dist/plugin-manager-impl.d.ts.map +1 -0
  121. package/dist/plugin-manager-impl.js +343 -0
  122. package/dist/plugin-manager-impl.js.map +1 -0
  123. package/dist/plugin-manager.d.ts +81 -0
  124. package/dist/plugin-manager.d.ts.map +1 -0
  125. package/dist/plugin-manager.js +7 -0
  126. package/dist/plugin-manager.js.map +1 -0
  127. package/dist/plugin-types.d.ts +114 -0
  128. package/dist/plugin-types.d.ts.map +1 -0
  129. package/dist/plugin-types.js +7 -0
  130. package/dist/plugin-types.js.map +1 -0
  131. package/dist/process-tracker.d.ts +20 -0
  132. package/dist/process-tracker.d.ts.map +1 -0
  133. package/dist/process-tracker.js +96 -0
  134. package/dist/process-tracker.js.map +1 -0
  135. package/dist/profiles.d.ts +99 -0
  136. package/dist/profiles.d.ts.map +1 -0
  137. package/dist/profiles.js +231 -0
  138. package/dist/profiles.js.map +1 -0
  139. package/dist/programmatic-runner.d.ts +4 -0
  140. package/dist/programmatic-runner.d.ts.map +1 -0
  141. package/dist/programmatic-runner.js +110 -0
  142. package/dist/programmatic-runner.js.map +1 -0
  143. package/dist/provider-config.d.ts +40 -0
  144. package/dist/provider-config.d.ts.map +1 -0
  145. package/dist/provider-config.js +67 -0
  146. package/dist/provider-config.js.map +1 -0
  147. package/dist/provider-profiles.d.ts +47 -0
  148. package/dist/provider-profiles.d.ts.map +1 -0
  149. package/dist/provider-profiles.js +117 -0
  150. package/dist/provider-profiles.js.map +1 -0
  151. package/dist/provider-resolver.d.ts +15 -0
  152. package/dist/provider-resolver.d.ts.map +1 -0
  153. package/dist/provider-resolver.js +114 -0
  154. package/dist/provider-resolver.js.map +1 -0
  155. package/dist/provider-support-matrix.d.ts +12 -0
  156. package/dist/provider-support-matrix.d.ts.map +1 -0
  157. package/dist/provider-support-matrix.js +88 -0
  158. package/dist/provider-support-matrix.js.map +1 -0
  159. package/dist/remote-runner.d.ts +4 -0
  160. package/dist/remote-runner.d.ts.map +1 -0
  161. package/dist/remote-runner.js +114 -0
  162. package/dist/remote-runner.js.map +1 -0
  163. package/dist/retry.d.ts +13 -0
  164. package/dist/retry.d.ts.map +1 -0
  165. package/dist/retry.js +17 -0
  166. package/dist/retry.js.map +1 -0
  167. package/dist/run-handle-cost.d.ts +36 -0
  168. package/dist/run-handle-cost.d.ts.map +1 -0
  169. package/dist/run-handle-cost.js +62 -0
  170. package/dist/run-handle-cost.js.map +1 -0
  171. package/dist/run-handle-impl.d.ts +144 -0
  172. package/dist/run-handle-impl.d.ts.map +1 -0
  173. package/dist/run-handle-impl.js +695 -0
  174. package/dist/run-handle-impl.js.map +1 -0
  175. package/dist/run-handle.d.ts +222 -0
  176. package/dist/run-handle.d.ts.map +1 -0
  177. package/dist/run-handle.js +9 -0
  178. package/dist/run-handle.js.map +1 -0
  179. package/dist/run-options-validation.d.ts +23 -0
  180. package/dist/run-options-validation.d.ts.map +1 -0
  181. package/dist/run-options-validation.js +234 -0
  182. package/dist/run-options-validation.js.map +1 -0
  183. package/dist/run-options.d.ts +128 -0
  184. package/dist/run-options.d.ts.map +1 -0
  185. package/dist/run-options.js +329 -0
  186. package/dist/run-options.js.map +1 -0
  187. package/dist/runtime-hook-dispatcher.d.ts +19 -0
  188. package/dist/runtime-hook-dispatcher.d.ts.map +1 -0
  189. package/dist/runtime-hook-dispatcher.js +50 -0
  190. package/dist/runtime-hook-dispatcher.js.map +1 -0
  191. package/dist/runtime-hooks.d.ts +47 -0
  192. package/dist/runtime-hooks.d.ts.map +1 -0
  193. package/dist/runtime-hooks.js +2 -0
  194. package/dist/runtime-hooks.js.map +1 -0
  195. package/dist/schema/__tests__/event-schema.test.d.ts +1 -0
  196. package/dist/schema/__tests__/event-schema.test.d.ts.map +1 -0
  197. package/dist/schema/__tests__/event-schema.test.js +480 -0
  198. package/dist/schema/__tests__/event-schema.test.js.map +1 -0
  199. package/dist/schema/event-schema.d.ts +120 -0
  200. package/dist/schema/event-schema.d.ts.map +1 -0
  201. package/dist/schema/event-schema.js +546 -0
  202. package/dist/schema/event-schema.js.map +1 -0
  203. package/dist/schema/index.d.ts +7 -0
  204. package/dist/schema/index.d.ts.map +1 -0
  205. package/dist/schema/index.js +49 -0
  206. package/dist/schema/index.js.map +1 -0
  207. package/dist/session-manager-helpers.d.ts +33 -0
  208. package/dist/session-manager-helpers.d.ts.map +1 -0
  209. package/dist/session-manager-helpers.js +66 -0
  210. package/dist/session-manager-helpers.js.map +1 -0
  211. package/dist/session-manager.d.ts +70 -0
  212. package/dist/session-manager.d.ts.map +1 -0
  213. package/dist/session-manager.js +343 -0
  214. package/dist/session-manager.js.map +1 -0
  215. package/dist/session-types.d.ts +358 -0
  216. package/dist/session-types.d.ts.map +1 -0
  217. package/dist/session-types.js +10 -0
  218. package/dist/session-types.js.map +1 -0
  219. package/dist/spawn-invocation.d.ts +52 -0
  220. package/dist/spawn-invocation.d.ts.map +1 -0
  221. package/dist/spawn-invocation.js +218 -0
  222. package/dist/spawn-invocation.js.map +1 -0
  223. package/dist/spawn-runner-utils.d.ts +21 -0
  224. package/dist/spawn-runner-utils.d.ts.map +1 -0
  225. package/dist/spawn-runner-utils.js +102 -0
  226. package/dist/spawn-runner-utils.js.map +1 -0
  227. package/dist/spawn-runner.d.ts +21 -0
  228. package/dist/spawn-runner.d.ts.map +1 -0
  229. package/dist/spawn-runner.js +576 -0
  230. package/dist/spawn-runner.js.map +1 -0
  231. package/dist/spawn-runtime-hooks.d.ts +15 -0
  232. package/dist/spawn-runtime-hooks.d.ts.map +1 -0
  233. package/dist/spawn-runtime-hooks.js +136 -0
  234. package/dist/spawn-runtime-hooks.js.map +1 -0
  235. package/dist/state-machine.d.ts +33 -0
  236. package/dist/state-machine.d.ts.map +1 -0
  237. package/dist/state-machine.js +61 -0
  238. package/dist/state-machine.js.map +1 -0
  239. package/dist/storage.d.ts +47 -0
  240. package/dist/storage.d.ts.map +1 -0
  241. package/dist/storage.js +90 -0
  242. package/dist/storage.js.map +1 -0
  243. package/dist/stream-assembler.d.ts +51 -0
  244. package/dist/stream-assembler.d.ts.map +1 -0
  245. package/dist/stream-assembler.js +86 -0
  246. package/dist/stream-assembler.js.map +1 -0
  247. package/dist/tools/classify.d.ts +9 -0
  248. package/dist/tools/classify.d.ts.map +1 -0
  249. package/dist/tools/classify.js +77 -0
  250. package/dist/tools/classify.js.map +1 -0
  251. package/dist/tools/index.d.ts +2 -0
  252. package/dist/tools/index.d.ts.map +1 -0
  253. package/dist/tools/index.js +2 -0
  254. package/dist/tools/index.js.map +1 -0
  255. package/dist/types.d.ts +288 -0
  256. package/dist/types.d.ts.map +1 -0
  257. package/dist/types.js +8 -0
  258. package/dist/types.js.map +1 -0
  259. package/dist/workspaces.d.ts +142 -0
  260. package/dist/workspaces.d.ts.map +1 -0
  261. package/dist/workspaces.js +515 -0
  262. package/dist/workspaces.js.map +1 -0
  263. package/package.json +107 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * AgentMuxClient and createClient factory for @a5c-ai/agent-mux.
3
+ */
4
+ import type { AgentName, RetryPolicy } from './types.js';
5
+ import type { StoragePaths } from './storage.js';
6
+ import type { RunOptions, RunHandle } from './run-options.js';
7
+ import type { ProfileManager } from './profiles.js';
8
+ import type { AdapterRegistry } from './adapter-registry.js';
9
+ import type { ModelRegistry } from './model-registry.js';
10
+ import type { SessionManager } from './session-manager.js';
11
+ import type { ConfigManager } from './config-manager.js';
12
+ import type { AuthManager } from './auth-manager.js';
13
+ import type { PluginManager } from './plugin-manager.js';
14
+ import { type HostHarnessInfo, type DetectHostHarnessOptions } from './host-detection.js';
15
+ /** Options for creating an AgentMuxClient. */
16
+ export interface ClientOptions {
17
+ /** Default agent for runs when `RunOptions.agent` is not specified. */
18
+ defaultAgent?: AgentName;
19
+ /** Default model for runs when `RunOptions.model` is not specified. */
20
+ defaultModel?: string;
21
+ /**
22
+ * Default approval mode for tool calls and file operations.
23
+ * @default 'prompt'
24
+ */
25
+ approvalMode?: 'yolo' | 'prompt' | 'deny';
26
+ /**
27
+ * Default run timeout in milliseconds. 0 means no timeout.
28
+ * Must be a non-negative integer.
29
+ * @default 0
30
+ */
31
+ timeout?: number;
32
+ /**
33
+ * Default inactivity timeout in milliseconds. 0 means no timeout.
34
+ * Must be a non-negative integer.
35
+ * @default 0
36
+ */
37
+ inactivityTimeout?: number;
38
+ /** Default retry policy for transient failures. */
39
+ retryPolicy?: RetryPolicy;
40
+ /**
41
+ * Default streaming mode.
42
+ * @default 'auto'
43
+ */
44
+ stream?: boolean | 'auto';
45
+ /**
46
+ * Override the global config directory path.
47
+ * Must be an absolute path.
48
+ */
49
+ configDir?: string;
50
+ /**
51
+ * Override the project config directory path.
52
+ * Must be an absolute path.
53
+ */
54
+ projectConfigDir?: string;
55
+ /**
56
+ * Enable debug mode.
57
+ * @default false
58
+ */
59
+ debug?: boolean;
60
+ }
61
+ export type { SessionManager } from './session-manager.js';
62
+ export type { ConfigManager } from './config-manager.js';
63
+ export type { AuthManager } from './auth-manager.js';
64
+ export type { PluginManager } from './plugin-manager.js';
65
+ /** The main entry point for interacting with agent-mux. */
66
+ export declare class AgentMuxClient {
67
+ /** Resolved storage paths. */
68
+ readonly storagePaths: StoragePaths;
69
+ /** The options this client was created with (after defaults). */
70
+ readonly options: Readonly<ClientOptions>;
71
+ /** Adapter registry — discovery, capabilities, installation info. */
72
+ readonly adapters: AdapterRegistry;
73
+ /** Model registry — per-agent model lists and metadata. */
74
+ readonly models: ModelRegistry;
75
+ /** Session manager — read native session files. */
76
+ readonly sessions: SessionManager;
77
+ /** Config manager — read/write agent config files. */
78
+ readonly config: ConfigManager;
79
+ /** Auth manager — detect and surface authentication state. */
80
+ readonly auth: AuthManager;
81
+ /** Profile manager — named RunOptions presets. */
82
+ readonly profiles: ProfileManager;
83
+ /** Plugin manager — install, list, remove plugins per agent. */
84
+ readonly plugins: PluginManager;
85
+ /** Logger instance for this client. */
86
+ private readonly logger;
87
+ /** @internal — use `createClient()` instead. */
88
+ constructor(options: ClientOptions, storagePaths: StoragePaths);
89
+ /**
90
+ * Start an agent run and return a handle for streaming events,
91
+ * interaction, and control.
92
+ *
93
+ * @param options - Run configuration. `agent` and `prompt` are required.
94
+ * @returns RunHandle (not yet implemented — throws)
95
+ * @throws AgentMuxError with code INTERNAL until fully implemented.
96
+ *
97
+ * @see 01-core-types-and-client.md §5.2
98
+ */
99
+ run(options: RunOptions): RunHandle;
100
+ /**
101
+ * Detect whether the current process is running under a supported harness.
102
+ *
103
+ * Aggregates env signals contributed by each registered adapter's
104
+ * `hostEnvSignals` array with the built-in defaults.
105
+ *
106
+ * @returns HostHarnessInfo if a harness is detected, else null.
107
+ */
108
+ detectHost(opts?: DetectHostHarnessOptions): HostHarnessInfo | null;
109
+ }
110
+ /**
111
+ * Create an AgentMuxClient instance.
112
+ *
113
+ * Synchronous. Validates options and returns the client immediately.
114
+ * No I/O is performed during construction.
115
+ *
116
+ * @throws ValidationError if any option value is invalid.
117
+ */
118
+ export declare function createClient(options?: ClientOptions): AgentMuxClient;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,316 @@
1
+ /**
2
+ * AgentMuxClient and createClient factory for @a5c-ai/agent-mux.
3
+ */
4
+ import * as path from 'node:path';
5
+ import { createComponentLogger, telemetry } from '@a5c-ai/agent-mux-observability';
6
+ import { AgentMuxError, ValidationError } from './errors.js';
7
+ import { resolveStoragePaths } from './storage.js';
8
+ import { RunHandleImpl } from './run-handle-impl.js';
9
+ import { startSpawnLoop } from './spawn-runner.js';
10
+ import { startProgrammaticLoop } from './programmatic-runner.js';
11
+ import { startRemoteLoop } from './remote-runner.js';
12
+ import { ProfileManagerImpl } from './profiles.js';
13
+ import { AdapterRegistryImpl } from './adapter-registry.js';
14
+ import { ModelRegistryImpl } from './model-registry.js';
15
+ import { SessionManagerImpl } from './session-manager.js';
16
+ import { ConfigManagerImpl } from './config-manager.js';
17
+ import { AuthManagerImpl } from './auth-manager.js';
18
+ import { PluginManagerImpl } from './plugin-manager-impl.js';
19
+ import { detectHostHarness } from './host-detection.js';
20
+ // ---------------------------------------------------------------------------
21
+ // AgentMuxClient
22
+ // ---------------------------------------------------------------------------
23
+ /** The main entry point for interacting with agent-mux. */
24
+ export class AgentMuxClient {
25
+ /** Resolved storage paths. */
26
+ storagePaths;
27
+ /** The options this client was created with (after defaults). */
28
+ options;
29
+ /** Adapter registry — discovery, capabilities, installation info. */
30
+ adapters;
31
+ /** Model registry — per-agent model lists and metadata. */
32
+ models;
33
+ /** Session manager — read native session files. */
34
+ sessions;
35
+ /** Config manager — read/write agent config files. */
36
+ config;
37
+ /** Auth manager — detect and surface authentication state. */
38
+ auth;
39
+ /** Profile manager — named RunOptions presets. */
40
+ profiles;
41
+ /** Plugin manager — install, list, remove plugins per agent. */
42
+ plugins;
43
+ /** Logger instance for this client. */
44
+ logger = createComponentLogger('client');
45
+ /** @internal — use `createClient()` instead. */
46
+ constructor(options, storagePaths) {
47
+ this.options = Object.freeze({ ...options });
48
+ this.storagePaths = storagePaths;
49
+ this.profiles = new ProfileManagerImpl(storagePaths);
50
+ const adapterRegistry = new AdapterRegistryImpl();
51
+ this.adapters = adapterRegistry;
52
+ this.models = new ModelRegistryImpl(adapterRegistry);
53
+ this.sessions = new SessionManagerImpl(adapterRegistry);
54
+ this.config = new ConfigManagerImpl(adapterRegistry, this.profiles);
55
+ this.auth = new AuthManagerImpl(adapterRegistry);
56
+ this.plugins = new PluginManagerImpl(adapterRegistry);
57
+ }
58
+ /**
59
+ * Start an agent run and return a handle for streaming events,
60
+ * interaction, and control.
61
+ *
62
+ * @param options - Run configuration. `agent` and `prompt` are required.
63
+ * @returns RunHandle (not yet implemented — throws)
64
+ * @throws AgentMuxError with code INTERNAL until fully implemented.
65
+ *
66
+ * @see 01-core-types-and-client.md §5.2
67
+ */
68
+ run(options) {
69
+ try {
70
+ if (!options || typeof options !== 'object') {
71
+ throw new AgentMuxError('VALIDATION_ERROR', 'run() requires RunOptions');
72
+ }
73
+ if (!options.agent) {
74
+ throw new AgentMuxError('VALIDATION_ERROR', 'RunOptions.agent is required');
75
+ }
76
+ if (options.prompt === undefined || options.prompt === null
77
+ || (typeof options.prompt === 'string' && options.prompt.length === 0)
78
+ || (Array.isArray(options.prompt) && options.prompt.length === 0)) {
79
+ throw new AgentMuxError('VALIDATION_ERROR', 'RunOptions.prompt is required and non-empty');
80
+ }
81
+ // Merge client-level defaults onto options (options win).
82
+ const merged = {
83
+ ...options,
84
+ approvalMode: options.approvalMode ?? this.options.approvalMode,
85
+ timeout: options.timeout ?? this.options.timeout,
86
+ inactivityTimeout: options.inactivityTimeout ?? this.options.inactivityTimeout,
87
+ retryPolicy: options.retryPolicy ?? this.options.retryPolicy,
88
+ stream: options.stream ?? this.options.stream,
89
+ model: options.model ?? this.options.defaultModel,
90
+ cwd: options.cwd ?? process.cwd(),
91
+ };
92
+ const adapter = this.adapters.get(merged.agent);
93
+ if (!adapter) {
94
+ throw new AgentMuxError('UNKNOWN_AGENT', `No adapter registered for agent "${merged.agent}"`);
95
+ }
96
+ const runId = merged.runId ?? generateRunId();
97
+ const handle = new RunHandleImpl({
98
+ runId,
99
+ agent: merged.agent,
100
+ model: merged.model,
101
+ approvalMode: merged.approvalMode ?? 'prompt',
102
+ collectEvents: merged.collectEvents ?? false,
103
+ tags: merged.tags,
104
+ });
105
+ // Log and trace the agent run
106
+ this.logger.runStart({
107
+ runId,
108
+ agent: merged.agent,
109
+ prompt: Array.isArray(merged.prompt) ? merged.prompt.join('\n') : merged.prompt,
110
+ model: merged.model,
111
+ });
112
+ telemetry.recordRunStart(merged.agent, merged.model);
113
+ const multiAdapter = adapter;
114
+ if (multiAdapter.adapterType === 'programmatic') {
115
+ startProgrammaticLoop(handle, adapter, merged);
116
+ }
117
+ else if (multiAdapter.adapterType === 'remote') {
118
+ startRemoteLoop(handle, adapter, merged);
119
+ }
120
+ else if (multiAdapter.adapterType === 'subprocess' || multiAdapter.adapterType === undefined) {
121
+ startSpawnLoop(handle, adapter, merged);
122
+ }
123
+ else {
124
+ throw new AgentMuxError('CAPABILITY_ERROR', `Unsupported adapter type for "${merged.agent}"`, false);
125
+ }
126
+ return handle;
127
+ }
128
+ catch (err) {
129
+ this.logger.runError({
130
+ runId: options?.runId ?? 'unknown',
131
+ agent: options?.agent ?? 'unknown',
132
+ error: err,
133
+ });
134
+ throw err;
135
+ }
136
+ }
137
+ /**
138
+ * Detect whether the current process is running under a supported harness.
139
+ *
140
+ * Aggregates env signals contributed by each registered adapter's
141
+ * `hostEnvSignals` array with the built-in defaults.
142
+ *
143
+ * @returns HostHarnessInfo if a harness is detected, else null.
144
+ */
145
+ detectHost(opts = {}) {
146
+ // Merge adapter-provided signals & metadata readers over defaults.
147
+ const mergedSignals = {};
148
+ const mergedMeta = {};
149
+ for (const info of this.adapters.list()) {
150
+ const adapter = this.adapters.get(info.agent);
151
+ const sigs = adapter?.hostEnvSignals;
152
+ if (Array.isArray(sigs) && sigs.length > 0) {
153
+ mergedSignals[info.agent] = sigs;
154
+ }
155
+ if (typeof adapter?.readHostMetadata === 'function') {
156
+ mergedMeta[info.agent] = adapter.readHostMetadata.bind(adapter);
157
+ }
158
+ }
159
+ return detectHostHarness({
160
+ ...opts,
161
+ signals: { ...mergedSignals, ...(opts.signals ?? {}) },
162
+ metadata: { ...mergedMeta, ...(opts.metadata ?? {}) },
163
+ });
164
+ }
165
+ }
166
+ // ---------------------------------------------------------------------------
167
+ // Run ID generator (Crockford base32, 26 chars, ULID-compatible pattern)
168
+ // ---------------------------------------------------------------------------
169
+ const CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
170
+ function generateRunId() {
171
+ let out = '';
172
+ for (let i = 0; i < 26; i++) {
173
+ out += CROCKFORD[Math.floor(Math.random() * CROCKFORD.length)];
174
+ }
175
+ return out;
176
+ }
177
+ // ---------------------------------------------------------------------------
178
+ // createClient() factory (§5.1)
179
+ // ---------------------------------------------------------------------------
180
+ /**
181
+ * Create an AgentMuxClient instance.
182
+ *
183
+ * Synchronous. Validates options and returns the client immediately.
184
+ * No I/O is performed during construction.
185
+ *
186
+ * @throws ValidationError if any option value is invalid.
187
+ */
188
+ export function createClient(options) {
189
+ const opts = options ?? {};
190
+ validateClientOptions(opts);
191
+ const storagePaths = resolveStoragePaths({
192
+ configDir: opts.configDir,
193
+ projectConfigDir: opts.projectConfigDir,
194
+ });
195
+ return new AgentMuxClient(opts, storagePaths);
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // Validation
199
+ // ---------------------------------------------------------------------------
200
+ /** Set of all valid ErrorCode values for runtime validation. */
201
+ const VALID_ERROR_CODES = new Set([
202
+ 'CAPABILITY_ERROR', 'VALIDATION_ERROR', 'AUTH_ERROR',
203
+ 'AGENT_NOT_FOUND', 'AGENT_NOT_INSTALLED', 'AGENT_CRASH',
204
+ 'SPAWN_ERROR', 'TIMEOUT', 'INACTIVITY_TIMEOUT',
205
+ 'PARSE_ERROR', 'CONFIG_ERROR', 'CONFIG_LOCK_ERROR',
206
+ 'SESSION_NOT_FOUND', 'PROFILE_NOT_FOUND', 'PLUGIN_ERROR',
207
+ 'RATE_LIMITED', 'CONTEXT_EXCEEDED', 'ABORTED',
208
+ 'RUN_NOT_ACTIVE', 'STDIN_NOT_AVAILABLE', 'NO_PENDING_INTERACTION',
209
+ 'INVALID_STATE_TRANSITION', 'PTY_NOT_AVAILABLE', 'UNKNOWN_AGENT', 'INTERNAL',
210
+ ]);
211
+ function validateClientOptions(options) {
212
+ const errors = [];
213
+ if (options.timeout !== undefined) {
214
+ if (typeof options.timeout !== 'number' || !Number.isFinite(options.timeout) || options.timeout < 0 || !Number.isInteger(options.timeout)) {
215
+ errors.push({
216
+ field: 'timeout',
217
+ message: 'must be a non-negative integer',
218
+ received: options.timeout,
219
+ expected: '>= 0 (integer, ms)',
220
+ });
221
+ }
222
+ }
223
+ if (options.inactivityTimeout !== undefined) {
224
+ if (typeof options.inactivityTimeout !== 'number' ||
225
+ !Number.isFinite(options.inactivityTimeout) ||
226
+ options.inactivityTimeout < 0 ||
227
+ !Number.isInteger(options.inactivityTimeout)) {
228
+ errors.push({
229
+ field: 'inactivityTimeout',
230
+ message: 'must be a non-negative integer',
231
+ received: options.inactivityTimeout,
232
+ expected: '>= 0 (integer, ms)',
233
+ });
234
+ }
235
+ }
236
+ if (options.configDir !== undefined) {
237
+ if (!path.isAbsolute(options.configDir)) {
238
+ errors.push({
239
+ field: 'configDir',
240
+ message: 'must be an absolute path',
241
+ received: options.configDir,
242
+ expected: 'Absolute path',
243
+ });
244
+ }
245
+ }
246
+ if (options.projectConfigDir !== undefined) {
247
+ if (!path.isAbsolute(options.projectConfigDir)) {
248
+ errors.push({
249
+ field: 'projectConfigDir',
250
+ message: 'must be an absolute path',
251
+ received: options.projectConfigDir,
252
+ expected: 'Absolute path',
253
+ });
254
+ }
255
+ }
256
+ if (options.approvalMode !== undefined) {
257
+ const valid = ['yolo', 'prompt', 'deny'];
258
+ if (!valid.includes(options.approvalMode)) {
259
+ errors.push({
260
+ field: 'approvalMode',
261
+ message: 'must be one of: yolo, prompt, deny',
262
+ received: options.approvalMode,
263
+ expected: "'yolo' | 'prompt' | 'deny'",
264
+ });
265
+ }
266
+ }
267
+ if (options.retryPolicy !== undefined) {
268
+ const rp = options.retryPolicy;
269
+ if (rp.maxAttempts !== undefined && (typeof rp.maxAttempts !== 'number' || !Number.isFinite(rp.maxAttempts) || rp.maxAttempts < 1 || !Number.isInteger(rp.maxAttempts))) {
270
+ errors.push({ field: 'retryPolicy.maxAttempts', message: 'must be an integer >= 1', received: rp.maxAttempts, expected: '>= 1 (integer)' });
271
+ }
272
+ if (rp.baseDelayMs !== undefined && (typeof rp.baseDelayMs !== 'number' || !Number.isFinite(rp.baseDelayMs) || rp.baseDelayMs < 0 || !Number.isInteger(rp.baseDelayMs))) {
273
+ errors.push({ field: 'retryPolicy.baseDelayMs', message: 'must be a non-negative integer', received: rp.baseDelayMs, expected: '>= 0 (integer)' });
274
+ }
275
+ if (rp.maxDelayMs !== undefined && (typeof rp.maxDelayMs !== 'number' || !Number.isFinite(rp.maxDelayMs) || rp.maxDelayMs < 0 || !Number.isInteger(rp.maxDelayMs))) {
276
+ errors.push({ field: 'retryPolicy.maxDelayMs', message: 'must be a non-negative integer', received: rp.maxDelayMs, expected: '>= 0 (integer)' });
277
+ }
278
+ // Cross-field: maxDelayMs must be >= baseDelayMs (using defaults when not provided)
279
+ {
280
+ const effectiveBase = rp.baseDelayMs ?? 1000;
281
+ const effectiveMax = rp.maxDelayMs ?? 30_000;
282
+ if (effectiveMax < effectiveBase) {
283
+ errors.push({ field: 'retryPolicy.maxDelayMs', message: 'must be >= baseDelayMs', received: rp.maxDelayMs ?? effectiveMax, expected: `>= ${effectiveBase}` });
284
+ }
285
+ }
286
+ if (rp.jitterFactor !== undefined && (typeof rp.jitterFactor !== 'number' || !Number.isFinite(rp.jitterFactor) || rp.jitterFactor < 0 || rp.jitterFactor > 1)) {
287
+ errors.push({ field: 'retryPolicy.jitterFactor', message: 'must be between 0.0 and 1.0', received: rp.jitterFactor, expected: '[0.0, 1.0]' });
288
+ }
289
+ if (rp.retryOn !== undefined) {
290
+ if (!Array.isArray(rp.retryOn)) {
291
+ errors.push({ field: 'retryPolicy.retryOn', message: 'must be an array of ErrorCode strings', received: rp.retryOn, expected: 'ErrorCode[]' });
292
+ }
293
+ else {
294
+ for (const code of rp.retryOn) {
295
+ if (!VALID_ERROR_CODES.has(code)) {
296
+ errors.push({ field: 'retryPolicy.retryOn', message: `invalid error code: ${String(code)}`, received: code, expected: 'ErrorCode' });
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ if (options.stream !== undefined) {
303
+ if (options.stream !== true && options.stream !== false && options.stream !== 'auto') {
304
+ errors.push({
305
+ field: 'stream',
306
+ message: "must be true, false, or 'auto'",
307
+ received: options.stream,
308
+ expected: "boolean | 'auto'",
309
+ });
310
+ }
311
+ }
312
+ if (errors.length > 0) {
313
+ throw new ValidationError(errors);
314
+ }
315
+ }
316
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ConfigManager interface and implementation for @a5c-ai/agent-mux.
3
+ *
4
+ * Provides unified configuration access for all supported agents.
5
+ * Reads and writes each agent's native config through the adapter layer.
6
+ *
7
+ * @see 08-config-and-auth.md
8
+ */
9
+ import type { AgentName, McpServerConfig } from './types.js';
10
+ import type { AdapterRegistry } from './adapter-registry.js';
11
+ import type { ProfileManager } from './profiles.js';
12
+ import type { AgentConfig, AgentConfigSchema } from './config-types.js';
13
+ export type { AgentConfig, AgentConfigSchema, ConfigField, ValidationResult, ConfigValidationError, ConfigValidationWarning, ModelSelection, } from './config-types.js';
14
+ import type { ModelSelection, ValidationResult } from './config-types.js';
15
+ /** Unified configuration access for all supported agents. */
16
+ export interface ConfigManager {
17
+ /** Read the full merged configuration for an agent. */
18
+ get(agent: AgentName): AgentConfig;
19
+ /** Read a single field from the merged configuration. */
20
+ getField(agent: AgentName, field: string): unknown;
21
+ /** Write partial configuration updates to the agent's native config file. */
22
+ set(agent: AgentName, fields: Partial<AgentConfig>): Promise<void>;
23
+ /** Write a single field to the agent's native config file. */
24
+ setField(agent: AgentName, field: string, value: unknown): Promise<void>;
25
+ /** Returns the configuration schema for an agent. */
26
+ schema(agent: AgentName): AgentConfigSchema;
27
+ /** Validate a partial config against the agent's schema. */
28
+ validate(agent: AgentName, config: Partial<AgentConfig>): ValidationResult;
29
+ /** Returns all MCP server configurations from the agent's config. */
30
+ getMcpServers(agent: AgentName): McpServerConfig[];
31
+ /** Returns configured/default/effective model selection for an agent. */
32
+ getModelSelection(agent: AgentName): ModelSelection;
33
+ /** Update model/provider selection fields in the agent config. */
34
+ setModelSelection(agent: AgentName, selection: {
35
+ model?: string | null;
36
+ provider?: string | null;
37
+ }): Promise<void>;
38
+ /** Add an MCP server to the agent's config. */
39
+ addMcpServer(agent: AgentName, server: McpServerConfig): Promise<void>;
40
+ /** Remove an MCP server from the agent's config by name. */
41
+ removeMcpServer(agent: AgentName, serverName: string): Promise<void>;
42
+ /** Invalidate cache and re-read from disk. */
43
+ reload(agent?: AgentName): Promise<void>;
44
+ /** Returns the ProfileManager instance. */
45
+ profiles(): ProfileManager;
46
+ }
47
+ /**
48
+ * Implementation of ConfigManager.
49
+ *
50
+ * Delegates file I/O to agent adapters. Provides caching,
51
+ * deep merge, field-level access, and schema introspection.
52
+ */
53
+ export declare class ConfigManagerImpl implements ConfigManager {
54
+ private readonly _adapters;
55
+ private readonly _profileManager;
56
+ private readonly _cache;
57
+ /**
58
+ * Per-agent write serialisation. All `.set()` / `.setField()` / MCP mutation
59
+ * calls for a given agent queue onto the same promise so concurrent callers
60
+ * cannot interleave read-modify-write sequences. File-level atomicity is
61
+ * additionally enforced by the adapter writing through `writeJsonAtomic`
62
+ * from `atomic-fs.ts`, which uses a tmp+fsync+rename + advisory lockfile.
63
+ */
64
+ private readonly _writeQueue;
65
+ constructor(adapters: AdapterRegistry, profileManager: ProfileManager);
66
+ private _getAdapter;
67
+ get(agent: AgentName): AgentConfig;
68
+ getField(agent: AgentName, field: string): unknown;
69
+ set(agent: AgentName, fields: Partial<AgentConfig>): Promise<void>;
70
+ /** Serialise writes per agent so concurrent `.set()` cannot interleave. */
71
+ private _enqueueWrite;
72
+ setField(agent: AgentName, field: string, value: unknown): Promise<void>;
73
+ schema(agent: AgentName): AgentConfigSchema;
74
+ validate(_agent: AgentName, _config: Partial<AgentConfig>): ValidationResult;
75
+ getMcpServers(agent: AgentName): McpServerConfig[];
76
+ getModelSelection(agent: AgentName): ModelSelection;
77
+ setModelSelection(agent: AgentName, selection: {
78
+ model?: string | null;
79
+ provider?: string | null;
80
+ }): Promise<void>;
81
+ addMcpServer(agent: AgentName, server: McpServerConfig): Promise<void>;
82
+ removeMcpServer(agent: AgentName, serverName: string): Promise<void>;
83
+ reload(agent?: AgentName): Promise<void>;
84
+ profiles(): ProfileManager;
85
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}