acp-port 0.1.3 → 0.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 (49) hide show
  1. package/CONTRIBUTING.md +6 -4
  2. package/README.md +8 -5
  3. package/dist/agent/agent.js +23 -9
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/diagnostics.d.ts +3 -0
  6. package/dist/agent/diagnostics.js +29 -0
  7. package/dist/agent/diagnostics.js.map +1 -0
  8. package/dist/agent/session.d.ts +1 -0
  9. package/dist/agent/session.js +17 -3
  10. package/dist/agent/session.js.map +1 -1
  11. package/dist/agent/turn.js +21 -5
  12. package/dist/agent/turn.js.map +1 -1
  13. package/dist/cli/arguments.d.ts +1 -1
  14. package/dist/cli/arguments.js +2 -9
  15. package/dist/cli/arguments.js.map +1 -1
  16. package/dist/config/modes.js +3 -3
  17. package/dist/config/modes.js.map +1 -1
  18. package/dist/config/schema.d.ts +0 -7
  19. package/dist/config/schema.js +0 -2
  20. package/dist/config/schema.js.map +1 -1
  21. package/dist/providers/adapters/anthropic-provider.d.ts +1 -1
  22. package/dist/providers/adapters/anthropic-provider.js +12 -10
  23. package/dist/providers/adapters/anthropic-provider.js.map +1 -1
  24. package/dist/providers/adapters/openai-provider.d.ts +1 -1
  25. package/dist/providers/adapters/openai-provider.js +9 -8
  26. package/dist/providers/adapters/openai-provider.js.map +1 -1
  27. package/dist/providers/provider-contract.d.ts +6 -0
  28. package/dist/providers/provider-contract.js +11 -1
  29. package/dist/providers/provider-contract.js.map +1 -1
  30. package/dist/providers/provider-registry.d.ts +2 -2
  31. package/dist/providers/provider-registry.js +11 -7
  32. package/dist/providers/provider-registry.js.map +1 -1
  33. package/dist/providers/support/request-handling.d.ts +3 -3
  34. package/dist/providers/support/request-handling.js +125 -21
  35. package/dist/providers/support/request-handling.js.map +1 -1
  36. package/dist/providers/support/sdk-clients.d.ts +1 -1
  37. package/dist/providers/support/sdk-clients.js +17 -5
  38. package/dist/providers/support/sdk-clients.js.map +1 -1
  39. package/dist/tools/runner.d.ts +1 -0
  40. package/dist/tools/runner.js +80 -15
  41. package/dist/tools/runner.js.map +1 -1
  42. package/docs/architecture.md +1 -1
  43. package/docs/capabilities.md +15 -11
  44. package/docs/configuration.md +20 -3
  45. package/docs/editor-integration.md +18 -16
  46. package/docs/providers.md +38 -1
  47. package/docs/releases.md +8 -6
  48. package/docs/troubleshooting.md +35 -4
  49. package/package.json +9 -9
package/CONTRIBUTING.md CHANGED
@@ -4,7 +4,7 @@ ACP Port is a TypeScript ACP agent that connects an editor to an LLM API. Contri
4
4
 
5
5
  ## Set up a checkout
6
6
 
7
- Use Node.js **24.21.0** and **pnpm 12.8.1**, as pinned in `mise.toml`; run `mise install` if you use mise. Source development requires Node.js **22.14.0 or newer** because of the release tooling. The published CLI itself supports Node.js 22.12.0 or newer. CI checks Node.js 22 and 24. Clone your fork or the repository, enter its directory, and install the versions recorded in the lockfile:
7
+ Use Node.js **24.21.0** and **pnpm 12.8.1**, as pinned in `mise.toml`; run `mise install` if you use mise. The release tooling requires Node.js **22.22.2 or later in the 22.x line, or 24.15.0 or later**. The published CLI itself supports Node.js 22.12.0 or newer. CI checks Node.js 22 and 24. Clone your fork or the repository, enter its directory, and install the versions recorded in the lockfile:
8
8
 
9
9
  ```sh
10
10
  pnpm install --frozen-lockfile
@@ -68,7 +68,7 @@ Launch the Node entry point directly in editor configurations: package-manager s
68
68
  | --- | --- |
69
69
  | `pnpm run dev <args>` | Run the source CLI using `tsx`. |
70
70
  | `pnpm run typecheck` | Check production and test TypeScript without emitting files. |
71
- | `pnpm test` | Run `src/**/*.test.ts` with the Node.js test runner and `tsx`; each test has a 15-second timeout. |
71
+ | `pnpm test` | Run `src/**/*.test.ts` with the Node.js test runner and `tsx`; the runner timeout is 60 seconds. Tests may set a shorter explicit timeout. |
72
72
  | `pnpm run check` | Run type checking followed by the test suite. |
73
73
  | `pnpm run build` | Emit ESM JavaScript, source maps, and declarations to `dist/`; exclude tests. |
74
74
  | `pnpm run format:check` | Check formatting with Biome without writing fixes. |
@@ -87,11 +87,13 @@ pnpm run lint:check
87
87
 
88
88
  CI runs these after `pnpm install --frozen-lockfile` on both supported Node.js matrix versions and verifies the npm package contents. `pnpm run check` runs type checking and tests; build, formatting, and lint checks are separate. After both matrix jobs pass, qualifying commits on the canonical repository's default branch trigger the automated release. Pull requests and fork pushes only run checks. See the [release guide](docs/releases.md) for maintainer setup.
89
89
 
90
+ The runner timeout also bounds each test file, including its sequential tests. CLI integration files launch multiple Node.js processes and can exceed 15 seconds on CI even when every individual test passes. The 60-second budget covers that cumulative startup cost; individual CLI subprocesses still have a 10-second deadline.
91
+
90
92
  For a focused test run:
91
93
 
92
94
  ```sh
93
- node --import tsx --test --test-timeout=15000 src/providers/adapters/openai-provider.test.ts
94
- node --import tsx --test --test-timeout=15000 --test-name-pattern="cancellation" "src/**/*.test.ts"
95
+ node --import tsx --test --test-timeout=60000 src/providers/adapters/openai-provider.test.ts
96
+ node --import tsx --test --test-timeout=60000 --test-name-pattern="cancellation" "src/**/*.test.ts"
95
97
  ```
96
98
 
97
99
  `tsx` executes TypeScript but does not replace type checking. Run `pnpm run typecheck` after changing types or adding tests.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  acp-port is a TypeScript CLI that runs as an ACP coding agent. It connects an ACP-capable editor to local model servers, LLM gateways, and cloud APIs. The editor provides the conversation UI, workspace context, permissions, and optional file/terminal access; acp-port handles model discovery, streaming responses, conversation history, and the model's tool loop. File tools use the local workspace when the editor does not provide file access.
6
6
 
7
- Use it with LM Studio, Ollama, LiteLLM, OpenRouter, OpenAI, Anthropic, or Google's OpenAI-compatible Gemini endpoint. Choose the endpoint and model you want to use, then register acp-port as a custom agent in your editor.
7
+ Use it with llama.cpp, LM Studio, Ollama, LiteLLM, OpenRouter, OpenAI, Anthropic, or Google's OpenAI-compatible Gemini endpoint. Choose the endpoint and model you want to use, then register acp-port as a custom agent in your editor.
8
8
 
9
9
  ## Documentation
10
10
 
@@ -124,6 +124,7 @@ The [editor integration guide](docs/editor-integration.md) includes copyable con
124
124
 
125
125
  | Service | Adapter | Base URL | Authentication |
126
126
  | --- | --- | --- | --- |
127
+ | llama.cpp | `openai` | `http://127.0.0.1:8080/v1` for port 8080 | Optional, depending on server settings |
127
128
  | LM Studio | `openai` (default) | `http://127.0.0.1:1234/v1` | Optional, depending on server settings |
128
129
  | Ollama | `openai` | `http://127.0.0.1:11434/v1` | Usually omitted for a local server |
129
130
  | LiteLLM | `openai` | Your gateway's API base URL | Gateway key, when required |
@@ -163,7 +164,6 @@ npx -y acp-port --base-url http://127.0.0.1:1234/v1 \
163
164
  | `--name NAME` | Set the endpoint label used in model names. |
164
165
  | `--no-discovery` | Skip model discovery. Requires `--default-model`. |
165
166
  | `--no-tools` | Omit all tools for models that only support text chat. |
166
- | `--mode MODE` | Choose `manual` (default), `accept-edits`, `plan`, `auto`, or `full-access`. Supporting editors also offer a per-session mode selector. |
167
167
  | `--json` | Print structured catalog data with the `models` command. |
168
168
  | `--help`, `-h`, `--version` | Print usage or version and exit. |
169
169
 
@@ -176,8 +176,9 @@ The [configuration reference](docs/configuration.md) documents validation, model
176
176
  - Streams text and accepts embedded text resources. Resource links supply metadata; their contents are not automatically fetched.
177
177
  - Exposes `read_file`, `write_file`, `list_directory`, `search_files`, and `run_command` when tools are enabled. File and command tools work locally when the editor does not provide them. Plan mode exposes only reading, listing, and searching.
178
178
  - By default, requests editor permission before each write or command and restricts file paths and command working directories to the session workspace. Reads, listings, and searches do not request approval.
179
- - `--mode full-access` works with any ACP IDE or editor: all five tools run locally without approval prompts or workspace path restrictions. Commands inherit the agent's environment and OS permissions; this does not grant administrator privileges or provide an OS sandbox. Local reads use saved disk contents.
180
- - `--mode accept-edits` automatically allows workspace writes but asks before commands. `--mode auto` can remember explicit session approvals for a file or exact command. `--mode plan` prevents writes and command execution. Modes can also be selected through ACP; changing a mode cancels the current turn and clears remembered approvals.
179
+ - Select **Full access** through ACP to run all five tools locally without approval prompts or workspace path restrictions. Commands inherit the agent's environment and OS permissions; this does not grant administrator privileges or provide an OS sandbox. Local reads use saved disk contents.
180
+ - **Accept edits** automatically allows workspace writes but asks before commands. **Ask and remember** can remember explicit session approvals for a file or exact command. **Plan** prevents writes and command execution. Select modes through the editor's ACP controls; changing a mode cancels the current turn and clears remembered approvals.
181
+ - The editor can switch a session from full access to **Ask permission**. Approval requests identify the file and proposed contents, or the executable, arguments, and working directory; rejection prevents execution. See [editor permission controls](docs/editor-integration.md#choose-permissions-in-the-editor).
181
182
  - Keeps sessions in memory. Restarting the agent loses their history; session reload and automatic history summarization are unavailable.
182
183
  - Defaults to 12 model requests per turn, 200,000 history characters, and 120-second provider/tool timeouts. A character budget is not a model token budget.
183
184
  - Supports text-based coding workflows. Images, audio, binary attachments, and MCP tools are unsupported. Forwarded MCP servers are ignored with a warning on stderr; chat and supported editor tools remain available.
@@ -186,6 +187,8 @@ Prompts, attached text, conversation history, and tool results are sent to the s
186
187
 
187
188
  Automated tests cover mocked provider APIs, ACP sessions, permission handling, and a stdio tool round trip. They do not establish compatibility with every model or replace a live test in your editor. For common failures, see [troubleshooting](docs/troubleshooting.md).
188
189
 
190
+ Prompt failures appear in the editor conversation with an explanation and suggested next steps, including HTTP status when available. Editors supporting ACP notices also receive an error notice. See [llama.cpp setup](docs/providers.md#llamacpp) for its API URL, model alias, and tool-template configuration.
191
+
189
192
  ## Development
190
193
 
191
194
  ```sh
@@ -198,7 +201,7 @@ pnpm run format:check
198
201
  pnpm run lint:check
199
202
  ```
200
203
 
201
- Use **Node.js 24.21.0 and pnpm 12.8.1** for development; `mise install` installs these versions from `mise.toml`. Source development requires Node.js 22.14.0 or newer because of the release tooling, while the published CLI supports Node.js 22.12.0 or newer. The committed `pnpm-lock.yaml` makes local and CI installs repeatable.
204
+ Use **Node.js 24.21.0 and pnpm 12.8.1** for development; `mise install` installs these versions from `mise.toml`. The release tooling requires Node.js 22.22.2 or later in the 22.x line, or 24.15.0 or later. The published CLI supports Node.js 22.12.0 or newer. The committed `pnpm-lock.yaml` makes local and CI installs repeatable.
202
205
 
203
206
  The project uses TypeScript, native ESM, the ACP SDK, Zod, and the OpenAI/Anthropic SDKs. Tests run directly from TypeScript with Node's test runner and `tsx`; a build is not required to run them. Editors using `dist/cli/index.js` require a new build and process restart to pick up source changes.
204
207
 
@@ -1,6 +1,7 @@
1
1
  import { agent, PROTOCOL_VERSION, RequestError, } from "@agentclientprotocol/sdk";
2
2
  import { z } from "zod";
3
3
  import pkg from "../../package.json" with { type: "json" };
4
+ import { reportSessionDiagnostic } from "./diagnostics.js";
4
5
  import { createSession, getSessionConfigOptions, getSessionModes, selectSessionMode, selectSessionModel, } from "./session.js";
5
6
  import { runSessionPrompt } from "./turn.js";
6
7
  export function createAgent(config, registry, options = {}) {
@@ -123,15 +124,28 @@ export function createAgent(config, registry, options = {}) {
123
124
  })
124
125
  .onRequest("session/prompt", async ({ params, client, signal }) => {
125
126
  const session = getSession(params.sessionId);
126
- return runSessionPrompt({
127
- config,
128
- registry,
129
- session,
130
- capabilities,
131
- client,
132
- signal,
133
- prompt: params.prompt,
134
- });
127
+ try {
128
+ return await runSessionPrompt({
129
+ config,
130
+ registry,
131
+ session,
132
+ capabilities,
133
+ client,
134
+ signal,
135
+ prompt: params.prompt,
136
+ });
137
+ }
138
+ catch (error) {
139
+ if (error instanceof RequestError) {
140
+ try {
141
+ await reportSessionDiagnostic(client, capabilities, session.id, "error", error.message);
142
+ }
143
+ catch {
144
+ // A closed transport must not replace the original request failure.
145
+ }
146
+ }
147
+ throw error;
148
+ }
135
149
  }));
136
150
  }
137
151
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AgentContext, ClientCapabilities } from "@agentclientprotocol/sdk";
2
+ /** Keep diagnostics visible in editors that do not expose JSON-RPC error details. */
3
+ export declare function reportSessionDiagnostic(client: AgentContext, capabilities: ClientCapabilities, sessionId: string, severity: "error" | "warning", message: string): Promise<void>;
@@ -0,0 +1,29 @@
1
+ /** Keep diagnostics visible in editors that do not expose JSON-RPC error details. */
2
+ export async function reportSessionDiagnostic(client, capabilities, sessionId, severity, message) {
3
+ const supportsNotices = capabilities.session?.notices != null;
4
+ // Fatal errors remain in the transcript even when an editor dismisses notices.
5
+ if (severity === "error" || !supportsNotices) {
6
+ await client.notify("session/update", {
7
+ sessionId,
8
+ update: {
9
+ sessionUpdate: "agent_message_chunk",
10
+ content: {
11
+ type: "text",
12
+ text: `\n\n**acp-port ${severity}**\n\n${message}\n\n`,
13
+ },
14
+ },
15
+ });
16
+ }
17
+ if (supportsNotices) {
18
+ await client.notify("session/update", {
19
+ sessionId,
20
+ update: {
21
+ sessionUpdate: "notice",
22
+ severity,
23
+ title: `acp-port ${severity}`,
24
+ description: message,
25
+ },
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/agent/diagnostics.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAoB,EACpB,YAAgC,EAChC,SAAiB,EACjB,QAA6B,EAC7B,OAAe;IAEf,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IAC9D,+EAA+E;IAC/E,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACpC,SAAS;YACT,MAAM,EAAE;gBACN,aAAa,EAAE,qBAAqB;gBACpC,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kBAAkB,QAAQ,SAAS,OAAO,MAAM;iBACvD;aACF;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACpC,SAAS;YACT,MAAM,EAAE;gBACN,aAAa,EAAE,QAAQ;gBACvB,QAAQ;gBACR,KAAK,EAAE,YAAY,QAAQ,EAAE;gBAC7B,WAAW,EAAE,OAAO;aACrB;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -16,6 +16,7 @@ export interface AgentSession {
16
16
  history: Message[];
17
17
  mode: AgentMode;
18
18
  permissionGrants: Set<string>;
19
+ pendingWarnings: string[];
19
20
  activeTurn?: AbortController;
20
21
  }
21
22
  export declare function createSession(workspaceDirectory: string, config: Config, registry: ProviderRegistry, options: AgentOptions, signal: AbortSignal): Promise<AgentSession>;
@@ -16,7 +16,8 @@ export async function createSession(workspaceDirectory, config, registry, option
16
16
  catch {
17
17
  throw RequestError.invalidParams(undefined, "Session cwd must be an existing local directory.");
18
18
  }
19
- const modelCatalog = await registry.discover(options.provider, signal);
19
+ const discoveryErrors = new Map();
20
+ const modelCatalog = await registry.discover(options.provider, signal, (providerId, error) => discoveryErrors.set(providerId, error));
20
21
  const preferredModelId = options.model ??
21
22
  (!options.provider ||
22
23
  config.defaultModel?.startsWith(`${options.provider}/`)
@@ -27,6 +28,15 @@ export async function createSession(workspaceDirectory, config, registry, option
27
28
  ? modelCatalog.find((model) => model.id === preferredModelId)
28
29
  : modelCatalog.find((model) => model.providerId === initialProviderId);
29
30
  if (!selectedModel) {
31
+ const failedProviderId = preferredModelId
32
+ ? preferredModelId.split("/")[0]
33
+ : initialProviderId;
34
+ const discoveryError = failedProviderId
35
+ ? discoveryErrors.get(failedProviderId)
36
+ : undefined;
37
+ if (discoveryError) {
38
+ throw RequestError.internalError(undefined, `Model discovery failed for provider ${failedProviderId}. ${discoveryError.message} If model listing is unavailable, set --default-model MODEL_ID --no-discovery using the server's upstream model ID.`);
39
+ }
30
40
  throw RequestError.invalidParams(undefined, preferredModelId
31
41
  ? `Selected model ${preferredModelId} is unavailable. Check the endpoint's model list or provide its upstream ID with --default-model.`
32
42
  : `No models available for initial provider ${initialProviderId ?? "(none)"}. Check the endpoint URL, authentication, and server, or provide --default-model; no automatic provider fallback is performed.`);
@@ -37,8 +47,11 @@ export async function createSession(workspaceDirectory, config, registry, option
37
47
  modelCatalog,
38
48
  selectedModel,
39
49
  history: [],
40
- mode: config.agent.mode,
50
+ mode: "manual",
41
51
  permissionGrants: new Set(),
52
+ pendingWarnings: [...discoveryErrors].map(([providerId, error]) => `Model discovery failed for provider ${providerId}. ${error.message} ${config.providers[providerId]?.models?.length
53
+ ? "Continuing with configured models for this provider; inference has not been verified."
54
+ : "Its models are unavailable in this session."}`),
42
55
  };
43
56
  }
44
57
  export function getSessionConfigOptions(session) {
@@ -56,7 +69,8 @@ export function getSessionConfigOptions(session) {
56
69
  },
57
70
  {
58
71
  id: "mode",
59
- name: "Mode",
72
+ name: "Permission mode",
73
+ description: "Choose when the editor must approve file writes and commands. Changes apply to this session and cancel pending work.",
60
74
  category: "mode",
61
75
  type: "select",
62
76
  currentValue: session.mode,
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { RequestError, } from "@agentclientprotocol/sdk";
2
2
  import { getModeInstructions } from "../config/modes.js";
3
+ import { ProviderError, } from "../providers/provider-contract.js";
3
4
  import { ToolRunner } from "../tools/runner.js";
5
+ import { reportSessionDiagnostic } from "./diagnostics.js";
4
6
  import { extractPromptText } from "./prompt-content.js";
5
7
  const MAX_TOOL_CALLS_PER_RESPONSE = 32;
6
8
  const DEFAULT_SYSTEM_PROMPT = `You are a coding assistant running inside the user's editor.
@@ -24,29 +26,43 @@ export async function runSessionPrompt({ config, registry, session, capabilities
24
26
  throw RequestError.invalidParams(undefined, "Session history limit reached. Start a new session or increase agent.maxHistoryChars.");
25
27
  }
26
28
  const selectedModel = session.selectedModel;
29
+ const historyLength = session.history.length;
27
30
  const controller = new AbortController();
28
31
  session.activeTurn = controller;
29
32
  session.history.push({ role: "user", content: text });
30
33
  const turnSignal = AbortSignal.any([signal, controller.signal]);
31
34
  try {
32
- return await runModelToolLoop(config, registry, session, capabilities, client, turnSignal);
35
+ // Wait until the editor knows the session ID before displaying discovery warnings.
36
+ for (const warning of session.pendingWarnings) {
37
+ turnSignal.throwIfAborted();
38
+ await reportSessionDiagnostic(client, capabilities, session.id, "warning", warning);
39
+ }
40
+ session.pendingWarnings = [];
41
+ return await runModelToolLoop(config, registry, session, capabilities, client, turnSignal, selectedModel);
33
42
  }
34
43
  catch (error) {
44
+ // A failed request with no response must not leave consecutive user messages
45
+ // on retry: strict chat templates (including local models) reject them.
46
+ // Once text or tool activity exists, preserve it for an accurate history.
47
+ if (session.history.length === historyLength + 1) {
48
+ session.history.pop();
49
+ }
35
50
  if (turnSignal.aborted) {
36
51
  return { stopReason: "cancelled" };
37
52
  }
38
- // SDK/API error payloads may contain request data. Never echo them into the editor.
53
+ // Only explicitly sanitized provider errors are safe to show in the editor.
39
54
  if (error instanceof RequestError) {
40
55
  throw error;
41
56
  }
42
- throw RequestError.internalError(undefined, `Provider ${selectedModel.providerId} request failed. Check its API key, model, URL, and server logs.`);
57
+ throw RequestError.internalError(undefined, `Provider ${selectedModel.providerId} request failed for model ${selectedModel.modelId}. ${error instanceof ProviderError
58
+ ? error.message
59
+ : "Check its API key, model, URL, and server logs."}`);
43
60
  }
44
61
  finally {
45
62
  session.activeTurn = undefined;
46
63
  }
47
64
  }
48
- async function runModelToolLoop(config, registry, session, capabilities, client, signal) {
49
- const model = session.selectedModel;
65
+ async function runModelToolLoop(config, registry, session, capabilities, client, signal, model) {
50
66
  const provider = registry.get(model.providerId);
51
67
  const toolRunner = new ToolRunner({
52
68
  client,
@@ -1 +1 @@
1
- {"version":3,"file":"turn.js","sourceRoot":"","sources":["../../src/agent/turn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn.js","sourceRoot":"","sources":["../../src/agent/turn.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { AgentOptions } from "../agent/session.js";
2
2
  import { type Config } from "../config/schema.js";
3
- export declare const CLI_HELP = "acp-port \u2014 local models and LLM APIs over ACP\n\nUsage:\n acp-port [serve] [--base-url URL] [--default-model MODEL_ID]\n [--provider PROVIDER] [--name NAME] [--no-discovery] [--no-tools]\n [--mode manual|accept-edits|plan|auto|full-access]\n acp-port [serve] --provider openai|anthropic|gemini [--default-model MODEL_ID]\n acp-port models [--base-url URL] [--json]\n [--provider PROVIDER] [--default-model MODEL_ID] [--no-discovery]\n\nProviders: openai (default), anthropic, gemini\nEach launch uses only its CLI options and environment; no configuration file is used.\nThe openai provider uses Chat Completions at https://api.openai.com/v1 by default.\nUse --base-url for local models and proxies that support the same API.\n--default-model selects the initial model using its upstream ID, including any slashes.\nOther discovered models remain selectable; without this option the first model is used.\nSet API_KEY in the editor entry's env object for endpoint authentication.\nOpenAI, Anthropic, and Gemini require API keys; local endpoints may not need one.\nProvider-specific key variables such as OPENAI_API_KEY are not used.\n--no-discovery requires --default-model. Models are discovered, not downloaded.\n--mode selects the initial permission mode (default: manual); editors can change it per session.\n--mode full-access runs all tools locally without approval prompts or workspace path restrictions.\nModes use the agent/editor process's OS permissions; they do not grant administrator privileges.\nWith no command, starts serve. Use --help for usage and --version for version.\n";
3
+ export declare const CLI_HELP = "acp-port \u2014 local models and LLM APIs over ACP\n\nUsage:\n acp-port [serve] [--base-url URL] [--default-model MODEL_ID]\n [--provider PROVIDER] [--name NAME] [--no-discovery] [--no-tools]\n acp-port [serve] --provider openai|anthropic|gemini [--default-model MODEL_ID]\n acp-port models [--base-url URL] [--json]\n [--provider PROVIDER] [--default-model MODEL_ID] [--no-discovery]\n\nProviders: openai (default), anthropic, gemini\nEach launch uses only its CLI options and environment; no configuration file is used.\nThe openai provider uses Chat Completions at https://api.openai.com/v1 by default.\nUse --base-url for local models and proxies that support the same API.\n--default-model selects the initial model using its upstream ID, including any slashes.\nOther discovered models remain selectable; without this option the first model is used.\nSet API_KEY in the editor entry's env object for endpoint authentication.\nOpenAI, Anthropic, and Gemini require API keys; local endpoints may not need one.\nProvider-specific key variables such as OPENAI_API_KEY are not used.\n--no-discovery requires --default-model. Models are discovered, not downloaded.\nSessions start in Ask permission; select permission modes through your editor's ACP controls.\nModes use the agent/editor process's OS permissions; they do not grant administrator privileges.\nWith no command, starts serve. Use --help for usage and --version for version.\n";
4
4
  export type CliCommand = {
5
5
  name: "help" | "version";
6
6
  } | {
@@ -5,7 +5,6 @@ export const CLI_HELP = `acp-port — local models and LLM APIs over ACP
5
5
  Usage:
6
6
  acp-port [serve] [--base-url URL] [--default-model MODEL_ID]
7
7
  [--provider PROVIDER] [--name NAME] [--no-discovery] [--no-tools]
8
- [--mode manual|accept-edits|plan|auto|full-access]
9
8
  acp-port [serve] --provider openai|anthropic|gemini [--default-model MODEL_ID]
10
9
  acp-port models [--base-url URL] [--json]
11
10
  [--provider PROVIDER] [--default-model MODEL_ID] [--no-discovery]
@@ -20,8 +19,7 @@ Set API_KEY in the editor entry's env object for endpoint authentication.
20
19
  OpenAI, Anthropic, and Gemini require API keys; local endpoints may not need one.
21
20
  Provider-specific key variables such as OPENAI_API_KEY are not used.
22
21
  --no-discovery requires --default-model. Models are discovered, not downloaded.
23
- --mode selects the initial permission mode (default: manual); editors can change it per session.
24
- --mode full-access runs all tools locally without approval prompts or workspace path restrictions.
22
+ Sessions start in Ask permission; select permission modes through your editor's ACP controls.
25
23
  Modes use the agent/editor process's OS permissions; they do not grant administrator privileges.
26
24
  With no command, starts serve. Use --help for usage and --version for version.
27
25
  `;
@@ -40,7 +38,6 @@ export function parseCliArguments(args) {
40
38
  json: { type: "boolean" },
41
39
  "no-discovery": { type: "boolean" },
42
40
  "no-tools": { type: "boolean" },
43
- mode: { type: "string" },
44
41
  },
45
42
  });
46
43
  if (values.help) {
@@ -73,11 +70,8 @@ export function parseCliArguments(args) {
73
70
  }
74
71
  assertAllowedOptions([
75
72
  ...connectionOptions,
76
- ...(commandName === "models" ? ["json"] : ["mode"]),
73
+ ...(commandName === "models" ? ["json"] : []),
77
74
  ]);
78
- if (values.mode === "full-access" && values["no-tools"]) {
79
- throw new Error("--mode full-access cannot be combined with --no-tools.");
80
- }
81
75
  if (values["default-model"] && values["default-model"].length !== 1) {
82
76
  throw new Error("--default-model accepts exactly one model.");
83
77
  }
@@ -86,7 +80,6 @@ export function parseCliArguments(args) {
86
80
  throw new Error("--no-discovery requires --default-model.");
87
81
  }
88
82
  const config = configSchema.parse({
89
- agent: { mode: values.mode ?? "manual" },
90
83
  providers: {
91
84
  endpoint: {
92
85
  type: values.provider ?? "openai",
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ export const agentModeSchema = z.enum([
9
9
  export const agentModes = [
10
10
  {
11
11
  id: "manual",
12
- name: "Manual",
13
- description: "Ask before every file write and command.",
12
+ name: "Ask permission",
13
+ description: "Ask the editor to approve each file write and command; workspace reads are allowed.",
14
14
  },
15
15
  {
16
16
  id: "accept-edits",
@@ -24,7 +24,7 @@ export const agentModes = [
24
24
  },
25
25
  {
26
26
  id: "auto",
27
- name: "Auto",
27
+ name: "Ask and remember",
28
28
  description: "Ask for new actions and remember explicit session approvals for a file or exact command.",
29
29
  },
30
30
  {
@@ -1 +1 @@
1
- {"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/config/modes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;IACN,aAAa;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gEAAgE;KACnE;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,0FAA0F;KAC7F;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,gFAAgF;KACnF;CACoE,CAAC;AAExE,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/D,OAAO,SAAS,IAAI,KAAK,QAAQ,EAAE,WAAW,KAC5C,IAAI,KAAK,aAAa;QACpB,CAAC,CAAC,yHAAyH;QAC3H,CAAC,CAAC,oFACN,EAAE,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/config/modes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;IACN,aAAa;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gEAAgE;KACnE;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,0FAA0F;KAC7F;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,gFAAgF;KACnF;CACoE,CAAC;AAExE,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/D,OAAO,SAAS,IAAI,KAAK,QAAQ,EAAE,WAAW,KAC5C,IAAI,KAAK,aAAa;QACpB,CAAC,CAAC,yHAAyH;QAC3H,CAAC,CAAC,oFACN,EAAE,CAAC;AACL,CAAC"}
@@ -90,13 +90,6 @@ export declare const configSchema: z.ZodObject<{
90
90
  apiKeyEnv: z.ZodDefault<z.ZodString>;
91
91
  }, z.core.$strict>], "type">>>;
92
92
  agent: z.ZodPrefault<z.ZodObject<{
93
- mode: z.ZodDefault<z.ZodEnum<{
94
- "accept-edits": "accept-edits";
95
- auto: "auto";
96
- "full-access": "full-access";
97
- manual: "manual";
98
- plan: "plan";
99
- }>>;
100
93
  maxSteps: z.ZodDefault<z.ZodNumber>;
101
94
  maxHistoryChars: z.ZodDefault<z.ZodNumber>;
102
95
  toolTimeoutMs: z.ZodDefault<z.ZodNumber>;
@@ -1,5 +1,4 @@
1
1
  import { z } from "zod";
2
- import { agentModeSchema } from "./modes.js";
3
2
  export const entryId = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/);
4
3
  const environmentVariableNameSchema = z
5
4
  .string()
@@ -56,7 +55,6 @@ export const configSchema = z
56
55
  providers: z.record(entryId, providerSchema).default({}),
57
56
  agent: z
58
57
  .object({
59
- mode: agentModeSchema.default("manual"),
60
58
  maxSteps: z.number().int().min(1).max(100).default(12),
61
59
  maxHistoryChars: z.number().int().min(1_000).default(200_000),
62
60
  toolTimeoutMs: z
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACvE,MAAM,6BAA6B,GAAG,CAAC;KACpC,MAAM,EAAE;KACR,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACrC,MAAM,gBAAgB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,CACL,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1C,CAAC,GAAG,CAAC,QAAQ;QACb,CAAC,GAAG,CAAC,QAAQ;QACb,CAAC,GAAG,CAAC,MAAM;QACX,CAAC,GAAG,CAAC,IAAI,CACV,CAAC;AACJ,CAAC,EAAE,qEAAqE,CAAC,CAAC;AAC1E,MAAM,oBAAoB,GAAG;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CACtE;SACA,QAAQ,EAAE;IACb,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACzD,CAAC;SACE,MAAM,CAAC;QACN,GAAG,oBAAoB;QACvB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC;QAC9D,SAAS,EAAE,6BAA6B,CAAC,QAAQ,EAAE;KACpD,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,GAAG,oBAAoB;QACvB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5B,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC;QAC9D,SAAS,EAAE,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC;KAC5D,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,GAAG,oBAAoB;QACvB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAC/B,yDAAyD,CAC1D;QACD,SAAS,EAAE,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC;KAC5D,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7D,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,GAAG,CAAC;aACR,GAAG,CAAC,SAAS,CAAC;aACd,OAAO,CAAC,OAAO,CAAC;QACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,CAAC,EAAE,CAAC;CAChB,CAAC;KACD,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ApiProviderConfig, GenerateRequest, Model, ModelEvent, Provider } from "../provider-contract.js";
1
+ import { type ApiProviderConfig, type GenerateRequest, type Model, type ModelEvent, type Provider } from "../provider-contract.js";
2
2
  /** Native Anthropic Messages API; does not read Claude subscription credentials. */
3
3
  export declare class AnthropicProvider implements Provider {
4
4
  private readonly config;
@@ -1,3 +1,4 @@
1
+ import { ProviderError, } from "../provider-contract.js";
1
2
  import { createProviderRequestSignal, sanitizeProviderError, validateToolCalls, } from "../support/request-handling.js";
2
3
  import { ConfiguredAnthropicClient } from "../support/sdk-clients.js";
3
4
  /** Native Anthropic Messages API; does not read Claude subscription credentials. */
@@ -9,27 +10,28 @@ export class AnthropicProvider {
9
10
  this.client = new ConfiguredAnthropicClient(config);
10
11
  }
11
12
  async listModels(signal) {
13
+ const requestSignal = createProviderRequestSignal(this.config, signal);
12
14
  try {
13
15
  const models = [];
14
- for await (const model of this.client.models.list({}, { signal: createProviderRequestSignal(this.config, signal) })) {
16
+ for await (const model of this.client.models.list({}, { signal: requestSignal })) {
15
17
  models.push({ id: model.id, name: model.display_name });
16
18
  }
17
19
  return models;
18
20
  }
19
21
  catch (error) {
20
- throw sanitizeProviderError(error);
22
+ throw sanitizeProviderError(error, this.config, requestSignal);
21
23
  }
22
24
  }
23
25
  async *generate(request) {
26
+ const signal = createProviderRequestSignal(this.config, request.signal);
24
27
  try {
25
- yield* this.generateStream(request);
28
+ yield* this.generateStream(request, signal);
26
29
  }
27
30
  catch (error) {
28
- throw sanitizeProviderError(error);
31
+ throw sanitizeProviderError(error, this.config, signal);
29
32
  }
30
33
  }
31
- async *generateStream(request) {
32
- const signal = createProviderRequestSignal(this.config, request.signal);
34
+ async *generateStream(request, signal) {
33
35
  const stream = await this.client.messages.create({
34
36
  model: request.model,
35
37
  system: request.system,
@@ -74,7 +76,7 @@ export class AnthropicProvider {
74
76
  else if (event.delta.type === "input_json_delta") {
75
77
  const pending = calls.get(event.index);
76
78
  if (!pending) {
77
- throw new Error("Anthropic streamed tool input without a tool call.");
79
+ throw new ProviderError("Anthropic streamed tool input without a tool call.", "protocol");
78
80
  }
79
81
  pending.call.arguments += event.delta.partial_json;
80
82
  }
@@ -98,7 +100,7 @@ export class AnthropicProvider {
98
100
  }
99
101
  signal.throwIfAborted();
100
102
  if (!completed || !stopReason) {
101
- throw new Error("Anthropic stream ended before the message completed; retry the prompt.");
103
+ throw new ProviderError("Anthropic stream ended before the message completed; retry the prompt.", "protocol");
102
104
  }
103
105
  if (stopReason === "max_tokens" ||
104
106
  stopReason === "model_context_window_exceeded") {
@@ -110,13 +112,13 @@ export class AnthropicProvider {
110
112
  return;
111
113
  }
112
114
  if (stopReason === "pause_turn") {
113
- throw new Error("Anthropic paused the turn before completion; retry the prompt.");
115
+ throw new ProviderError("Anthropic paused the turn before completion; retry the prompt.", "protocol");
114
116
  }
115
117
  const completeCalls = [...calls.entries()]
116
118
  .sort(([a], [b]) => a - b)
117
119
  .map(([, pending]) => {
118
120
  if (!pending.complete) {
119
- throw new Error("Anthropic returned an incomplete tool call.");
121
+ throw new ProviderError("Anthropic returned an incomplete tool call.", "protocol");
120
122
  }
121
123
  return {
122
124
  ...pending.call,