glm-acp-agent 1.13.0 → 1.14.1
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/README.md +13 -1
- package/dist/llm/glm-client.d.ts +61 -0
- package/dist/llm/glm-client.d.ts.map +1 -1
- package/dist/llm/glm-client.js +277 -60
- package/dist/llm/glm-client.js.map +1 -1
- package/dist/protocol/agent.d.ts +10 -1
- package/dist/protocol/agent.d.ts.map +1 -1
- package/dist/protocol/agent.js +364 -91
- package/dist/protocol/agent.js.map +1 -1
- package/dist/protocol/context-budget.d.ts.map +1 -1
- package/dist/protocol/context-budget.js +5 -1
- package/dist/protocol/context-budget.js.map +1 -1
- package/dist/protocol/session-store.d.ts +7 -1
- package/dist/protocol/session-store.d.ts.map +1 -1
- package/dist/protocol/session-store.js +51 -12
- package/dist/protocol/session-store.js.map +1 -1
- package/dist/tools/executor.d.ts +8 -0
- package/dist/tools/executor.d.ts.map +1 -1
- package/dist/tools/executor.js +95 -35
- package/dist/tools/executor.js.map +1 -1
- package/dist/tools/file-reader.d.ts +2 -0
- package/dist/tools/file-reader.d.ts.map +1 -1
- package/dist/tools/file-reader.js +62 -5
- package/dist/tools/file-reader.js.map +1 -1
- package/dist/tools/mcp-http-response.d.ts +29 -0
- package/dist/tools/mcp-http-response.d.ts.map +1 -0
- package/dist/tools/mcp-http-response.js +194 -0
- package/dist/tools/mcp-http-response.js.map +1 -0
- package/dist/tools/session-mcp-client.d.ts +3 -1
- package/dist/tools/session-mcp-client.d.ts.map +1 -1
- package/dist/tools/session-mcp-client.js +42 -42
- package/dist/tools/session-mcp-client.js.map +1 -1
- package/dist/tools/vision-mcp-client.d.ts +1 -0
- package/dist/tools/vision-mcp-client.d.ts.map +1 -1
- package/dist/tools/vision-mcp-client.js +39 -6
- package/dist/tools/vision-mcp-client.js.map +1 -1
- package/dist/tools/zai-mcp-client.d.ts +3 -1
- package/dist/tools/zai-mcp-client.d.ts.map +1 -1
- package/dist/tools/zai-mcp-client.js +31 -51
- package/dist/tools/zai-mcp-client.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ The agent does not run tools inside an OS or container sandbox. Shell commands a
|
|
|
97
97
|
|------|---------|---------------------|-------------|
|
|
98
98
|
| `read_file` | ACP client when both fs read/write capabilities are advertised, otherwise agent process | Always silent | Read a text file or editor buffer, paginated by offset/limit (default 2000 lines, capped at 5000). Local scans are byte-bounded; totals can be unknown and an incomplete line is never given a next offset. |
|
|
99
99
|
| `write_file` | Agent process (ACP client `fs` when advertised) | Mode-dependent | Write or overwrite a text file. Silent in `accept_edits` and `bypass_permissions`. |
|
|
100
|
-
| `edit_file` | Agent process (ACP client `fs` when advertised) | Mode-dependent | Replace one exact, unique snippet in an existing file. It refuses an input or editor buffer over the read/edit budget, and re-validates after permission
|
|
100
|
+
| `edit_file` | Agent process (ACP client `fs` when advertised) | Mode-dependent | Replace one exact, unique snippet in an existing file. It refuses an input or editor buffer over the read/edit budget, and re-validates after permission and progress notification delivery to preserve changes present at the final read. Silent in `accept_edits` and `bypass_permissions`. |
|
|
101
101
|
| `todowrite` | Agent process | Always silent | Create or replace the session's structured task list so multi-step progress is tracked instead of narrated in chat. Each call replaces the list; the tool result renders it back to the model. |
|
|
102
102
|
| `list_files` | Agent process | Always silent | List a directory through a bounded iterator; a truncated result is a disclosed subset. |
|
|
103
103
|
| `run_command` | Agent process | Mode-dependent | Run an arbitrary shell command; cancelling a turn terminates its shell process group, while intentionally backgrounded processes survive a normal shell exit. Silent only in `bypass_permissions`. |
|
|
@@ -105,6 +105,8 @@ The agent does not run tools inside an OS or container sandbox. Shell commands a
|
|
|
105
105
|
| `web_reader` | Agent (Z.AI Coding Plan MCP) | Always silent | Fetch and parse a web page (markdown or plain text) |
|
|
106
106
|
| `image_analysis` | Agent (Z.AI Vision MCP, stdio) | Always silent | Analyze a local image path or remote URL using `@z_ai/mcp-server` |
|
|
107
107
|
|
|
108
|
+
Editor edits use an optimistic read followed by a full-buffer write. ACP's `fs/write_text_file` request has no version precondition, so edits made during that write RPC can still race with the replacement. The final read preserves unrelated changes already present and rejects a target snippet that has disappeared or become ambiguous.
|
|
109
|
+
|
|
108
110
|
### Session Modes
|
|
109
111
|
|
|
110
112
|
Clients can use `session/set_mode` to drive the permission policy:
|
|
@@ -255,6 +257,12 @@ When the model name matches `glm-4.5`, `glm-4.6`, `glm-4.7`, or the `glm-5` fami
|
|
|
255
257
|
|
|
256
258
|
The provider stream itself is guarded against stalls. The Z.AI SDK's HTTP timeout only covers waiting for response headers — a response whose body stops mid-stream would otherwise hang the turn forever. The agent therefore aborts a provider stream read that produces no data for `ACP_GLM_STREAM_IDLE_TIMEOUT_MS` milliseconds (default `300000`; invalid values for the variable fall back to the default with a stderr warning). On timeout, whatever partial output already reached the user is kept, an `[error]` message is appended as an agent message, the turn ends, and the last valid on-disk session checkpoint is preserved. A slow ACP client back-pressuring chunks it already received does not trip the watchdog — only silence from the provider between reads does.
|
|
257
259
|
|
|
260
|
+
A dropped network connection is handled separately from a stall. Each provider client has its own connection pool. When a request fails before an HTTP status arrives (`APIConnectionError`, including a connection timeout, or a socket error such as `ECONNRESET`), the agent closes that pool once nothing is still sending on it, and later requests open another. A retry another session already started follows that replacement, so closing the old pool does not fail the retry locally. The OpenAI client retries a failed open twice (`maxRetries: 2`). Those same two retries cover HTTP 408, 409, 429, and 5xx. The agent does not wrap the client in a second retry loop. If the link is still down after that budget, the turn ends with `stopReason: "cancelled"` instead of a JSON-RPC internal error, and the session stays open. A turn that produced no assistant text or tool result drops that user message and asks for it to be sent again. Assistant text or a tool result that already arrived is kept. The next message continues the same session on a new connection. An HTTP status such as 400 or 401 fails the turn.
|
|
261
|
+
|
|
262
|
+
A socket reset after response bytes have started is not retried. That turn still ends with `stopReason: "cancelled"` and a connection-lost notice, and the text or tool result already in the session stays there. The idle-stream watchdog and an incomplete tool-call stream still fail the turn with an error and leave the previous checkpoint in place.
|
|
263
|
+
|
|
264
|
+
Cancelling a turn keeps the user's prompt whether or not the history was compacted for that request. When compaction already ran and the cancelled turn produced no reply, the pre-compaction messages are restored and the prompt stays, so the saved checkpoint still contains the earlier exchange. A connection drop with no reply is the path that removes the unsent prompt.
|
|
265
|
+
|
|
258
266
|
#### Thought level (reasoning effort)
|
|
259
267
|
|
|
260
268
|
The agent advertises a `thought_level` [SessionConfigOption](https://agentclientprotocol.com) so clients that support config options (e.g. a "Thinking" selector) can control reasoning effort per session. The available levels depend on the active model:
|
|
@@ -469,6 +477,7 @@ src/
|
|
|
469
477
|
├── credentials.test.ts # Credential resolution and --setup persistence
|
|
470
478
|
├── executor.test.ts # Tests for ToolExecutor
|
|
471
479
|
├── glm-client.test.ts # Tests for streaming / tool-call assembly
|
|
480
|
+
├── transport-recovery.test.ts # Connection-loss retry and session recovery
|
|
472
481
|
├── slash-commands.test.ts # Command discovery and `/name` expansion
|
|
473
482
|
└── integration.test.ts # End-to-end tests over the real ACP ndjson transport
|
|
474
483
|
```
|
|
@@ -495,6 +504,7 @@ The test suite covers:
|
|
|
495
504
|
- Permission flows for `write_file` and `run_command` (allow / reject / cancel)
|
|
496
505
|
- Shell-quoted argument handling for `list_files` and `run_command`
|
|
497
506
|
- GLM streaming: text deltas, `reasoning_content` deltas, multi-chunk tool-call assembly, and trailing usage
|
|
507
|
+
- Connection loss: one retry budget for a dropped open and for HTTP 408/409/429/5xx, a cancelled turn, an unanswered prompt dropped, partial text or a tool result kept, and the same session accepting the next prompt
|
|
498
508
|
- Image preprocessing through a mocked Vision MCP client and graceful degradation on Vision MCP failures
|
|
499
509
|
|
|
500
510
|
---
|
|
@@ -503,6 +513,8 @@ The test suite covers:
|
|
|
503
513
|
|
|
504
514
|
- **`No API key found.`** — either set `Z_AI_API_KEY` in the environment, or run `glm-acp-agent --setup` (or `node dist/index.js --setup` from a source clone) once to store the key on disk.
|
|
505
515
|
- **`HTTP 401: Invalid API key`** — your key is wrong or expired; rotate it on <https://z.ai/manage-apikey/apikey-list>.
|
|
516
|
+
- **`Connection lost. Send the message again when you are back online.`** — the link to Z.AI dropped before this turn produced a reply. The session is still open. Send the prompt again once the network is back.
|
|
517
|
+
- **`Connection lost. Send a message to continue.`** — the link dropped after this turn already produced assistant text or a tool result. That work is still in the session. Send another message to continue.
|
|
506
518
|
- **Writes or commands never get to run.** — make sure your ACP client supports `session/request_permission` and that you approve the prompt for the specific tool call.
|
|
507
519
|
|
|
508
520
|
---
|
package/dist/llm/glm-client.d.ts
CHANGED
|
@@ -77,6 +77,24 @@ export interface StreamChatOptions {
|
|
|
77
77
|
export declare class ModelStreamIdleTimeoutError extends Error {
|
|
78
78
|
name: string;
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Retries on one provider request. This is the OpenAI client's `maxRetries`:
|
|
82
|
+
* the initial open plus two retries, for connection failures and for HTTP
|
|
83
|
+
* 408, 409, 429, and 5xx. There is no second loop around the client — that
|
|
84
|
+
* would run this policy again on every open.
|
|
85
|
+
*/
|
|
86
|
+
export declare const PROVIDER_MAX_RETRIES = 2;
|
|
87
|
+
/**
|
|
88
|
+
* A provider call failed before any HTTP status arrived.
|
|
89
|
+
*
|
|
90
|
+
* `APIConnectionError` is the OpenAI SDK's message for that case ("Connection
|
|
91
|
+
* error."). A socket reset while the body is already streaming surfaces as the
|
|
92
|
+
* raw cause code instead, and still means this client should not be reused.
|
|
93
|
+
* An error that carries an HTTP status is a provider response, not a drop.
|
|
94
|
+
* Status is checked first: `APIConnectionError` is an `APIError` and can
|
|
95
|
+
* carry a numeric `status`, and that response must not be treated as a drop.
|
|
96
|
+
*/
|
|
97
|
+
export declare function isRecoverableTransportError(err: unknown): boolean;
|
|
80
98
|
/** Default GLM model when neither client nor user has chosen one. */
|
|
81
99
|
export declare const DEFAULT_MODEL = "glm-5.3";
|
|
82
100
|
/**
|
|
@@ -104,13 +122,56 @@ export declare function getDefaultModel(): string;
|
|
|
104
122
|
* so no Zhipu-specific SDK is required. The Z.AI service speaks the OpenAI
|
|
105
123
|
* Chat Completions wire format, plus a few GLM-specific extras (like the
|
|
106
124
|
* `thinking` field and `delta.reasoning_content` for reasoning tokens).
|
|
125
|
+
*
|
|
126
|
+
* Each instance owns an undici connection pool. `new OpenAI({ apiKey, baseURL })`
|
|
127
|
+
* alone uses `globalThis.fetch` and Node's shared pool, so replacing the
|
|
128
|
+
* wrapper would not open a new connection. After a dropped connection the
|
|
129
|
+
* next request uses a new pool immediately. Every attempt, including an SDK
|
|
130
|
+
* retry that was already waiting, resolves that live pool. The previous pool
|
|
131
|
+
* is closed once its own fetches have returned, so a response another session
|
|
132
|
+
* is still reading can finish; it is not destroyed, which would abort that read.
|
|
107
133
|
*/
|
|
108
134
|
export declare class GlmClient {
|
|
109
135
|
private client;
|
|
136
|
+
private dispatcher;
|
|
137
|
+
/** Fetches currently inside each pool. A retired pool closes at zero. */
|
|
138
|
+
private readonly pools;
|
|
139
|
+
private readonly baseURL;
|
|
110
140
|
private maxTokens;
|
|
111
141
|
/** Resolved once at construction; later env changes cannot affect a running client. */
|
|
112
142
|
private readonly streamIdleTimeoutMs;
|
|
113
143
|
constructor();
|
|
144
|
+
/**
|
|
145
|
+
* Build a new HTTP client with its own connection pool. Called at startup
|
|
146
|
+
* and after a transport failure so the next request cannot reuse a socket
|
|
147
|
+
* from the pool that just failed.
|
|
148
|
+
*/
|
|
149
|
+
private buildClient;
|
|
150
|
+
/**
|
|
151
|
+
* Route later requests to a new pool immediately. Fetches already on the
|
|
152
|
+
* previous pool finish there; the pool is closed when the last of them
|
|
153
|
+
* returns, so a body still being read is not aborted. One GlmClient is
|
|
154
|
+
* shared by every session, and destroy() would abort the healthy ones
|
|
155
|
+
* with `TypeError: terminated`. If a replacement cannot be built, the
|
|
156
|
+
* current client stays.
|
|
157
|
+
*/
|
|
158
|
+
private discardTransport;
|
|
159
|
+
/** A pool that never served a request can be torn down immediately. */
|
|
160
|
+
private destroyDispatcher;
|
|
161
|
+
/**
|
|
162
|
+
* Count this attempt against the pool it will actually use. The OpenAI
|
|
163
|
+
* client sleeps between retries with no request on the wire; those later
|
|
164
|
+
* attempts must take the replacement pool instead of one already closed.
|
|
165
|
+
*/
|
|
166
|
+
private fetchUsingLivePool;
|
|
167
|
+
/**
|
|
168
|
+
* Stop new requests on a pool and let the ones already running finish.
|
|
169
|
+
* Not awaited: the session that hit the failure must not wait for every
|
|
170
|
+
* other session still reading this pool. A pool that still has a fetch
|
|
171
|
+
* in progress stays open until that fetch returns.
|
|
172
|
+
*/
|
|
173
|
+
private closePoolIfIdle;
|
|
174
|
+
private fetchWithDispatcher;
|
|
114
175
|
/** The same resolved reservation used in the outgoing `max_tokens` field. */
|
|
115
176
|
getMaxOutputTokens(): number;
|
|
116
177
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glm-client.d.ts","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mCAAmC,EAAE,0BAA0B,EAAsB,MAAM,2BAA2B,CAAC;AACrI,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glm-client.d.ts","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/glm-client.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import OpenAI from "openai";
|
|
2
|
+
import { Agent, fetch as undiciFetch } from "undici";
|
|
2
3
|
import { TOOL_DEFINITIONS } from "../tools/definitions.js";
|
|
3
4
|
import { resolveApiKey } from "./credentials.js";
|
|
4
5
|
import { debug, error, warn } from "./logger.js";
|
|
@@ -93,6 +94,90 @@ export function resolveThoughtLevel(model, level) {
|
|
|
93
94
|
export class ModelStreamIdleTimeoutError extends Error {
|
|
94
95
|
name = "ModelStreamIdleTimeoutError";
|
|
95
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Retries on one provider request. This is the OpenAI client's `maxRetries`:
|
|
99
|
+
* the initial open plus two retries, for connection failures and for HTTP
|
|
100
|
+
* 408, 409, 429, and 5xx. There is no second loop around the client — that
|
|
101
|
+
* would run this policy again on every open.
|
|
102
|
+
*/
|
|
103
|
+
export const PROVIDER_MAX_RETRIES = 2;
|
|
104
|
+
const TRANSPORT_CAUSE_CODES = new Set([
|
|
105
|
+
"ECONNRESET",
|
|
106
|
+
"ECONNREFUSED",
|
|
107
|
+
"ETIMEDOUT",
|
|
108
|
+
"ENOTFOUND",
|
|
109
|
+
"EAI_AGAIN",
|
|
110
|
+
"EPIPE",
|
|
111
|
+
"UND_ERR_SOCKET",
|
|
112
|
+
"UND_ERR_CONNECT_TIMEOUT",
|
|
113
|
+
"UND_ERR_HEADERS_TIMEOUT",
|
|
114
|
+
"UND_ERR_BODY_TIMEOUT",
|
|
115
|
+
]);
|
|
116
|
+
/**
|
|
117
|
+
* A provider call failed before any HTTP status arrived.
|
|
118
|
+
*
|
|
119
|
+
* `APIConnectionError` is the OpenAI SDK's message for that case ("Connection
|
|
120
|
+
* error."). A socket reset while the body is already streaming surfaces as the
|
|
121
|
+
* raw cause code instead, and still means this client should not be reused.
|
|
122
|
+
* An error that carries an HTTP status is a provider response, not a drop.
|
|
123
|
+
* Status is checked first: `APIConnectionError` is an `APIError` and can
|
|
124
|
+
* carry a numeric `status`, and that response must not be treated as a drop.
|
|
125
|
+
*/
|
|
126
|
+
export function isRecoverableTransportError(err) {
|
|
127
|
+
if (!err || typeof err !== "object")
|
|
128
|
+
return false;
|
|
129
|
+
if (numericHttpStatus(err) !== undefined)
|
|
130
|
+
return false;
|
|
131
|
+
if (err instanceof OpenAI.APIConnectionError)
|
|
132
|
+
return true;
|
|
133
|
+
let current = err;
|
|
134
|
+
for (let depth = 0; depth < 6 && current && typeof current === "object"; depth++) {
|
|
135
|
+
if (numericHttpStatus(current) !== undefined)
|
|
136
|
+
return false;
|
|
137
|
+
const code = current.code;
|
|
138
|
+
if (typeof code === "string" && TRANSPORT_CAUSE_CODES.has(code))
|
|
139
|
+
return true;
|
|
140
|
+
current = current.cause;
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
function numericHttpStatus(err) {
|
|
145
|
+
if (!("status" in err))
|
|
146
|
+
return undefined;
|
|
147
|
+
const status = err.status;
|
|
148
|
+
return typeof status === "number" ? status : undefined;
|
|
149
|
+
}
|
|
150
|
+
function readRetryCount(init) {
|
|
151
|
+
const raw = headerValue(init?.headers, "x-stainless-retry-count");
|
|
152
|
+
const parsed = raw === undefined ? Number.NaN : Number(raw);
|
|
153
|
+
return Number.isInteger(parsed) && parsed >= 0 ? parsed : 0;
|
|
154
|
+
}
|
|
155
|
+
function headerValue(headers, name) {
|
|
156
|
+
if (!headers)
|
|
157
|
+
return undefined;
|
|
158
|
+
if (headers instanceof Headers)
|
|
159
|
+
return headers.get(name) ?? undefined;
|
|
160
|
+
if (Array.isArray(headers)) {
|
|
161
|
+
const found = headers.find(([key]) => key.toLowerCase() === name);
|
|
162
|
+
return found?.[1];
|
|
163
|
+
}
|
|
164
|
+
const record = headers;
|
|
165
|
+
return record[name] ?? record[name.toLowerCase()];
|
|
166
|
+
}
|
|
167
|
+
function transportCauseCode(err) {
|
|
168
|
+
let current = err;
|
|
169
|
+
for (let depth = 0; depth < 6 && current && typeof current === "object"; depth++) {
|
|
170
|
+
const code = current.code;
|
|
171
|
+
if (typeof code === "string" && code.length > 0)
|
|
172
|
+
return code;
|
|
173
|
+
current = current.cause;
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
/** Statuses the OpenAI client retries when `maxRetries` is still remaining. */
|
|
178
|
+
function isSdkRetryableStatus(status) {
|
|
179
|
+
return status === 408 || status === 409 || status === 429 || status >= 500;
|
|
180
|
+
}
|
|
96
181
|
/** Default base URL for the Z.AI / Zhipu OpenAI-compatible API (Coding endpoint). */
|
|
97
182
|
const DEFAULT_BASE_URL = "https://api.z.ai/api/coding/paas/v4";
|
|
98
183
|
const DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300_000;
|
|
@@ -202,18 +287,26 @@ export function getDefaultModel() {
|
|
|
202
287
|
* so no Zhipu-specific SDK is required. The Z.AI service speaks the OpenAI
|
|
203
288
|
* Chat Completions wire format, plus a few GLM-specific extras (like the
|
|
204
289
|
* `thinking` field and `delta.reasoning_content` for reasoning tokens).
|
|
290
|
+
*
|
|
291
|
+
* Each instance owns an undici connection pool. `new OpenAI({ apiKey, baseURL })`
|
|
292
|
+
* alone uses `globalThis.fetch` and Node's shared pool, so replacing the
|
|
293
|
+
* wrapper would not open a new connection. After a dropped connection the
|
|
294
|
+
* next request uses a new pool immediately. Every attempt, including an SDK
|
|
295
|
+
* retry that was already waiting, resolves that live pool. The previous pool
|
|
296
|
+
* is closed once its own fetches have returned, so a response another session
|
|
297
|
+
* is still reading can finish; it is not destroyed, which would abort that read.
|
|
205
298
|
*/
|
|
206
299
|
export class GlmClient {
|
|
207
300
|
client;
|
|
301
|
+
dispatcher;
|
|
302
|
+
/** Fetches currently inside each pool. A retired pool closes at zero. */
|
|
303
|
+
pools = new Map();
|
|
304
|
+
baseURL;
|
|
208
305
|
maxTokens;
|
|
209
306
|
/** Resolved once at construction; later env changes cannot affect a running client. */
|
|
210
307
|
streamIdleTimeoutMs;
|
|
211
308
|
constructor() {
|
|
212
|
-
|
|
213
|
-
if (!apiKey) {
|
|
214
|
-
throw new Error("No API key found. Set the Z_AI_API_KEY environment variable, or run `glm-acp-agent --setup` to store one.");
|
|
215
|
-
}
|
|
216
|
-
const baseURL = process.env["ACP_GLM_BASE_URL"] ?? DEFAULT_BASE_URL;
|
|
309
|
+
this.baseURL = process.env["ACP_GLM_BASE_URL"] ?? DEFAULT_BASE_URL;
|
|
217
310
|
// 32768 leaves room for whole-file writes and GLM thinking tokens in the
|
|
218
311
|
// same turn; reasoning counts against this cap, so a small value starves
|
|
219
312
|
// the actual content and trips finish_reason=length ("output limit
|
|
@@ -223,7 +316,116 @@ export class GlmClient {
|
|
|
223
316
|
// StreamChatOptions.idleTimeoutMs). Resolved once at construction so
|
|
224
317
|
// env re-reads cannot change behaviour mid-session.
|
|
225
318
|
this.streamIdleTimeoutMs = parseIntEnv("ACP_GLM_STREAM_IDLE_TIMEOUT_MS", DEFAULT_STREAM_IDLE_TIMEOUT_MS);
|
|
226
|
-
|
|
319
|
+
const transport = this.buildClient();
|
|
320
|
+
this.client = transport.client;
|
|
321
|
+
this.dispatcher = transport.dispatcher;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Build a new HTTP client with its own connection pool. Called at startup
|
|
325
|
+
* and after a transport failure so the next request cannot reuse a socket
|
|
326
|
+
* from the pool that just failed.
|
|
327
|
+
*/
|
|
328
|
+
buildClient() {
|
|
329
|
+
const apiKey = resolveApiKey();
|
|
330
|
+
if (!apiKey) {
|
|
331
|
+
throw new Error("No API key found. Set the Z_AI_API_KEY environment variable, or run `glm-acp-agent --setup` to store one.");
|
|
332
|
+
}
|
|
333
|
+
const dispatcher = new Agent();
|
|
334
|
+
try {
|
|
335
|
+
const client = new OpenAI({
|
|
336
|
+
apiKey,
|
|
337
|
+
baseURL: this.baseURL,
|
|
338
|
+
maxRetries: PROVIDER_MAX_RETRIES,
|
|
339
|
+
// Resolve the dispatcher on each attempt. The SDK retries through this
|
|
340
|
+
// same function, including after another session has replaced the pool.
|
|
341
|
+
fetch: (input, init) => this.fetchUsingLivePool(input, init),
|
|
342
|
+
});
|
|
343
|
+
this.pools.set(dispatcher, { inflight: 0, retired: false, closed: false });
|
|
344
|
+
return { client, dispatcher };
|
|
345
|
+
}
|
|
346
|
+
catch (err) {
|
|
347
|
+
void this.destroyDispatcher(dispatcher);
|
|
348
|
+
throw err;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Route later requests to a new pool immediately. Fetches already on the
|
|
353
|
+
* previous pool finish there; the pool is closed when the last of them
|
|
354
|
+
* returns, so a body still being read is not aborted. One GlmClient is
|
|
355
|
+
* shared by every session, and destroy() would abort the healthy ones
|
|
356
|
+
* with `TypeError: terminated`. If a replacement cannot be built, the
|
|
357
|
+
* current client stays.
|
|
358
|
+
*/
|
|
359
|
+
discardTransport() {
|
|
360
|
+
const previousClient = this.client;
|
|
361
|
+
const previousDispatcher = this.dispatcher;
|
|
362
|
+
try {
|
|
363
|
+
const next = this.buildClient();
|
|
364
|
+
this.client = next.client;
|
|
365
|
+
this.dispatcher = next.dispatcher;
|
|
366
|
+
const previous = this.pools.get(previousDispatcher);
|
|
367
|
+
if (previous)
|
|
368
|
+
previous.retired = true;
|
|
369
|
+
this.closePoolIfIdle(previousDispatcher);
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
this.client = previousClient;
|
|
373
|
+
this.dispatcher = previousDispatcher;
|
|
374
|
+
warn(`could not replace the provider client after a connection failure; keeping the existing client: ${err instanceof Error ? err.message : String(err)}`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/** A pool that never served a request can be torn down immediately. */
|
|
378
|
+
destroyDispatcher(dispatcher) {
|
|
379
|
+
return dispatcher.destroy(new Error("discarded provider connection")).catch((err) => {
|
|
380
|
+
warn(`could not close the discarded provider connection: ${err instanceof Error ? err.message : String(err)}`);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Count this attempt against the pool it will actually use. The OpenAI
|
|
385
|
+
* client sleeps between retries with no request on the wire; those later
|
|
386
|
+
* attempts must take the replacement pool instead of one already closed.
|
|
387
|
+
*/
|
|
388
|
+
fetchUsingLivePool(input, init) {
|
|
389
|
+
const dispatcher = this.dispatcher;
|
|
390
|
+
const state = this.pools.get(dispatcher);
|
|
391
|
+
if (!state)
|
|
392
|
+
return this.fetchWithDispatcher(dispatcher, input, init);
|
|
393
|
+
state.inflight += 1;
|
|
394
|
+
return this.fetchWithDispatcher(dispatcher, input, init).finally(() => {
|
|
395
|
+
state.inflight -= 1;
|
|
396
|
+
this.closePoolIfIdle(dispatcher);
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Stop new requests on a pool and let the ones already running finish.
|
|
401
|
+
* Not awaited: the session that hit the failure must not wait for every
|
|
402
|
+
* other session still reading this pool. A pool that still has a fetch
|
|
403
|
+
* in progress stays open until that fetch returns.
|
|
404
|
+
*/
|
|
405
|
+
closePoolIfIdle(dispatcher) {
|
|
406
|
+
const state = this.pools.get(dispatcher);
|
|
407
|
+
if (!state || !state.retired || state.closed || state.inflight > 0)
|
|
408
|
+
return;
|
|
409
|
+
state.closed = true;
|
|
410
|
+
this.pools.delete(dispatcher);
|
|
411
|
+
void dispatcher.close().catch((err) => {
|
|
412
|
+
warn(`could not close the discarded provider connection: ${err instanceof Error ? err.message : String(err)}`);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
async fetchWithDispatcher(dispatcher, input, init) {
|
|
416
|
+
const attempt = readRetryCount(init) + 1;
|
|
417
|
+
try {
|
|
418
|
+
const response = await undiciFetch(input, { ...init, dispatcher });
|
|
419
|
+
if (!response.ok && isSdkRetryableStatus(response.status)) {
|
|
420
|
+
warn(`provider request attempt ${attempt} failed: status=${response.status}`);
|
|
421
|
+
}
|
|
422
|
+
return response;
|
|
423
|
+
}
|
|
424
|
+
catch (err) {
|
|
425
|
+
const code = transportCauseCode(err);
|
|
426
|
+
warn(`provider request attempt ${attempt} failed: code=${code ?? "unknown"}`);
|
|
427
|
+
throw err;
|
|
428
|
+
}
|
|
227
429
|
}
|
|
228
430
|
/** The same resolved reservation used in the outgoing `max_tokens` field. */
|
|
229
431
|
getMaxOutputTokens() {
|
|
@@ -251,6 +453,10 @@ export class GlmClient {
|
|
|
251
453
|
// The OpenAI SDK forwards unknown extra body fields verbatim, so we use
|
|
252
454
|
// that to pass GLM-specific fields like `thinking` and `reasoning_effort`.
|
|
253
455
|
const extraBody = { ...thinkingParams };
|
|
456
|
+
// One retry policy, on the client: connection errors and HTTP 408/409/429/5xx
|
|
457
|
+
// share `PROVIDER_MAX_RETRIES`. A body that has already started is outside
|
|
458
|
+
// that loop; a mid-stream socket reset discards the pool below and is not
|
|
459
|
+
// opened again.
|
|
254
460
|
let stream;
|
|
255
461
|
try {
|
|
256
462
|
stream = await this.client.chat.completions.create({
|
|
@@ -266,6 +472,10 @@ export class GlmClient {
|
|
|
266
472
|
}, { signal });
|
|
267
473
|
}
|
|
268
474
|
catch (err) {
|
|
475
|
+
// Replace the client after the retry budget is spent, so a later prompt
|
|
476
|
+
// in this same process does not reuse the pool that just failed.
|
|
477
|
+
if (isRecoverableTransportError(err))
|
|
478
|
+
this.discardTransport();
|
|
269
479
|
const status = err?.status;
|
|
270
480
|
const body = err?.error;
|
|
271
481
|
error(`streamChat request failed: status=${status}`, JSON.stringify(body) ?? String(err));
|
|
@@ -280,68 +490,75 @@ export class GlmClient {
|
|
|
280
490
|
const pendingToolCalls = new Map();
|
|
281
491
|
let lastFinishReason;
|
|
282
492
|
let terminalChoiceSeen = false;
|
|
283
|
-
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
if (terminalChoiceSeen && chunk.choices.length > 0) {
|
|
289
|
-
throw new IncompleteModelStreamError("Incomplete model stream: received a model frame after terminal completion.");
|
|
290
|
-
}
|
|
291
|
-
const choice = chunk.choices[0];
|
|
292
|
-
if (choice) {
|
|
293
|
-
const delta = choice.delta;
|
|
294
|
-
// Reasoning / thinking tokens (GLM "thinking" mode).
|
|
295
|
-
const reasoning = delta["reasoning_content"];
|
|
296
|
-
if (typeof reasoning === "string" && reasoning.length > 0) {
|
|
297
|
-
yield { thinking: reasoning };
|
|
493
|
+
try {
|
|
494
|
+
for await (const rawChunk of idleBoundedStream) {
|
|
495
|
+
const chunk = rawChunk;
|
|
496
|
+
if (chunk.choices.length > 1) {
|
|
497
|
+
throw new IncompleteModelStreamError("Incomplete model stream: received multiple model choices for one completion.");
|
|
298
498
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
if (typeof content === "string" && content.length > 0) {
|
|
302
|
-
yield { text: content };
|
|
499
|
+
if (terminalChoiceSeen && chunk.choices.length > 0) {
|
|
500
|
+
throw new IncompleteModelStreamError("Incomplete model stream: received a model frame after terminal completion.");
|
|
303
501
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
502
|
+
const choice = chunk.choices[0];
|
|
503
|
+
if (choice) {
|
|
504
|
+
const delta = choice.delta;
|
|
505
|
+
// Reasoning / thinking tokens (GLM "thinking" mode).
|
|
506
|
+
const reasoning = delta["reasoning_content"];
|
|
507
|
+
if (typeof reasoning === "string" && reasoning.length > 0) {
|
|
508
|
+
yield { thinking: reasoning };
|
|
509
|
+
}
|
|
510
|
+
// Regular assistant text.
|
|
511
|
+
const content = delta["content"];
|
|
512
|
+
if (typeof content === "string" && content.length > 0) {
|
|
513
|
+
yield { text: content };
|
|
514
|
+
}
|
|
515
|
+
// Tool call deltas.
|
|
516
|
+
const toolCallDeltas = delta["tool_calls"];
|
|
517
|
+
if (Array.isArray(toolCallDeltas)) {
|
|
518
|
+
for (const tc of toolCallDeltas) {
|
|
519
|
+
let pending = pendingToolCalls.get(tc.index);
|
|
520
|
+
if (!pending) {
|
|
521
|
+
pending = { id: "", name: "", arguments: "" };
|
|
522
|
+
pendingToolCalls.set(tc.index, pending);
|
|
523
|
+
}
|
|
524
|
+
if (tc.id)
|
|
525
|
+
pending.id = tc.id;
|
|
526
|
+
if (tc.function?.name)
|
|
527
|
+
pending.name = tc.function.name;
|
|
528
|
+
if (tc.function?.arguments)
|
|
529
|
+
pending.arguments += tc.function.arguments;
|
|
312
530
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
if (tc.function?.arguments)
|
|
318
|
-
pending.arguments += tc.function.arguments;
|
|
531
|
+
}
|
|
532
|
+
if (choice.finish_reason) {
|
|
533
|
+
lastFinishReason = choice.finish_reason;
|
|
534
|
+
terminalChoiceSeen = true;
|
|
319
535
|
}
|
|
320
536
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
usage.
|
|
337
|
-
|
|
338
|
-
if (typeof rawUsage.completion_tokens_details?.reasoning_tokens === "number") {
|
|
339
|
-
usage.thoughtTokens = rawUsage.completion_tokens_details.reasoning_tokens;
|
|
537
|
+
// The final chunk on most providers (GLM included when
|
|
538
|
+
// include_usage: true) ships only a `usage` object with no choices.
|
|
539
|
+
const rawUsage = chunk.usage;
|
|
540
|
+
if (rawUsage) {
|
|
541
|
+
const usage = {
|
|
542
|
+
inputTokens: rawUsage.prompt_tokens ?? 0,
|
|
543
|
+
outputTokens: rawUsage.completion_tokens ?? 0,
|
|
544
|
+
totalTokens: rawUsage.total_tokens ?? 0,
|
|
545
|
+
};
|
|
546
|
+
if (typeof rawUsage.prompt_tokens_details?.cached_tokens === "number") {
|
|
547
|
+
usage.cachedReadTokens = rawUsage.prompt_tokens_details.cached_tokens;
|
|
548
|
+
}
|
|
549
|
+
if (typeof rawUsage.completion_tokens_details?.reasoning_tokens === "number") {
|
|
550
|
+
usage.thoughtTokens = rawUsage.completion_tokens_details.reasoning_tokens;
|
|
551
|
+
}
|
|
552
|
+
debug(`streamChat usage: input=${usage.inputTokens} output=${usage.outputTokens} total=${usage.totalTokens}`);
|
|
553
|
+
yield { usage };
|
|
340
554
|
}
|
|
341
|
-
debug(`streamChat usage: input=${usage.inputTokens} output=${usage.outputTokens} total=${usage.totalTokens}`);
|
|
342
|
-
yield { usage };
|
|
343
555
|
}
|
|
344
556
|
}
|
|
557
|
+
catch (err) {
|
|
558
|
+
if (isRecoverableTransportError(err))
|
|
559
|
+
this.discardTransport();
|
|
560
|
+
throw err;
|
|
561
|
+
}
|
|
345
562
|
signal?.throwIfAborted();
|
|
346
563
|
const calls = [...pendingToolCalls.entries()].sort(([a], [b]) => a - b).map(([, call]) => call);
|
|
347
564
|
const stopReason = validateStreamCompletion(lastFinishReason, calls);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glm-client.js","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"glm-client.js","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"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"}
|