antechamber 1.0.9 → 1.0.10
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
CHANGED
|
@@ -7,6 +7,13 @@ and this project uses [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.0.10] - 2026-10-21
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Keep sessions with many child tasks responsive by ignoring unchanged task snapshots and saving
|
|
15
|
+
each snapshot's changes in one registry write.
|
|
16
|
+
|
|
10
17
|
## [1.0.9] - 2026-10-21
|
|
11
18
|
|
|
12
19
|
### Fixed
|
package/dist/subagents.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** OmO task cards and read-only views of their independently persisted sessions. */
|
|
2
2
|
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, statSync, watch, writeFileSync, } from "node:fs";
|
|
3
3
|
import { basename, dirname, join } from "node:path";
|
|
4
|
+
import { isDeepStrictEqual } from "node:util";
|
|
4
5
|
import { piAgentDir } from "./agent-dir.js";
|
|
5
6
|
import { syncSessionCost } from "./pi-event-translation.js";
|
|
6
7
|
import { ocIdFor, SessionPersistenceError, SessionStore } from "./session-store.js";
|
|
@@ -541,28 +542,31 @@ export class SubagentBridge {
|
|
|
541
542
|
observe(parent, ev) {
|
|
542
543
|
if (ev.name !== "omo.task.updated" || !record(ev.data) || !Array.isArray(ev.data.tasks))
|
|
543
544
|
return;
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
this.
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
545
|
+
const rows = ev.data.tasks;
|
|
546
|
+
this.store.batch(() => withTaskLookups(this.store, () => {
|
|
547
|
+
for (const row of rows) {
|
|
548
|
+
if (!record(row) || !taskId(row.task_id))
|
|
549
|
+
continue;
|
|
550
|
+
if (typeof row.parent_session_id === "string" &&
|
|
551
|
+
row.parent_session_id !== (parent.piSessionId ?? parent.restored?.piSessionId))
|
|
552
|
+
continue;
|
|
553
|
+
const id = this.sessionId(parent, row.task_id);
|
|
554
|
+
if (!this.children.has(id))
|
|
555
|
+
this.restore(id);
|
|
556
|
+
const child = this.children.get(id);
|
|
557
|
+
if (!child || child.session.info.parentID !== parent.info.id)
|
|
558
|
+
continue;
|
|
559
|
+
const data = snapshotState(row);
|
|
560
|
+
// OmO re-sends every row ~150 ms after each progress event of any task; only changes matter.
|
|
561
|
+
if (Object.entries(data).every(([key, value]) => isDeepStrictEqual(child.task.details[key], value)))
|
|
562
|
+
continue;
|
|
563
|
+
this.wire(parent);
|
|
564
|
+
if (!this.applyNative(child, data))
|
|
565
|
+
continue;
|
|
566
|
+
child.live = true;
|
|
567
|
+
this.refresh(child, true, false);
|
|
568
|
+
}
|
|
569
|
+
}));
|
|
566
570
|
}
|
|
567
571
|
/**
|
|
568
572
|
* Merge task state reported by OmO (record, snapshot) unless it is older than what is known: an
|