antechamber 1.0.19 → 1.0.21

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,24 @@ and this project uses [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.0.21] - 2026-10-26
11
+
12
+ ### Fixed
13
+
14
+ - Show live eval cells as `JS Eval` / `Python Eval` cards with their code and streaming output in OpenChamber 2.x.
15
+ The v2 stream announced the card as `eval` and never renamed it to the `bash` card it becomes, and it dropped
16
+ running metadata, so the OmO Compatibility header rule never matched and live output never arrived. The card is
17
+ now announced again under its mapped name, and running metadata is sent as `session.tool.progress`.
18
+
19
+ ## [1.0.20] - 2026-10-26
20
+
21
+ ### Fixed
22
+
23
+ - Work with OpenChamber 2.5.2, which refuses OpenCode older than 2.1.0 and showed an "Update OpenCode" screen
24
+ that never cleared. antechamber now reports OpenCode API 2.1.0, and `PATCH /api/session/{id}` accepts 2.1's
25
+ `archived: true|false`, so archiving and unarchiving from OpenChamber 2.5.2 take effect instead of answering 204
26
+ and changing nothing.
27
+
10
28
  ## [1.0.19] - 2026-10-25
11
29
 
12
30
  ### Fixed
package/README.md CHANGED
@@ -57,7 +57,7 @@ another executable (see [docs/configuration.md](docs/configuration.md)).
57
57
 
58
58
  | OpenChamber | API | Status |
59
59
  |---|---|---|
60
- | >= 2.0.4 | v2 (`@opencode-ai/sdk/v2`) | primary target; antechamber advertises `opencode v2.0.20` on `--version` |
60
+ | >= 2.0.4 | v2 (`@opencode-ai/sdk/v2`) | primary target; antechamber advertises `opencode v2.1.0` on `--version` (OpenChamber 2.5.2 requires 2.1.0) |
61
61
  | 1.24.x | v1 | supported |
62
62
  | other versions | - | not tested |
63
63
 
@@ -148,7 +148,7 @@ antechamber serve --hostname 127.0.0.1 --port 4096
148
148
  | `antechamber setup` | Configure OpenChamber; `--settings <file>`, `--profile <dir>`, `--binary <path>`, `--dry-run`, `--systemd [unit]`, `--pi-binary <path>`, `--restart`, `--auto-update`. |
149
149
  | `antechamber doctor` | Read-only Node, backend, agent/state directories, teardown, OpenChamber and auth checks, plus the installed, latest released and running adapter versions (a running server older than the install needs an OpenChamber restart); `--json`, `--settings <file>`, `--profile <dir>`. Exits 1 on any FAIL; warnings do not fail. |
150
150
  | `antechamber upgrade` | Install the latest release over a global npm or bun install, with the package manager that owns it. Refused for source checkouts and `npx`. |
151
- | `antechamber version` | Package version plus OpenCode API contract version. `--version`/`-v` deliberately print exactly `opencode v2.0.20` for OpenChamber. |
151
+ | `antechamber version` | Package version plus OpenCode API contract version. `--version`/`-v` deliberately print exactly `opencode v2.1.0` for OpenChamber. |
152
152
  | `antechamber help` | Usage and options; also `--help`/`-h`. |
153
153
 
154
154
  ## Upgrade, uninstall and rollback
@@ -165,8 +165,8 @@ Restart OpenChamber, or `systemctl --user restart openchamber.service` for a
165
165
  managed service. Run `antechamber doctor` again. If the executable moved,
166
166
  rerun `antechamber setup`.
167
167
 
168
- OpenChamber 2.3.2 shows an "OpenCode update" notice because antechamber
169
- reports OpenCode API 2.0.20, the minimum OpenChamber accepts. The notice names
168
+ OpenChamber 2.3.2 and later can show an "OpenCode update" notice because antechamber
169
+ reports OpenCode API 2.1.0, the minimum OpenChamber 2.5.2 accepts. The notice names
170
170
  an OpenCode version, but its **Update** button runs `<opencodeBinary> upgrade`,
171
171
  which upgrades antechamber itself (a no-op when it is already current). Click
172
172
  **Reload OpenCode** afterwards to restart onto the new version. OpenChamber
package/dist/routes-v2.js CHANGED
@@ -510,9 +510,16 @@ export async function handleV2(services, req, res, url, path, method, directory)
510
510
  }
511
511
  case "PATCH ": {
512
512
  const body = (await services.body(req));
513
+ // OpenCode 2.1 takes `archived: boolean` (repeating the current state is a no-op);
514
+ // older clients send `time.archived` as a timestamp, 0 to unarchive.
515
+ const archived = typeof body.archived === "boolean"
516
+ ? body.archived
517
+ ? (managed.info.time.archived ?? Date.now())
518
+ : 0
519
+ : body.time?.archived;
513
520
  await services.sessions.update(sessionId, {
514
521
  title: body.title,
515
- archived: body.time?.archived,
522
+ archived,
516
523
  metadata: sessionMetadata(body.metadata),
517
524
  });
518
525
  res.writeHead(204).end();
package/dist/v2.js CHANGED
@@ -565,11 +565,11 @@ export class V2EventTranslator {
565
565
  called: false,
566
566
  ended: false,
567
567
  raw: "",
568
+ metadata: "",
568
569
  };
569
570
  st.tools.set(part.id, ts);
570
571
  }
571
572
  ts.callID = part.callID;
572
- ts.name = part.tool;
573
573
  const frames = [];
574
574
  const base = { sessionID: part.sessionID, assistantMessageID: part.messageID, id: part.callID };
575
575
  const state = part.state;
@@ -586,10 +586,13 @@ export class V2EventTranslator {
586
586
  }
587
587
  return frames;
588
588
  }
589
- if (!ts.started) {
589
+ // mapTool renames a call when it leaves pending (eval -> bash). OpenChamber 2.x takes the tool name only from
590
+ // input.started, so announce the card again under its new name before its input ends.
591
+ if (!ts.started || (ts.name !== part.tool && !ts.inputEnded)) {
590
592
  ts.started = true;
591
593
  frames.push(this.frame(directory, "session.tool.input.started", { ...base, name: part.tool }));
592
594
  }
595
+ ts.name = part.tool;
593
596
  if (!ts.inputEnded) {
594
597
  ts.inputEnded = true;
595
598
  frames.push(this.frame(directory, "session.tool.input.ended", {
@@ -601,6 +604,14 @@ export class V2EventTranslator {
601
604
  ts.called = true;
602
605
  frames.push(this.frame(directory, "session.tool.called", { ...base, input: state.input, executed: false }));
603
606
  }
607
+ // `called` carries no metadata (eval card headers, live output); 2.x reads it while running only from progress.
608
+ if (state.status === "running" && state.metadata !== undefined) {
609
+ const metadata = safeJson(state.metadata);
610
+ if (metadata !== ts.metadata) {
611
+ ts.metadata = metadata;
612
+ frames.push(this.frame(directory, "session.tool.progress", { ...base, metadata: state.metadata }));
613
+ }
614
+ }
604
615
  if (!ts.ended && state.status === "completed") {
605
616
  ts.ended = true;
606
617
  frames.push(this.frame(directory, "session.tool.success", {
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export declare const ADAPTER_VERSION: string;
2
- export declare const OPENCODE_API_VERSION = "2.0.20";
2
+ export declare const OPENCODE_API_VERSION = "2.1.0";
package/dist/version.js CHANGED
@@ -10,4 +10,5 @@ if (typeof manifest !== "object" ||
10
10
  export const ADAPTER_VERSION = manifest.version;
11
11
  // OpenChamber parses --version as an OpenCode version and requires major 2.
12
12
  // This API contract version must not follow the npm package version.
13
- export const OPENCODE_API_VERSION = "2.0.20";
13
+ // OpenChamber 2.5.2 requires 2.1.0, which added top-level `archived` to PATCH /api/session/{id}.
14
+ export const OPENCODE_API_VERSION = "2.1.0";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antechamber-omo-compat",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
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.19",
3
+ "version": "1.0.21",
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.19",
3
+ "version": "1.0.21",
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.19",
3
+ "version": "1.0.21",
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",