@stackbone/cli 0.5.4 → 0.6.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,96 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.6.1] - 2026-10-08
11
+
12
+ ### Added
13
+
14
+ - **`stackbone dev` says so when the organization's trial has ended.** The
15
+ control plane refuses the tunnel grant and the local registration of an
16
+ organization whose trial is over with `trial_expired`. The CLI prints that
17
+ the trial ended, that nothing was deleted and how to continue, exits `5`, and
18
+ does not retry. `stackbone init` reads the same refusal the same way. A
19
+ session that was already running keeps running (PLA-2036).
20
+ - **`stackbone link` stops at an ended trial too.** The control plane now also
21
+ refuses `trial_expired` when an organization whose trial is over registers a
22
+ box (`link`) or creates a workspace (`init`), so both commands print the same
23
+ trial-ended message and exit `5` (PLA-2037).
24
+
25
+ ### Security
26
+
27
+ - **A `stackbone dev` box no longer verifies connector calls with a key from
28
+ the public repo.** Every dev box signed `/api/connect/*` with the same
29
+ constant and encrypted connected accounts under the same key, so anyone
30
+ holding a tunnel URL could mint tokens for the creator's Gmail, Slack or
31
+ HubSpot. Each dev box now mints its own pair on its first boot and keeps it
32
+ in its own dev Postgres, next to the connections it protects. Connections
33
+ made with an older CLI are moved onto the new key at boot and keep working;
34
+ one that no known key can open is removed with a warning, and you reconnect
35
+ it in Studio (PLA-1866).
36
+
37
+ ## [0.6.0] - 2026-10-06
38
+
39
+ ### Added
40
+
41
+ - **A workflow's `export const description` reaches the Catalog.** The build
42
+ reads it next to `inputSchema`, `outputSchema` and `schedules`, and Studio's
43
+ Catalog card and entry header show it. No stage carried a workflow description
44
+ before, so every workflow card was blank. A value that is not a string is
45
+ ignored with a warning, never a failed build (PLA-1811).
46
+
47
+ - **`--agent` takes the agent slug.** Every surface that targets an
48
+ installation resolves `--agent astex-agent` to its installation id, the same
49
+ slug `agents list` prints first and `agents get` accepts. A slug with no agent
50
+ behind it says so and points at `agents list`, instead of the control plane's
51
+ "Internal server error" (PLA-1904).
52
+
53
+ - **`stackbone runs list --trigger <trigger>`.** Filters runs by what started
54
+ them, with the same vocabulary `runs get` prints (PLA-1717).
55
+
56
+ ### Changed
57
+
58
+ - **`stackbone dev` against a control plane on your machine opens no tunnel.**
59
+ When the control plane URL is loopback (`localhost`, `127.0.0.1`, `[::1]` or
60
+ a `*.localhost` name), the box registers its own `http://127.0.0.1:<port>`
61
+ URL on its local-dev installation and Studio's "Open Studio" link pins it.
62
+ No grant is minted and frpc does not start, so a local stack no longer needs
63
+ `STACKBONE_TUNNEL_TICKET_SIGNING_KEY`. Stopping the session clears the URL.
64
+ Any other control plane opens the tunnel as before (PLA-1989). The
65
+ "`frpc` is not installed" and `tunnel_relay_unhealthy` suggestions now say
66
+ the tunnel is mandatory against a deployed control plane, not everywhere
67
+ (PLA-1992).
68
+
69
+ - **A `stackbone dev` box behind the tunnel requires the identity token.** It
70
+ used to check no credential, so anyone holding the tunnel URL could reveal
71
+ secrets, run SQL and decide approvals. The box now verifies the control
72
+ plane's identity JWT, as a deployed box does, on REST, SSE, the vendor wires
73
+ (`/agui`, `/openai`, `/anthropic`) and `/mcp`. The CLI mints the token for its
74
+ own calls to the box (`secrets`, `db`, connector codegen) and Studio sends it
75
+ to the install's tunnel URL. `/`, `/api/contract` and health stay open.
76
+ Connector codegen refused with 401 or 403 leaves `connect.d.ts` untouched
77
+ (PLA-1864, PLA-1868, PLA-1869).
78
+
79
+ - **Workflow runs record the gate that started them.** A run's `trigger` is now
80
+ `manual`, `cron`, `event` (with the Connect link in `triggerRef`), `workflow`
81
+ for a parent workflow's child, or `platform` for the box's own errands, where
82
+ every workflow run used to read `workflow`. A start no gate stamped reads
83
+ `unknown`. `runs list` and `runs get` validate the trigger strictly, so a CLI
84
+ older than this release fails on a box that returns `platform` or `unknown`
85
+ (PLA-1717).
86
+
87
+ ### Fixed
88
+
89
+ - **A control plane with no tunnel configured says so.** `stackbone dev` used
90
+ to read it as a relay outage: three retries, then a pointer at
91
+ status.stackbone.ai for an outage that did not exist. The control plane now
92
+ answers `tunnel_not_configured`, and the CLI stops on the first one, with no
93
+ retry and no status page, and says that the control plane's operator has to
94
+ set the tunnel up. Exit code `1`, as for `tunnel_relay_unhealthy` (PLA-1991).
95
+
96
+ - **`stackbone logs --since 5` read the number as a date in 2001 and filtered
97
+ nothing.** A bare number is a duration with the unit forgotten; `--since`
98
+ and `--until` now reject it and suggest one, e.g. `5m` (PLA-1796).
99
+
10
100
  ## [0.5.4] - 2026-10-01
11
101
 
12
102
  ### Added
package/README.md CHANGED
@@ -2,20 +2,21 @@
2
2
 
3
3
  The CLI for [Stackbone](https://stackbone.ai): scaffold, run and deploy agents and workflows written in TypeScript, on Stackbone Cloud or your own infrastructure.
4
4
 
5
- > **Status:** `alpha`. The contract may break between releases. Pin a version or rely on the `alpha` dist-tag.
5
+ > **Status:** `alpha`. The contract may break between releases. Pin a version or stay on the `latest` dist-tag.
6
6
 
7
7
  ## Quick start
8
8
 
9
- No install required — invoke the CLI through `npx`:
9
+ Install the CLI once, globally. The same command updates it:
10
10
 
11
11
  ```bash
12
- npx @stackbone/cli login
13
- npx @stackbone/cli init my-workspace
14
- cd my-workspace && npm install
15
- npx @stackbone/cli dev
12
+ pnpm add -g @stackbone/cli@latest
13
+ stackbone login
14
+ stackbone init my-workspace
15
+ cd my-workspace
16
+ stackbone dev
16
17
  ```
17
18
 
18
- That's it. `init` scaffolds a new workspace shell (agents + workflows + coding-agent skills) and links it to your organization, so you sign in first; `dev` boots the whole workspace locally (Postgres, Redis, MinIO and Stackbone Studio at `http://localhost:4242`) so you can iterate before you deploy.
19
+ That's it. `init` scaffolds a new workspace shell (agents + workflows + coding-agent skills), installs its dependencies with `pnpm install` and links it to your organization, so you sign in first; `dev` boots the whole workspace locally (Postgres, Redis, MinIO and Stackbone Studio at `http://localhost:4242`) so you can iterate before you deploy.
19
20
 
20
21
  ## Commands
21
22