adonis-ai-kit 1.1.0 → 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.
- package/CHANGELOG.md +74 -0
- package/README.md +77 -5
- package/dist/src/acp/acp_agents.d.ts +25 -11
- package/dist/src/acp/acp_agents.d.ts.map +1 -1
- package/dist/src/acp/acp_agents.js +62 -38
- package/dist/src/acp/acp_agents.js.map +1 -1
- package/dist/src/acp/provider.d.ts +14 -4
- package/dist/src/acp/provider.d.ts.map +1 -1
- package/dist/src/acp/provider.js +23 -2
- package/dist/src/acp/provider.js.map +1 -1
- package/dist/src/acp/types.d.ts +21 -0
- package/dist/src/acp/types.d.ts.map +1 -1
- package/dist/src/agents/loader.d.ts +3 -3
- package/dist/src/agents/loader.d.ts.map +1 -1
- package/dist/src/agents/loader.js.map +1 -1
- package/dist/src/ai_manager.d.ts +12 -8
- package/dist/src/ai_manager.d.ts.map +1 -1
- package/dist/src/ai_manager.js +128 -15
- package/dist/src/ai_manager.js.map +1 -1
- package/dist/src/budget/types.d.ts +1 -6
- package/dist/src/budget/types.d.ts.map +1 -1
- package/dist/src/catalog/source.d.ts +18 -3
- package/dist/src/catalog/source.d.ts.map +1 -1
- package/dist/src/catalog/source.js +15 -5
- package/dist/src/catalog/source.js.map +1 -1
- package/dist/src/circuit_breaker.d.ts +21 -0
- package/dist/src/circuit_breaker.d.ts.map +1 -1
- package/dist/src/circuit_breaker.js +64 -19
- package/dist/src/circuit_breaker.js.map +1 -1
- package/dist/src/error_classifier.d.ts +34 -1
- package/dist/src/error_classifier.d.ts.map +1 -1
- package/dist/src/error_classifier.js +159 -33
- package/dist/src/error_classifier.js.map +1 -1
- package/dist/src/guard/registry.d.ts +6 -0
- package/dist/src/guard/registry.d.ts.map +1 -1
- package/dist/src/guard/registry.js +12 -2
- package/dist/src/guard/registry.js.map +1 -1
- package/dist/src/guard/types.d.ts +6 -7
- package/dist/src/guard/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/logger.d.ts +7 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +2 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/models/catalog_resolver.d.ts +24 -0
- package/dist/src/models/catalog_resolver.d.ts.map +1 -0
- package/dist/src/models/catalog_resolver.js +66 -0
- package/dist/src/models/catalog_resolver.js.map +1 -0
- package/dist/src/models/index.d.ts +14 -0
- package/dist/src/models/index.d.ts.map +1 -0
- package/dist/src/models/index.js +8 -0
- package/dist/src/models/index.js.map +1 -0
- package/dist/src/models/keys.d.ts +9 -0
- package/dist/src/models/keys.d.ts.map +1 -0
- package/dist/src/models/keys.js +12 -0
- package/dist/src/models/keys.js.map +1 -0
- package/dist/src/models/language_model_factory.d.ts +44 -0
- package/dist/src/models/language_model_factory.d.ts.map +1 -0
- package/dist/src/models/language_model_factory.js +193 -0
- package/dist/src/models/language_model_factory.js.map +1 -0
- package/dist/src/models/model_chain.d.ts +58 -0
- package/dist/src/models/model_chain.d.ts.map +1 -0
- package/dist/src/models/model_chain.js +144 -0
- package/dist/src/models/model_chain.js.map +1 -0
- package/dist/src/models/model_ref.d.ts +12 -0
- package/dist/src/models/model_ref.d.ts.map +1 -0
- package/dist/src/models/model_ref.js +33 -0
- package/dist/src/models/model_ref.js.map +1 -0
- package/dist/src/models/protocols.d.ts +6 -0
- package/dist/src/models/protocols.d.ts.map +1 -0
- package/dist/src/models/protocols.js +33 -0
- package/dist/src/models/protocols.js.map +1 -0
- package/dist/src/models/provider_factories.d.ts +19 -0
- package/dist/src/models/provider_factories.d.ts.map +1 -0
- package/dist/src/models/provider_factories.js +70 -0
- package/dist/src/models/provider_factories.js.map +1 -0
- package/dist/src/models/types.d.ts +17 -0
- package/dist/src/models/types.d.ts.map +1 -0
- package/dist/src/models/types.js +2 -0
- package/dist/src/models/types.js.map +1 -0
- package/dist/src/types.d.ts +46 -3
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +70 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `adonis-ai-kit` are documented in this file.
|
|
4
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
|
|
6
|
+
## [1.2.0] - 2026-10-22
|
|
7
|
+
|
|
8
|
+
Includes the work previously staged as the 1.3.0 and 1.4.0 candidates, which were never published.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- `adonis-ai-kit/models` subpath export:
|
|
13
|
+
- Types and helpers: `ResolvedModel`, `parseModelRef`, `modelKeyFor`, `breakerKeyFor`, `PROTOCOL_TO_NPM`, `resolveProviderNpm`.
|
|
14
|
+
- `ProviderFactory`, `BUILTIN_PROVIDER_EXPORTS` and `ProviderFactoryRegistry` (lazy import of known AI SDK provider packages, plus `register()` for custom ones).
|
|
15
|
+
- `LanguageModelFactory`: 180 s fetch timeout, secret-header redaction in logs, ACP models through `AcpDriver`, and `shutdown()`.
|
|
16
|
+
- `ModelResolver` and `CatalogModelResolver`.
|
|
17
|
+
- `buildChainCandidates`, `runModelChain` and `FallbackEvent` for running a call over an ordered model chain with per-credential circuit breakers.
|
|
18
|
+
- `AcpDriverDeps.runtime`: a prebuilt runtime config for the ACP driver.
|
|
19
|
+
- `AiManager` call options:
|
|
20
|
+
- `schema` (structured `output` on `generateText` and `streamText`), `stopWhen`, `maxRetries`, `onStepFinish`.
|
|
21
|
+
- `models` and `onFallback` to run a call over a dynamic model chain.
|
|
22
|
+
- `AiConfig.resolver` and `AiConfig.languageModels`.
|
|
23
|
+
- Optional `peerDependencies` for the AI SDK provider packages.
|
|
24
|
+
- `LanguageModelFactory` options `acp.inheritEnv` (pass the full server environment to agents) and `acp.shareDriver` (set to `false` to give every model its own driver and agent process).
|
|
25
|
+
- Single `Logger` type shared by all modules (`LoggerContract` stays as a deprecated alias).
|
|
26
|
+
- `ErrorClassification.errorClass` and `ErrorClassification.countsAsFailure`, plus the `countsAsBreakerFailure()` helper.
|
|
27
|
+
- `CircuitBreaker.acquire()` returning a `BreakerPermit`, and `CircuitBreaker.resetAll()`.
|
|
28
|
+
- `ToolAccessOptions.permissions` for per-call tool permissions.
|
|
29
|
+
- ACP: `AcpAgentConfig.credentialEnv` and `buildAcpRuntimeConfig(agentId, options)` with `projectMcpPath` (the positional form keeps working).
|
|
30
|
+
- Error taxonomy exported from the package root: `ErrorClass` (11 classes), `classifyErrorClass()`, `isRetryableError()` and `getUserFriendlyMessage()`.
|
|
31
|
+
- Replaceable ACP agent registry: `registerAcpAgent()`, `setAcpAgents()` and `resetAcpAgents()`, so an application can point an agent at the binary installed on the machine.
|
|
32
|
+
- Catalog option `injectSystemProviders` (default `true`) to turn off the automatic injection of openai/anthropic/google; superseded within this release by `systemProviders` and kept as a deprecated alias.
|
|
33
|
+
- Catalog: `systemProviders: { fallback, acp }` option (also available as `CatalogConfig.systemProviders`) to inject fallback and ACP providers independently.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- Optional provider peer dependencies accept any version.
|
|
38
|
+
- Behavior changes to be aware of:
|
|
39
|
+
- `prompt_too_long` and `no_output_generated` errors now fall back to the next provider but never open the circuit breaker.
|
|
40
|
+
- Errors recognised only through `isRetryable === true` fall back, but no longer count against the circuit breaker.
|
|
41
|
+
- `ErrorClassification` gained two required fields (`errorClass`, `countsAsFailure`). This only affects code that constructs the interface itself.
|
|
42
|
+
- `dist/` is no longer tracked in git (it is still built and shipped in the npm package).
|
|
43
|
+
|
|
44
|
+
### Deprecated
|
|
45
|
+
|
|
46
|
+
- `injectSystemProviders` (added earlier in this release, then superseded by `systemProviders`) — use `systemProviders`.
|
|
47
|
+
- The `sourcecraft` and `freebuff` default ACP agents — they will be removed from the defaults in 2.0; register them with `registerAcpAgent()`.
|
|
48
|
+
- `LoggerContract` — use `Logger`.
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- `ToolDefinition.description` accepts the AI SDK v7 tool description type (string or function); the confirmation action falls back to the tool name.
|
|
53
|
+
- One error taxonomy now drives both fallback and circuit-breaker decisions.
|
|
54
|
+
- HTTP status codes are found in `status`, `response.status`, nested `cause` and `lastError` (AI SDK `RetryError`).
|
|
55
|
+
- HTTP 409 and 425 are classified as `overloaded`.
|
|
56
|
+
- ACP agents registered with `setAcpAgents()`/`registerAcpAgent()` without `credentialEnv` inherit the built-in agent's credentials for the same id; `credentialEnv: []` opts out.
|
|
57
|
+
- `CircuitBreaker.execute()` frees its probe slot even if `isFailure` throws.
|
|
58
|
+
- Model chains fall through to the next candidate on missing provider packages, config errors and open breakers (without counting against the breaker), and reject a missing resolver up front.
|
|
59
|
+
- Rejections of an async `onFallback` handler are caught and logged.
|
|
60
|
+
- ACP models in `AiManager` chains use its `ConfirmationService`.
|
|
61
|
+
- `AcpDriver` blanks `process.env` keys that are missing from a custom env source.
|
|
62
|
+
- `LanguageModelFactory` with `acp.shareDriver: false` no longer retains a driver per call: the driver is released when its call ends.
|
|
63
|
+
|
|
64
|
+
### Notes
|
|
65
|
+
|
|
66
|
+
- An exhausted `models` chain rethrows the last error (or `ProviderUnavailableError` if no candidate could be attempted), unlike the provider cascade, which throws `CascadingFallbackError`.
|
|
67
|
+
|
|
68
|
+
### Development
|
|
69
|
+
|
|
70
|
+
- Japa test harness.
|
|
71
|
+
|
|
72
|
+
## [1.1.0]
|
|
73
|
+
|
|
74
|
+
Initial public release.
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# adonis-ai
|
|
1
|
+
# adonis-ai-kit
|
|
2
2
|
|
|
3
3
|
> **Production-grade AI & Agentic workflow toolkit for AdonisJS 7**, powered by Vercel AI SDK v7, multi-provider cascading fallback, circuit breakers, tool security guardrails, token budget tracking, models.dev live catalog, and ACP (Agent Client Protocol) coding agents.
|
|
4
4
|
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
## Highlights & Architectural Comparison
|
|
15
15
|
|
|
16
|
-
While frameworks like **Laravel AI** and **Prism** bring basic prompt-level abstractions to PHP, enterprise production systems require strict SRE resilience, tool execution guardrails, cost guarantees, and streaming protocol integrity. **`adonis-ai`** is built from the ground up for high-concurrency Node.js microservices:
|
|
16
|
+
While frameworks like **Laravel AI** and **Prism** bring basic prompt-level abstractions to PHP, enterprise production systems require strict SRE resilience, tool execution guardrails, cost guarantees, and streaming protocol integrity. **`adonis-ai-kit`** is built from the ground up for high-concurrency Node.js microservices:
|
|
17
17
|
|
|
18
|
-
| Feature | `adonis-ai` (AdonisJS 7) | Laravel AI / Prism (PHP) |
|
|
18
|
+
| Feature | `adonis-ai-kit` (AdonisJS 7) | Laravel AI / Prism (PHP) |
|
|
19
19
|
| :--- | :--- | :--- |
|
|
20
20
|
| **Foundation Engine** | **Vercel AI SDK v7** (native Node.js async streams & tool calls) | Custom cURL/Guzzle wrappers |
|
|
21
21
|
| **Circuit Breaker** | **Per `provider:model` key** (isolated half-open state, probe limits) | Global or none |
|
|
@@ -131,7 +131,7 @@ console.log(`Duration: ${result.durationMs}ms, Cost: $${result.costUsd}`)
|
|
|
131
131
|
console.log(`Tokens: in=${result.usage.inputTokens}, out=${result.usage.outputTokens}, cached=${result.usage.cacheReadTokens}`)
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
If OpenAI returns `429 Rate Limit` or `503 Service Unavailable`, `adonis-ai` automatically routes the request to `anthropic` with its configured model, recording circuit breaker metrics.
|
|
134
|
+
If OpenAI returns `429 Rate Limit` or `503 Service Unavailable`, `adonis-ai-kit` automatically routes the request to `anthropic` with its configured model, recording circuit breaker metrics. A `prompt_too_long` failure also moves on to the next model, but never counts against (or opens) the circuit breaker.
|
|
135
135
|
|
|
136
136
|
---
|
|
137
137
|
|
|
@@ -182,6 +182,29 @@ export default class ChatController {
|
|
|
182
182
|
}
|
|
183
183
|
```
|
|
184
184
|
|
|
185
|
+
#### Structured output with tools in a stream
|
|
186
|
+
|
|
187
|
+
`schema`, `stopWhen`, `maxRetries` and `onStepFinish` work for both `generateText` and `streamText`:
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
import { stepCountIs } from 'ai'
|
|
191
|
+
import { z } from 'zod'
|
|
192
|
+
|
|
193
|
+
const stream = await ai.streamText({
|
|
194
|
+
prompt: 'Find the cheapest flight and summarise it.',
|
|
195
|
+
tools: { searchFlights },
|
|
196
|
+
schema: z.object({ airline: z.string(), priceUsd: z.number() }),
|
|
197
|
+
stopWhen: stepCountIs(6), // takes precedence over `maxSteps`
|
|
198
|
+
maxRetries: 0, // fail fast, let the fallback chain take over
|
|
199
|
+
onStepFinish: (step) => console.log('step done', step.finishReason),
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
for await (const part of stream.fullStream) {
|
|
203
|
+
// forward parts to the client...
|
|
204
|
+
}
|
|
205
|
+
const flight = await stream.output // parsed against the schema
|
|
206
|
+
```
|
|
207
|
+
|
|
185
208
|
---
|
|
186
209
|
|
|
187
210
|
### 4. Tool Security Guardrails & Human-in-the-Loop (HITL)
|
|
@@ -260,11 +283,60 @@ const execution = await runner.run({
|
|
|
260
283
|
})
|
|
261
284
|
```
|
|
262
285
|
|
|
286
|
+
Agents declare the credentials they need and can receive a project MCP server explicitly:
|
|
287
|
+
|
|
288
|
+
```ts
|
|
289
|
+
import { registerAcpAgent, buildAcpRuntimeConfig } from 'adonis-ai-kit/acp'
|
|
290
|
+
|
|
291
|
+
registerAcpAgent('my-agent', {
|
|
292
|
+
id: 'my-agent', name: 'My Agent', description: '', command: 'my-agent-acp', args: [],
|
|
293
|
+
envVarPrefix: 'ACP_MY_AGENT', supportsMcpServers: true,
|
|
294
|
+
// the first set source is passed to the agent process as `target`
|
|
295
|
+
credentialEnv: [{ target: 'MY_API_KEY', sources: ['MY_API_KEY', 'MY_KEY'] }],
|
|
296
|
+
})
|
|
297
|
+
|
|
298
|
+
const runtime = buildAcpRuntimeConfig('my-agent', {
|
|
299
|
+
projectMcpPath: './mcp/server.js', // used when ACP_MY_AGENT_PROJECT_MCP_PATH is unset
|
|
300
|
+
// the project MCP server is still only attached when ACP_MY_AGENT_ENABLE_PROJECT_MCP=true
|
|
301
|
+
})
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
ACP agents in a `models` chain ask a human through the manager's `ConfirmationService` (see `getConfirmationService()`), like the provider cascade does.
|
|
305
|
+
|
|
306
|
+
Calling `buildAcpRuntimeConfig` + `createACPProvider` directly bypasses the env sanitizing that `AcpDriver` applies: the agent then inherits the full server environment.
|
|
307
|
+
|
|
308
|
+
The `sourcecraft` and `freebuff` default agents are deprecated and will be removed from the defaults in 2.0; register them with `registerAcpAgent()` if you need them.
|
|
309
|
+
|
|
263
310
|
---
|
|
264
311
|
|
|
312
|
+
### 7. Dynamic Credentials & Model Chains
|
|
313
|
+
|
|
314
|
+
Apps with per-user credentials can't use a static provider cascade. Pass `models` — an ordered chain of
|
|
315
|
+
`ResolvedModel | string` — to `generateText`, `streamText` or `generateObject`; the provider cascade is then not used.
|
|
316
|
+
|
|
317
|
+
```ts
|
|
318
|
+
const result = await ai.generateText({
|
|
319
|
+
prompt: 'Summarize this',
|
|
320
|
+
models: [userKeyModel, teamKeyModel, 'anthropic/claude-sonnet-4-5'],
|
|
321
|
+
onFallback: ({ fromModel, toModel, errorClass }) => log.warn(`${fromModel} -> ${toModel} (${errorClass})`),
|
|
322
|
+
})
|
|
323
|
+
result.provider // providerID of the model that answered
|
|
324
|
+
result.model // its modelID
|
|
325
|
+
// fromModel / toModel are breaker keys: the credential key when the model has one, otherwise provider/model
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
- Entries are tried in order. Retryable failures (429, 5xx, network) and entries that cannot be attempted (missing provider
|
|
329
|
+
package, config error, open breaker) move on to the next entry; bad requests, caller aborts and any failure after a
|
|
330
|
+
tool has run are thrown as is. `streamText` falls back on errors before the first chunk.
|
|
331
|
+
- Each entry has its own circuit breaker, keyed by `credentialKey` when present (so one bad key doesn't block the others).
|
|
332
|
+
- String entries are resolved through `config.resolver` (e.g. a `CatalogModelResolver`); without one a `ProviderConfigError` is thrown.
|
|
333
|
+
- Models are built by `config.languageModels` (a `LanguageModelFactory`); when absent a default one is created lazily.
|
|
334
|
+
`manager.shutdown()` shuts it down (stops ACP agents).
|
|
335
|
+
- `schema`, `stopWhen`, `maxRetries` and `onStepFinish` work on the chain path too. Empty `models` uses the provider cascade.
|
|
336
|
+
|
|
265
337
|
## Ace CLI Commands
|
|
266
338
|
|
|
267
|
-
`adonis-ai` registers helpful Ace commands:
|
|
339
|
+
`adonis-ai-kit` registers helpful Ace commands:
|
|
268
340
|
|
|
269
341
|
```bash
|
|
270
342
|
# Test connectivity, latency, and model availability across configured providers
|
|
@@ -1,15 +1,25 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { AcpAgentConfig, AcpAgentRuntimeConfig, AcpMcpServerConfig, AcpProjectMcpConfig } from './types.js';
|
|
1
|
+
import type { Logger } from '../logger.js';
|
|
2
|
+
import type { AcpAgentConfig, AcpAgentRuntimeConfig, AcpMcpServerConfig, AcpProjectMcpConfig, AcpRuntimeOptions } from './types.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* model name; anything else must be configured explicitly via `AcpProviderConfig.command`.
|
|
4
|
+
* Registry of the ACP agents this application may start.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
10
|
-
* `ACP_<AGENT>_PATH` / `ACP_<AGENT>_ARGS` if your install differs.
|
|
6
|
+
* It starts with the built-in agents, and an application can replace it with the
|
|
7
|
+
* binaries that are actually installed on the operator's machine
|
|
8
|
+
* (`setAcpAgents`) or extend it (`registerAcpAgent`).
|
|
11
9
|
*/
|
|
12
10
|
export declare const ACP_AGENTS: Record<string, AcpAgentConfig>;
|
|
11
|
+
/**
|
|
12
|
+
* Registers (or replaces) one ACP agent.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerAcpAgent(agentId: string, config: AcpAgentConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Replaces the whole agent registry, e.g. with the binaries of a given deployment.
|
|
17
|
+
*/
|
|
18
|
+
export declare function setAcpAgents(agents: Record<string, AcpAgentConfig>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Restores the built-in agent registry.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resetAcpAgents(): void;
|
|
13
23
|
/**
|
|
14
24
|
* Get ACP agent configuration by ID.
|
|
15
25
|
*/
|
|
@@ -27,7 +37,7 @@ export declare function isAcpAgent(agentId: string): boolean;
|
|
|
27
37
|
* Supports JSON arrays (e.g., '["--flag","--opt","val"]')
|
|
28
38
|
* and falls back to comma-separated values.
|
|
29
39
|
*/
|
|
30
|
-
export declare function parseAcpArgs(argsOverride: string | undefined, fallback: string[], logger?:
|
|
40
|
+
export declare function parseAcpArgs(argsOverride: string | undefined, fallback: string[], logger?: Logger): string[];
|
|
31
41
|
/**
|
|
32
42
|
* Validates an MCP server definition and converts it to the exact shape required by the ACP
|
|
33
43
|
* schema: stdio servers have no `type` and an `env` array; remote servers have `type`
|
|
@@ -36,11 +46,15 @@ export declare function parseAcpArgs(argsOverride: string | undefined, fallback:
|
|
|
36
46
|
*/
|
|
37
47
|
export declare function normalizeMcpServer(input: unknown): AcpMcpServerConfig | null;
|
|
38
48
|
/** Builds the stdio MCP server entry for a project-local MCP server file. */
|
|
39
|
-
export declare function buildProjectMcpServer(config: AcpProjectMcpConfig, logger?:
|
|
49
|
+
export declare function buildProjectMcpServer(config: AcpProjectMcpConfig, logger?: Logger): AcpMcpServerConfig | null;
|
|
40
50
|
/**
|
|
41
51
|
* Build runtime configuration for an ACP agent.
|
|
52
|
+
*
|
|
53
|
+
* The positional form `(agentId, getEnv, envSource, logger)` is kept for compatibility;
|
|
54
|
+
* a function as the second argument selects it.
|
|
42
55
|
*/
|
|
43
|
-
export declare function buildAcpRuntimeConfig(agentId: string,
|
|
56
|
+
export declare function buildAcpRuntimeConfig(agentId: string, options?: AcpRuntimeOptions): AcpAgentRuntimeConfig | null;
|
|
57
|
+
export declare function buildAcpRuntimeConfig(agentId: string, getEnv?: (key: string) => string | undefined, envSource?: Record<string, string | undefined>, logger?: Logger): AcpAgentRuntimeConfig | null;
|
|
44
58
|
/**
|
|
45
59
|
* Create provider entry for models.dev registry.
|
|
46
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp_agents.d.ts","sourceRoot":"","sources":["../../../src/acp/acp_agents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"acp_agents.d.ts","sourceRoot":"","sources":["../../../src/acp/acp_agents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAElB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAyFnB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAA6B,CAAA;AAEnF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAE9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAGzE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE7E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,EAAE,CAiBV;AAoBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAwB5E;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,GAAG,IAAI,CAY3B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,qBAAqB,GAAG,IAAI,CAAA;AAC/B,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAC5C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC9C,MAAM,CAAC,EAAE,MAAM,GACd,qBAAqB,GAAG,IAAI,CAAA;AAiG/B;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IACvD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrD,GAAG,IAAI,CA0BP;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,EAAE,CAItF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,CACZ,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CACF,CAAA;CACF,CA4BA"}
|
|
@@ -9,7 +9,7 @@ import path from 'node:path';
|
|
|
9
9
|
* `sourcecraft` and `freebuff` could not be verified against upstream docs; override them with
|
|
10
10
|
* `ACP_<AGENT>_PATH` / `ACP_<AGENT>_ARGS` if your install differs.
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
const DEFAULT_ACP_AGENTS = Object.freeze({
|
|
13
13
|
'claude-code': {
|
|
14
14
|
id: 'claude-code',
|
|
15
15
|
name: 'Claude Code',
|
|
@@ -18,6 +18,7 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
18
18
|
args: [],
|
|
19
19
|
envVarPrefix: 'ACP_CLAUDE_CODE',
|
|
20
20
|
supportsMcpServers: true,
|
|
21
|
+
credentialEnv: [{ target: 'ANTHROPIC_API_KEY', sources: ['ANTHROPIC_API_KEY'] }],
|
|
21
22
|
},
|
|
22
23
|
'gemini': {
|
|
23
24
|
id: 'gemini',
|
|
@@ -28,6 +29,7 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
28
29
|
envVarPrefix: 'ACP_GEMINI',
|
|
29
30
|
supportsMcpServers: true,
|
|
30
31
|
authMethodId: 'gemini-api-key',
|
|
32
|
+
credentialEnv: [{ target: 'GEMINI_API_KEY', sources: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'] }],
|
|
31
33
|
},
|
|
32
34
|
'codex': {
|
|
33
35
|
id: 'codex',
|
|
@@ -37,6 +39,7 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
37
39
|
args: [],
|
|
38
40
|
envVarPrefix: 'ACP_CODEX',
|
|
39
41
|
supportsMcpServers: true,
|
|
42
|
+
credentialEnv: [{ target: 'OPENAI_API_KEY', sources: ['OPENAI_API_KEY'] }],
|
|
40
43
|
},
|
|
41
44
|
'qwen-code': {
|
|
42
45
|
id: 'qwen-code',
|
|
@@ -46,7 +49,9 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
46
49
|
args: ['--acp'],
|
|
47
50
|
envVarPrefix: 'ACP_QWEN_CODE',
|
|
48
51
|
supportsMcpServers: true,
|
|
52
|
+
credentialEnv: [{ target: 'DASHSCOPE_API_KEY', sources: ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'] }],
|
|
49
53
|
},
|
|
54
|
+
/** @deprecated Removed from defaults in 2.0; register it with registerAcpAgent() */
|
|
50
55
|
'sourcecraft': {
|
|
51
56
|
id: 'sourcecraft',
|
|
52
57
|
name: 'SourceCraft Code Assistant',
|
|
@@ -64,7 +69,9 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
64
69
|
args: ['acp'],
|
|
65
70
|
envVarPrefix: 'ACP_OPENCODE',
|
|
66
71
|
supportsMcpServers: true,
|
|
72
|
+
credentialEnv: [{ target: 'OPENCODE_API_KEY', sources: ['OPENCODE_API_KEY'] }],
|
|
67
73
|
},
|
|
74
|
+
/** @deprecated Removed from defaults in 2.0; register it with registerAcpAgent() */
|
|
68
75
|
'freebuff': {
|
|
69
76
|
id: 'freebuff',
|
|
70
77
|
name: 'Freebuff',
|
|
@@ -73,8 +80,40 @@ export const ACP_AGENTS = Object.freeze({
|
|
|
73
80
|
args: [],
|
|
74
81
|
envVarPrefix: 'ACP_FREEBUFF',
|
|
75
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
|
+
],
|
|
76
87
|
},
|
|
77
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
|
+
}
|
|
78
117
|
/**
|
|
79
118
|
* Get ACP agent configuration by ID.
|
|
80
119
|
*/
|
|
@@ -178,10 +217,20 @@ export function buildProjectMcpServer(config, logger) {
|
|
|
178
217
|
env: [],
|
|
179
218
|
};
|
|
180
219
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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;
|
|
185
234
|
const config = getAcpAgentConfig(agentId);
|
|
186
235
|
if (!config)
|
|
187
236
|
return null;
|
|
@@ -194,38 +243,13 @@ export function buildAcpRuntimeConfig(agentId, getEnv = (key) => process.env[key
|
|
|
194
243
|
const cwd = path.resolve(getEnv(`${prefix}_CWD`) || process.cwd());
|
|
195
244
|
// Build environment variables
|
|
196
245
|
const env = {};
|
|
197
|
-
// Add
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const apiKey = getEnv('ANTHROPIC_API_KEY');
|
|
205
|
-
if (apiKey)
|
|
206
|
-
env.ANTHROPIC_API_KEY = apiKey;
|
|
207
|
-
}
|
|
208
|
-
else if (agentId === 'codex') {
|
|
209
|
-
const apiKey = getEnv('OPENAI_API_KEY');
|
|
210
|
-
if (apiKey)
|
|
211
|
-
env.OPENAI_API_KEY = apiKey;
|
|
212
|
-
}
|
|
213
|
-
else if (agentId === 'qwen-code') {
|
|
214
|
-
const apiKey = getEnv('DASHSCOPE_API_KEY') || getEnv('QWEN_API_KEY');
|
|
215
|
-
if (apiKey)
|
|
216
|
-
env.DASHSCOPE_API_KEY = apiKey;
|
|
217
|
-
}
|
|
218
|
-
else if (agentId === 'opencode') {
|
|
219
|
-
const apiKey = getEnv('OPENCODE_API_KEY');
|
|
220
|
-
if (apiKey)
|
|
221
|
-
env.OPENCODE_API_KEY = apiKey;
|
|
222
|
-
}
|
|
223
|
-
else if (agentId === 'freebuff') {
|
|
224
|
-
const apiKey = getEnv('CODEBUFF_API_KEY') || getEnv('FREEBUFF_API_KEY');
|
|
225
|
-
if (apiKey) {
|
|
226
|
-
env.CODEBUFF_API_KEY = apiKey;
|
|
227
|
-
env.FREEBUFF_API_KEY = apiKey;
|
|
228
|
-
}
|
|
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;
|
|
229
253
|
}
|
|
230
254
|
// Add custom env vars from ACP_<AGENT>_ENV_* pattern
|
|
231
255
|
const envPrefix = `${prefix}_ENV_`;
|
|
@@ -257,7 +281,7 @@ export function buildAcpRuntimeConfig(agentId, getEnv = (key) => process.env[key
|
|
|
257
281
|
}
|
|
258
282
|
// Add the project's MCP server if enabled and an explicit path was given
|
|
259
283
|
if (getEnv(`${prefix}_ENABLE_PROJECT_MCP`) === 'true') {
|
|
260
|
-
const projectPath = getEnv(`${prefix}_PROJECT_MCP_PATH`);
|
|
284
|
+
const projectPath = getEnv(`${prefix}_PROJECT_MCP_PATH`) || options.projectMcpPath;
|
|
261
285
|
if (projectPath) {
|
|
262
286
|
const server = buildProjectMcpServer({ path: projectPath }, logger);
|
|
263
287
|
if (server)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp_agents.js","sourceRoot":"","sources":["../../../src/acp/acp_agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acp_agents.js","sourceRoot":"","sources":["../../../src/acp/acp_agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { LanguageModel } from 'ai';
|
|
2
2
|
import type { ConfirmationService } from '../guard/confirmation.js';
|
|
3
3
|
import type { AiDriver } from '../types.js';
|
|
4
|
-
import type {
|
|
5
|
-
import type { AcpProviderConfig } from './types.js';
|
|
4
|
+
import type { Logger } from '../logger.js';
|
|
5
|
+
import type { AcpAgentRuntimeConfig, AcpProviderConfig } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Builds the environment for the agent process.
|
|
8
8
|
*
|
|
@@ -13,11 +13,20 @@ import type { AcpProviderConfig } from './types.js';
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function buildAgentEnv(source: Record<string, string | undefined>, extra: Record<string, string>, inheritEnv?: boolean): Record<string, string>;
|
|
15
15
|
export interface AcpDriverDeps {
|
|
16
|
-
logger?:
|
|
16
|
+
logger?: Logger;
|
|
17
17
|
/** Answers agent permission requests when `permissionPolicy` is `ask`. */
|
|
18
18
|
confirmation?: ConfirmationService;
|
|
19
|
-
/**
|
|
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
|
+
*/
|
|
20
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;
|
|
21
30
|
}
|
|
22
31
|
export declare class AcpDriver implements AiDriver {
|
|
23
32
|
readonly name: string;
|
|
@@ -26,6 +35,7 @@ export declare class AcpDriver implements AiDriver {
|
|
|
26
35
|
private logger?;
|
|
27
36
|
private confirmation?;
|
|
28
37
|
private env;
|
|
38
|
+
private runtime?;
|
|
29
39
|
private cachedModels;
|
|
30
40
|
private providers;
|
|
31
41
|
private permissionPolicy;
|
|
@@ -1 +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,
|
|
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"}
|
package/dist/src/acp/provider.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
import path from 'node:path';
|
|
2
10
|
import { AiException, ProviderConfigError } from '../errors.js';
|
|
3
11
|
import { buildAcpRuntimeConfig, buildProjectMcpServer, getAcpAgentConfig, normalizeMcpServer, } from './acp_agents.js';
|
|
@@ -46,7 +54,9 @@ export function buildAgentEnv(source, extra, inheritEnv = false) {
|
|
|
46
54
|
if (inheritEnv)
|
|
47
55
|
return { ...extra };
|
|
48
56
|
const env = {};
|
|
49
|
-
|
|
57
|
+
// The provider merges over `process.env`, so keys that only exist there must be blanked too.
|
|
58
|
+
const keys = new Set([...Object.keys(source), ...Object.keys(process.env)]);
|
|
59
|
+
for (const key of keys) {
|
|
50
60
|
const upper = key.toUpperCase();
|
|
51
61
|
const safe = SAFE_ENV_KEYS.has(upper) || SAFE_ENV_PREFIXES.some((p) => upper.startsWith(p));
|
|
52
62
|
env[key] = safe ? (source[key] ?? '') : '';
|
|
@@ -60,6 +70,7 @@ export class AcpDriver {
|
|
|
60
70
|
logger;
|
|
61
71
|
confirmation;
|
|
62
72
|
env;
|
|
73
|
+
runtime;
|
|
63
74
|
cachedModels = new Map();
|
|
64
75
|
providers = new Set();
|
|
65
76
|
permissionPolicy;
|
|
@@ -69,6 +80,7 @@ export class AcpDriver {
|
|
|
69
80
|
this.logger = deps.logger;
|
|
70
81
|
this.confirmation = deps.confirmation;
|
|
71
82
|
this.env = deps.env ?? process.env;
|
|
83
|
+
this.runtime = deps.runtime;
|
|
72
84
|
this.defaultModel = config.agentId ?? config.defaultModel ?? 'claude-code';
|
|
73
85
|
this.permissionPolicy = config.permissionPolicy ?? 'ask';
|
|
74
86
|
if (this.permissionPolicy === 'allow') {
|
|
@@ -128,6 +140,15 @@ export class AcpDriver {
|
|
|
128
140
|
}
|
|
129
141
|
}
|
|
130
142
|
resolveRuntimeConfig(agentId) {
|
|
143
|
+
if (this.runtime) {
|
|
144
|
+
if (!path.isAbsolute(this.runtime.cwd)) {
|
|
145
|
+
throw new ProviderConfigError(this.name, `ACP "cwd" must be an absolute path, got "${this.runtime.cwd}"`);
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
...this.runtime,
|
|
149
|
+
env: buildAgentEnv(this.env, this.runtime.env, this.config.inheritEnv),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
131
152
|
const predefined = getAcpAgentConfig(agentId);
|
|
132
153
|
const explicitCommand = this.config.command;
|
|
133
154
|
// A command is only ever taken from config or from the built-in agent table.
|
|
@@ -175,7 +196,7 @@ export class AcpDriver {
|
|
|
175
196
|
this.logger?.info?.(`[ACP] Starting ACP agent session: ${runtimeConfig.command} in ${runtimeConfig.cwd}`);
|
|
176
197
|
let acpModule;
|
|
177
198
|
try {
|
|
178
|
-
acpModule = await import('@mcpc-tech/acp-ai-provider');
|
|
199
|
+
acpModule = await import(__rewriteRelativeImportExtension('@mcpc-tech/acp-ai-provider'));
|
|
179
200
|
}
|
|
180
201
|
catch (err) {
|
|
181
202
|
throw new AiException(`Package "@mcpc-tech/acp-ai-provider" is required to use ACP drivers: ${err instanceof Error ? err.message : String(err)}`, 'E_AI_MISSING_DEPENDENCY', err);
|