glm-acp-agent 1.6.1 → 1.8.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/README.md +48 -13
- package/dist/llm/glm-client.d.ts +19 -13
- package/dist/llm/glm-client.d.ts.map +1 -1
- package/dist/llm/glm-client.js +59 -22
- package/dist/llm/glm-client.js.map +1 -1
- package/dist/protocol/agent.d.ts +16 -0
- package/dist/protocol/agent.d.ts.map +1 -1
- package/dist/protocol/agent.js +215 -39
- package/dist/protocol/agent.js.map +1 -1
- package/dist/protocol/session-store.d.ts +12 -1
- package/dist/protocol/session-store.d.ts.map +1 -1
- package/dist/protocol/session-store.js +10 -4
- package/dist/protocol/session-store.js.map +1 -1
- package/dist/protocol/slash-commands.d.ts +44 -0
- package/dist/protocol/slash-commands.d.ts.map +1 -0
- package/dist/protocol/slash-commands.js +251 -0
- package/dist/protocol/slash-commands.js.map +1 -0
- package/dist/tests/agent.test.js +682 -42
- package/dist/tests/agent.test.js.map +1 -1
- package/dist/tests/glm-client.test.js +80 -8
- package/dist/tests/glm-client.test.js.map +1 -1
- package/dist/tests/integration.test.js +39 -1
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/slash-commands.test.d.ts +2 -0
- package/dist/tests/slash-commands.test.d.ts.map +1 -0
- package/dist/tests/slash-commands.test.js +214 -0
- package/dist/tests/slash-commands.test.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# glm-acp-agent
|
|
2
2
|
|
|
3
|
-
An [Agent Client Protocol (ACP)](https://agentclientprotocol.com) agent written in TypeScript that uses the **Z.AI / Zhipu AI GLM** model family (GLM-5.3, GLM-5 Turbo, GLM-4.7) as its reasoning core.
|
|
3
|
+
An [Agent Client Protocol (ACP)](https://agentclientprotocol.com) agent written in TypeScript that uses the **Z.AI / Zhipu AI GLM** model family (GLM-5.3, GLM-5.3 Flash, GLM-5 Turbo, GLM-4.7) as its reasoning core.
|
|
4
4
|
|
|
5
5
|
The agent connects to any ACP-compatible IDE or client over **stdio**, streams responses back in real time, and can call a rich set of tools to interact with the user's file system, terminal, and the web.
|
|
6
6
|
|
|
@@ -24,13 +24,14 @@ Built-in web tools use Coding Plan-compatible MCP endpoints, not the general `/a
|
|
|
24
24
|
|
|
25
25
|
## Features
|
|
26
26
|
|
|
27
|
-
- **Full ACP compliance** – implements `initialize`, `authenticate`, `session/new`, `session/set_mode`, `session/prompt`, `session/cancel`, `session/close`, `session/list`, `session/load`, `session/fork`, `session/resume`, and `session/set_model`
|
|
27
|
+
- **Full ACP compliance** – implements `initialize`, `authenticate`, `session/new`, `session/set_mode`, `session/prompt`, `session/cancel`, `session/close`, `session/list`, `session/load`, `session/fork`, `session/resume`, and `session/set_model`, and pushes `session_info_update`, `config_option_update`, `current_mode_update`, and `available_commands_update` notifications
|
|
28
28
|
- **Streaming** – assistant text and reasoning tokens are forwarded as incremental ACP chunks
|
|
29
29
|
- **Tool calling** – agentic loop with a configurable cap of GLM function-calling turns (default 20; see `ACP_GLM_MAX_TURNS` / `--max-turns`)
|
|
30
30
|
- **Thinking mode** – GLM's `reasoning_content` tokens are surfaced as `agent_thought_chunk` blocks so the client can show the model's chain of thought
|
|
31
31
|
- **Session permission modes** – supports `default`, `accept_edits`, and `bypass_permissions` via `session/set_mode`. Clients like DevFlow can use this to toggle between prompting for every edit, auto-approving edits while prompting for commands, or bypassing permissions entirely.
|
|
32
32
|
- **Per-session model switching** – `session/set_model` lets clients change the active GLM model mid-conversation; `session/new` returns the curated `availableModels` list
|
|
33
|
-
- **
|
|
33
|
+
- **Slash commands** – commands and skills found under the session's `.claude/` directory are advertised to the client with `available_commands_update`, so `/` autocomplete is populated (see [Slash commands](#slash-commands))
|
|
34
|
+
- **Image input via Coding Plan-native vision or Vision MCP** – `promptCapabilities.image` is advertised; `glm-5.3-flash` sends supported pasted ACP image blocks directly as native `image_url` content parts, while the other advertised coding models (including default `glm-5.3`) route them through Z.AI Vision MCP (`@z_ai/mcp-server`). `glm-5v-turbo` keeps the same native-vision path when re-added via `ACP_GLM_AVAILABLE_MODELS` — it is no longer on the Coding Plan allowlist. Direct chat-image-only models (e.g. `glm-4v-plus`) are intentionally not used.
|
|
34
35
|
- **Session persistence** – conversations are written to `~/.local/state/glm-acp-agent/sessions/` and can be reloaded via `session/load`, branched via `session/fork`, or resumed without replay via `session/resume`
|
|
35
36
|
- **Seven built-in tools** (see below)
|
|
36
37
|
- **Self-sufficient local tools** – file reads/writes, directory listings, and shell commands run in the agent process, so they do not depend on ACP client `fs` or `terminal` capabilities
|
|
@@ -90,6 +91,36 @@ Reads, listings, and MCP tool calls are always silent across all modes.
|
|
|
90
91
|
|
|
91
92
|
---
|
|
92
93
|
|
|
94
|
+
## Slash commands
|
|
95
|
+
|
|
96
|
+
After `session/new`, `session/load`, `session/fork`, and `session/resume`, the agent
|
|
97
|
+
sends an ACP [`available_commands_update`](https://agentclientprotocol.com/protocol/v2/slash-commands)
|
|
98
|
+
notification. Clients such as Zed and Paseo use it to populate their `/` autocomplete.
|
|
99
|
+
Each notification is a full snapshot that replaces the previous list.
|
|
100
|
+
|
|
101
|
+
The snapshot is built from the same on-disk layout Claude Code uses, read from the
|
|
102
|
+
session's working directory and from `~/.claude` for user-level definitions:
|
|
103
|
+
|
|
104
|
+
| Path | Command name |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `<cwd>/.claude/commands/commit.md` | `/commit` |
|
|
107
|
+
| `<cwd>/.claude/commands/review/pr.md` | `/review:pr` |
|
|
108
|
+
| `<cwd>/.claude/skills/audit/SKILL.md` | `/audit` |
|
|
109
|
+
|
|
110
|
+
Project definitions shadow user-level ones with the same name. The `description`
|
|
111
|
+
and `argument-hint` keys of a file's YAML frontmatter become the menu entry's
|
|
112
|
+
description and input hint; without a `description`, the first heading (then the
|
|
113
|
+
first line) of the body is used instead.
|
|
114
|
+
|
|
115
|
+
Advertised names are sent **without** a leading slash — the client prepends it for
|
|
116
|
+
display and invokes the command by sending `/name …` as ordinary prompt text. When
|
|
117
|
+
that text names an advertised command, the agent injects the definition's body into
|
|
118
|
+
the user message, substituting `$ARGUMENTS` where the file asks for it and otherwise
|
|
119
|
+
appending the typed arguments. Unknown `/foo` is left untouched and reaches the model
|
|
120
|
+
as prose, so typing a slash by accident never fails the turn.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
93
124
|
## Prerequisites
|
|
94
125
|
|
|
95
126
|
- **Node.js** 20 or later (native `fetch` and Web Streams required)
|
|
@@ -171,17 +202,18 @@ The agent advertises only the models on the current Z.AI Coding Plan allowlist:
|
|
|
171
202
|
|
|
172
203
|
| Model | Notes |
|
|
173
204
|
|-------|-------|
|
|
174
|
-
| `glm-5.3` | **Default.** Newest 1M-context coding model; thinking mode always on |
|
|
205
|
+
| `glm-5.3` | **Default.** Newest 1M-context coding model; thinking mode always on; text-only (images go through Vision MCP) |
|
|
206
|
+
| `glm-5.3-flash` | Native-vision 1M-context model; cheaper Coding Plan quota |
|
|
175
207
|
| `glm-5-turbo` | Faster Coding Plan reasoning model; 128K context |
|
|
176
208
|
| `glm-4.7` | 200K-context reasoning model |
|
|
177
209
|
|
|
178
|
-
Only models the Coding Plan endpoint serves **under their own name** are advertised. Several ids that used to be listed are now aliases: a request for `glm-5.2` or `glm-5.1` comes back with `"model": "glm-5.3"`, and `glm-4.5-air` comes back as `glm-4.7`. They still work, but advertising them would report a model you are not actually talking to. `glm-5v-turbo` is no longer on the Coding Plan allowlist — selecting it fails with business code `1311` ("subscription plan does not yet include access").
|
|
210
|
+
Only models the Coding Plan endpoint serves **under their own name** are advertised. Several ids that used to be listed are now aliases: a request for `glm-5.2` or `glm-5.1` comes back with `"model": "glm-5.3"`, and `glm-4.5-air` comes back as `glm-4.7`. They still work, but advertising them would report a model you are not actually talking to. Z.AI's Coding Plan overview currently also claims `glm-5-turbo` and `glm-4.7` requests are routed to GLM-5.3-Flash; that has not been confirmed by a live probe here, so both ids stay in the picker. `glm-5v-turbo` is no longer on the Coding Plan allowlist — selecting it fails with business code `1311` ("subscription plan does not yet include access").
|
|
179
211
|
|
|
180
212
|
`ACP_GLM_AVAILABLE_MODELS` lets you advertise any id you like, including the ones above. Custom ids sit outside the supported Coding Plan list — the endpoint rejects any model code Z.AI hasn't whitelisted (business code `1211`). The native-vision path is unchanged, so if your plan does include `glm-5v-turbo`, add it back with `ACP_GLM_AVAILABLE_MODELS` and image blocks still reach it as native `image_url` content parts.
|
|
181
213
|
|
|
182
|
-
Vision-only chat models (`glm-4v-plus` etc.) are **not** advertised.
|
|
214
|
+
Vision-only chat models (`glm-4v-plus` etc.) are **not** advertised. `glm-5.3-flash` is the built-in native-vision Coding Plan model (`image_url` content parts). Default `glm-5.3`, `glm-5-turbo`, and `glm-4.7` still use the [Vision MCP](#vision-mcp) path. `glm-5v-turbo`, when re-added via the override above, keeps native `image_url` handling as an opt-in exception.
|
|
183
215
|
|
|
184
|
-
When the model name matches `glm-4.5`, `glm-4.6`, `glm-4.7`, or the `glm-5` family, the agent enables Z.AI's `thinking: { type: "enabled" }` extension and forwards reasoning tokens to the client as `agent_thought_chunk` blocks. This includes `glm-5v-turbo`. `ACP_GLM_THINKING=false` asks for plain completions
|
|
216
|
+
When the model name matches `glm-4.5`, `glm-4.6`, `glm-4.7`, or the `glm-5` family, the agent enables Z.AI's `thinking: { type: "enabled" }` extension and forwards reasoning tokens to the client as `agent_thought_chunk` blocks. This includes `glm-5.3-flash` and `glm-5v-turbo`. `ACP_GLM_THINKING=false` asks for plain completions on models that still accept `thinking.type: "disabled"` (GLM-4.7, GLM-5 Turbo). On GLM-5.3 and GLM-5.3-Flash the flag is a no-op: those models reject `disabled`, so the agent leaves thinking enabled rather than sending it (see [Thought level](#thought-level-reasoning-effort) below).
|
|
185
217
|
|
|
186
218
|
#### Thought level (reasoning effort)
|
|
187
219
|
|
|
@@ -189,22 +221,23 @@ The agent advertises a `thought_level` [SessionConfigOption](https://agentclient
|
|
|
189
221
|
|
|
190
222
|
| Model | Levels | Mapping to the Z.AI request |
|
|
191
223
|
|-------|--------|-----------------------------|
|
|
192
|
-
| `glm-5.3` (and `glm-5.2` / `glm-5.1`, which route to
|
|
224
|
+
| `glm-5.3` (and `glm-5.2` / `glm-5.1`, which route to 5.3) | `Minimal` / `Low` / `Medium` / `High` / `X-High` / `Max` | `thinking: { type: "enabled" }` + `reasoning_effort` set to the matching value |
|
|
225
|
+
| `glm-5.3-flash` | `Low` / `High` / `Max` | Same mapping; Z.AI only documents these three levels for Flash |
|
|
193
226
|
| other thinking-capable models | `Off` / `On` | `Off` → `thinking: { type: "disabled" }`; `On` → `thinking: { type: "enabled" }` |
|
|
194
227
|
|
|
195
|
-
**GLM-5.3
|
|
228
|
+
**GLM-5.3 and GLM-5.3-Flash have no `Off` level, because thinking cannot be turned off on them.** Sending `thinking: { type: "disabled" }` now errors (it is no longer a silent no-op), so `ACP_GLM_THINKING=false` leaves thinking enabled rather than sending `disabled`. Use `glm-4.7` if you need non-reasoning completions — with the caveat that if Coding Plan really routes turbo/4.7 to Flash, a session that picks `glm-4.7` + thought level `Off` may 4xx.
|
|
196
229
|
|
|
197
|
-
`reasoning_effort` only takes effect on the GLM-5.3 family; `glm-5-turbo` and `glm-4.7` accept the field without validating it and answer identically either way, so the agent omits it for them. New sessions default to `Max`, which is also Z.AI's default when the field is omitted, so out-of-the-box behaviour is unchanged. Switching models re-clamps the level (an effort-ladder selection reverts to `On` when you move to GLM-4.7
|
|
230
|
+
`reasoning_effort` only takes effect on the GLM-5.3 family; `glm-5-turbo` and `glm-4.7` accept the field without validating it and answer identically either way, so the agent omits it for them. New sessions default to `Max`, which is also Z.AI's default when the field is omitted, so out-of-the-box behaviour is unchanged. Switching models re-clamps the level (an effort-ladder selection reverts to `On` when you move to GLM-4.7; an `Off` selection becomes `Max` on GLM-5.3 / Flash; switching from GLM-5.3 onto Flash maps `minimal`→`low`, `medium`→`high`, `xhigh`→`max`) and pushes a `config_option_update`. Clients that don't support config options simply ignore the advertised option and get the default behaviour.
|
|
198
231
|
|
|
199
|
-
The endpoint validates `reasoning_effort` against `none | minimal | low | medium | high | xhigh | max
|
|
232
|
+
The endpoint validates `reasoning_effort` against `none | minimal | low | medium | high | xhigh | max` on GLM-5.3. GLM-5.3-Flash's documented values are only `low | high | max`, so the agent advertises that shorter ladder for Flash. `none` is never offered on either model.
|
|
200
233
|
|
|
201
234
|
`ACP_GLM_PROMPT_IMAGES=false` still hides the image-attachment capability at session startup. With that flag set, clients should not offer image attachments at all.
|
|
202
235
|
|
|
203
236
|
### Vision MCP
|
|
204
237
|
|
|
205
|
-
For `glm-5v-turbo
|
|
238
|
+
For `glm-5.3-flash` (built-in) and `glm-5v-turbo` (opt-in via `ACP_GLM_AVAILABLE_MODELS`), pasted ACP image blocks with `image/jpeg`, `image/jpg`, or `image/png` are sent directly to chat completions as `image_url` content parts. HTTPS image URLs are forwarded as URLs; inline base64 data is sent as a `data:<mime>;base64,...` URI. Unsupported image MIME types are rejected client-side with an inline `<image_unsupported_format>` annotation so the prompt can continue without a provider 4xx.
|
|
206
239
|
|
|
207
|
-
For non-native models, pasted ACP image blocks are not sent to the chat-completions endpoint. Instead, the agent boots `@z_ai/mcp-server` over stdio (via `npx -y @z_ai/mcp-server@latest`) and calls its `image_analysis` tool. The text result is spliced into the user message as `<image_analysis index="N">…</image_analysis>` so the regular Coding Plan model can reason about it.
|
|
240
|
+
For non-native models (including default `glm-5.3`), pasted ACP image blocks are not sent to the chat-completions endpoint. Instead, the agent boots `@z_ai/mcp-server` over stdio (via `npx -y @z_ai/mcp-server@latest`) and calls its `image_analysis` tool. The text result is spliced into the user message as `<image_analysis index="N">…</image_analysis>` so the regular Coding Plan model can reason about it.
|
|
208
241
|
|
|
209
242
|
Prerequisites:
|
|
210
243
|
|
|
@@ -384,6 +417,7 @@ src/
|
|
|
384
417
|
├── protocol/
|
|
385
418
|
│ ├── connection.ts # Sets up the ACP stdio connection
|
|
386
419
|
│ ├── agent.ts # GlmAcpAgent – ACP protocol implementation
|
|
420
|
+
│ ├── slash-commands.ts # Discovers .claude commands/skills; expands `/name`
|
|
387
421
|
│ └── session-store.ts # On-disk persistence for load/fork/resume
|
|
388
422
|
├── tools/
|
|
389
423
|
│ ├── definitions.ts # Tool JSON schemas (function-calling format)
|
|
@@ -393,6 +427,7 @@ src/
|
|
|
393
427
|
├── credentials.test.ts # Credential resolution and --setup persistence
|
|
394
428
|
├── executor.test.ts # Tests for ToolExecutor
|
|
395
429
|
├── glm-client.test.ts # Tests for streaming / tool-call assembly
|
|
430
|
+
├── slash-commands.test.ts # Command discovery and `/name` expansion
|
|
396
431
|
└── integration.test.ts # End-to-end tests over the real ACP ndjson transport
|
|
397
432
|
```
|
|
398
433
|
|
package/dist/llm/glm-client.d.ts
CHANGED
|
@@ -6,10 +6,11 @@ import { type ToolDefinition } from "../tools/definitions.js";
|
|
|
6
6
|
* SessionConfigOption. These map onto Z.AI's `thinking` / `reasoning_effort`
|
|
7
7
|
* request parameters (see {@link buildThinkingParams}).
|
|
8
8
|
*
|
|
9
|
-
* GLM-5.3 (and GLM-5.2, which the Coding Plan endpoint serves with
|
|
10
|
-
* supports the full effort ladder: `minimal | low | medium | high |
|
|
11
|
-
* max`.
|
|
12
|
-
* thinking
|
|
9
|
+
* GLM-5.3 (and GLM-5.2 / GLM-5.1, which the Coding Plan endpoint serves with
|
|
10
|
+
* 5.3) supports the full effort ladder: `minimal | low | medium | high |
|
|
11
|
+
* xhigh | max`. GLM-5.3-Flash only honours `low | high | max`. Other
|
|
12
|
+
* thinking-capable models (5-turbo, 4.7, …) only distinguish thinking on vs.
|
|
13
|
+
* off, so they use `none` and `on`.
|
|
13
14
|
*/
|
|
14
15
|
export type ThoughtLevel = "none" | "on" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
15
16
|
/** Type guard: whether an arbitrary string is a known ThoughtLevel. */
|
|
@@ -20,13 +21,17 @@ export declare function isThoughtLevel(value: string): value is ThoughtLevel;
|
|
|
20
21
|
* Only the GLM-5.3 family honours `reasoning_effort`; on `glm-5-turbo` and
|
|
21
22
|
* `glm-4.7` the endpoint accepts the field without validating it and the
|
|
22
23
|
* response depth does not change, so those models only get on/off.
|
|
24
|
+
* GLM-5.3-Flash is a 5.3-family model but only the three documented levels.
|
|
23
25
|
*/
|
|
24
26
|
export declare function getThoughtLevels(model: string): ThoughtLevel[];
|
|
25
27
|
/**
|
|
26
28
|
* Resolve a stored ThoughtLevel to one that's valid for the given model.
|
|
27
29
|
* Used when switching models or restoring a persisted session: if the old
|
|
28
30
|
* level isn't in the new model's option list, fall back to the model's
|
|
29
|
-
* default (max on 5.3, on for everything else — the last entry in
|
|
31
|
+
* default (max on 5.3 / Flash, on for everything else — the last entry in
|
|
32
|
+
* the list). Switching from GLM-5.3 onto Flash maps the six-rung ladder
|
|
33
|
+
* onto Flash's three documented values rather than collapsing everything
|
|
34
|
+
* to max.
|
|
30
35
|
*/
|
|
31
36
|
export declare function resolveThoughtLevel(model: string, level: ThoughtLevel): ThoughtLevel;
|
|
32
37
|
/**
|
|
@@ -119,15 +124,16 @@ export declare class GlmClient {
|
|
|
119
124
|
* - `minimal` … `max` → thinking enabled + reasoning_effort=<level>
|
|
120
125
|
* (5.3 family only)
|
|
121
126
|
*
|
|
122
|
-
* Caveat: GLM-5.3
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
+
* Caveat: GLM-5.3 and GLM-5.3-Flash reject `thinking: { type: "disabled" }`
|
|
128
|
+
* (it is no longer a silent no-op). `none` is therefore not offered as a
|
|
129
|
+
* level for those models (see {@link getThoughtLevels}), and
|
|
130
|
+
* `ACP_GLM_THINKING=false` leaves thinking enabled rather than sending
|
|
131
|
+
* `disabled`.
|
|
127
132
|
*
|
|
128
|
-
* The `ACP_GLM_THINKING` env override still wins
|
|
129
|
-
* `true` forces it on (ignoring a `none` level).
|
|
130
|
-
* model defaults are used, preserving the
|
|
133
|
+
* The `ACP_GLM_THINKING` env override still wins for models that accept it:
|
|
134
|
+
* `false` forces thinking off, `true` forces it on (ignoring a `none` level).
|
|
135
|
+
* When `effort` is unset the model defaults are used, preserving the
|
|
136
|
+
* pre-thought-level behaviour.
|
|
131
137
|
*/
|
|
132
138
|
export declare function buildThinkingParams(model: string, effort?: ThoughtLevel): Record<string, unknown>;
|
|
133
139
|
//# sourceMappingURL=glm-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glm-client.d.ts","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,2BAA2B,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIhF
|
|
1
|
+
{"version":3,"file":"glm-client.d.ts","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,2BAA2B,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIhF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,IAAI,GACJ,SAAS,GACT,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,KAAK,CAAC;AAuDV,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAG9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CASpF;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,oDAAoD;IACpD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,YAAY,CAAC;CAChC;AAKD,qEAAqE;AACrE,eAAO,MAAM,aAAa,YAAY,CAAC;AAwCvC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AA0BzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAYhD;AAED,uEAAuE;AACvE,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;;IAgB1B;;;;;;OAMG;IACI,UAAU,CACf,QAAQ,EAAE,UAAU,EAAE,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,cAAc,CAAC;CA0IlC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0CzB"}
|
package/dist/llm/glm-client.js
CHANGED
|
@@ -6,10 +6,9 @@ import { debug, error } from "./logger.js";
|
|
|
6
6
|
* Levels shown for the models that honour `reasoning_effort` — the endpoint's
|
|
7
7
|
* full validated ladder minus `none`.
|
|
8
8
|
*
|
|
9
|
-
* Deliberately has no `none`:
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* option would advertise something the model does not do.
|
|
9
|
+
* Deliberately has no `none`: Z.AI docs say GLM-5.3 / GLM-5.3-Flash only
|
|
10
|
+
* accept `thinking.type: "enabled"` — sending `"disabled"` errors — so an
|
|
11
|
+
* "Off" option would advertise something the model cannot do.
|
|
13
12
|
*/
|
|
14
13
|
const LEVELS_REASONING_EFFORT = [
|
|
15
14
|
"minimal",
|
|
@@ -19,6 +18,12 @@ const LEVELS_REASONING_EFFORT = [
|
|
|
19
18
|
"xhigh",
|
|
20
19
|
"max",
|
|
21
20
|
];
|
|
21
|
+
/**
|
|
22
|
+
* GLM-5.3-Flash's advertised ladder. Z.AI's Chat Completions schema for
|
|
23
|
+
* vision models only accepts `low | high | max`; other values do not provide
|
|
24
|
+
* the requested effort.
|
|
25
|
+
*/
|
|
26
|
+
const LEVELS_FLASH = ["low", "high", "max"];
|
|
22
27
|
/** Levels shown for every other thinking-capable model. */
|
|
23
28
|
const LEVELS_DEFAULT = ["none", "on"];
|
|
24
29
|
/**
|
|
@@ -35,6 +40,9 @@ function isReasoningEffortModel(model) {
|
|
|
35
40
|
const id = model.toLowerCase();
|
|
36
41
|
return id.startsWith("glm-5.3") || id.startsWith("glm-5.2") || id.startsWith("glm-5.1");
|
|
37
42
|
}
|
|
43
|
+
function isFlashModel(model) {
|
|
44
|
+
return model.toLowerCase() === "glm-5.3-flash";
|
|
45
|
+
}
|
|
38
46
|
/** The complete set of thought levels the agent understands. */
|
|
39
47
|
const ALL_THOUGHT_LEVELS = [
|
|
40
48
|
"none",
|
|
@@ -51,19 +59,34 @@ export function isThoughtLevel(value) {
|
|
|
51
59
|
* Only the GLM-5.3 family honours `reasoning_effort`; on `glm-5-turbo` and
|
|
52
60
|
* `glm-4.7` the endpoint accepts the field without validating it and the
|
|
53
61
|
* response depth does not change, so those models only get on/off.
|
|
62
|
+
* GLM-5.3-Flash is a 5.3-family model but only the three documented levels.
|
|
54
63
|
*/
|
|
55
64
|
export function getThoughtLevels(model) {
|
|
65
|
+
if (isFlashModel(model))
|
|
66
|
+
return LEVELS_FLASH;
|
|
56
67
|
return isReasoningEffortModel(model) ? LEVELS_REASONING_EFFORT : LEVELS_DEFAULT;
|
|
57
68
|
}
|
|
58
69
|
/**
|
|
59
70
|
* Resolve a stored ThoughtLevel to one that's valid for the given model.
|
|
60
71
|
* Used when switching models or restoring a persisted session: if the old
|
|
61
72
|
* level isn't in the new model's option list, fall back to the model's
|
|
62
|
-
* default (max on 5.3, on for everything else — the last entry in
|
|
73
|
+
* default (max on 5.3 / Flash, on for everything else — the last entry in
|
|
74
|
+
* the list). Switching from GLM-5.3 onto Flash maps the six-rung ladder
|
|
75
|
+
* onto Flash's three documented values rather than collapsing everything
|
|
76
|
+
* to max.
|
|
63
77
|
*/
|
|
64
78
|
export function resolveThoughtLevel(model, level) {
|
|
65
79
|
const valid = getThoughtLevels(model);
|
|
66
|
-
|
|
80
|
+
if (valid.includes(level))
|
|
81
|
+
return level;
|
|
82
|
+
if (isFlashModel(model)) {
|
|
83
|
+
if (level === "minimal")
|
|
84
|
+
return "low";
|
|
85
|
+
if (level === "medium")
|
|
86
|
+
return "high";
|
|
87
|
+
return "max";
|
|
88
|
+
}
|
|
89
|
+
return valid[valid.length - 1];
|
|
67
90
|
}
|
|
68
91
|
/** Default base URL for the Z.AI / Zhipu OpenAI-compatible API (Coding endpoint). */
|
|
69
92
|
const DEFAULT_BASE_URL = "https://api.z.ai/api/coding/paas/v4";
|
|
@@ -90,6 +113,11 @@ const BUILTIN_AVAILABLE_MODELS = [
|
|
|
90
113
|
name: "GLM-5.3",
|
|
91
114
|
description: "Newest 1M-context coding model with thinking mode",
|
|
92
115
|
},
|
|
116
|
+
{
|
|
117
|
+
modelId: "glm-5.3-flash",
|
|
118
|
+
name: "GLM-5.3 Flash",
|
|
119
|
+
description: "Native-vision 1M-context model; cheaper Coding Plan quota",
|
|
120
|
+
},
|
|
93
121
|
{
|
|
94
122
|
modelId: "glm-5-turbo",
|
|
95
123
|
name: "GLM-5 Turbo",
|
|
@@ -115,6 +143,7 @@ export const ERR_CONTEXT_OVERFLOW = 1261;
|
|
|
115
143
|
*/
|
|
116
144
|
const MODEL_METADATA = {
|
|
117
145
|
"glm-5.3": { contextWindow: 1_000_000 },
|
|
146
|
+
"glm-5.3-flash": { contextWindow: 1_000_000 },
|
|
118
147
|
"glm-5-turbo": { contextWindow: 128_000 },
|
|
119
148
|
"glm-4.7": { contextWindow: 200_000 },
|
|
120
149
|
// Routed to glm-5.3 by the Coding Plan endpoint.
|
|
@@ -126,7 +155,7 @@ const MODEL_METADATA = {
|
|
|
126
155
|
"glm-5v-turbo": { contextWindow: 200_000 },
|
|
127
156
|
};
|
|
128
157
|
/** Models that accept image content parts directly through chat completions. */
|
|
129
|
-
const VISION_NATIVE_MODELS = new Set(["glm-5v-turbo"]);
|
|
158
|
+
const VISION_NATIVE_MODELS = new Set(["glm-5.3-flash", "glm-5v-turbo"]);
|
|
130
159
|
export function isVisionNativeModel(modelId) {
|
|
131
160
|
return VISION_NATIVE_MODELS.has(modelId.toLowerCase());
|
|
132
161
|
}
|
|
@@ -332,29 +361,33 @@ function thinkingOverride() {
|
|
|
332
361
|
* - `minimal` … `max` → thinking enabled + reasoning_effort=<level>
|
|
333
362
|
* (5.3 family only)
|
|
334
363
|
*
|
|
335
|
-
* Caveat: GLM-5.3
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
*
|
|
364
|
+
* Caveat: GLM-5.3 and GLM-5.3-Flash reject `thinking: { type: "disabled" }`
|
|
365
|
+
* (it is no longer a silent no-op). `none` is therefore not offered as a
|
|
366
|
+
* level for those models (see {@link getThoughtLevels}), and
|
|
367
|
+
* `ACP_GLM_THINKING=false` leaves thinking enabled rather than sending
|
|
368
|
+
* `disabled`.
|
|
340
369
|
*
|
|
341
|
-
* The `ACP_GLM_THINKING` env override still wins
|
|
342
|
-
* `true` forces it on (ignoring a `none` level).
|
|
343
|
-
* model defaults are used, preserving the
|
|
370
|
+
* The `ACP_GLM_THINKING` env override still wins for models that accept it:
|
|
371
|
+
* `false` forces thinking off, `true` forces it on (ignoring a `none` level).
|
|
372
|
+
* When `effort` is unset the model defaults are used, preserving the
|
|
373
|
+
* pre-thought-level behaviour.
|
|
344
374
|
*/
|
|
345
375
|
export function buildThinkingParams(model, effort) {
|
|
346
376
|
const params = {};
|
|
347
377
|
const override = thinkingOverride();
|
|
348
378
|
const modelCanThink = modelSupportsThinking(model);
|
|
349
|
-
//
|
|
350
|
-
|
|
379
|
+
// GLM-5.3 / Flash (and aliases routed to them) error on thinking.type=disabled.
|
|
380
|
+
const thinkingLockedOn = isReasoningEffortModel(model);
|
|
381
|
+
// Explicit env override to disable wins, except on models that reject it.
|
|
382
|
+
if (override === false && !thinkingLockedOn) {
|
|
351
383
|
if (modelCanThink)
|
|
352
384
|
params["thinking"] = { type: "disabled" };
|
|
353
385
|
return params;
|
|
354
386
|
}
|
|
355
387
|
const canThink = override === true || modelCanThink;
|
|
356
|
-
// A `none` level disables thinking, unless the env override forces it on
|
|
357
|
-
|
|
388
|
+
// A `none` level disables thinking, unless the env override forces it on
|
|
389
|
+
// or the model rejects disabled.
|
|
390
|
+
if (effort === "none" && override !== true && !thinkingLockedOn) {
|
|
358
391
|
if (canThink)
|
|
359
392
|
params["thinking"] = { type: "disabled" };
|
|
360
393
|
return params;
|
|
@@ -364,9 +397,13 @@ export function buildThinkingParams(model, effort) {
|
|
|
364
397
|
params["thinking"] = { type: "enabled" };
|
|
365
398
|
// reasoning_effort is only meaningful for the GLM-5.3 family — glm-5-turbo
|
|
366
399
|
// and glm-4.7 accept it without validating it and answer identically either
|
|
367
|
-
// way.
|
|
368
|
-
//
|
|
369
|
-
|
|
400
|
+
// way. Flash only honours low/high/max, so we send the advertised ladder
|
|
401
|
+
// rather than the full 5.3 set. The remaining levels ("on", and "none"
|
|
402
|
+
// when thinking is force-enabled via the env override) carry no valid
|
|
403
|
+
// effort, so we omit the field.
|
|
404
|
+
if (effort !== undefined &&
|
|
405
|
+
isReasoningEffortModel(model) &&
|
|
406
|
+
getThoughtLevels(model).includes(effort)) {
|
|
370
407
|
params["reasoning_effort"] = effort;
|
|
371
408
|
}
|
|
372
409
|
return params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glm-client.js","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"glm-client.js","sourceRoot":"","sources":["../../src/llm/glm-client.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol/agent.d.ts
CHANGED
|
@@ -58,6 +58,22 @@ export declare class GlmAcpAgent implements Agent {
|
|
|
58
58
|
initialize(params: InitializeRequest): Promise<InitializeResponse>;
|
|
59
59
|
authenticate(params: AuthenticateRequest): Promise<AuthenticateResponse>;
|
|
60
60
|
newSession(params: NewSessionRequest): Promise<NewSessionResponse>;
|
|
61
|
+
/**
|
|
62
|
+
* Queue an `available_commands_update` snapshot for a session.
|
|
63
|
+
*
|
|
64
|
+
* The notification is the only channel ACP gives us for slash-command
|
|
65
|
+
* autocomplete — it is not part of any method's response — so every session
|
|
66
|
+
* entry point (create / load / fork / resume) has to send one.
|
|
67
|
+
*
|
|
68
|
+
* It is deliberately *deferred* rather than awaited inline: a client learns a
|
|
69
|
+
* session's id from the `session/new` / `session/fork` response, so a
|
|
70
|
+
* notification written ahead of that response arrives for a session the client
|
|
71
|
+
* has never heard of, and clients drop those. Sending on the next macrotask
|
|
72
|
+
* puts it behind the response the caller is about to return (and, on load,
|
|
73
|
+
* behind the replayed transcript), which is also when a client is ready to
|
|
74
|
+
* paint the menu. Each send replaces the previous list wholesale.
|
|
75
|
+
*/
|
|
76
|
+
private scheduleAvailableCommands;
|
|
61
77
|
unstable_setSessionModel(params: SetSessionModelRequest): Promise<SetSessionModelResponse>;
|
|
62
78
|
/**
|
|
63
79
|
* Switch a session to a new model id — shared by `session/set_model` and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/protocol/agent.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,KAAK,EACL,mBAAmB,EAEnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,8BAA8B,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/protocol/agent.ts"],"names":[],"mappings":"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"}
|