@womp/spark-agent 9.2.0 → 9.3.0

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
@@ -4,6 +4,33 @@ Notable changes to `@womp/spark-agent`, newest first. Versions follow
4
4
  [Semantic Versioning](https://semver.org/). Add an entry with each version bump; describe what
5
5
  changed for hosts and users, and how to migrate across breaking changes.
6
6
 
7
+ ## 9.3.0 — 2026-10-13
8
+
9
+ ### Changed
10
+
11
+ - Depends on `@womp/kakapo-sdk` 0.9.1. Its errors carry everything in `message`. `KakapoError`
12
+ keeps `message`, `name`, `code` and `cause`, and drops `operation`, `path`, `received`,
13
+ `expected`, `hint`, `details` and `toJSON()`. Error codes are unchanged, as are
14
+ `KakapoSceneCommitError.outcome` and `KakapoRpcError.method`/`rpcCode`. Spark reads only those.
15
+ - Bounds reads no longer wait 500 ms and request a renderer frame after each edit; Kakapo holds
16
+ the reply until the edit is processed. `waitForRenderer()` is deprecated and resolves at once.
17
+
18
+ ### Migration
19
+
20
+ - Hosts that pin the SDK move it to 0.9.1 with this release, because the host's `KakapoAPI` and
21
+ Spark must share one SDK copy. Host code that read the removed error fields reads `message`
22
+ instead, and can drop its own `waitForRenderer()` calls.
23
+
24
+ ## 9.2.1 — 2026-10-13
25
+
26
+ ### Changed
27
+
28
+ - SDK scene health reads `get_thermometer` directly. Kakapo now holds that reply until the
29
+ latest edits are processed (wompxyz/kakapo#3708), so the read no longer waits for a renderer
30
+ frame first (`waitForRenderer()`: 500 ms plus a frame request after each edit). It no longer
31
+ gives up after 15 s either. Kakapo's own 20 s timeout, like any other read failure, still
32
+ reports unverified health.
33
+
7
34
  ## 9.2.0 — 2026-10-12
8
35
 
9
36
  ### Added
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
2
  export const MAX_GEOMETRY_REPAIR_ATTEMPTS = 2;
3
- const HEALTH_TIMEOUT_MS = 15_000;
4
3
  const count = z.number().finite().nonnegative();
5
4
  export const sceneHealthObjectSchema = z.object({
6
5
  num_prims: count,
@@ -204,7 +203,6 @@ export function parseSceneHealth(response, affectedAreaIds) {
204
203
  };
205
204
  }
206
205
  export async function readSdkSceneHealth(api, affectedAreaIds, signal) {
207
- let timeout;
208
206
  let removeAbortListener;
209
207
  try {
210
208
  signal?.throwIfAborted();
@@ -215,15 +213,10 @@ export async function readSdkSceneHealth(api, affectedAreaIds, signal) {
215
213
  signal.addEventListener("abort", onAbort, { once: true });
216
214
  removeAbortListener = () => signal.removeEventListener("abort", onAbort);
217
215
  });
216
+ // Kakapo holds the reply until the latest edits are processed, and fails
217
+ // it after 20 s; that failure reads as unverified health.
218
218
  return await Promise.race([
219
- (async () => {
220
- await api.waitForRenderer();
221
- signal?.throwIfAborted();
222
- return parseSceneHealth(await api.rpc("get_thermometer"), affectedAreaIds);
223
- })(),
224
- new Promise((resolve) => {
225
- timeout = setTimeout(() => resolve(unverifiedSceneHealth(affectedAreaIds, "Scene health timed out.")), HEALTH_TIMEOUT_MS);
226
- }),
219
+ api.rpc("get_thermometer").then((response) => parseSceneHealth(response, affectedAreaIds)),
227
220
  aborted,
228
221
  ]);
229
222
  }
@@ -231,8 +224,6 @@ export async function readSdkSceneHealth(api, affectedAreaIds, signal) {
231
224
  return unverifiedSceneHealth(affectedAreaIds, String(error));
232
225
  }
233
226
  finally {
234
- if (timeout !== undefined)
235
- clearTimeout(timeout);
236
227
  removeAbortListener?.();
237
228
  }
238
229
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@womp/spark-agent",
3
- "version": "9.2.0",
3
+ "version": "9.3.0",
4
4
  "description": "Portable skills-based AI agent with local and durable chat transports for Womp",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -116,7 +116,7 @@
116
116
  "@ai-sdk/openai": "4.0.63",
117
117
  "@jitl/quickjs-wasmfile-release-sync": "0.32.0",
118
118
  "@womp/flowir": "0.5.0",
119
- "@womp/kakapo-sdk": "0.8.0",
119
+ "@womp/kakapo-sdk": "0.9.1",
120
120
  "ai": "7.0.95",
121
121
  "eventsource-parser": "^3.0.6",
122
122
  "express": "^5.2.1",