You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two fixes from alcohen83's report batch, both verified before shipping.
#63 — conversation.process without a conversation_id always 400'd: HA's
integration serialized the missing id as an explicit JSON null, which
z.string().optional() rejects (optional covers ABSENT, not null). Fixed on
both sides: the schema now uses nullish() and normalizes (userId too — same
latent shape), and the integration omits the key entirely when it has no
value. The failure also surfaced as "couldn't reach the Nives server", which
misdirects diagnosis when the server is in fact answering — a
ClientResponseError now gets its own message naming the HTTP status, and the
raised error carries the response body so the log states WHY, not just that.
#66 — prompt caching is a prefix match, and the per-request timestamp led
the uncached block, so the home layout and device cheat sheet (the largest
stable content we send) were re-billed on every turn. Reordered
least-volatile-first on both engines: the Anthropic block path gives the
home description its own cache breakpoint (a rescan invalidates it without
evicting the instruction block), and the plain-text path moves timestamps
and retrieved facts to the tail so provider-side automatic prefix caching
can capture everything before them.
Measured live on a 150-device fixture via the block path: repeat turns went
from 4373/14008 tokens cached (identity only) to 13868/14008 (~99%). On the
OpenAI-compatible path an identical-prefix repeat showed 7229/7232 cached
and a 91% input-cost drop — though large-prefix hits are shard-sensitive
there; a stable prompt_cache_key per install is a possible follow-up.
Bundles server 0.15.1.
Copy file name to clipboardExpand all lines: nives/CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,11 @@
1
1
# Changelog
2
2
3
+
## 2.5.1
4
+
5
+
-**Automations and service calls can now message Nives without a conversation id.** Calling `conversation.process` on the Nives agent without a `conversation_id` — the natural way to use it from an automation or script — was refused before the model ever saw it, with a misleading "couldn't reach the server" reply. It now just works. Voice and the Assist dialog were never affected. Thanks to @alcohen83 for the pinpoint report (#63).
6
+
-**Error replies now say who actually failed.** When the Nives server answers a request with an error, the reply now says so — with the HTTP status — instead of suggesting the server was unreachable, and the add-on log carries the server's own explanation of what it objected to. Connection problems still say "couldn't reach".
7
+
-**Repeat turns got cheaper: the unchanging parts of the prompt can now be cached.** With every message, Nives sends the model your home's layout and device capabilities so it always knows your home. Those now sit ahead of the parts that change each turn (timestamps, retrieved memories), so providers that cache prompts can reuse them between turns instead of billing them again on every "turn off the kitchen light". Measured on an Anthropic key with a mid-size home, repeat turns went from about a third of the prompt cached to ~99% — same content, same answers, noticeably cheaper. The bigger your home, the more this saves. Thanks again to @alcohen83 (#66). Bundles server 0.15.1.
8
+
3
9
## 2.5.0
4
10
5
11
-**Nives now warns you before your balance runs out.** If you use Nives with a key from nives.house, the add-on keeps an eye on the remaining balance and, when about three days of typical use are left, posts a Home Assistant notification inviting you to top up. If the balance does run out, a clearer notification says so. Once you top up, both clear on their own and Nives carries on where it left off — nothing to configure, nothing to restart. If you bring your own key, nothing changes: Nives only watches nives.house balances.
0 commit comments