glm-acp-agent 1.11.0 → 1.12.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 (141) hide show
  1. package/README.md +14 -4
  2. package/dist/index.js +48 -12
  3. package/dist/index.js.map +1 -1
  4. package/dist/llm/glm-client.d.ts +7 -2
  5. package/dist/llm/glm-client.d.ts.map +1 -1
  6. package/dist/llm/glm-client.js +20 -8
  7. package/dist/llm/glm-client.js.map +1 -1
  8. package/dist/llm/stream-state.d.ts +10 -0
  9. package/dist/llm/stream-state.d.ts.map +1 -0
  10. package/dist/llm/stream-state.js +29 -0
  11. package/dist/llm/stream-state.js.map +1 -0
  12. package/dist/protocol/agent.d.ts +48 -0
  13. package/dist/protocol/agent.d.ts.map +1 -1
  14. package/dist/protocol/agent.js +844 -315
  15. package/dist/protocol/agent.js.map +1 -1
  16. package/dist/protocol/connection.d.ts +12 -0
  17. package/dist/protocol/connection.d.ts.map +1 -1
  18. package/dist/protocol/connection.js +19 -2
  19. package/dist/protocol/connection.js.map +1 -1
  20. package/dist/protocol/context-budget.d.ts +24 -0
  21. package/dist/protocol/context-budget.d.ts.map +1 -0
  22. package/dist/protocol/context-budget.js +165 -0
  23. package/dist/protocol/context-budget.js.map +1 -0
  24. package/dist/protocol/model-transition.d.ts +10 -0
  25. package/dist/protocol/model-transition.d.ts.map +1 -0
  26. package/dist/protocol/model-transition.js +12 -0
  27. package/dist/protocol/model-transition.js.map +1 -0
  28. package/dist/protocol/session-lifecycle.d.ts +20 -0
  29. package/dist/protocol/session-lifecycle.d.ts.map +1 -0
  30. package/dist/protocol/session-lifecycle.js +41 -0
  31. package/dist/protocol/session-lifecycle.js.map +1 -0
  32. package/dist/protocol/session-store.d.ts.map +1 -1
  33. package/dist/protocol/session-store.js +2 -0
  34. package/dist/protocol/session-store.js.map +1 -1
  35. package/dist/tests/agent.test.js +321 -24
  36. package/dist/tests/agent.test.js.map +1 -1
  37. package/dist/tests/argument-validation.test.d.ts +2 -0
  38. package/dist/tests/argument-validation.test.d.ts.map +1 -0
  39. package/dist/tests/argument-validation.test.js +59 -0
  40. package/dist/tests/argument-validation.test.js.map +1 -0
  41. package/dist/tests/cli-shutdown.test.d.ts +2 -0
  42. package/dist/tests/cli-shutdown.test.d.ts.map +1 -0
  43. package/dist/tests/cli-shutdown.test.js +267 -0
  44. package/dist/tests/cli-shutdown.test.js.map +1 -0
  45. package/dist/tests/command-limits.test.js +43 -16
  46. package/dist/tests/command-limits.test.js.map +1 -1
  47. package/dist/tests/context-budget.test.d.ts +2 -0
  48. package/dist/tests/context-budget.test.d.ts.map +1 -0
  49. package/dist/tests/context-budget.test.js +56 -0
  50. package/dist/tests/context-budget.test.js.map +1 -0
  51. package/dist/tests/executor.test.js +234 -1
  52. package/dist/tests/executor.test.js.map +1 -1
  53. package/dist/tests/file-reader.test.d.ts +2 -0
  54. package/dist/tests/file-reader.test.d.ts.map +1 -0
  55. package/dist/tests/file-reader.test.js +96 -0
  56. package/dist/tests/file-reader.test.js.map +1 -0
  57. package/dist/tests/glm-client.test.js +8 -6
  58. package/dist/tests/glm-client.test.js.map +1 -1
  59. package/dist/tests/mcp-pagination.test.d.ts +2 -0
  60. package/dist/tests/mcp-pagination.test.d.ts.map +1 -0
  61. package/dist/tests/mcp-pagination.test.js +64 -0
  62. package/dist/tests/mcp-pagination.test.js.map +1 -0
  63. package/dist/tests/model-transition.test.d.ts +2 -0
  64. package/dist/tests/model-transition.test.d.ts.map +1 -0
  65. package/dist/tests/model-transition.test.js +127 -0
  66. package/dist/tests/model-transition.test.js.map +1 -0
  67. package/dist/tests/process-supervisor.test.d.ts +2 -0
  68. package/dist/tests/process-supervisor.test.d.ts.map +1 -0
  69. package/dist/tests/process-supervisor.test.js +67 -0
  70. package/dist/tests/process-supervisor.test.js.map +1 -0
  71. package/dist/tests/prompt-lifecycle.test.js +1340 -1
  72. package/dist/tests/prompt-lifecycle.test.js.map +1 -1
  73. package/dist/tests/reasoning-history.test.d.ts +2 -0
  74. package/dist/tests/reasoning-history.test.d.ts.map +1 -0
  75. package/dist/tests/reasoning-history.test.js +136 -0
  76. package/dist/tests/reasoning-history.test.js.map +1 -0
  77. package/dist/tests/resource-limits.test.d.ts +2 -0
  78. package/dist/tests/resource-limits.test.d.ts.map +1 -0
  79. package/dist/tests/resource-limits.test.js +16 -0
  80. package/dist/tests/resource-limits.test.js.map +1 -0
  81. package/dist/tests/session-lifecycle.test.d.ts +2 -0
  82. package/dist/tests/session-lifecycle.test.d.ts.map +1 -0
  83. package/dist/tests/session-lifecycle.test.js +19 -0
  84. package/dist/tests/session-lifecycle.test.js.map +1 -0
  85. package/dist/tests/session-mcp-client.test.js +458 -1
  86. package/dist/tests/session-mcp-client.test.js.map +1 -1
  87. package/dist/tests/stream-contract.test.d.ts +2 -0
  88. package/dist/tests/stream-contract.test.d.ts.map +1 -0
  89. package/dist/tests/stream-contract.test.js +226 -0
  90. package/dist/tests/stream-contract.test.js.map +1 -0
  91. package/dist/tests/tool-output.test.d.ts +2 -0
  92. package/dist/tests/tool-output.test.d.ts.map +1 -0
  93. package/dist/tests/tool-output.test.js +40 -0
  94. package/dist/tests/tool-output.test.js.map +1 -0
  95. package/dist/tests/vision-mcp-client.test.js +105 -0
  96. package/dist/tests/vision-mcp-client.test.js.map +1 -1
  97. package/dist/tests/zai-mcp-client.test.js +33 -0
  98. package/dist/tests/zai-mcp-client.test.js.map +1 -1
  99. package/dist/tools/argument-validation.d.ts +14 -0
  100. package/dist/tools/argument-validation.d.ts.map +1 -0
  101. package/dist/tools/argument-validation.js +167 -0
  102. package/dist/tools/argument-validation.js.map +1 -0
  103. package/dist/tools/definitions.js +3 -3
  104. package/dist/tools/definitions.js.map +1 -1
  105. package/dist/tools/executor.d.ts +6 -1
  106. package/dist/tools/executor.d.ts.map +1 -1
  107. package/dist/tools/executor.js +211 -92
  108. package/dist/tools/executor.js.map +1 -1
  109. package/dist/tools/file-reader.d.ts +18 -0
  110. package/dist/tools/file-reader.d.ts.map +1 -0
  111. package/dist/tools/file-reader.js +105 -0
  112. package/dist/tools/file-reader.js.map +1 -0
  113. package/dist/tools/mcp-pagination.d.ts +25 -0
  114. package/dist/tools/mcp-pagination.d.ts.map +1 -0
  115. package/dist/tools/mcp-pagination.js +67 -0
  116. package/dist/tools/mcp-pagination.js.map +1 -0
  117. package/dist/tools/process-supervisor.d.ts +24 -0
  118. package/dist/tools/process-supervisor.d.ts.map +1 -0
  119. package/dist/tools/process-supervisor.js +196 -0
  120. package/dist/tools/process-supervisor.js.map +1 -0
  121. package/dist/tools/resource-limits.d.ts +16 -0
  122. package/dist/tools/resource-limits.d.ts.map +1 -0
  123. package/dist/tools/resource-limits.js +25 -0
  124. package/dist/tools/resource-limits.js.map +1 -0
  125. package/dist/tools/session-mcp-client.d.ts +35 -7
  126. package/dist/tools/session-mcp-client.d.ts.map +1 -1
  127. package/dist/tools/session-mcp-client.js +267 -68
  128. package/dist/tools/session-mcp-client.js.map +1 -1
  129. package/dist/tools/tool-output.d.ts +5 -0
  130. package/dist/tools/tool-output.d.ts.map +1 -0
  131. package/dist/tools/tool-output.js +62 -0
  132. package/dist/tools/tool-output.js.map +1 -0
  133. package/dist/tools/vision-mcp-client.d.ts +6 -2
  134. package/dist/tools/vision-mcp-client.d.ts.map +1 -1
  135. package/dist/tools/vision-mcp-client.js +94 -11
  136. package/dist/tools/vision-mcp-client.js.map +1 -1
  137. package/dist/tools/zai-mcp-client.d.ts +7 -1
  138. package/dist/tools/zai-mcp-client.d.ts.map +1 -1
  139. package/dist/tools/zai-mcp-client.js +48 -11
  140. package/dist/tools/zai-mcp-client.js.map +1 -1
  141. package/package.json +1 -1
package/README.md CHANGED
@@ -4,6 +4,10 @@ An [Agent Client Protocol (ACP)](https://agentclientprotocol.com) agent written
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
 
7
+ Streaming responses must include a supported terminal finish reason. An early connection close is reported as an interrupted response, with received text retained for session replay. Tool calls run only after a complete `tool_calls` response; calls in output-limit (`length`) or filtered (`content_filter`) responses are discarded and the corresponding stop reason is preserved.
8
+
9
+ Completed provider reasoning is retained unchanged in conversation history and saved sessions for subsequent model calls, even when thought display is disabled. `ACP_GLM_STREAM_THINKING=false` controls client display only. Reasoning from cancelled, incomplete, or output-limited responses is not replayed as a completed reasoning chain.
10
+
7
11
  ---
8
12
 
9
13
  ## Coding Plan Only
@@ -65,7 +69,7 @@ ACP Client (IDE plugin, CLI, …)
65
69
 
66
70
  The agent process needs network access to `api.z.ai` for chat completions and Web MCP, plus `npx` available on `PATH` so it can launch `@z_ai/mcp-server` for vision. Filesystem and shell operations use paths resolved against the ACP session working directory. When the client advertises `fs.writeTextFile`, writes and edits are routed through the ACP client so they render as native diffs. When it advertises both `fs.readTextFile` and `fs.writeTextFile`, `read_file` and edit-file reads also use the editor buffer; otherwise those reads fall back to the agent process filesystem. Writes and arbitrary shell commands still go through ACP `session/request_permission`, and the permission payload is always the **full** tool arguments — the user approves exactly what will run.
67
71
 
68
- Client-facing tool cards stay compact: long strings in `rawInput`/`rawOutput` (and in the `read_file` content preview) are elided to a short head plus a character count, while the model keeps receiving complete payloads through the tool-result channel. Progress narration lives in the `todowrite` task list rather than prose, and reasoning tokens are only forwarded as `agent_thought_chunk` when `ACP_GLM_STREAM_THINKING` is not `false` (the default preserves streaming).
72
+ Client-facing tool cards stay compact: long strings in `rawInput`/`rawOutput` (and in the `read_file` content preview) are elided to a short head plus a character count. Model-facing tool results are also capped at a UTF-8 byte boundary; write payloads and permission requests remain complete. Progress narration lives in the `todowrite` task list rather than prose, and reasoning tokens are only forwarded as `agent_thought_chunk` when `ACP_GLM_STREAM_THINKING` is not `false` (the default preserves streaming).
69
73
 
70
74
  ---
71
75
 
@@ -73,11 +77,11 @@ Client-facing tool cards stay compact: long strings in `rawInput`/`rawOutput` (a
73
77
 
74
78
  | Tool | Runs on | Permission behavior | Description |
75
79
  |------|---------|---------------------|-------------|
76
- | `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); the result reports the shown range, advertises the next offset only while lines remain, and reports EOF past the last line |
80
+ | `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. |
77
81
  | `write_file` | Agent process (ACP client `fs` when advertised) | Mode-dependent | Write or overwrite a text file. Silent in `accept_edits` and `bypass_permissions`. |
78
- | `edit_file` | Agent process (ACP client `fs` when advertised) | Mode-dependent | Replace one exact, unique snippet in an existing file — a surgical edit instead of a full rewrite. Re-reads and re-validates after the permission prompt so concurrent edits are not overwritten. Silent in `accept_edits` and `bypass_permissions`. |
82
+ | `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 so concurrent edits are not overwritten. Silent in `accept_edits` and `bypass_permissions`. |
79
83
  | `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. |
80
- | `list_files` | Agent process | Always silent | List a directory using Node filesystem APIs |
84
+ | `list_files` | Agent process | Always silent | List a directory through a bounded iterator; a truncated result is a disclosed subset. |
81
85
  | `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`. |
82
86
  | `web_search` | Agent (Z.AI Coding Plan MCP) | Always silent | Search the web — returns titles, URLs, and summaries |
83
87
  | `web_reader` | Agent (Z.AI Coding Plan MCP) | Always silent | Fetch and parse a web page (markdown or plain text) |
@@ -183,6 +187,10 @@ The agent reads its configuration from environment variables, plus an optional c
183
187
  | `ACP_GLM_MAX_TURNS` | No | `100` | Max model/tool turns per prompt (also settable via `--max-turns`) |
184
188
  | `ACP_GLM_COMMAND_TIMEOUT_MS` | No | `120000` | Deadline for each `run_command`, in milliseconds. Invalid values fall back to the default with a stderr warning. |
185
189
  | `ACP_GLM_COMMAND_OUTPUT_LIMIT_BYTES` | No | `65536` | Maximum combined bytes captured from each `run_command` stdout and stderr. Further output is drained and reported as truncated. Invalid values fall back to the default with a stderr warning. |
190
+ | `ACP_GLM_TOOL_RESULT_LIMIT_BYTES` | No | `262144` | Inclusive UTF-8 byte limit for every model-facing tool result. It preserves a prefix and suffix with an omitted-bytes marker; values below 128 fall back with a stderr warning. |
191
+ | `ACP_GLM_READ_FILE_LIMIT_BYTES` | No | `8388608` | Maximum local bytes consumed while reading a page or whole file for `edit_file`. A bounded scan may not know the total line count. |
192
+ | `ACP_GLM_LIST_FILES_MAX_ENTRIES` | No | `2000` | Maximum entries collected by `list_files`; larger directories return a disclosed subset. |
193
+ | `ACP_GLM_LIST_FILES_LIMIT_BYTES` | No | `262144` | Maximum bytes assembled for a `list_files` result before its truncation marker. |
186
194
  | `ACP_GLM_THINKING` | No | auto-detected | Force thinking mode `true` / `false` |
187
195
  | `ACP_GLM_STREAM_THINKING` | No | `true` | Forward reasoning tokens to the client as `agent_thought_chunk`; set `false` to keep reasoning off the wire (the model still thinks — only the client-side stream is silenced) |
188
196
  | `ACP_GLM_SESSION_DIR` | No | `$XDG_STATE_HOME/glm-acp-agent/sessions` | Where session JSON files are persisted |
@@ -242,6 +250,8 @@ The endpoint validates `reasoning_effort` against `none | minimal | low | medium
242
250
 
243
251
  `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.
244
252
 
253
+ Switching to a text-only model is rejected while retained conversation history contains native images. Keep an image-capable model or start a text-only session with a textual description; images are never silently discarded or analyzed as part of a model switch. During an active prompt on a native-image model, wait for the turn to finish before switching to text-only capability. Other compatible selections affect subsequent model calls, while an in-flight call keeps its captured model and reasoning level. Restored histories receive the same compatibility check before a provider request.
254
+
245
255
  ### Vision MCP
246
256
 
247
257
  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.
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * ACP_GLM_COMMAND_TIMEOUT_MS - (optional) run_command deadline in milliseconds (default: 120000)
15
15
  * ACP_GLM_COMMAND_OUTPUT_LIMIT_BYTES - (optional) combined run_command stdout/stderr capture limit (default: 65536)
16
16
  */
17
- import { startConnection } from "./protocol/connection.js";
17
+ import { startAgentRuntime } from "./protocol/connection.js";
18
18
  import { parseMaxTurnsFlag } from "./cli-args.js";
19
19
  import { runSetup } from "./setup.js";
20
20
  const args = process.argv.slice(2);
@@ -56,16 +56,52 @@ else if (args.includes("--help") || args.includes("-h")) {
56
56
  process.exit(0);
57
57
  }
58
58
  else {
59
- const connection = startConnection({ maxTurns: parseMaxTurnsFlag(args) });
60
- // Keep the process alive until the connection closes
61
- connection.closed
62
- .then(() => {
63
- process.exit(0);
64
- })
65
- .catch((err) => {
66
- const message = err instanceof Error ? err.message : String(err);
67
- process.stderr.write(`Fatal error: ${message}\n`);
68
- process.exit(1);
69
- });
59
+ const runtime = startAgentRuntime({ maxTurns: parseMaxTurnsFlag(args) });
60
+ let finishing = null;
61
+ let signalExitCode = null;
62
+ const finish = (reason, exitCode) => {
63
+ if (reason === "sigterm" || reason === "sigint")
64
+ signalExitCode = exitCode;
65
+ if (finishing)
66
+ return finishing;
67
+ finishing = (async () => {
68
+ const clean = await settlesWithin(runtime.shutdown(reason), 5_000);
69
+ if (clean) {
70
+ runtime.closeTransport();
71
+ process.exitCode = signalExitCode ?? exitCode;
72
+ return;
73
+ }
74
+ process.stderr.write("glm-acp-agent: shutdown deadline exceeded; forcing active command cleanup\n");
75
+ await settlesWithin(runtime.forceShutdown(), 1_000);
76
+ process.exitCode = signalExitCode ?? 1;
77
+ // An unresolved client/MCP handle would otherwise keep the CLI alive
78
+ // indefinitely after the documented deadline. Command cleanup had its
79
+ // forced attempt above; report the incomplete shutdown as nonzero.
80
+ process.exit(process.exitCode);
81
+ })().catch((err) => {
82
+ const message = err instanceof Error ? err.message : String(err);
83
+ process.stderr.write(`Fatal shutdown error: ${message}\n`);
84
+ process.exitCode = signalExitCode ?? 1;
85
+ });
86
+ return finishing;
87
+ };
88
+ void runtime.connection.closed
89
+ .then(() => finish("disconnect", 0))
90
+ .catch(() => finish("fatal", 1));
91
+ process.on("SIGINT", () => { void finish("sigint", 130); });
92
+ process.on("SIGTERM", () => { void finish("sigterm", 143); });
93
+ }
94
+ async function settlesWithin(promise, timeoutMs) {
95
+ let timer;
96
+ try {
97
+ return await Promise.race([
98
+ promise.then(() => true, () => false),
99
+ new Promise((resolve) => { timer = setTimeout(() => resolve(false), timeoutMs); }),
100
+ ]);
101
+ }
102
+ finally {
103
+ if (timer)
104
+ clearTimeout(timer);
105
+ }
70
106
  }
71
107
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,EAAE;SACP,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,uDAAuD;QACvD,EAAE;QACF,QAAQ;QACR,2EAA2E;QAC3E,yEAAyE;QACzE,kEAAkE;QAClE,6CAA6C;QAC7C,EAAE;QACF,wBAAwB;QACxB,6EAA6E;QAC7E,kEAAkE;QAClE,gFAAgF;QAChF,wFAAwF;QACxF,yGAAyG;QACzG,4EAA4E;QAC5E,iEAAiE;QACjE,6EAA6E;QAC7E,qEAAqE;QACrE,mGAAmG;QACnG,6GAA6G;QAC7G,4EAA4E;QAC5E,4FAA4F;QAC5F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,qDAAqD;IACrD,UAAU,CAAC,MAAM;SACd,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ChatCompletionMessageParam } from "openai/resources/index.js";
1
+ import type { ChatCompletionAssistantMessageParam, ChatCompletionMessageParam } from "openai/resources/index.js";
2
2
  import type { ModelInfo, Usage } from "@agentclientprotocol/sdk";
3
3
  import { type ToolDefinition } from "../tools/definitions.js";
4
4
  /**
@@ -37,7 +37,10 @@ export declare function resolveThoughtLevel(model: string, level: ThoughtLevel):
37
37
  /**
38
38
  * A single message in the GLM conversation history.
39
39
  */
40
- export type GlmMessage = ChatCompletionMessageParam;
40
+ export type GlmAssistantMessage = ChatCompletionAssistantMessageParam & {
41
+ reasoning_content?: string;
42
+ };
43
+ export type GlmMessage = Exclude<ChatCompletionMessageParam, ChatCompletionAssistantMessageParam> | GlmAssistantMessage;
41
44
  /**
42
45
  * A streamed chunk from the GLM API.
43
46
  */
@@ -100,6 +103,8 @@ export declare class GlmClient {
100
103
  private client;
101
104
  private maxTokens;
102
105
  constructor();
106
+ /** The same resolved reservation used in the outgoing `max_tokens` field. */
107
+ getMaxOutputTokens(): number;
103
108
  /**
104
109
  * Stream a chat completion from the GLM model, yielding chunks as they arrive.
105
110
  *
@@ -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;;;;;;;;;;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;;IAoB1B;;;;;;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"}
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;AACjE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAKhF;;;;;;;;;;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,mBAAmB,GAAG,mCAAmC,GAAG;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvG,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,0BAA0B,EAAE,mCAAmC,CAAC,GAAG,mBAAmB,CAAC;AAExH;;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;;IAoB1B,6EAA6E;IAC7E,kBAAkB,IAAI,MAAM;IAI5B;;;;;;OAMG;IACI,UAAU,CACf,QAAQ,EAAE,UAAU,EAAE,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,cAAc,CAAC;CAoJlC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0CzB"}
@@ -2,6 +2,7 @@ import OpenAI from "openai";
2
2
  import { TOOL_DEFINITIONS } from "../tools/definitions.js";
3
3
  import { resolveApiKey } from "./credentials.js";
4
4
  import { debug, error } from "./logger.js";
5
+ import { IncompleteModelStreamError, validateStreamCompletion } from "./stream-state.js";
5
6
  /**
6
7
  * Levels shown for the models that honour `reasoning_effort` — the endpoint's
7
8
  * full validated ladder minus `none`.
@@ -213,6 +214,10 @@ export class GlmClient {
213
214
  this.maxTokens = parseIntEnv("ACP_GLM_MAX_TOKENS", 32_768);
214
215
  this.client = new OpenAI({ apiKey, baseURL });
215
216
  }
217
+ /** The same resolved reservation used in the outgoing `max_tokens` field. */
218
+ getMaxOutputTokens() {
219
+ return this.maxTokens;
220
+ }
216
221
  /**
217
222
  * Stream a chat completion from the GLM model, yielding chunks as they arrive.
218
223
  *
@@ -258,7 +263,14 @@ export class GlmClient {
258
263
  // Tool call deltas arrive interleaved across chunks; assemble by index.
259
264
  const pendingToolCalls = new Map();
260
265
  let lastFinishReason;
266
+ let terminalChoiceSeen = false;
261
267
  for await (const chunk of stream) {
268
+ if (chunk.choices.length > 1) {
269
+ throw new IncompleteModelStreamError("Incomplete model stream: received multiple model choices for one completion.");
270
+ }
271
+ if (terminalChoiceSeen && chunk.choices.length > 0) {
272
+ throw new IncompleteModelStreamError("Incomplete model stream: received a model frame after terminal completion.");
273
+ }
262
274
  const choice = chunk.choices[0];
263
275
  if (choice) {
264
276
  const delta = choice.delta;
@@ -291,6 +303,7 @@ export class GlmClient {
291
303
  }
292
304
  if (choice.finish_reason) {
293
305
  lastFinishReason = choice.finish_reason;
306
+ terminalChoiceSeen = true;
294
307
  }
295
308
  }
296
309
  // The final chunk on most providers (GLM included when
@@ -312,15 +325,14 @@ export class GlmClient {
312
325
  yield { usage };
313
326
  }
314
327
  }
315
- // Flush any assembled tool calls and emit a final done chunk. Only emit
316
- // calls that have both an id and a name – partial entries can be left
317
- // behind by upstream errors and would just confuse the agent loop.
318
- for (const [, tc] of pendingToolCalls) {
319
- if (tc.id && tc.name)
320
- yield { toolCall: tc };
328
+ signal?.throwIfAborted();
329
+ const calls = [...pendingToolCalls.entries()].sort(([a], [b]) => a - b).map(([, call]) => call);
330
+ const stopReason = validateStreamCompletion(lastFinishReason, calls);
331
+ if (stopReason === "tool_calls") {
332
+ for (const call of calls)
333
+ yield { toolCall: call };
321
334
  }
322
- pendingToolCalls.clear();
323
- yield { done: true, stopReason: lastFinishReason };
335
+ yield { done: true, stopReason };
324
336
  }
325
337
  }
326
338
  /** Parse an integer environment variable, falling back to a default. */
@@ -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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"}
@@ -0,0 +1,10 @@
1
+ /** A transport EOF is not proof that a provider completed its response. */
2
+ export declare class IncompleteModelStreamError extends Error {
3
+ name: string;
4
+ }
5
+ export type TerminalReason = "stop" | "tool_calls" | "length" | "content_filter";
6
+ export declare function validateStreamCompletion(reason: string | undefined, calls: ReadonlyArray<{
7
+ id: string;
8
+ name: string;
9
+ }>): TerminalReason;
10
+ //# sourceMappingURL=stream-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-state.d.ts","sourceRoot":"","sources":["../../src/llm/stream-state.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qBAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,SAAgC;CAC9C;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEjF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACjD,cAAc,CAqBhB"}
@@ -0,0 +1,29 @@
1
+ /** A transport EOF is not proof that a provider completed its response. */
2
+ export class IncompleteModelStreamError extends Error {
3
+ name = "IncompleteModelStreamError";
4
+ }
5
+ export function validateStreamCompletion(reason, calls) {
6
+ if (reason !== "stop" && reason !== "tool_calls" && reason !== "length" && reason !== "content_filter") {
7
+ throw new IncompleteModelStreamError("Incomplete model stream: no supported terminal reason.");
8
+ }
9
+ // Truncated/filtered calls are never executable, even when their arguments
10
+ // happen to look complete. Their fragments are intentionally discarded.
11
+ if (reason === "length" || reason === "content_filter")
12
+ return reason;
13
+ if (reason === "stop" && calls.length > 0) {
14
+ throw new IncompleteModelStreamError("Inconsistent model stream: stop with tool-call fragments.");
15
+ }
16
+ if (reason === "tool_calls") {
17
+ const ids = new Set();
18
+ if (calls.length === 0)
19
+ throw new IncompleteModelStreamError("Incomplete model tool-call batch.");
20
+ for (const call of calls) {
21
+ if (!call.id.trim() || !call.name.trim() || ids.has(call.id)) {
22
+ throw new IncompleteModelStreamError("Incomplete or duplicate model tool-call batch.");
23
+ }
24
+ ids.add(call.id);
25
+ }
26
+ }
27
+ return reason;
28
+ }
29
+ //# sourceMappingURL=stream-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-state.js","sourceRoot":"","sources":["../../src/llm/stream-state.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,GAAG,4BAA4B,CAAC;CAC9C;AAID,MAAM,UAAU,wBAAwB,CACtC,MAA0B,EAC1B,KAAkD;IAElD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QACvG,MAAM,IAAI,0BAA0B,CAAC,wDAAwD,CAAC,CAAC;IACjG,CAAC;IACD,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO,MAAM,CAAC;IACtE,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,0BAA0B,CAAC,2DAA2D,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,0BAA0B,CAAC,mCAAmC,CAAC,CAAC;QAClG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,0BAA0B,CAAC,gDAAgD,CAAC,CAAC;YACzF,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Agent, AgentSideConnection, InitializeRequest, InitializeResponse, NewSessionRequest, NewSessionResponse, PromptRequest, PromptResponse, CancelNotification, AuthenticateRequest, AuthenticateResponse, SetSessionModeRequest, SetSessionModeResponse, CloseSessionRequest, ListSessionsRequest, ListSessionsResponse, LoadSessionRequest, LoadSessionResponse, ForkSessionRequest, ForkSessionResponse, ResumeSessionRequest, ResumeSessionResponse, SetSessionModelRequest, SetSessionModelResponse, SetSessionConfigOptionRequest, SetSessionConfigOptionResponse } from "@agentclientprotocol/sdk";
2
2
  import { type GlmMessage, type GlmStreamChunk, type StreamChatOptions } from "../llm/glm-client.js";
3
+ import { connectSessionMcpServers, type SessionMcpTools } from "../tools/session-mcp-client.js";
3
4
  import { SessionStore } from "./session-store.js";
4
5
  import { type VisionMcpClient } from "../tools/vision-mcp-client.js";
5
6
  /**
@@ -14,6 +15,7 @@ export interface GlmAcpAgentOptions {
14
15
  /** Override the GLM client (used in tests). */
15
16
  glm?: {
16
17
  streamChat: (messages: GlmMessage[], signal?: AbortSignal, options?: StreamChatOptions) => AsyncIterable<GlmStreamChunk>;
18
+ getMaxOutputTokens?: () => number;
17
19
  };
18
20
  /**
19
21
  * Maximum number of model/tool turns per single prompt. Default 100,
@@ -34,6 +36,14 @@ export interface GlmAcpAgentOptions {
34
36
  * on first use.
35
37
  */
36
38
  visionClient?: VisionMcpClient | null;
39
+ /** Test-only override for the bounded live-restore prompt drain. */
40
+ sessionDrainTimeoutMs?: number;
41
+ /** Override session MCP setup for deterministic lifecycle tests. */
42
+ connectSessionMcpServers?: typeof connectSessionMcpServers;
43
+ /** Override session MCP setup for shutdown/lifecycle tests. */
44
+ mcpConnector?: (servers: Parameters<typeof connectSessionMcpServers>[0], signal?: AbortSignal) => Promise<SessionMcpTools>;
45
+ /** Test-only override for the bounded shutdown prompt-drain deadline. */
46
+ shutdownDrainTimeoutMs?: number;
37
47
  }
38
48
  /**
39
49
  * GlmAcpAgent implements the ACP `Agent` interface.
@@ -55,6 +65,15 @@ export declare class GlmAcpAgent implements Agent {
55
65
  private sessionStore;
56
66
  private _visionClient;
57
67
  private visionClientExplicit;
68
+ private sessionDrainTimeoutMs;
69
+ private connectMcpServers;
70
+ private transitions;
71
+ private readonly mcpConnector;
72
+ private readonly pendingSetups;
73
+ private readonly processSupervisor;
74
+ private shuttingDown;
75
+ private shutdownPromise;
76
+ private readonly shutdownDrainTimeoutMs;
58
77
  constructor(connection: AgentSideConnection, options?: GlmAcpAgentOptions);
59
78
  private get glm();
60
79
  private get visionClient();
@@ -123,10 +142,32 @@ export declare class GlmAcpAgent implements Agent {
123
142
  prompt(params: PromptRequest): Promise<PromptResponse>;
124
143
  cancel(params: CancelNotification): Promise<void>;
125
144
  closeSession(params: CloseSessionRequest): Promise<void>;
145
+ /**
146
+ * Stop admitting work and release all resources owned by this ACP runtime.
147
+ * Concurrent close/signal paths share one promise so disposals and process
148
+ * termination happen once.
149
+ */
150
+ shutdown(_reason: "disconnect" | "sigterm" | "sigint" | "fatal"): Promise<void>;
151
+ /** Used by the CLI deadline path before reporting a nonzero exit. */
152
+ forceShutdown(): Promise<void>;
126
153
  listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse>;
127
154
  loadSession(params: LoadSessionRequest): Promise<LoadSessionResponse>;
128
155
  unstable_forkSession(params: ForkSessionRequest): Promise<ForkSessionResponse>;
156
+ private createFork;
129
157
  resumeSession(params: ResumeSessionRequest): Promise<ResumeSessionResponse>;
158
+ private restoreSession;
159
+ private drainPrompt;
160
+ private releaseAfterPromptDrain;
161
+ private persistOriginalIfOwned;
162
+ private registerTransition;
163
+ private assertRestoreOwner;
164
+ private ownsSession;
165
+ private isDrainingOriginal;
166
+ private ownedPromptConnection;
167
+ private assertConfigurable;
168
+ /** Track MCP setup until it installs into a session or shutdown disposes it. */
169
+ private connectMcpForSession;
170
+ private disposeSessionTools;
130
171
  private snapshot;
131
172
  private persistSession;
132
173
  private requirePersisted;
@@ -139,6 +180,13 @@ export declare class GlmAcpAgent implements Agent {
139
180
  private runPromptLoop;
140
181
  private mapStopReason;
141
182
  /** Tool schemas we expose for agent-owned local tools plus session MCP tools. */
183
+ private contextBudget;
184
+ /**
185
+ * Compact before every provider request. The estimate is a heuristic, so a
186
+ * provider overflow gets one forceful retry with a byte-level progress test.
187
+ */
188
+ private compactSessionForRequest;
189
+ private requestPayloadBytes;
142
190
  private availableToolDefinitions;
143
191
  }
144
192
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/protocol/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/protocol/agent.ts"],"names":[],"mappings":"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"}