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.
- package/README.md +11 -0
- package/README.zh-CN.md +10 -0
- package/dist/commands/install.js +7 -0
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/pair.d.ts +1 -2
- package/dist/commands/pair.js +2 -16
- package/dist/commands/pair.js.map +1 -1
- package/dist/commands/run.js +26 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/core/command-types.d.ts +2 -1
- package/dist/core/relay/assistant-stream-coalescer.d.ts +67 -0
- package/dist/core/relay/assistant-stream-coalescer.js +269 -0
- package/dist/core/relay/assistant-stream-coalescer.js.map +1 -0
- package/dist/core/relay/file-upload-utils.d.ts +1 -0
- package/dist/core/relay/file-upload-utils.js +15 -0
- package/dist/core/relay/file-upload-utils.js.map +1 -1
- package/dist/core/relay/office-payload.d.ts +1 -0
- package/dist/core/relay/office-payload.js +42 -3
- package/dist/core/relay/office-payload.js.map +1 -1
- package/dist/core/relay/reconnect.d.ts +1 -0
- package/dist/core/relay/reconnect.js +22 -4
- package/dist/core/relay/reconnect.js.map +1 -1
- package/dist/core/relay/relay-server-connection.d.ts +25 -1
- package/dist/core/relay/relay-server-connection.js +246 -3
- package/dist/core/relay/relay-server-connection.js.map +1 -1
- package/dist/core/relay/reliable-delivery-protocol.d.ts +17 -0
- package/dist/core/relay/reliable-delivery-protocol.js +25 -0
- package/dist/core/relay/reliable-delivery-protocol.js.map +1 -0
- package/dist/core/relay/reliable-relay-outbox-registry.d.ts +19 -0
- package/dist/core/relay/reliable-relay-outbox-registry.js +81 -0
- package/dist/core/relay/reliable-relay-outbox-registry.js.map +1 -0
- package/dist/core/relay/reliable-relay-outbox-store.d.ts +67 -0
- package/dist/core/relay/reliable-relay-outbox-store.js +527 -0
- package/dist/core/relay/reliable-relay-outbox-store.js.map +1 -0
- package/dist/core/relay/reliable-relay-outbox.d.ts +74 -0
- package/dist/core/relay/reliable-relay-outbox.js +442 -0
- package/dist/core/relay/reliable-relay-outbox.js.map +1 -0
- package/dist/hermes/hermes-relay-manager.d.ts +5 -0
- package/dist/hermes/hermes-relay-manager.js +105 -8
- package/dist/hermes/hermes-relay-manager.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-api-client.js +54 -29
- package/dist/hermes/runtime/hermes-runtime-api-client.js.map +1 -1
- package/dist/openclaw/gateway-client.d.ts +1 -0
- package/dist/openclaw/gateway-client.js +27 -3
- package/dist/openclaw/gateway-client.js.map +1 -1
- package/dist/openclaw/relay/chat-history.js +17 -7
- package/dist/openclaw/relay/chat-history.js.map +1 -1
- package/dist/openclaw/relay/chat-run-identity.d.ts +19 -2
- package/dist/openclaw/relay/chat-run-identity.js +89 -4
- package/dist/openclaw/relay/chat-run-identity.js.map +1 -1
- package/dist/openclaw/relay/relay-manager-protocol.d.ts +24 -3
- package/dist/openclaw/relay-manager.js +264 -36
- package/dist/openclaw/relay-manager.js.map +1 -1
- package/dist/platform/service-manager-common.d.ts +4 -0
- package/dist/platform/service-manager-common.js +14 -1
- package/dist/platform/service-manager-common.js.map +1 -1
- package/dist/platform/service-manager-linux.d.ts +17 -5
- package/dist/platform/service-manager-linux.js +86 -73
- package/dist/platform/service-manager-linux.js.map +1 -1
- package/dist/platform/service-manager.js +21 -17
- package/dist/platform/service-manager.js.map +1 -1
- 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
|
你也可以手动执行:
|
package/dist/commands/install.js
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,6BAA6B,EAC7B,WAAW,EACX,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pair.d.ts
CHANGED
|
@@ -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
|
|
13
|
-
export {};
|
|
12
|
+
export { normalizeRelayServerIdentity } from "../core/relay/file-upload-utils.js";
|
package/dist/commands/pair.js
CHANGED
|
@@ -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
|
|
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;
|
|
1
|
+
{"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/commands/pair.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
package/dist/commands/run.js.map
CHANGED
|
@@ -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,
|
|
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;
|