@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 +118 -0
- package/README.md +1 -1
- package/main.js +32765 -18687
- package/migrations/0028_browser_provider_system_secrets.sql +39 -0
- package/migrations/0029_workspace_settings.sql +37 -0
- package/migrations/0030_run_steps_connection_hook.sql +27 -0
- package/migrations/0031_recurring_job_executions.sql +51 -0
- package/migrations/0032_run_steps_external_step_id.sql +48 -0
- package/migrations/0033_runtime_identity.sql +25 -0
- package/migrations/0034_guardrails.sql +92 -0
- package/migrations/0035_run_steps_guardrail.sql +41 -0
- package/migrations/0036_guardrail_attachment_units.sql +61 -0
- package/migrations/0037_runs_entity_kind.sql +45 -0
- package/migrations/0038_evals.sql +272 -0
- package/migrations/0039_eval_case_results_idempotency.sql +22 -0
- package/migrations/0040_eval_case_results_run_idx.sql +27 -0
- package/package.json +2 -1
- package/runtime-deps/@stackbone/workflow-world/index.js +71 -71
- package/stackbone-cli-0.2.10.tgz +0 -0
- package/stackbone-cli-0.2.7.tgz +0 -0
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
|
|
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. |
|