adonis-ai-kit 0.0.0-stage → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/LICENSE +21 -0
  3. package/README.md +397 -2
  4. package/dist/commands/ai_test.d.ts +12 -0
  5. package/dist/commands/ai_test.d.ts.map +1 -0
  6. package/dist/commands/ai_test.js +98 -0
  7. package/dist/commands/ai_test.js.map +1 -0
  8. package/dist/commands/main.d.ts +14 -0
  9. package/dist/commands/main.d.ts.map +1 -0
  10. package/dist/commands/main.js +31 -0
  11. package/dist/commands/main.js.map +1 -0
  12. package/dist/commands/make_agent.d.ts +13 -0
  13. package/dist/commands/make_agent.d.ts.map +1 -0
  14. package/dist/commands/make_agent.js +116 -0
  15. package/dist/commands/make_agent.js.map +1 -0
  16. package/dist/providers/ai_provider.d.ts +23 -0
  17. package/dist/providers/ai_provider.d.ts.map +1 -0
  18. package/dist/providers/ai_provider.js +34 -0
  19. package/dist/providers/ai_provider.js.map +1 -0
  20. package/dist/services/main.d.ts +4 -0
  21. package/dist/services/main.d.ts.map +1 -0
  22. package/dist/services/main.js +7 -0
  23. package/dist/services/main.js.map +1 -0
  24. package/dist/src/acp/acp_agents.d.ts +89 -0
  25. package/dist/src/acp/acp_agents.d.ts.map +1 -0
  26. package/dist/src/acp/acp_agents.js +367 -0
  27. package/dist/src/acp/acp_agents.js.map +1 -0
  28. package/dist/src/acp/index.d.ts +4 -0
  29. package/dist/src/acp/index.d.ts.map +1 -0
  30. package/dist/src/acp/index.js +4 -0
  31. package/dist/src/acp/index.js.map +1 -0
  32. package/dist/src/acp/provider.d.ts +74 -0
  33. package/dist/src/acp/provider.d.ts.map +1 -0
  34. package/dist/src/acp/provider.js +276 -0
  35. package/dist/src/acp/provider.js.map +1 -0
  36. package/dist/src/acp/types.d.ts +128 -0
  37. package/dist/src/acp/types.d.ts.map +1 -0
  38. package/dist/src/acp/types.js +2 -0
  39. package/dist/src/acp/types.js.map +1 -0
  40. package/dist/src/agents/agent_runner.d.ts +60 -0
  41. package/dist/src/agents/agent_runner.d.ts.map +1 -0
  42. package/dist/src/agents/agent_runner.js +134 -0
  43. package/dist/src/agents/agent_runner.js.map +1 -0
  44. package/dist/src/agents/index.d.ts +4 -0
  45. package/dist/src/agents/index.d.ts.map +1 -0
  46. package/dist/src/agents/index.js +4 -0
  47. package/dist/src/agents/index.js.map +1 -0
  48. package/dist/src/agents/loader.d.ts +56 -0
  49. package/dist/src/agents/loader.d.ts.map +1 -0
  50. package/dist/src/agents/loader.js +184 -0
  51. package/dist/src/agents/loader.js.map +1 -0
  52. package/dist/src/agents/manifest.d.ts +61 -0
  53. package/dist/src/agents/manifest.d.ts.map +1 -0
  54. package/dist/src/agents/manifest.js +35 -0
  55. package/dist/src/agents/manifest.js.map +1 -0
  56. package/dist/src/ai_manager.d.ts +140 -0
  57. package/dist/src/ai_manager.d.ts.map +1 -0
  58. package/dist/src/ai_manager.js +814 -0
  59. package/dist/src/ai_manager.js.map +1 -0
  60. package/dist/src/budget/budget_allocator.d.ts +37 -0
  61. package/dist/src/budget/budget_allocator.d.ts.map +1 -0
  62. package/dist/src/budget/budget_allocator.js +98 -0
  63. package/dist/src/budget/budget_allocator.js.map +1 -0
  64. package/dist/src/budget/budget_enforcer.d.ts +70 -0
  65. package/dist/src/budget/budget_enforcer.d.ts.map +1 -0
  66. package/dist/src/budget/budget_enforcer.js +195 -0
  67. package/dist/src/budget/budget_enforcer.js.map +1 -0
  68. package/dist/src/budget/cost_tracker.d.ts +71 -0
  69. package/dist/src/budget/cost_tracker.d.ts.map +1 -0
  70. package/dist/src/budget/cost_tracker.js +199 -0
  71. package/dist/src/budget/cost_tracker.js.map +1 -0
  72. package/dist/src/budget/index.d.ts +6 -0
  73. package/dist/src/budget/index.d.ts.map +1 -0
  74. package/dist/src/budget/index.js +6 -0
  75. package/dist/src/budget/index.js.map +1 -0
  76. package/dist/src/budget/pricing.d.ts +35 -0
  77. package/dist/src/budget/pricing.d.ts.map +1 -0
  78. package/dist/src/budget/pricing.js +129 -0
  79. package/dist/src/budget/pricing.js.map +1 -0
  80. package/dist/src/budget/types.d.ts +86 -0
  81. package/dist/src/budget/types.d.ts.map +1 -0
  82. package/dist/src/budget/types.js +2 -0
  83. package/dist/src/budget/types.js.map +1 -0
  84. package/dist/src/catalog/index.d.ts +3 -0
  85. package/dist/src/catalog/index.d.ts.map +1 -0
  86. package/dist/src/catalog/index.js +3 -0
  87. package/dist/src/catalog/index.js.map +1 -0
  88. package/dist/src/catalog/models_dev.d.ts +87 -0
  89. package/dist/src/catalog/models_dev.d.ts.map +1 -0
  90. package/dist/src/catalog/models_dev.js +38 -0
  91. package/dist/src/catalog/models_dev.js.map +1 -0
  92. package/dist/src/catalog/source.d.ts +67 -0
  93. package/dist/src/catalog/source.d.ts.map +1 -0
  94. package/dist/src/catalog/source.js +678 -0
  95. package/dist/src/catalog/source.js.map +1 -0
  96. package/dist/src/circuit_breaker.d.ts +61 -0
  97. package/dist/src/circuit_breaker.d.ts.map +1 -0
  98. package/dist/src/circuit_breaker.js +217 -0
  99. package/dist/src/circuit_breaker.js.map +1 -0
  100. package/dist/src/define_config.d.ts +11 -0
  101. package/dist/src/define_config.d.ts.map +1 -0
  102. package/dist/src/define_config.js +48 -0
  103. package/dist/src/define_config.js.map +1 -0
  104. package/dist/src/error_classifier.d.ts +50 -0
  105. package/dist/src/error_classifier.d.ts.map +1 -0
  106. package/dist/src/error_classifier.js +206 -0
  107. package/dist/src/error_classifier.js.map +1 -0
  108. package/dist/src/errors.d.ts +52 -0
  109. package/dist/src/errors.d.ts.map +1 -0
  110. package/dist/src/errors.js +70 -0
  111. package/dist/src/errors.js.map +1 -0
  112. package/dist/src/guard/confirmation.d.ts +67 -0
  113. package/dist/src/guard/confirmation.d.ts.map +1 -0
  114. package/dist/src/guard/confirmation.js +180 -0
  115. package/dist/src/guard/confirmation.js.map +1 -0
  116. package/dist/src/guard/errors.d.ts +10 -0
  117. package/dist/src/guard/errors.d.ts.map +1 -0
  118. package/dist/src/guard/errors.js +14 -0
  119. package/dist/src/guard/errors.js.map +1 -0
  120. package/dist/src/guard/guard.d.ts +47 -0
  121. package/dist/src/guard/guard.d.ts.map +1 -0
  122. package/dist/src/guard/guard.js +133 -0
  123. package/dist/src/guard/guard.js.map +1 -0
  124. package/dist/src/guard/index.d.ts +7 -0
  125. package/dist/src/guard/index.d.ts.map +1 -0
  126. package/dist/src/guard/index.js +7 -0
  127. package/dist/src/guard/index.js.map +1 -0
  128. package/dist/src/guard/registry.d.ts +72 -0
  129. package/dist/src/guard/registry.d.ts.map +1 -0
  130. package/dist/src/guard/registry.js +192 -0
  131. package/dist/src/guard/registry.js.map +1 -0
  132. package/dist/src/guard/schema_registry.d.ts +37 -0
  133. package/dist/src/guard/schema_registry.d.ts.map +1 -0
  134. package/dist/src/guard/schema_registry.js +57 -0
  135. package/dist/src/guard/schema_registry.js.map +1 -0
  136. package/dist/src/guard/types.d.ts +63 -0
  137. package/dist/src/guard/types.d.ts.map +1 -0
  138. package/dist/src/guard/types.js +2 -0
  139. package/dist/src/guard/types.js.map +1 -0
  140. package/dist/src/index.d.ts +16 -0
  141. package/dist/src/index.d.ts.map +1 -0
  142. package/dist/src/index.js +14 -0
  143. package/dist/src/index.js.map +1 -0
  144. package/dist/src/logger.d.ts +7 -0
  145. package/dist/src/logger.d.ts.map +1 -0
  146. package/dist/src/logger.js +2 -0
  147. package/dist/src/logger.js.map +1 -0
  148. package/dist/src/models/catalog_resolver.d.ts +24 -0
  149. package/dist/src/models/catalog_resolver.d.ts.map +1 -0
  150. package/dist/src/models/catalog_resolver.js +66 -0
  151. package/dist/src/models/catalog_resolver.js.map +1 -0
  152. package/dist/src/models/index.d.ts +14 -0
  153. package/dist/src/models/index.d.ts.map +1 -0
  154. package/dist/src/models/index.js +8 -0
  155. package/dist/src/models/index.js.map +1 -0
  156. package/dist/src/models/keys.d.ts +9 -0
  157. package/dist/src/models/keys.d.ts.map +1 -0
  158. package/dist/src/models/keys.js +12 -0
  159. package/dist/src/models/keys.js.map +1 -0
  160. package/dist/src/models/language_model_factory.d.ts +44 -0
  161. package/dist/src/models/language_model_factory.d.ts.map +1 -0
  162. package/dist/src/models/language_model_factory.js +193 -0
  163. package/dist/src/models/language_model_factory.js.map +1 -0
  164. package/dist/src/models/model_chain.d.ts +58 -0
  165. package/dist/src/models/model_chain.d.ts.map +1 -0
  166. package/dist/src/models/model_chain.js +144 -0
  167. package/dist/src/models/model_chain.js.map +1 -0
  168. package/dist/src/models/model_ref.d.ts +12 -0
  169. package/dist/src/models/model_ref.d.ts.map +1 -0
  170. package/dist/src/models/model_ref.js +33 -0
  171. package/dist/src/models/model_ref.js.map +1 -0
  172. package/dist/src/models/protocols.d.ts +6 -0
  173. package/dist/src/models/protocols.d.ts.map +1 -0
  174. package/dist/src/models/protocols.js +33 -0
  175. package/dist/src/models/protocols.js.map +1 -0
  176. package/dist/src/models/provider_factories.d.ts +19 -0
  177. package/dist/src/models/provider_factories.d.ts.map +1 -0
  178. package/dist/src/models/provider_factories.js +70 -0
  179. package/dist/src/models/provider_factories.js.map +1 -0
  180. package/dist/src/models/types.d.ts +17 -0
  181. package/dist/src/models/types.d.ts.map +1 -0
  182. package/dist/src/models/types.js +2 -0
  183. package/dist/src/models/types.js.map +1 -0
  184. package/dist/src/response_macro.d.ts +16 -0
  185. package/dist/src/response_macro.d.ts.map +1 -0
  186. package/dist/src/response_macro.js +151 -0
  187. package/dist/src/response_macro.js.map +1 -0
  188. package/dist/src/types.d.ts +340 -0
  189. package/dist/src/types.d.ts.map +1 -0
  190. package/dist/src/types.js +2 -0
  191. package/dist/src/types.js.map +1 -0
  192. package/dist/src/usage.d.ts +13 -0
  193. package/dist/src/usage.d.ts.map +1 -0
  194. package/dist/src/usage.js +61 -0
  195. package/dist/src/usage.js.map +1 -0
  196. package/package.json +208 -4
@@ -0,0 +1,367 @@
1
+ import { existsSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ /**
4
+ * Built-in ACP agent configurations. These are the ONLY commands that may be started from a
5
+ * model name; anything else must be configured explicitly via `AcpProviderConfig.command`.
6
+ *
7
+ * Commands follow the agents' own ACP docs: Claude via the `claude-agent-acp` adapter, Gemini CLI
8
+ * with `--acp`, Qwen Code's `qwen --acp`, Codex via `codex-acp`, `opencode acp`.
9
+ * `sourcecraft` and `freebuff` could not be verified against upstream docs; override them with
10
+ * `ACP_<AGENT>_PATH` / `ACP_<AGENT>_ARGS` if your install differs.
11
+ */
12
+ const DEFAULT_ACP_AGENTS = Object.freeze({
13
+ 'claude-code': {
14
+ id: 'claude-code',
15
+ name: 'Claude Code',
16
+ description: "Anthropic's agentic coding CLI tool",
17
+ command: 'claude-agent-acp',
18
+ args: [],
19
+ envVarPrefix: 'ACP_CLAUDE_CODE',
20
+ supportsMcpServers: true,
21
+ credentialEnv: [{ target: 'ANTHROPIC_API_KEY', sources: ['ANTHROPIC_API_KEY'] }],
22
+ },
23
+ 'gemini': {
24
+ id: 'gemini',
25
+ name: 'Gemini CLI',
26
+ description: "Google's Gemini CLI agent",
27
+ command: 'gemini',
28
+ args: ['--acp'],
29
+ envVarPrefix: 'ACP_GEMINI',
30
+ supportsMcpServers: true,
31
+ authMethodId: 'gemini-api-key',
32
+ credentialEnv: [{ target: 'GEMINI_API_KEY', sources: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'] }],
33
+ },
34
+ 'codex': {
35
+ id: 'codex',
36
+ name: 'Codex CLI',
37
+ description: "OpenAI's Codex CLI agent",
38
+ command: 'codex-acp',
39
+ args: [],
40
+ envVarPrefix: 'ACP_CODEX',
41
+ supportsMcpServers: true,
42
+ credentialEnv: [{ target: 'OPENAI_API_KEY', sources: ['OPENAI_API_KEY'] }],
43
+ },
44
+ 'qwen-code': {
45
+ id: 'qwen-code',
46
+ name: 'Qwen Code',
47
+ description: "Alibaba's Qwen Code CLI agent",
48
+ command: 'qwen',
49
+ args: ['--acp'],
50
+ envVarPrefix: 'ACP_QWEN_CODE',
51
+ supportsMcpServers: true,
52
+ credentialEnv: [{ target: 'DASHSCOPE_API_KEY', sources: ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'] }],
53
+ },
54
+ /** @deprecated Removed from defaults in 2.0; register it with registerAcpAgent() */
55
+ 'sourcecraft': {
56
+ id: 'sourcecraft',
57
+ name: 'SourceCraft Code Assistant',
58
+ description: "SourceCraft's Code Assistant agent via CLI",
59
+ command: 'src',
60
+ args: ['code', '--', 'acp'],
61
+ envVarPrefix: 'ACP_SOURCECRAFT',
62
+ supportsMcpServers: true,
63
+ },
64
+ 'opencode': {
65
+ id: 'opencode',
66
+ name: 'OpenCode',
67
+ description: 'OpenCode AI coding assistant',
68
+ command: 'opencode',
69
+ args: ['acp'],
70
+ envVarPrefix: 'ACP_OPENCODE',
71
+ supportsMcpServers: true,
72
+ credentialEnv: [{ target: 'OPENCODE_API_KEY', sources: ['OPENCODE_API_KEY'] }],
73
+ },
74
+ /** @deprecated Removed from defaults in 2.0; register it with registerAcpAgent() */
75
+ 'freebuff': {
76
+ id: 'freebuff',
77
+ name: 'Freebuff',
78
+ description: 'Freebuff AI coding agent',
79
+ command: 'codebuff-agent-acp',
80
+ args: [],
81
+ envVarPrefix: 'ACP_FREEBUFF',
82
+ supportsMcpServers: true,
83
+ credentialEnv: [
84
+ { target: 'CODEBUFF_API_KEY', sources: ['CODEBUFF_API_KEY', 'FREEBUFF_API_KEY'] },
85
+ { target: 'FREEBUFF_API_KEY', sources: ['CODEBUFF_API_KEY', 'FREEBUFF_API_KEY'] },
86
+ ],
87
+ },
88
+ });
89
+ /**
90
+ * Registry of the ACP agents this application may start.
91
+ *
92
+ * It starts with the built-in agents, and an application can replace it with the
93
+ * binaries that are actually installed on the operator's machine
94
+ * (`setAcpAgents`) or extend it (`registerAcpAgent`).
95
+ */
96
+ export const ACP_AGENTS = { ...DEFAULT_ACP_AGENTS };
97
+ /**
98
+ * Registers (or replaces) one ACP agent.
99
+ */
100
+ export function registerAcpAgent(agentId, config) {
101
+ ACP_AGENTS[agentId] = config;
102
+ }
103
+ /**
104
+ * Replaces the whole agent registry, e.g. with the binaries of a given deployment.
105
+ */
106
+ export function setAcpAgents(agents) {
107
+ for (const key of Object.keys(ACP_AGENTS))
108
+ delete ACP_AGENTS[key];
109
+ Object.assign(ACP_AGENTS, agents);
110
+ }
111
+ /**
112
+ * Restores the built-in agent registry.
113
+ */
114
+ export function resetAcpAgents() {
115
+ setAcpAgents(DEFAULT_ACP_AGENTS);
116
+ }
117
+ /**
118
+ * Get ACP agent configuration by ID.
119
+ */
120
+ export function getAcpAgentConfig(agentId) {
121
+ return ACP_AGENTS[agentId];
122
+ }
123
+ /**
124
+ * List all available ACP agent IDs.
125
+ */
126
+ export function listAcpAgentIds() {
127
+ return Object.keys(ACP_AGENTS);
128
+ }
129
+ /**
130
+ * Check if an agent ID is a valid ACP agent.
131
+ */
132
+ export function isAcpAgent(agentId) {
133
+ return agentId in ACP_AGENTS;
134
+ }
135
+ /**
136
+ * Parse agent arguments from env string.
137
+ * Supports JSON arrays (e.g., '["--flag","--opt","val"]')
138
+ * and falls back to comma-separated values.
139
+ */
140
+ export function parseAcpArgs(argsOverride, fallback, logger) {
141
+ if (!argsOverride)
142
+ return fallback;
143
+ const trimmed = argsOverride.trim();
144
+ if (trimmed.startsWith('[')) {
145
+ try {
146
+ const parsed = JSON.parse(trimmed);
147
+ if (Array.isArray(parsed) && parsed.every((item) => typeof item === 'string')) {
148
+ return parsed;
149
+ }
150
+ }
151
+ catch {
152
+ logger?.warn?.(`[ACP] Invalid JSON array in args override: ${trimmed}`);
153
+ }
154
+ }
155
+ return trimmed
156
+ .split(',')
157
+ .map((s) => s.trim())
158
+ .filter(Boolean);
159
+ }
160
+ function toNameValueList(input) {
161
+ if (Array.isArray(input)) {
162
+ return input.filter((item) => item !== null &&
163
+ typeof item === 'object' &&
164
+ typeof item.name === 'string' &&
165
+ typeof item.value === 'string');
166
+ }
167
+ if (input !== null && typeof input === 'object') {
168
+ return Object.entries(input)
169
+ .filter(([, value]) => typeof value === 'string')
170
+ .map(([name, value]) => ({ name, value: value }));
171
+ }
172
+ return [];
173
+ }
174
+ /**
175
+ * Validates an MCP server definition and converts it to the exact shape required by the ACP
176
+ * schema: stdio servers have no `type` and an `env` array; remote servers have `type`
177
+ * 'http' | 'sse' and a `headers` array. Legacy `Record` env/headers and `httpUrl` are accepted.
178
+ * Returns `null` for unusable entries.
179
+ */
180
+ export function normalizeMcpServer(input) {
181
+ if (input === null || typeof input !== 'object')
182
+ return null;
183
+ const raw = input;
184
+ if (typeof raw.name !== 'string' || raw.name.length === 0)
185
+ return null;
186
+ const url = typeof raw.url === 'string' ? raw.url : typeof raw.httpUrl === 'string' ? raw.httpUrl : undefined;
187
+ if (raw.type === 'http' || raw.type === 'sse' || (raw.type === undefined && url && !raw.command)) {
188
+ if (!url)
189
+ return null;
190
+ return {
191
+ type: raw.type === 'sse' ? 'sse' : 'http',
192
+ name: raw.name,
193
+ url,
194
+ headers: toNameValueList(raw.headers),
195
+ };
196
+ }
197
+ if (typeof raw.command !== 'string' || raw.command.length === 0)
198
+ return null;
199
+ return {
200
+ name: raw.name,
201
+ command: raw.command,
202
+ args: Array.isArray(raw.args) ? raw.args.filter((a) => typeof a === 'string') : [],
203
+ env: toNameValueList(raw.env),
204
+ };
205
+ }
206
+ /** Builds the stdio MCP server entry for a project-local MCP server file. */
207
+ export function buildProjectMcpServer(config, logger) {
208
+ const serverPath = path.resolve(config.path);
209
+ if (!existsSync(serverPath)) {
210
+ logger?.warn?.(`[ACP] Project MCP server not found: ${serverPath}. Skipping project MCP.`);
211
+ return null;
212
+ }
213
+ return {
214
+ name: config.name ?? 'project-tools',
215
+ command: config.command ?? 'node',
216
+ args: [serverPath],
217
+ env: [],
218
+ };
219
+ }
220
+ export function buildAcpRuntimeConfig(agentId, optionsOrGetEnv, positionalEnvSource, positionalLogger) {
221
+ // Positional form: getEnv is a function, or explicitly undefined with trailing arguments.
222
+ const isPositional = typeof optionsOrGetEnv === 'function' ||
223
+ (optionsOrGetEnv === undefined && arguments.length > 2);
224
+ const options = isPositional
225
+ ? {
226
+ getEnv: optionsOrGetEnv,
227
+ envSource: positionalEnvSource,
228
+ logger: positionalLogger,
229
+ }
230
+ : (optionsOrGetEnv ?? {});
231
+ const getEnv = options.getEnv ?? ((key) => process.env[key]);
232
+ const envSource = options.envSource ?? process.env;
233
+ const { logger } = options;
234
+ const config = getAcpAgentConfig(agentId);
235
+ if (!config)
236
+ return null;
237
+ const prefix = config.envVarPrefix;
238
+ // Build command (allow override via env)
239
+ const command = getEnv(`${prefix}_PATH`) || config.command;
240
+ // Build args (allow override via env)
241
+ const args = parseAcpArgs(getEnv(`${prefix}_ARGS`), config.args, logger);
242
+ // Build cwd (allow override via env, default to current working directory)
243
+ const cwd = path.resolve(getEnv(`${prefix}_CWD`) || process.cwd());
244
+ // Build environment variables
245
+ const env = {};
246
+ // Add the agent's declared credentials: first source that has a value wins
247
+ // (an agent registered without credentialEnv inherits the built-in agent's with the same id)
248
+ const credentialEnv = config.credentialEnv ?? DEFAULT_ACP_AGENTS[agentId]?.credentialEnv ?? [];
249
+ for (const { target, sources } of credentialEnv) {
250
+ const value = sources.map((source) => getEnv(source)).find(Boolean);
251
+ if (value)
252
+ env[target] = value;
253
+ }
254
+ // Add custom env vars from ACP_<AGENT>_ENV_* pattern
255
+ const envPrefix = `${prefix}_ENV_`;
256
+ for (const [key, value] of Object.entries(envSource)) {
257
+ if (key.startsWith(envPrefix) && value !== undefined) {
258
+ const envKey = key.slice(envPrefix.length);
259
+ env[envKey] = value;
260
+ }
261
+ }
262
+ // Parse MCP servers configuration (validated and converted to the ACP schema shape)
263
+ const mcpServers = [];
264
+ const mcpConfigJson = getEnv(`${prefix}_MCP_SERVERS`);
265
+ if (mcpConfigJson) {
266
+ try {
267
+ const parsed = JSON.parse(mcpConfigJson);
268
+ if (Array.isArray(parsed)) {
269
+ for (const entry of parsed) {
270
+ const server = normalizeMcpServer(entry);
271
+ if (server)
272
+ mcpServers.push(server);
273
+ else
274
+ logger?.warn?.(`[ACP] Ignoring invalid MCP server entry for ${agentId}`);
275
+ }
276
+ }
277
+ }
278
+ catch {
279
+ logger?.warn?.(`[ACP] Invalid MCP servers JSON for ${agentId}`);
280
+ }
281
+ }
282
+ // Add the project's MCP server if enabled and an explicit path was given
283
+ if (getEnv(`${prefix}_ENABLE_PROJECT_MCP`) === 'true') {
284
+ const projectPath = getEnv(`${prefix}_PROJECT_MCP_PATH`) || options.projectMcpPath;
285
+ if (projectPath) {
286
+ const server = buildProjectMcpServer({ path: projectPath }, logger);
287
+ if (server)
288
+ mcpServers.push(server);
289
+ }
290
+ else {
291
+ logger?.warn?.(`[ACP] ${prefix}_ENABLE_PROJECT_MCP is set but ${prefix}_PROJECT_MCP_PATH is not; skipping project MCP.`);
292
+ }
293
+ }
294
+ return {
295
+ command,
296
+ args,
297
+ cwd,
298
+ env,
299
+ mcpServers,
300
+ authMethodId: config.authMethodId,
301
+ };
302
+ }
303
+ /**
304
+ * Create provider entry for models.dev registry.
305
+ */
306
+ export function createAcpProviderEntry(agentId) {
307
+ const config = getAcpAgentConfig(agentId);
308
+ if (!config)
309
+ return null;
310
+ const prefix = config.envVarPrefix;
311
+ return {
312
+ id: `acp-${agentId}`,
313
+ name: config.name,
314
+ env: [
315
+ `${prefix}_PATH`,
316
+ `${prefix}_CWD`,
317
+ `${prefix}_ARGS`,
318
+ `${prefix}_MCP_SERVERS`,
319
+ `${prefix}_ENABLE_PROJECT_MCP`,
320
+ `${prefix}_PROJECT_MCP_PATH`,
321
+ ],
322
+ npm: '@mcpc-tech/acp-ai-provider',
323
+ protocol: 'acp',
324
+ models: {
325
+ [agentId]: {
326
+ id: agentId,
327
+ name: `${config.name} Agent`,
328
+ },
329
+ },
330
+ };
331
+ }
332
+ /**
333
+ * Get all ACP provider entries for models catalog.
334
+ */
335
+ export function getAllAcpProviderEntries() {
336
+ return listAcpAgentIds()
337
+ .map((id) => createAcpProviderEntry(id))
338
+ .filter((entry) => entry !== null);
339
+ }
340
+ /**
341
+ * Environment variable keys used across ACP agents.
342
+ */
343
+ export function getAcpEnvVarKeys() {
344
+ const agents = {};
345
+ for (const [id, config] of Object.entries(ACP_AGENTS)) {
346
+ const p = config.envVarPrefix;
347
+ agents[id] = {
348
+ path: `${p}_PATH`,
349
+ cwd: `${p}_CWD`,
350
+ args: `${p}_ARGS`,
351
+ mcpServers: `${p}_MCP_SERVERS`,
352
+ enableProjectMcp: `${p}_ENABLE_PROJECT_MCP`,
353
+ };
354
+ }
355
+ return {
356
+ apiKeys: [
357
+ 'ANTHROPIC_API_KEY',
358
+ 'GEMINI_API_KEY',
359
+ 'OPENAI_API_KEY',
360
+ 'DASHSCOPE_API_KEY',
361
+ 'OPENCODE_API_KEY',
362
+ 'FREEBUFF_API_KEY',
363
+ ],
364
+ agents,
365
+ };
366
+ }
367
+ //# sourceMappingURL=acp_agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp_agents.js","sourceRoot":"","sources":["../../../src/acp/acp_agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './acp_agents.js';
3
+ export * from './provider.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/acp/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './acp_agents.js';
3
+ export * from './provider.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/acp/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,74 @@
1
+ import type { LanguageModel } from 'ai';
2
+ import type { ConfirmationService } from '../guard/confirmation.js';
3
+ import type { AiDriver } from '../types.js';
4
+ import type { Logger } from '../logger.js';
5
+ import type { AcpAgentRuntimeConfig, AcpProviderConfig } from './types.js';
6
+ /**
7
+ * Builds the environment for the agent process.
8
+ *
9
+ * `@mcpc-tech/acp-ai-provider` spawns the agent with `{ ...process.env, ...env }`, so the server's
10
+ * secrets cannot be left out by omission. Instead every variable that is not allowlisted is
11
+ * explicitly blanked, and only the allowlist plus `extra` (agent credentials, configured env)
12
+ * keep real values.
13
+ */
14
+ export declare function buildAgentEnv(source: Record<string, string | undefined>, extra: Record<string, string>, inheritEnv?: boolean): Record<string, string>;
15
+ export interface AcpDriverDeps {
16
+ logger?: Logger;
17
+ /** Answers agent permission requests when `permissionPolicy` is `ask`. */
18
+ confirmation?: ConfirmationService;
19
+ /**
20
+ * Environment whose allowlisted variables the agent keeps. Default: `process.env`. Variables that
21
+ * exist only in `process.env` are blanked as well, because the agent is spawned with
22
+ * `{ ...process.env, ...env }`.
23
+ */
24
+ env?: Record<string, string | undefined>;
25
+ /**
26
+ * Prebuilt runtime config (e.g. from `buildAcpRuntimeConfig`). Used verbatim, except that `cwd`
27
+ * must be absolute and the agent environment is rebuilt from `env` plus the runtime's own env.
28
+ */
29
+ runtime?: AcpAgentRuntimeConfig;
30
+ }
31
+ export declare class AcpDriver implements AiDriver {
32
+ readonly name: string;
33
+ readonly defaultModel: string;
34
+ private config;
35
+ private logger?;
36
+ private confirmation?;
37
+ private env;
38
+ private runtime?;
39
+ private cachedModels;
40
+ private providers;
41
+ private permissionPolicy;
42
+ constructor(name: string, config: AcpProviderConfig, deps?: AcpDriverDeps);
43
+ /**
44
+ * Lazily loads and instantiates an AI SDK language model backed by the ACP agent.
45
+ * `modelName` selects among the built-in agents; it is never executed as a command.
46
+ */
47
+ getModel(modelName?: string): Promise<LanguageModel>;
48
+ /**
49
+ * Tests whether the ACP agent can be resolved and its model instantiated.
50
+ */
51
+ ping(): Promise<{
52
+ ok: boolean;
53
+ latencyMs: number;
54
+ error?: string;
55
+ }>;
56
+ /**
57
+ * Terminates every agent process started by this driver.
58
+ */
59
+ shutdown(): Promise<void>;
60
+ private resolveRuntimeConfig;
61
+ private createModel;
62
+ /**
63
+ * The ACP provider auto-selects the first permission option when no handler is set, and offers
64
+ * no public API to set one. The handler is installed on the model's client right after every
65
+ * connection is established. If it cannot be installed the model refuses to connect (fail-closed).
66
+ */
67
+ private installPermissionHandler;
68
+ private answerPermission;
69
+ }
70
+ /**
71
+ * Factory for creating an AcpDriver instance.
72
+ */
73
+ export declare function createAcpDriver(name: string, config: AcpProviderConfig, deps?: AcpDriverDeps): AcpDriver;
74
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/acp/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EACV,qBAAqB,EAGrB,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAiEnB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,UAAU,UAAQ,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED,qBAAa,SAAU,YAAW,QAAQ;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAoC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,gBAAgB,CAAqB;gBAEjC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE,aAAkB;IAiB7E;;;OAGG;IACG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAe1D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBzE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,OAAO,CAAC,oBAAoB;YAsEd,WAAW;IAiCzB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;YAiBlB,gBAAgB;CA8C/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,IAAI,GAAE,aAAkB,GACvB,SAAS,CAEX"}