antechamber 0.2.31 → 0.2.32

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,12 @@ and this project uses [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.32] - 2026-10-19
11
+
12
+ ### Fixed
13
+
14
+ - Preserve native replies and their recorded usage when reopening sessions with legacy compaction ID collisions.
15
+
10
16
  ## [0.2.31] - 2026-10-19
11
17
 
12
18
  - fix(session): refresh dormant history after external appends (#39)
@@ -121,6 +121,17 @@ export function parsePiSessionText(s, agentName, raw) {
121
121
  const sessionID = s.info.id;
122
122
  const directory = s.info.directory;
123
123
  const entries = parseEntries(raw);
124
+ // Older binders assigned synthetic compaction IDs to unrelated native replies.
125
+ for (const entry of entries) {
126
+ if (entry.type !== "compaction" || entry.id === undefined)
127
+ continue;
128
+ for (const messageID of [`msg_compaction_${entry.id}`, `msg_compaction_${entry.id}_summary`]) {
129
+ if (s.tree.messageEntries[messageID] === undefined)
130
+ continue;
131
+ delete s.tree.messageEntries[messageID];
132
+ delete s.tree.messageParts?.[messageID];
133
+ }
134
+ }
124
135
  const indexOf = new Map();
125
136
  entries.forEach((e, i) => indexOf.set(e, i));
126
137
  const { chain, nativeTree } = activeChain(s, entries);
@@ -134,6 +134,8 @@ function bindOrdinaryEntry(s, entry, messages, cursor) {
134
134
  const index = messages.findIndex((message, position) => position >= cursor &&
135
135
  !s.localMessageIds?.has(message.info.id) &&
136
136
  !message.info.id.startsWith("msg_background_") &&
137
+ !(message.info.role === "assistant" && message.info.summary) &&
138
+ !message.parts.some((part) => part.type === "compaction") &&
137
139
  s.tree.messageEntries[message.info.id] === undefined &&
138
140
  message.info.role === entry.message?.role &&
139
141
  (message.info.role !== "user" ||
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber-omo-compat",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "OpenChamber extension: displays OmO tool calls the way OmO means them when OpenChamber runs on antechamber",
5
5
  "private": true,
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber-omo-graph",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "OpenChamber extension: live, interactive graph of the OmO sub-agents behind the current session",
5
5
  "private": true,
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "OpenCode-compatible HTTP/SSE server that lets OpenChamber drive the pi coding agent (and OmO) over RPC",
5
5
  "type": "module",
6
6
  "license": "MIT",