@stackbone/cli 0.2.7 → 0.2.10

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,124 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.10] - 2026-08-02
11
+
12
+ ### Added
13
+
14
+ - **`stackbone eval <suite>` runs a saved evaluation suite from the terminal
15
+ and fails the command when it misses its pass mark.** The suite has to
16
+ already exist on the box — nothing is defined from the terminal, so the CLI
17
+ and the Studio screen can never disagree about what was tested. A run that
18
+ was stopped, that broke, or that finished having measured fewer cases than
19
+ it planned is also a failing gate, with the reason printed before the
20
+ failure; a run cut short by the suite's own case cap is not. The summary
21
+ links straight to the run in Studio, and `Ctrl-C` / `--timeout` stop the
22
+ watcher, never the run.
23
+ - **`stackbone link` reports whether the box is verifying browser identity.**
24
+ A box that never got an identity configuration looks healthy from every
25
+ angle while Studio silently keeps reaching it through the control-plane
26
+ proxy. `link` now prints a warning (and includes it in `--json`) naming
27
+ `STACKBONE_CONTROL_PLANE_URL` and what it costs until it is set.
28
+
29
+ ### Changed
30
+
31
+ - **Every Studio command now reaches a BYOC box directly instead of going
32
+ through the control plane, the same datapath the browser already uses.**
33
+ Commands mint a short-lived identity token off the CLI's own session
34
+ instead of sending the operator's control-plane credentials to the box, and
35
+ retry once on a token expiry. A deployment that isn't registered, or a
36
+ session that can't mint a token, still falls back to the control-plane
37
+ proxy — but a registered box that simply doesn't answer now surfaces as a
38
+ real connection error instead of a silent proxy retry.
39
+ - **`stackbone dev`: one broken workflow file no longer empties the whole
40
+ catalog.** A `*.workflow.ts` that fails to compile now shows up in the
41
+ catalog with its own error, the same way a broken deep agent always has,
42
+ instead of taking every other workflow in the workspace down with it.
43
+
44
+ ### Fixed
45
+
46
+ - **Commands against a deleted or unregistered deployment fail with a clear,
47
+ specific error instead of a raw `Cannot GET ...` from a route that no
48
+ longer exists.** Each failure mode — no box registered, session can't
49
+ authenticate, box registered but unreachable — gets its own message and
50
+ remedy (`stackbone link`, `stackbone login`, or a plain connection error).
51
+ - **New projects no longer scaffold a `stackbone publish` script that doesn't
52
+ exist.** The generated `package.json` and the `AGENTS.md` / `CLAUDE.md`
53
+ templates now point at `build`, the command that actually ships.
54
+
55
+ ## [0.2.9] - 2026-07-28
56
+
57
+ ### Changed
58
+
59
+ - **The scaffolded README and the inline docs describe the guided first run.**
60
+ `stackbone init` used to hand you a README documenting exactly the path that
61
+ fails on a clean machine: install, run the dev command, done. It now says the
62
+ first `stackbone dev` stops before your code, prints a Studio link to point the
63
+ deployment at a **model provider**, and starts your workspace the moment you
64
+ save. The environment escape hatch (`MODEL_PROVIDER_BASE_URL` /
65
+ `MODEL_PROVIDER_API_KEY`) is documented next to it, under the neutral names.
66
+ The scaffolded `AGENTS.md` says the same thing to your coding agent, and no
67
+ longer claims a bare model id is "resolved through OpenRouter".
68
+ - **`stackbone docs cli/local-development` documents the boot gate**: the real
69
+ stage order (the emulator and tunnel come up before the gate, your workflows
70
+ and agents after it), the two ways the gate opens (a model provider resolves,
71
+ or somebody completed the first run), the `gate` object in `--json`, and how to
72
+ run the guided setup again from Studio. The old promise that a workspace with
73
+ no provider "boots fine" and only `client.ai` 404s is gone: it was never true
74
+ for the agent `init` scaffolds. `cli/commands`, `cli/configuration`,
75
+ `cli/getting-started` and `cli/troubleshooting` follow, with a new
76
+ troubleshooting entry that tells "waiting for a model provider" apart from
77
+ "your agent has a bug".
78
+ - **`stackbone init` no longer implies the dev command runs with nothing
79
+ configured.** Its "Next steps" note says the first run stops for setup.
80
+
81
+ ## [0.2.8] - 2026-07-22
82
+
83
+ ### Fixed
84
+
85
+ - **A failing run no longer takes down `stackbone dev`.** The start-and-wait
86
+ path read `Run.returnValue` twice, and that property is a getter that starts
87
+ a fresh poll on every read — so the first read produced a promise nobody was
88
+ awaiting. While runs succeeded nobody noticed; a FAILED run rejected that
89
+ orphan, Node escalated it to an uncaught exception, and the whole dev process
90
+ died. One failing Auto-map was enough to lose the emulator mid-session. The
91
+ getter is now read once: a failed run returns a 502 and the same process keeps
92
+ serving.
93
+ - **Auto-map now proposes expressions that actually resolve.** The suggestion
94
+ prompt handed the model one `{ sourceSample, targetSchema }` envelope, so it
95
+ wrote paths relative to that envelope (`sourceSample.subject`) — they parse
96
+ cleanly, the editor accepts them, and then they match nothing against a real
97
+ event. It also invented `upperCase` for JSONata's `$uppercase`, which only
98
+ fails at evaluation time. The two documents are now passed as separately
99
+ labelled blocks, the event itself is stated as the root context, and only
100
+ `$`-prefixed builtins are allowed. A plain copy is asked for as a bare field
101
+ reference too, unless the target field's type, format, enum or description
102
+ genuinely asks for a shape.
103
+ - **An agent no longer loses every surface because the runtime advertises one
104
+ unknown capability.** The contract's capability list was validated as a strict
105
+ enum, so a single unrecognised entry failed the whole document and took `ai`,
106
+ `storage`, `rag`, `queues`, `secrets`, `config` and `approval` down with it —
107
+ even though capability membership is additive by design. It is validated as
108
+ plain strings now, so an unknown capability is simply one no gate matches.
109
+
110
+ ### Changed
111
+
112
+ - **`stackbone link` proves `--secret` against the container before it registers
113
+ anything.** It signs a challenge to the box's public
114
+ `GET /api/proxy-challenge`, which verifies it against the `HMAC_SECRET` the
115
+ container was actually booted with, and registers the deployment only on a
116
+ 2xx. A mistyped or stale secret now fails right there with an actionable
117
+ error and nothing is persisted, instead of surfacing later as a fully broken
118
+ Studio proxy. Deployments registered before this need a re-link.
119
+ - **Connector credentials live in the agent's own box.** The Connect broker —
120
+ connector registrations with their write-only `client_secret`, the grants, the
121
+ OAuth code exchange and the token cache — runs inside the box and is encrypted
122
+ under the box key; the control plane only forwards to it and holds none of it
123
+ at rest. `stackbone dev` keeps its existing dev fallbacks, and now also arms
124
+ the proactive token-refresh worker whenever Redis is up — including in a
125
+ workspace that only has deep agents and no workflows, so a local session
126
+ refreshes expiring grants the same way the production image does.
127
+
10
128
  ## [0.2.7] - 2026-07-21
11
129
 
12
130
  ### Removed
package/README.md CHANGED
@@ -25,7 +25,7 @@ That's it. `init` scaffolds a new workspace shell (agents + workflows + coding-a
25
25
  | `stackbone add <kind> <name>` | Add an agent / workflow / workflow-agent to the workspace (offline). |
26
26
  | `stackbone dev` | Boot the whole workspace locally + Stackbone Studio. |
27
27
  | `stackbone workflows <verb>` | List, inspect the schema of, or start the install's workflows. |
28
- | `stackbone publish` | Compile every agent + workflow and pack the workspace bundle. |
28
+ | `stackbone build` | Compile the workspace into the bundle your container image bakes in. |
29
29
  | `stackbone login` / `logout` | Authenticate the CLI via the device-code flow (RFC 8628). |
30
30
  | `stackbone whoami` | Show the active user and organization. |
31
31
  | `stackbone current` | Print the organization currently linked to this session. |