antechamber 1.0.39 → 1.0.40

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,14 @@ and this project uses [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.0.40] - 2026-11-06
11
+
12
+ ### Fixed
13
+
14
+ - Keep the conversation in order after a `!` shell command. The history refresh that follows a shell command sent
15
+ every earlier reply to OpenChamber again with the current time as its creation time, so OpenChamber moved those
16
+ replies after the prompts they answered and placed the shell card among them. Replies now keep their own times.
17
+
10
18
  ## [1.0.39] - 2026-11-04
11
19
 
12
20
  - fix(v2): give each task batch card its own tool id (#90)
package/dist/v2.js CHANGED
@@ -489,12 +489,10 @@ export class V2EventTranslator {
489
489
  step.error = info.error ?? { name: "UnknownError", data: { message: "Provider error" } };
490
490
  }
491
491
  st.step = step;
492
- frames.push(this.frame(directory, "session.step.started", {
493
- sessionID: info.sessionID,
494
- assistantMessageID: info.id,
495
- agent: step.agent,
496
- model: step.model,
497
- }));
492
+ // OpenChamber 2.x takes the message's creation time from this frame (events.ts `session.step.started`) and
493
+ // reorders by it. A history refresh re-announces every reply, so `Date.now()` would move them all after the
494
+ // prompts they answer.
495
+ frames.push(this.frame(directory, "session.step.started", { sessionID: info.sessionID, assistantMessageID: info.id, agent: step.agent, model: step.model }, info.time.created));
498
496
  }
499
497
  else if (st.step) {
500
498
  st.step.cost = info.cost;
@@ -512,11 +510,11 @@ export class V2EventTranslator {
512
510
  if (st.step && !st.step.ended && info.time.completed !== undefined) {
513
511
  if (info.finish !== undefined)
514
512
  st.step.finish = info.finish;
515
- frames.push(...this.finalizeStep(directory, st.step));
513
+ frames.push(...this.finalizeStep(directory, st.step, info.time.completed));
516
514
  }
517
515
  return frames;
518
516
  }
519
- finalizeStep(directory, st) {
517
+ finalizeStep(directory, st, completed) {
520
518
  if (st.ended)
521
519
  return [];
522
520
  st.ended = true;
@@ -529,14 +527,14 @@ export class V2EventTranslator {
529
527
  error: st.error ?? { name: "UnknownError", data: { message: "Provider error" } },
530
528
  cost: st.cost,
531
529
  tokens: st.tokens,
532
- })
530
+ }, completed)
533
531
  : this.frame(directory, "session.step.ended", {
534
532
  sessionID: st.sessionID,
535
533
  assistantMessageID: st.messageID,
536
534
  ...(st.finish !== undefined ? { finish: st.finish } : {}),
537
535
  cost: st.cost,
538
536
  tokens: st.tokens,
539
- }),
537
+ }, completed),
540
538
  ];
541
539
  }
542
540
  onPartUpdated(directory, part, delta) {
@@ -704,14 +702,14 @@ export class V2EventTranslator {
704
702
  }
705
703
  return st;
706
704
  }
707
- frame(directory, type, data) {
705
+ frame(directory, type, data, created = Date.now()) {
708
706
  const aggregateID = typeof data.sessionID === "string" ? data.sessionID : undefined;
709
707
  const seq = aggregateID === undefined ? undefined : (this.sequences.get(aggregateID) ?? 0) + 1;
710
708
  if (aggregateID !== undefined && seq !== undefined)
711
709
  this.sequences.set(aggregateID, seq);
712
710
  return {
713
711
  id: genId("evt"),
714
- created: Date.now(),
712
+ created,
715
713
  type,
716
714
  location: { directory },
717
715
  data,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber-omo-compat",
3
- "version": "1.0.39",
3
+ "version": "1.0.40",
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": "1.0.39",
3
+ "version": "1.0.40",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber-omo-work",
3
- "version": "1.0.39",
3
+ "version": "1.0.40",
4
4
  "description": "OpenChamber 2.x Work Status section: OmO todo phases, monitors, eval cells and background work of 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": "1.0.39",
3
+ "version": "1.0.40",
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",