@stackbone/cli 0.2.6 → 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 +77 -0
- package/main.js +26442 -26594
- package/migrations/0026_trigger_subscriptions_correlation_key.sql +9 -0
- package/migrations/0027_trigger_deliveries_resumed_status.sql +19 -0
- package/package.json +3 -3
- package/stackbone-cli-0.2.8.tgz +0 -0
- package/stackbone-cli-0.2.6.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,83 @@ 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
|
+
|
|
57
|
+
## [0.2.7] - 2026-07-21
|
|
58
|
+
|
|
59
|
+
### Removed
|
|
60
|
+
|
|
61
|
+
- **`stackbone publish` is gone**, together with the control-plane builds
|
|
62
|
+
pipeline behind it. An agent no longer has a "build" you promote: its version
|
|
63
|
+
is simply the image tag on its BYOC deployment. Deploy the image yourself and
|
|
64
|
+
register it with `stackbone link`.
|
|
65
|
+
- **`stackbone openrouter get` / `stackbone openrouter models` are gone.** The
|
|
66
|
+
model provider is now configured by the operator on the Studio "Model
|
|
67
|
+
provider" screen instead of being provisioned per organisation.
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- **`stackbone link` registers the deployment.** It now sends the hand-deployed
|
|
72
|
+
agent's public URL, HMAC secret and image tag to the deployment registry
|
|
73
|
+
alongside the local-dev install it already linked. The three flags are
|
|
74
|
+
validated before any network call, and re-running `link` is idempotent
|
|
75
|
+
because the endpoint upserts server-side.
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
|
|
79
|
+
- **`stackbone dev` resolves the model provider locally.** It no longer asks the
|
|
80
|
+
control plane for the organisation's key. A shell `MODEL_PROVIDER_API_KEY` /
|
|
81
|
+
`MODEL_PROVIDER_BASE_URL` wins (the older `OPENROUTER_*` names still work as
|
|
82
|
+
an alias); failing that it reads whatever the operator configured on the
|
|
83
|
+
Studio "Model provider" screen, which survives restarts because it lives in
|
|
84
|
+
the emulator's own Postgres. With neither, `client.ai` returns a non-fatal
|
|
85
|
+
404 and every other surface keeps working.
|
|
86
|
+
|
|
10
87
|
## [0.2.3] - 2026-07-06
|
|
11
88
|
|
|
12
89
|
### Fixed
|