dsh-agy-link 0.4.80 → 0.4.82
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/CHANGELOG.md +28 -0
- package/dist/index.js +12 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.82 (2026-10-29)
|
|
4
|
+
|
|
5
|
+
### English
|
|
6
|
+
|
|
7
|
+
- **Fix(sessions): don't mis-purge live bindings whose session key contains `:`.**
|
|
8
|
+
- `cleanupStaleAccounts()` split the binding key on the FIRST `:`. A DSH session id can itself be composite and contain `:` (as several plugins produce), so `ns:sess:acc_valid` parsed its "account id" as `sess:acc_valid`, which is never in the valid set — the cleanup then **deleted a live binding**. It now splits on the LAST `:` and only treats the suffix as an account id when it matches the pool shape `acc_<...>`, so colon-containing session keys are never mistaken for accounts. Adds a regression test.
|
|
9
|
+
|
|
10
|
+
### 中文
|
|
11
|
+
|
|
12
|
+
- **修复(sessions):不再误删会话键本身含 `:` 的有效绑定。**
|
|
13
|
+
- `cleanupStaleAccounts()` 之前按**第一个** `:` 切分绑定键。DSH 的会话 id 有可能本身是含 `:` 的复合键(部分插件如此),于是 `ns:sess:acc_valid` 被解析出的「账号 id」为 `sess:acc_valid`,永远不在有效集合里——清理逻辑因此**删掉了一个有效绑定**。现在改为按**最后一个** `:` 切分,且仅当后缀符合账号池形态 `acc_<...>` 时才当作账号 id,含 `:` 的会话键不会被误判为账号。补充回归测试。
|
|
14
|
+
|
|
15
|
+
**Full Changelog**: https://github.com/amlyczz/dsh-agy-link/compare/v0.4.81...v0.4.82
|
|
16
|
+
|
|
17
|
+
## 0.4.81 (2026-10-29)
|
|
18
|
+
|
|
19
|
+
### English
|
|
20
|
+
|
|
21
|
+
- **Fix(parser): bound a runaway un-newline-terminated stdout buffer.**
|
|
22
|
+
- `StreamJsonParser.feed()` only split on `\n`, so a malformed/runaway stream that produced megabytes with no newline (or one giant partial line) grew the internal buffer without bound. A partial line over `MAX_STREAM_LINE_BYTES` (8 MiB) is now dropped and surfaced as a `garbage` event, keeping memory bounded; well-formed newline-delimited events are unaffected. Adds a regression test.
|
|
23
|
+
|
|
24
|
+
### 中文
|
|
25
|
+
|
|
26
|
+
- **修复(parser):限制无换行结尾的超大 stdout 缓冲。**
|
|
27
|
+
- `StreamJsonParser.feed()` 只按 `\n` 切分,若输出异常/失控产生数 MB 且不含换行(或一整条超长未完成的行),内部缓冲会无界增长。现在超过 `MAX_STREAM_LINE_BYTES`(8 MiB)的未完成行会被丢弃并以 `garbage` 事件上报,内存保持有界;正常的按行 NDJSON 事件不受影响。补充回归测试。
|
|
28
|
+
|
|
29
|
+
**Full Changelog**: https://github.com/amlyczz/dsh-agy-link/compare/v0.4.80...v0.4.81
|
|
30
|
+
|
|
3
31
|
## 0.4.80 (2026-10-29)
|
|
4
32
|
|
|
5
33
|
### English
|
package/dist/index.js
CHANGED
|
@@ -2728,6 +2728,16 @@ var StreamJsonParser = class {
|
|
|
2728
2728
|
const ev = this.takeLine(line);
|
|
2729
2729
|
if (ev) out.push(ev);
|
|
2730
2730
|
}
|
|
2731
|
+
if (this.buffer.length > 8388608) {
|
|
2732
|
+
const dropped = this.buffer.length;
|
|
2733
|
+
this.buffer = "";
|
|
2734
|
+
this.stats.garbage++;
|
|
2735
|
+
this.stats.consecutiveGarbage++;
|
|
2736
|
+
out.push({
|
|
2737
|
+
kind: "garbage",
|
|
2738
|
+
line: "<dropped over-long line: " + dropped + " bytes>"
|
|
2739
|
+
});
|
|
2740
|
+
}
|
|
2731
2741
|
return out;
|
|
2732
2742
|
}
|
|
2733
2743
|
/** Flush a trailing line without a newline (agy killed mid-write). */
|
|
@@ -29493,10 +29503,10 @@ var SessionStore = class {
|
|
|
29493
29503
|
cleanupStaleAccounts(validAccountIds) {
|
|
29494
29504
|
let changed = false;
|
|
29495
29505
|
for (const key of Object.keys(this.data)) {
|
|
29496
|
-
const colon = key.
|
|
29506
|
+
const colon = key.lastIndexOf(":");
|
|
29497
29507
|
if (colon >= 0) {
|
|
29498
29508
|
const accId = key.slice(colon + 1);
|
|
29499
|
-
if (accId && !validAccountIds.has(accId)) {
|
|
29509
|
+
if (/^acc_[A-Za-z0-9_]+$/.test(accId) && !validAccountIds.has(accId)) {
|
|
29500
29510
|
delete this.data[key];
|
|
29501
29511
|
this.dirty.delete(key);
|
|
29502
29512
|
this.removed.add(key);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-agy-link",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.82",
|
|
4
4
|
"description": "Google Antigravity (agy CLI) models for DeepSeek Harness — stream Gemini/Claude/GPT-OSS subscriptions into DSH with thinking, tool activity, token usage and in-GUI Google OAuth login.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|