@stackbone/cli 0.5.3 → 0.6.0

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,105 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.6.0] - 2026-10-06
11
+
12
+ ### Added
13
+
14
+ - **A workflow's `export const description` reaches the Catalog.** The build
15
+ reads it next to `inputSchema`, `outputSchema` and `schedules`, and Studio's
16
+ Catalog card and entry header show it. No stage carried a workflow description
17
+ before, so every workflow card was blank. A value that is not a string is
18
+ ignored with a warning, never a failed build (PLA-1811).
19
+
20
+ - **`--agent` takes the agent slug.** Every surface that targets an
21
+ installation resolves `--agent astex-agent` to its installation id, the same
22
+ slug `agents list` prints first and `agents get` accepts. A slug with no agent
23
+ behind it says so and points at `agents list`, instead of the control plane's
24
+ "Internal server error" (PLA-1904).
25
+
26
+ - **`stackbone runs list --trigger <trigger>`.** Filters runs by what started
27
+ them, with the same vocabulary `runs get` prints (PLA-1717).
28
+
29
+ ### Changed
30
+
31
+ - **`stackbone dev` against a control plane on your machine opens no tunnel.**
32
+ When the control plane URL is loopback (`localhost`, `127.0.0.1`, `[::1]` or
33
+ a `*.localhost` name), the box registers its own `http://127.0.0.1:<port>`
34
+ URL on its local-dev installation and Studio's "Open Studio" link pins it.
35
+ No grant is minted and frpc does not start, so a local stack no longer needs
36
+ `STACKBONE_TUNNEL_TICKET_SIGNING_KEY`. Stopping the session clears the URL.
37
+ Any other control plane opens the tunnel as before (PLA-1989). The
38
+ "`frpc` is not installed" and `tunnel_relay_unhealthy` suggestions now say
39
+ the tunnel is mandatory against a deployed control plane, not everywhere
40
+ (PLA-1992).
41
+
42
+ - **A `stackbone dev` box behind the tunnel requires the identity token.** It
43
+ used to check no credential, so anyone holding the tunnel URL could reveal
44
+ secrets, run SQL and decide approvals. The box now verifies the control
45
+ plane's identity JWT, as a deployed box does, on REST, SSE, the vendor wires
46
+ (`/agui`, `/openai`, `/anthropic`) and `/mcp`. The CLI mints the token for its
47
+ own calls to the box (`secrets`, `db`, connector codegen) and Studio sends it
48
+ to the install's tunnel URL. `/`, `/api/contract` and health stay open.
49
+ Connector codegen refused with 401 or 403 leaves `connect.d.ts` untouched
50
+ (PLA-1864, PLA-1868, PLA-1869).
51
+
52
+ - **Workflow runs record the gate that started them.** A run's `trigger` is now
53
+ `manual`, `cron`, `event` (with the Connect link in `triggerRef`), `workflow`
54
+ for a parent workflow's child, or `platform` for the box's own errands, where
55
+ every workflow run used to read `workflow`. A start no gate stamped reads
56
+ `unknown`. `runs list` and `runs get` validate the trigger strictly, so a CLI
57
+ older than this release fails on a box that returns `platform` or `unknown`
58
+ (PLA-1717).
59
+
60
+ ### Fixed
61
+
62
+ - **A control plane with no tunnel configured says so.** `stackbone dev` used
63
+ to read it as a relay outage: three retries, then a pointer at
64
+ status.stackbone.ai for an outage that did not exist. The control plane now
65
+ answers `tunnel_not_configured`, and the CLI stops on the first one, with no
66
+ retry and no status page, and says that the control plane's operator has to
67
+ set the tunnel up. Exit code `1`, as for `tunnel_relay_unhealthy` (PLA-1991).
68
+
69
+ - **`stackbone logs --since 5` read the number as a date in 2001 and filtered
70
+ nothing.** A bare number is a duration with the unit forgotten; `--since`
71
+ and `--until` now reject it and suggest one, e.g. `5m` (PLA-1796).
72
+
73
+ ## [0.5.4] - 2026-10-01
74
+
75
+ ### Added
76
+
77
+ - **`stackbone dev` says why the tunnel closed.** When `frpc` stops after the
78
+ tunnel came up, `stackbone dev` keeps running and prints the cause: the
79
+ ticket reached its 8-hour limit, the control plane revoked the grant, or
80
+ another cause, with the last lines `frpc` printed. Each message says to
81
+ restart `stackbone dev` for a new URL. Before, the tunnel closed without a
82
+ word (PLA-1892).
83
+
84
+ ### Changed
85
+
86
+ - **`frpc` now sends the grant's signed ticket to the relay.** The ticket is
87
+ written to the `frpc` config as global metadata, with a heartbeat every 30
88
+ seconds so the relay sees it on every ping as well as on login. The shared
89
+ token is still sent. A control plane that mints no ticket still opens the
90
+ tunnel on the shared token alone (PLA-1892).
91
+
92
+ ### Fixed
93
+
94
+ - **An expired tunnel grant could clear the tunnel URL of an unrelated
95
+ `stackbone dev` session.** The control plane matched a lapsed grant to local
96
+ installations by searching their URL text for its subdomain, so one grant
97
+ could null another session's URL, in any organization. `stackbone dev` now
98
+ registers its local-dev installation before the tunnel opens, or registers it
99
+ again when the id in `.stackbone/project.json` no longer resolves, and sends
100
+ that id with the grant request. The control plane writes the tunnel URL when
101
+ it mints the grant and clears it on revoke or expiry, so the CLI no longer
102
+ PATCHes the URL on start or on Ctrl-C. If no installation can be registered,
103
+ the tunnel still opens, with an unbound grant (PLA-1691).
104
+
105
+ - **`stackbone logs --since 5` read the number as a date in 2001 and filtered
106
+ nothing.** A bare number is a duration with the unit forgotten; `--since`
107
+ and `--until` now reject it and suggest one, e.g. `5m` (PLA-1796).
108
+
10
109
  ## [0.5.3] - 2026-09-25
11
110
 
12
111
  ### Fixed
package/README.md CHANGED
@@ -1,21 +1,22 @@
1
1
  # @stackbone/cli
2
2
 
3
- The CLI for [Stackbone](https://stackbone.ai) — the marketplace and runtime for containerized AI agents.
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 without publishing.
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
 
@@ -45,7 +46,7 @@ Run any command with `--help` for the full flag reference. The full documentatio
45
46
  ## Links
46
47
 
47
48
  - Documentation: <https://docs.stackbone.ai>
48
- - Marketplace: <https://stackbone.ai>
49
+ - Website: <https://stackbone.ai>
49
50
  - Issues & feedback: contact the team directly.
50
51
 
51
52
  ## License