clawconnect-agent 0.1.40 → 0.1.41

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 (62) hide show
  1. package/README.md +11 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/commands/install.js +7 -0
  4. package/dist/commands/install.js.map +1 -1
  5. package/dist/commands/pair.d.ts +1 -2
  6. package/dist/commands/pair.js +2 -16
  7. package/dist/commands/pair.js.map +1 -1
  8. package/dist/commands/run.js +26 -13
  9. package/dist/commands/run.js.map +1 -1
  10. package/dist/core/command-types.d.ts +2 -1
  11. package/dist/core/relay/assistant-stream-coalescer.d.ts +67 -0
  12. package/dist/core/relay/assistant-stream-coalescer.js +269 -0
  13. package/dist/core/relay/assistant-stream-coalescer.js.map +1 -0
  14. package/dist/core/relay/file-upload-utils.d.ts +1 -0
  15. package/dist/core/relay/file-upload-utils.js +15 -0
  16. package/dist/core/relay/file-upload-utils.js.map +1 -1
  17. package/dist/core/relay/office-payload.d.ts +1 -0
  18. package/dist/core/relay/office-payload.js +42 -3
  19. package/dist/core/relay/office-payload.js.map +1 -1
  20. package/dist/core/relay/reconnect.d.ts +1 -0
  21. package/dist/core/relay/reconnect.js +22 -4
  22. package/dist/core/relay/reconnect.js.map +1 -1
  23. package/dist/core/relay/relay-server-connection.d.ts +25 -1
  24. package/dist/core/relay/relay-server-connection.js +246 -3
  25. package/dist/core/relay/relay-server-connection.js.map +1 -1
  26. package/dist/core/relay/reliable-delivery-protocol.d.ts +17 -0
  27. package/dist/core/relay/reliable-delivery-protocol.js +25 -0
  28. package/dist/core/relay/reliable-delivery-protocol.js.map +1 -0
  29. package/dist/core/relay/reliable-relay-outbox-registry.d.ts +19 -0
  30. package/dist/core/relay/reliable-relay-outbox-registry.js +81 -0
  31. package/dist/core/relay/reliable-relay-outbox-registry.js.map +1 -0
  32. package/dist/core/relay/reliable-relay-outbox-store.d.ts +67 -0
  33. package/dist/core/relay/reliable-relay-outbox-store.js +527 -0
  34. package/dist/core/relay/reliable-relay-outbox-store.js.map +1 -0
  35. package/dist/core/relay/reliable-relay-outbox.d.ts +74 -0
  36. package/dist/core/relay/reliable-relay-outbox.js +442 -0
  37. package/dist/core/relay/reliable-relay-outbox.js.map +1 -0
  38. package/dist/hermes/hermes-relay-manager.d.ts +5 -0
  39. package/dist/hermes/hermes-relay-manager.js +105 -8
  40. package/dist/hermes/hermes-relay-manager.js.map +1 -1
  41. package/dist/hermes/runtime/hermes-runtime-api-client.js +54 -29
  42. package/dist/hermes/runtime/hermes-runtime-api-client.js.map +1 -1
  43. package/dist/openclaw/gateway-client.d.ts +1 -0
  44. package/dist/openclaw/gateway-client.js +27 -3
  45. package/dist/openclaw/gateway-client.js.map +1 -1
  46. package/dist/openclaw/relay/chat-history.js +17 -7
  47. package/dist/openclaw/relay/chat-history.js.map +1 -1
  48. package/dist/openclaw/relay/chat-run-identity.d.ts +19 -2
  49. package/dist/openclaw/relay/chat-run-identity.js +89 -4
  50. package/dist/openclaw/relay/chat-run-identity.js.map +1 -1
  51. package/dist/openclaw/relay/relay-manager-protocol.d.ts +24 -3
  52. package/dist/openclaw/relay-manager.js +264 -36
  53. package/dist/openclaw/relay-manager.js.map +1 -1
  54. package/dist/platform/service-manager-common.d.ts +4 -0
  55. package/dist/platform/service-manager-common.js +14 -1
  56. package/dist/platform/service-manager-common.js.map +1 -1
  57. package/dist/platform/service-manager-linux.d.ts +17 -5
  58. package/dist/platform/service-manager-linux.js +86 -73
  59. package/dist/platform/service-manager-linux.js.map +1 -1
  60. package/dist/platform/service-manager.js +21 -17
  61. package/dist/platform/service-manager.js.map +1 -1
  62. package/package.json +4 -3
package/README.md CHANGED
@@ -117,6 +117,12 @@ Profile config files:
117
117
  ~/.clawconnect/profiles/hermes/config.json
118
118
  ```
119
119
 
120
+ Reliable terminal events and command responses are written to a restricted,
121
+ profile/Relay/gateway-scoped WAL under `reliable-outbox-v1/` before they are
122
+ sent. Unacknowledged entries survive Agent crashes or service restarts and are
123
+ replayed byte-for-byte after reconnect; `clawconnect reset --profile <name>`
124
+ removes the matching profile's delivery state, while `uninstall` preserves it.
125
+
120
126
  macOS launchd service labels:
121
127
 
122
128
  ```text
@@ -189,10 +195,15 @@ clawconnect install
189
195
 
190
196
  Windows profiles use isolated background startup entries and UTF-8 logs, for example `ClawConnectAgent-openclaw` and `ClawConnectAgent-hermes`.
191
197
 
198
+ Linux profiles are isolated as well: systemd units use names such as
199
+ `clawconnect-agent-openclaw.service` and `clawconnect-agent-hermes.service`,
200
+ and nohup PID/scripts/logs live inside each profile directory.
201
+
192
202
  On Linux hosts without `systemd --user`, `clawconnect install` will generate a fallback launcher at:
193
203
 
194
204
  ```bash
195
205
  ~/.clawconnect/clawconnect-start.sh
206
+ ~/.clawconnect/profiles/<profile>/clawconnect-start.sh
196
207
  ```
197
208
 
198
209
  You can start it manually with:
package/README.zh-CN.md CHANGED
@@ -124,6 +124,11 @@ clawconnect stop-hermes
124
124
  ~/.clawconnect/profiles/hermes/config.json
125
125
  ```
126
126
 
127
+ 终态事件和命令响应会先写入权限受限、按 profile/Relay/gateway 隔离的
128
+ `reliable-outbox-v1/` WAL,再发送到 Relay。未收到 ACK 的条目在 Agent
129
+ 崩溃或服务重启后仍会按原始内容重放;`clawconnect reset --profile <name>`
130
+ 会清除对应 profile 的可靠投递状态,而 `uninstall` 会保留它。
131
+
127
132
  macOS 后台服务名:
128
133
 
129
134
  ```text
@@ -222,10 +227,15 @@ clawconnect install
222
227
 
223
228
  Windows 的不同 profile 使用独立后台启动项(例如 `ClawConnectAgent-openclaw`、`ClawConnectAgent-hermes`)和独立 UTF-8 日志,不会互相覆盖。
224
229
 
230
+ Linux 的不同 profile 也完全隔离:systemd 服务名分别类似
231
+ `clawconnect-agent-openclaw.service`、`clawconnect-agent-hermes.service`,
232
+ nohup 的 PID、启动脚本和日志位于各自 profile 目录。
233
+
225
234
  在不支持 `systemd --user` 的 Linux 环境下,会生成一个备用启动脚本:
226
235
 
227
236
  ```bash
228
237
  ~/.clawconnect/clawconnect-start.sh
238
+ ~/.clawconnect/profiles/<profile>/clawconnect-start.sh
229
239
  ```
230
240
 
231
241
  你也可以手动执行:
@@ -3,6 +3,7 @@ import { t } from "../i18n/index.js";
3
3
  import { getServicePlatform, getServiceStatus, getServicePaths, installService, restartService, setRestrictiveFilePermissions, stopService, uninstallService, } from "../platform/service-manager.js";
4
4
  import { clearProfileLogs, getActiveProfile, profileConfigPath, profileDisplayName } from "../config/profile.js";
5
5
  import { pairCommandForProfile } from "./profile-hints.js";
6
+ import { clearReliableRelayOutboxStorage } from "../core/relay/reliable-relay-outbox-store.js";
6
7
  export function isInstalled() {
7
8
  return getServiceStatus().installed;
8
9
  }
@@ -108,6 +109,12 @@ export function resetCommand() {
108
109
  console.log(t("install.noConfig"));
109
110
  }
110
111
  clearProfileLogs();
112
+ try {
113
+ clearReliableRelayOutboxStorage(getActiveProfile());
114
+ }
115
+ catch (err) {
116
+ console.error("[clawconnect] Failed to clear reliable delivery state:", err);
117
+ }
111
118
  console.log(t("install.resetCompleteWithCommand", pairCommandForProfile(getActiveProfile())));
112
119
  }
113
120
  function servicePathsProfile() {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,4 @@ interface PairOptions {
9
9
  export declare function pairCommand(opts: PairOptions): Promise<void>;
10
10
  export declare function sameRelayServer(left: string, right: string): boolean;
11
11
  export declare function shouldReuseExistingPairing(config: ClawConnectConfig | null, gatewayType: "openclaw" | "hermes", requestedRelayServerUrl: string): boolean;
12
- export declare function normalizeRelayServerIdentity(relayServerUrl: string): string;
13
- export {};
12
+ export { normalizeRelayServerIdentity } from "../core/relay/file-upload-utils.js";
@@ -7,7 +7,7 @@ import { t } from "../i18n/index.js";
7
7
  import { execSync } from "child_process";
8
8
  import { hostname } from "os";
9
9
  import { getServicePlatform } from "../platform/service-manager.js";
10
- import { toRelayHttpBase } from "../core/relay/file-upload-utils.js";
10
+ import { normalizeRelayServerIdentity, toRelayHttpBase } from "../core/relay/file-upload-utils.js";
11
11
  import { getDefaultRelayServerUrl } from "../config/env.js";
12
12
  import { gatewayCapabilitiesForType, normalizeGatewayType } from "../gateway-profiles.js";
13
13
  import { clearProfileLogs } from "../config/profile.js";
@@ -121,21 +121,7 @@ export function shouldReuseExistingPairing(config, gatewayType, requestedRelaySe
121
121
  return (config.gatewayType ?? "openclaw") === gatewayType
122
122
  && sameRelayServer(config.relayServerUrl, requestedRelayServerUrl);
123
123
  }
124
- export function normalizeRelayServerIdentity(relayServerUrl) {
125
- const parsed = new URL(toRelayHttpBase(relayServerUrl));
126
- const protocol = parsed.protocol.toLowerCase();
127
- const host = normalizeRelayHost(parsed.hostname);
128
- const port = parsed.port || (protocol === "https:" ? "443" : "80");
129
- const pathname = parsed.pathname.replace(/\/+$/, "");
130
- return `${protocol}//${host}:${port}${pathname}`;
131
- }
132
- function normalizeRelayHost(hostname) {
133
- const lower = hostname.toLowerCase();
134
- if (lower === "localhost" || lower === "::1" || lower === "[::1]") {
135
- return "127.0.0.1";
136
- }
137
- return lower;
138
- }
124
+ export { normalizeRelayServerIdentity } from "../core/relay/file-upload-utils.js";
139
125
  function backupExistingConfig() {
140
126
  const configPath = getConfigPath();
141
127
  if (!existsSync(configPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/commands/pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAA0B,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAWxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAiB;IACjD,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAE7D,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,mBAAmB,GAAG,cAAc,EAAE,WAAW,IAAI,UAAU,CAAC;IACtE,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,IAAI,wBAAwB,EAAE,CAAC;IAC1E,MAAM,sBAAsB,GAAG,0BAA0B,CACvD,cAAc,EACd,WAAW,EACX,uBAAuB,CACxB,CAAC;IAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,cAAc,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,cAAc,CAAC;QAC9B,cAAc,GAAG,uBAAuB,CAAC;QACzC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAC7B,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAE9E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,uBAAuB,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,iCAAiC,SAAS,qEAAqE,CAAC,CAAC;YAC7H,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;YAC1D,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7J,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,sBAAsB,IAAI,gBAAgB,EAAE,CAAC;QACnE,IAAI,cAAc,IAAI,mBAAmB,KAAK,WAAW,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,mBAAmB,4CAA4C,WAAW,WAAW,CAAC,CAAC;QACjH,CAAC;aAAM,IAAI,cAAc,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,cAAc,EAAE,uBAAuB,CAAC,EAAE,CAAC;YACtG,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,0BAA0B,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAChH,OAAO,CAAC,GAAG,CAAC,sBAAsB,eAAe,CAAC,uBAAuB,CAAC,uBAAuB,WAAW,WAAW,CAAC,CAAC;QAC3H,CAAC;QACD,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,cAAc,GAAG,uBAAuB,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,WAAW,IAAI,cAAc,EAAE,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,qBAAqB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;SACjE,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,yBAAyB,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI7B,CAAC;QAEF,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAE7B,WAAW,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;QAChG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9B,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACzC,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAgC,EAChC,WAAkC,EAClC,uBAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,KAAK,WAAW;WACpD,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,GAAG,QAAQ,KAAK,IAAI,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,UAAU,CAAC,EACnB,6BAA6B,qBAAqB,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,CACrE,CAAC;IACF,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAU;IACvC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO;QACL,IAAI,CAAC,WAAW,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;KACvB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,0EAA0E;IAC1E,OAAO,IAAI;SACR,OAAO,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,iCAAiC;SAC7E,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,+BAA+B;SAC/D,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,sCAAsC;SAChE,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC;AACvE,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,kBAAkB,EAAE,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/commands/pair.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { getGatewayRuntimeAdapter } from "../runtime-adapters.js";
3
3
  import { withReconnect } from "../core/relay/reconnect.js";
4
4
  import { t } from "../i18n/index.js";
5
5
  import { createInterface } from "readline";
6
+ import { disposeReliableRelayOutboxes } from "../core/relay/reliable-relay-outbox-registry.js";
6
7
  export async function runCommand() {
7
8
  const config = readConfig();
8
9
  const gatewayType = config.gatewayType ?? "openclaw";
@@ -18,8 +19,9 @@ export async function runCommand() {
18
19
  process.on("SIGINT", onSignal);
19
20
  // On Windows, taskkill without /F sends WM_CLOSE. A readline interface
20
21
  // installs a console control handler that translates this into SIGTERM.
22
+ let rl;
21
23
  if (process.platform === "win32") {
22
- const rl = createInterface({ input: process.stdin, output: process.stdout });
24
+ rl = createInterface({ input: process.stdin, output: process.stdout });
23
25
  rl.on("SIGTERM", onSignal);
24
26
  rl.on("close", onSignal);
25
27
  }
@@ -32,17 +34,28 @@ export async function runCommand() {
32
34
  if (runtimeAdapter.logsGatewayUrl) {
33
35
  console.log(t("run.gatewayUrl", gatewayUrl));
34
36
  }
35
- await withReconnect(() => runtimeAdapter.start({
36
- config,
37
- gatewayUrl: () => readGatewayUrl(),
38
- gatewayAuth,
39
- signal: shutdown.signal,
40
- onConnected: () => console.log(t("run.connected")),
41
- onDisconnected: () => console.log(t("run.disconnected")),
42
- }), {
43
- onRetry: (attempt, delayMs) => {
44
- console.log(t("run.retry", String(attempt), String(delayMs)));
45
- },
46
- });
37
+ try {
38
+ await withReconnect(() => runtimeAdapter.start({
39
+ config,
40
+ gatewayUrl: () => readGatewayUrl(),
41
+ gatewayAuth,
42
+ signal: shutdown.signal,
43
+ onConnected: () => console.log(t("run.connected")),
44
+ onDisconnected: () => console.log(t("run.disconnected")),
45
+ }), {
46
+ signal: shutdown.signal,
47
+ onRetry: (attempt, delayMs) => {
48
+ console.log(t("run.retry", String(attempt), String(delayMs)));
49
+ },
50
+ });
51
+ }
52
+ finally {
53
+ process.removeListener("SIGTERM", onSignal);
54
+ process.removeListener("SIGINT", onSignal);
55
+ rl?.removeListener("SIGTERM", onSignal);
56
+ rl?.removeListener("close", onSignal);
57
+ rl?.close();
58
+ disposeReliableRelayOutboxes();
59
+ }
47
60
  }
48
61
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC;IACrD,MAAM,cAAc,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5C,wEAAwE;IACxE,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/B,wEAAwE;IACxE,wEAAwE;IACxE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3B,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IACzD,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,mBAAmB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,CACjB,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;QACzB,MAAM;QACN,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;QAClC,WAAW;QACX,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAClD,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;KACzD,CAAC,EACF;QACE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,11 @@ export type LocalCommandEventPublisher = (event: {
9
9
  type: "event";
10
10
  event: string;
11
11
  payload: unknown;
12
- }) => void;
12
+ }) => void | AssistantStreamEmitResult | Promise<void | AssistantStreamEmitResult>;
13
13
  export type LocalCommandContext = {
14
14
  requestId?: string;
15
15
  gatewayId?: string;
16
16
  publishEvent?: LocalCommandEventPublisher;
17
17
  abortSignal?: AbortSignal;
18
18
  };
19
+ import type { AssistantStreamEmitResult } from "./relay/assistant-stream-coalescer.js";
@@ -0,0 +1,67 @@
1
+ export declare const ASSISTANT_STREAM_COALESCE_INTERVAL_MS = 100;
2
+ export declare const ASSISTANT_STREAM_CLOSED_KEY_MAX_ENTRIES = 4096;
3
+ export declare const ASSISTANT_STREAM_COMPENSATION_RETRY_INTERVAL_MS = 500;
4
+ export declare const ASSISTANT_STREAM_COMPENSATION_MAX_RETRIES = 3;
5
+ type TimerHandle = ReturnType<typeof setTimeout>;
6
+ export type AssistantStreamEmitResult = {
7
+ status: "delivered";
8
+ } | {
9
+ status: "retryable";
10
+ error?: unknown;
11
+ };
12
+ export type AssistantStreamIdentity = {
13
+ sessionKey: string;
14
+ runId: string;
15
+ messageId?: string;
16
+ };
17
+ export type LatestSnapshotCoalescerOptions<TKey, TSnapshot> = {
18
+ emit: (key: TKey, snapshot: TSnapshot) => void | AssistantStreamEmitResult | Promise<void | AssistantStreamEmitResult>;
19
+ intervalMs?: number;
20
+ compensationRetryIntervalMs?: number;
21
+ maxCompensationRetries?: number;
22
+ setTimer?: (callback: () => void, delayMs: number) => TimerHandle;
23
+ clearTimer?: (timer: TimerHandle) => void;
24
+ onError?: (error: unknown, key: TKey) => void;
25
+ maxClosedKeys?: number;
26
+ };
27
+ export declare function buildAssistantStreamSnapshotKey(identity: AssistantStreamIdentity): string;
28
+ /**
29
+ * 每个稳定 identity 最多保留一个发送中快照和一个最新待发快照。
30
+ * 可恢复写失败只补偿最新累计快照,次数固定有界;终态屏障会先耗尽该快照的补偿尝试。
31
+ */
32
+ export declare class LatestSnapshotCoalescer<TKey, TSnapshot> {
33
+ private readonly emit;
34
+ private readonly intervalMs;
35
+ private readonly compensationRetryIntervalMs;
36
+ private readonly maxCompensationRetries;
37
+ private readonly setTimer;
38
+ private readonly clearTimer;
39
+ private readonly onError?;
40
+ private readonly maxClosedKeys;
41
+ private readonly states;
42
+ private readonly closedKeys;
43
+ private disposed;
44
+ constructor(options: LatestSnapshotCoalescerOptions<TKey, TSnapshot>);
45
+ schedule(key: TKey, snapshot: TSnapshot): boolean;
46
+ flush(key: TKey): Promise<void>;
47
+ flushThen(key: TKey, operation: () => void | Promise<void>): Promise<void>;
48
+ closeAfterFlush(key: TKey, operation: () => void | Promise<void>): Promise<void>;
49
+ clear(key: TKey): void;
50
+ releaseClosed(key: TKey): void;
51
+ dispose(): void;
52
+ get pendingCount(): number;
53
+ private flushThenInternal;
54
+ private flushState;
55
+ private stateFor;
56
+ private takePending;
57
+ private scheduleDrain;
58
+ private cancelTimer;
59
+ private enqueue;
60
+ private enqueueSnapshotDrain;
61
+ private emitSnapshot;
62
+ private reportError;
63
+ private isClosed;
64
+ private rememberClosed;
65
+ private cleanupWhenIdle;
66
+ }
67
+ export {};
@@ -0,0 +1,269 @@
1
+ export const ASSISTANT_STREAM_COALESCE_INTERVAL_MS = 100;
2
+ export const ASSISTANT_STREAM_CLOSED_KEY_MAX_ENTRIES = 4_096;
3
+ export const ASSISTANT_STREAM_COMPENSATION_RETRY_INTERVAL_MS = 500;
4
+ export const ASSISTANT_STREAM_COMPENSATION_MAX_RETRIES = 3;
5
+ export function buildAssistantStreamSnapshotKey(identity) {
6
+ const sessionKey = identity.sessionKey.trim();
7
+ const runId = identity.runId.trim();
8
+ if (!sessionKey || !runId)
9
+ throw new Error("assistant_stream_identity_required");
10
+ const messageId = identity.messageId?.trim() || `assistant-${runId}`;
11
+ return JSON.stringify([sessionKey, runId, messageId]);
12
+ }
13
+ /**
14
+ * 每个稳定 identity 最多保留一个发送中快照和一个最新待发快照。
15
+ * 可恢复写失败只补偿最新累计快照,次数固定有界;终态屏障会先耗尽该快照的补偿尝试。
16
+ */
17
+ export class LatestSnapshotCoalescer {
18
+ emit;
19
+ intervalMs;
20
+ compensationRetryIntervalMs;
21
+ maxCompensationRetries;
22
+ setTimer;
23
+ clearTimer;
24
+ onError;
25
+ maxClosedKeys;
26
+ states = new Map();
27
+ closedKeys = new Map();
28
+ disposed = false;
29
+ constructor(options) {
30
+ this.emit = options.emit;
31
+ this.intervalMs = positiveFinite(options.intervalMs, ASSISTANT_STREAM_COALESCE_INTERVAL_MS);
32
+ this.compensationRetryIntervalMs = positiveFinite(options.compensationRetryIntervalMs, ASSISTANT_STREAM_COMPENSATION_RETRY_INTERVAL_MS);
33
+ this.maxCompensationRetries = nonNegativeInteger(options.maxCompensationRetries, ASSISTANT_STREAM_COMPENSATION_MAX_RETRIES);
34
+ this.setTimer = options.setTimer ?? ((callback, delayMs) => {
35
+ const timer = setTimeout(callback, delayMs);
36
+ timer.unref?.();
37
+ return timer;
38
+ });
39
+ this.clearTimer = options.clearTimer ?? clearTimeout;
40
+ this.onError = options.onError;
41
+ this.maxClosedKeys = options.maxClosedKeys ?? ASSISTANT_STREAM_CLOSED_KEY_MAX_ENTRIES;
42
+ if (!Number.isInteger(this.maxClosedKeys) || this.maxClosedKeys <= 0) {
43
+ throw new Error("snapshot_closed_key_limit_invalid");
44
+ }
45
+ }
46
+ schedule(key, snapshot) {
47
+ if (this.disposed || this.isClosed(key))
48
+ return false;
49
+ const state = this.stateFor(key);
50
+ state.pending = { value: snapshot, failedAttempts: 0 };
51
+ state.hasPending = true;
52
+ if (state.timerKind === "compensation") {
53
+ this.cancelTimer(state);
54
+ }
55
+ if (state.timer || state.drainingSnapshots)
56
+ return true;
57
+ this.scheduleDrain(key, state, this.intervalMs, "coalesce");
58
+ return true;
59
+ }
60
+ flush(key) {
61
+ const state = this.states.get(key);
62
+ if (!state)
63
+ return Promise.resolve();
64
+ this.cancelTimer(state);
65
+ return this.flushState(key, state);
66
+ }
67
+ flushThen(key, operation) {
68
+ return this.flushThenInternal(key, operation, false);
69
+ }
70
+ closeAfterFlush(key, operation) {
71
+ return this.flushThenInternal(key, operation, true);
72
+ }
73
+ clear(key) {
74
+ const state = this.states.get(key);
75
+ if (!state)
76
+ return;
77
+ this.cancelTimer(state);
78
+ state.pending = undefined;
79
+ state.hasPending = false;
80
+ this.cleanupWhenIdle(key, state);
81
+ }
82
+ releaseClosed(key) {
83
+ this.closedKeys.delete(key);
84
+ }
85
+ dispose() {
86
+ if (this.disposed)
87
+ return;
88
+ this.disposed = true;
89
+ for (const state of this.states.values()) {
90
+ this.cancelTimer(state);
91
+ state.pending = undefined;
92
+ state.hasPending = false;
93
+ }
94
+ this.states.clear();
95
+ this.closedKeys.clear();
96
+ }
97
+ get pendingCount() {
98
+ let count = 0;
99
+ for (const state of this.states.values()) {
100
+ if (state.hasPending)
101
+ count += 1;
102
+ }
103
+ return count;
104
+ }
105
+ flushThenInternal(key, operation, close) {
106
+ if (close)
107
+ this.rememberClosed(key);
108
+ const state = this.stateFor(key);
109
+ this.cancelTimer(state);
110
+ const result = this.flushState(key, state).then(operation);
111
+ const guarded = result.catch((error) => {
112
+ this.reportError(error, key);
113
+ });
114
+ state.tail = guarded;
115
+ void guarded.then(() => this.cleanupWhenIdle(key, state, guarded));
116
+ return result;
117
+ }
118
+ flushState(key, state) {
119
+ state.flushRequested = true;
120
+ if (state.drainingSnapshots) {
121
+ return state.tail;
122
+ }
123
+ if (!state.hasPending) {
124
+ state.flushRequested = false;
125
+ return state.tail;
126
+ }
127
+ return this.enqueueSnapshotDrain(key, state, true);
128
+ }
129
+ stateFor(key) {
130
+ const existing = this.states.get(key);
131
+ if (existing)
132
+ return existing;
133
+ const created = {
134
+ hasPending: false,
135
+ tail: Promise.resolve(),
136
+ drainingSnapshots: false,
137
+ flushRequested: false,
138
+ };
139
+ this.states.set(key, created);
140
+ return created;
141
+ }
142
+ takePending(state) {
143
+ if (!state.hasPending)
144
+ return undefined;
145
+ const pending = state.pending;
146
+ state.pending = undefined;
147
+ state.hasPending = false;
148
+ return pending;
149
+ }
150
+ scheduleDrain(key, state, delayMs, timerKind) {
151
+ if (state.timer || state.drainingSnapshots || !state.hasPending || this.disposed)
152
+ return;
153
+ state.timerKind = timerKind;
154
+ state.timer = this.setTimer(() => {
155
+ state.timer = undefined;
156
+ state.timerKind = undefined;
157
+ void this.enqueueSnapshotDrain(key, state, false).catch(() => undefined);
158
+ }, delayMs);
159
+ }
160
+ cancelTimer(state) {
161
+ if (!state.timer)
162
+ return;
163
+ this.clearTimer(state.timer);
164
+ state.timer = undefined;
165
+ state.timerKind = undefined;
166
+ }
167
+ enqueue(key, state, operation) {
168
+ const result = state.tail.then(operation);
169
+ const guarded = result.catch((error) => {
170
+ this.reportError(error, key);
171
+ });
172
+ state.tail = guarded;
173
+ void guarded.then(() => this.cleanupWhenIdle(key, state, guarded));
174
+ return result;
175
+ }
176
+ enqueueSnapshotDrain(key, state, immediateCompensation) {
177
+ if (state.drainingSnapshots)
178
+ return state.tail;
179
+ state.drainingSnapshots = true;
180
+ return this.enqueue(key, state, async () => {
181
+ try {
182
+ while (state.hasPending) {
183
+ const pending = this.takePending(state);
184
+ if (!pending)
185
+ continue;
186
+ const outcome = await this.emitSnapshot(key, pending.value);
187
+ if (outcome.status === "delivered")
188
+ continue;
189
+ if (state.hasPending)
190
+ continue;
191
+ const failedAttempts = pending.failedAttempts + 1;
192
+ if (failedAttempts > this.maxCompensationRetries) {
193
+ this.reportError(outcome.error ?? new Error("assistant_stream_snapshot_retry_exhausted"), key);
194
+ continue;
195
+ }
196
+ state.pending = { value: pending.value, failedAttempts };
197
+ state.hasPending = true;
198
+ if (immediateCompensation || state.flushRequested)
199
+ continue;
200
+ this.scheduleDrain(key, state, this.compensationRetryIntervalMs, "compensation");
201
+ return;
202
+ }
203
+ }
204
+ finally {
205
+ state.drainingSnapshots = false;
206
+ state.flushRequested = false;
207
+ if (state.hasPending && !state.timer && !immediateCompensation) {
208
+ this.scheduleDrain(key, state, this.compensationRetryIntervalMs, "compensation");
209
+ }
210
+ }
211
+ });
212
+ }
213
+ async emitSnapshot(key, snapshot) {
214
+ try {
215
+ const result = await this.emit(key, snapshot);
216
+ return result?.status === "retryable" ? result : { status: "delivered" };
217
+ }
218
+ catch (error) {
219
+ return { status: "retryable", error };
220
+ }
221
+ }
222
+ reportError(error, key) {
223
+ try {
224
+ this.onError?.(error, key);
225
+ }
226
+ catch {
227
+ // Observability hooks must never break per-key ordering.
228
+ }
229
+ }
230
+ isClosed(key) {
231
+ if (!this.closedKeys.has(key))
232
+ return false;
233
+ this.closedKeys.delete(key);
234
+ this.closedKeys.set(key, true);
235
+ return true;
236
+ }
237
+ rememberClosed(key) {
238
+ this.closedKeys.delete(key);
239
+ this.closedKeys.set(key, true);
240
+ while (this.closedKeys.size > this.maxClosedKeys) {
241
+ const oldest = this.closedKeys.keys().next();
242
+ if (oldest.done)
243
+ return;
244
+ this.closedKeys.delete(oldest.value);
245
+ }
246
+ }
247
+ cleanupWhenIdle(key, state, expectedTail = state.tail) {
248
+ if (this.states.get(key) === state
249
+ && state.tail === expectedTail
250
+ && !state.hasPending
251
+ && !state.timer
252
+ && !state.drainingSnapshots) {
253
+ this.states.delete(key);
254
+ }
255
+ }
256
+ }
257
+ function positiveFinite(value, fallback) {
258
+ const resolved = value ?? fallback;
259
+ if (!Number.isFinite(resolved) || resolved <= 0)
260
+ throw new Error("snapshot_interval_invalid");
261
+ return resolved;
262
+ }
263
+ function nonNegativeInteger(value, fallback) {
264
+ const resolved = value ?? fallback;
265
+ if (!Number.isInteger(resolved) || resolved < 0)
266
+ throw new Error("snapshot_retry_limit_invalid");
267
+ return resolved;
268
+ }
269
+ //# sourceMappingURL=assistant-stream-coalescer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-stream-coalescer.js","sourceRoot":"","sources":["../../../src/core/relay/assistant-stream-coalescer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare const DEFAULT_FILE_CHUNK_SIZE: number;
2
2
  export declare function normalizeSessionKey(sessionKey?: string): string;
3
3
  export declare function toRelayHttpBase(relayServerUrl: string): string;
4
+ export declare function normalizeRelayServerIdentity(relayServerUrl: string): string;
4
5
  export declare function inferMimeType(fileName: string): string;
5
6
  export declare function calculateChunkCount(sizeBytes: number, chunkSize: number): number;
6
7
  export declare function formatFileSize(sizeBytes: number): string;