@stackbone/cli 0.8.0 → 0.9.1

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,92 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.9.1] - 2026-11-10
11
+
12
+ ### Changed
13
+
14
+ - **The thinking sound waits for a long reply.** The voice worker, the one
15
+ `stackbone dev` runs too, starts the thinking sound at once for a box tool
16
+ call, and for any other wait only once it passes the
17
+ `backgroundAudio.thinkingDelayMs` voice setting (default 2000 ms). Before,
18
+ it played on every reply, since every reply waits for the knowledge search
19
+ and the model's first token. Studio's Voice tab gets a **Thinking delay
20
+ (ms)** field. Deploy the worker on LiveKit Cloud before the boxes: an older
21
+ worker refuses a call whose settings carry the delay.
22
+ - **The box's missing-credentials messages name the Voice provider screen.**
23
+ A call or a voice status check on a box with no readable LiveKit
24
+ credentials now sends you to Studio's **Voice provider** screen, where the
25
+ credentials moved (STA3-89).
26
+
27
+ ## [0.9.0] - 2026-11-10
28
+
29
+ ### Added
30
+
31
+ - **The query rewrite is a card on Studio's System screen.**
32
+ `GET /api/internal-prompts` lists the query rewrite that
33
+ `stackbone.rag.retrieve({ rewrite })` runs, with its built-in prompt and the
34
+ model it falls back to: the `defaultModel` workspace setting, else
35
+ `openai/gpt-4o-mini`. Its prompt is edited and published through
36
+ `/api/prompts` like the other System prompts, and `/api/settings` takes
37
+ `rewriteModel` and `rewriteModelProviderId` (STA3-90).
38
+ - **Voice calls play background audio.** The box sends each call's
39
+ `backgroundAudio` voice setting to the voice worker, and the worker, the one
40
+ `stackbone dev` runs too, plays an ambience under the whole call and a
41
+ thinking sound while the agent works on a reply: the knowledge search, the
42
+ wait for the model's first token and any box tool call. Before, only a chime
43
+ played, and only during tool calls. By default a call plays
44
+ `office-ambience` at 0.7 and `keyboard-typing` at 0.6. Studio's Voice tab
45
+ gets a **Background audio** group. Deploy the worker on LiveKit Cloud before
46
+ the boxes: an older worker refuses every call from a box on this release,
47
+ while the new worker takes calls from an older box and plays the defaults.
48
+
49
+ ### Changed
50
+
51
+ - **A long hybrid query finds the chunks that hold several of its words.**
52
+ `stackbone rag query`, Studio's search dialog and
53
+ `POST /api/rag/collections/{name}/query` used to need every word of the
54
+ query in one chunk, so a long query found nothing by its exact terms. A query
55
+ of up to 3 words still needs all of them. From 4 words on, a chunk needs at
56
+ least 2 of them, `eur` and greetings or sign-offs (`hola`, `gracias`,
57
+ `saludo`, `regards`…) aside, and the chunks that hold more words rank first.
58
+ The response shape does not change. Splitting a text into one search per
59
+ question is an SDK option, `stackbone.rag.retrieve({ rewrite })`, that the box
60
+ route does not take (STA3-79).
61
+ - **On an OpenRouter box a decision model rules on the input guardrails.**
62
+ The content moderation, denied topics and prompt injection checks on a user
63
+ message (chat, voice and workflow input) are decided by `jev-1.13` in one
64
+ request to OpenRouter's `/systemone` endpoint. Each of these rules takes a
65
+ `threshold` from 0 to 1, default 0.7, that a score must reach to stop the
66
+ message; a lower value stops more. A value outside 0 to 1 fails the check.
67
+ The agent's reply is still judged by the checking model, which ignores the
68
+ threshold. When the decision model errors, takes longer than 1.5 seconds or
69
+ leaves a question unscored, the checking model decides and the box log says
70
+ why. A message the decision model stops carries the reason
71
+ `the decision model flagged it`, with no scores. A box on another provider,
72
+ or with no OpenRouter key, checks as before (STA3-58).
73
+ - **The box's own models follow the model provider when nobody picked one.**
74
+ The box lists the models its provider serves at boot and after every
75
+ provider save. The guardrail, eval judge and persona simulator models nobody
76
+ picked run on their code default while the provider serves it or the listing
77
+ has not answered, and on the `defaultModel` workspace setting when the
78
+ provider does not serve it. Studio's System screen shows that default, and the
79
+ memory card shows the one `memory.add` resolves the same way.
80
+ `POST /api/rag/collections` with no embedding model saves
81
+ `openai/text-embedding-3-small` as before, unless the provider does not serve
82
+ it: then the collection gets the first embedding model the provider serves,
83
+ probed for its dimension, and a provider that lists no embedding model
84
+ answers 400 `rag_embedding_model_required`. `stackbone rag collections create`
85
+ sends no embedding model, so it gets the same answer. An OpenRouter box keeps
86
+ today's models, and a model someone picked is never replaced (STA3-82).
87
+
88
+ ### Fixed
89
+
90
+ - **Rerank works from creator code in a box.** `retrieve({ rerank })` and
91
+ `client.ai.rerank.create` call the model through the box's model provider
92
+ proxy, which had no `rerank` route and answered 404, so every rerank fell
93
+ back to search order. The proxy now forwards it to the provider's `/rerank`,
94
+ and a model pinned to a provider goes to that provider (STA3-79).
95
+
10
96
  ## [0.8.0] - 2026-11-06
11
97
 
12
98
  ### Added