@stackbone/cli 0.2.7 → 0.2.8

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,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.8] - 2026-07-22
11
+
12
+ ### Fixed
13
+
14
+ - **A failing run no longer takes down `stackbone dev`.** The start-and-wait
15
+ path read `Run.returnValue` twice, and that property is a getter that starts
16
+ a fresh poll on every read — so the first read produced a promise nobody was
17
+ awaiting. While runs succeeded nobody noticed; a FAILED run rejected that
18
+ orphan, Node escalated it to an uncaught exception, and the whole dev process
19
+ died. One failing Auto-map was enough to lose the emulator mid-session. The
20
+ getter is now read once: a failed run returns a 502 and the same process keeps
21
+ serving.
22
+ - **Auto-map now proposes expressions that actually resolve.** The suggestion
23
+ prompt handed the model one `{ sourceSample, targetSchema }` envelope, so it
24
+ wrote paths relative to that envelope (`sourceSample.subject`) — they parse
25
+ cleanly, the editor accepts them, and then they match nothing against a real
26
+ event. It also invented `upperCase` for JSONata's `$uppercase`, which only
27
+ fails at evaluation time. The two documents are now passed as separately
28
+ labelled blocks, the event itself is stated as the root context, and only
29
+ `$`-prefixed builtins are allowed. A plain copy is asked for as a bare field
30
+ reference too, unless the target field's type, format, enum or description
31
+ genuinely asks for a shape.
32
+ - **An agent no longer loses every surface because the runtime advertises one
33
+ unknown capability.** The contract's capability list was validated as a strict
34
+ enum, so a single unrecognised entry failed the whole document and took `ai`,
35
+ `storage`, `rag`, `queues`, `secrets`, `config` and `approval` down with it —
36
+ even though capability membership is additive by design. It is validated as
37
+ plain strings now, so an unknown capability is simply one no gate matches.
38
+
39
+ ### Changed
40
+
41
+ - **`stackbone link` proves `--secret` against the container before it registers
42
+ anything.** It signs a challenge to the box's public
43
+ `GET /api/proxy-challenge`, which verifies it against the `HMAC_SECRET` the
44
+ container was actually booted with, and registers the deployment only on a
45
+ 2xx. A mistyped or stale secret now fails right there with an actionable
46
+ error and nothing is persisted, instead of surfacing later as a fully broken
47
+ Studio proxy. Deployments registered before this need a re-link.
48
+ - **Connector credentials live in the agent's own box.** The Connect broker —
49
+ connector registrations with their write-only `client_secret`, the grants, the
50
+ OAuth code exchange and the token cache — runs inside the box and is encrypted
51
+ under the box key; the control plane only forwards to it and holds none of it
52
+ at rest. `stackbone dev` keeps its existing dev fallbacks, and now also arms
53
+ the proactive token-refresh worker whenever Redis is up — including in a
54
+ workspace that only has deep agents and no workflows, so a local session
55
+ refreshes expiring grants the same way the production image does.
56
+
10
57
  ## [0.2.7] - 2026-07-21
11
58
 
12
59
  ### Removed