@stackbone/cli 0.3.3 → 0.3.5

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,167 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.5] - 2026-08-27
11
+
12
+ ### Added
13
+
14
+ - **`stackbone dev` boots a workspace that declares nothing of the creator's
15
+ yet.** A workspace from `stackbone init --with empty` used to be refused
16
+ outright. It now boots and prints a notice naming what is missing, so the
17
+ control surface, the box API reference and the emulator are all reachable
18
+ before the first workflow exists (PLA-775).
19
+
20
+ - **`prompts publish`, `prompts unpublish` and `prompts remove-version`.**
21
+ Writing a prompt and choosing which version runs are two separate steps now.
22
+ `publish --version <n>` points the agent at an existing version without
23
+ copying its text forward; `unpublish` takes that pointer away;
24
+ `remove-version` deletes one stored version.
25
+
26
+ - **A prompt belongs to a workflow or an agent, not to the workspace.** Every
27
+ `prompts` verb takes owner flags naming which workflow or deep agent holds the
28
+ key, so two agents can carry the same key without colliding.
29
+
30
+ - **The build inventories the prompt keys the creator's code asks for.** The
31
+ scan reads the source with an AST rather than running it, and records each
32
+ catalogue lookup: the key, the variable names handed over, and the workflow or
33
+ deep agent whose source made the call. A key written in Studio that no line of
34
+ code reads, and a key read by code that nothing ever wrote, are both visible
35
+ from the inventory.
36
+
37
+ - **The boot output names the box's own API reference.** `dev` prints where the
38
+ box serves its OpenAPI document and Scalar reference alongside the rest of the
39
+ banner (PLA-857).
40
+
41
+ - **`link` says where each installation resolves.** A box registered against a
42
+ deployment now shows its target in the listing instead of reading as
43
+ unregistered, and the box is told which installation its deployment resolves
44
+ through.
45
+
46
+ ### Fixed
47
+
48
+ - **`dev` ends the session on one Ctrl-C, whatever the teardown does.** A
49
+ teardown step that never settled used to leave the session alive past the
50
+ first interrupt.
51
+
52
+ - **The workflow validator sidecar loads inside the image.** It is bundled
53
+ self-contained, so `/start` validation no longer depends on files the image
54
+ does not carry. When it still cannot load, validation falls back to a
55
+ structural check rather than accepting anything (PLA-394).
56
+
57
+ - **`link --url` is no longer offered as the remedy for a local-dev install.**
58
+ It never applied to one.
59
+
60
+ - **A deployment link that was just registered says it cannot be reached yet**,
61
+ instead of reading as though the box were already live.
62
+
63
+ - **Agent ids are pointed at where they come from**, not at the local emulator.
64
+
65
+ - **Packaging a box tells the operator where its telemetry goes** (PLA-744).
66
+
67
+ - **The scaffolded `.gitignore` also ignores a `node_modules` symlink.**
68
+
69
+ - **The dev watcher specs no longer flake on macOS.**
70
+
71
+ ### Removed
72
+
73
+ - **BREAKING: `prompts rollback` is gone.** It copied an older version's text
74
+ forward into a new version. `prompts publish --version <n>` replaces it by
75
+ moving the pointer to the version that already exists, leaving no duplicate
76
+ text behind.
77
+
78
+ ## [0.3.4] - 2026-08-19
79
+
80
+ ### Added
81
+
82
+ - **`stackbone init` installs the workspace dependencies itself.** After the
83
+ files are written it runs `pnpm install` when `pnpm` answers on `PATH` and
84
+ `npm install` otherwise, so the workspace is ready for `stackbone dev` the
85
+ moment the command returns. The scaffold works under both: its `.npmrc` pins
86
+ a hoisted `node_modules`, its root `package.json` now declares the
87
+ `workflows` subpackage in a `workspaces` field as well as in
88
+ `pnpm-workspace.yaml` (npm does not read the yaml), and neither `build` nor
89
+ `package` install from the workspace. Best-effort like the coding-agent setup: a failed
90
+ install prints the package manager's last lines as a warning, the command still
91
+ exits `0`, and the "Next steps" note keeps the `<pm> install` line — naming
92
+ the manager that ran, not a hard-coded `pnpm`. `--no-install` skips the step.
93
+ The JSON envelope gains `dependencies: { status, package_manager, error? }`
94
+ (`installed` | `failed` | `skipped`).
95
+
96
+ ### Changed
97
+
98
+ - **`stackbone init` and `stackbone link` ask which coding agents you use, and
99
+ that one answer installs the skills AND configures the documentation MCP
100
+ server.** The CLI used to guess: it called `npx skills` with no agent list and
101
+ let upstream detection decide where to copy. That detection is
102
+ `existsSync(~/.<agent>)`, so a leftover directory from an old `skills add -g`
103
+ made every later `init` copy into tools the creator had never opened, and when
104
+ it detected nothing at all it installed into every known agent. There is now a
105
+ multiselect of the seven supported agents (Claude Code, Cursor, GitHub
106
+ Copilot, Gemini CLI, Windsurf, Cline, Codex) with the ones present on disk
107
+ pre-ticked, and whatever you tick gets both halves: the four agent skills, and
108
+ a `stackbone-docs` entry in that agent's own MCP configuration. Zero is a
109
+ valid answer.
110
+
111
+ The seven MCP entries do **not** share a shape, and that is registry data
112
+ rather than branches in code: VS Code keys its map `servers`, not
113
+ `mcpServers`; Gemini CLI reads `httpUrl` and treats `url` as SSE; Windsurf
114
+ reads `serverUrl`; Cline spells the transport `streamableHttp` in that exact
115
+ casing (with `streamable-http` it falls back to SSE and the endpoint answers
116
+ 405); and Codex is TOML. Every wrong shape parses without complaining and then
117
+ fails to connect, which is the worst failure we could ship because the creator
118
+ sees a config file that looks right. Every write MERGES: the other MCP servers
119
+ in the file survive, so do foreign root keys (`inputs` in `.vscode/mcp.json`),
120
+ and an existing `stackbone-docs` entry is left byte for byte as it is, because
121
+ the creator may have edited it. A file we cannot parse is left untouched and
122
+ that one target is marked `failed`; the rest are still written.
123
+
124
+ The four project-scoped MCP files (`.mcp.json`, `.cursor/mcp.json`,
125
+ `.vscode/mcp.json`, `.gemini/settings.json`) are deliberately NOT added to the
126
+ `.gitignore` block: they are meant to be committed, so a teammate who clones
127
+ the repository inherits the documentation server without running anything.
128
+
129
+ **Breaking.** In non-interactive mode (`--json`, `--yes`, no TTY, or `CI` set
130
+ in the environment) `init` and `link` now install **nothing** unless you pass
131
+ `--agents <list>`. `stackbone init --json` used to install the skills for
132
+ whichever agents were auto-detected; it now installs none. A multiselect fired
133
+ under `--json` would hang a pipeline forever with nothing on stdout to explain
134
+ it, so the gate is hard. Any script or CI job that relied on `init --json`
135
+ leaving the skills in place has to add `--agents claude-code,cursor,…`.
136
+ `--no-agents` is the explicit switch for setting nothing up.
137
+
138
+ The JSON envelope of both commands changes with it: `skills_install` is gone
139
+ and `agent_setup` takes its place, shaped
140
+ `{ ok, selected, steps: { skills, mcp } }` where `mcp` carries a per-agent
141
+ status (`written` | `already` | `failed` | `skipped`). The shape stays constant
142
+ even when nothing is selected, so an agent reading the output never has to
143
+ branch on a missing block.
144
+
145
+ - **`stackbone docs` hands over MCP connection details instead of printing the
146
+ documentation.** The CLI used to compile a copy of the wiki into the binary
147
+ and render a page inline (`stackbone docs cli/commands`). That copy was 544 KB
148
+ of a 2.8 MB bundle, it had no search so the reader had to guess an exact topic
149
+ key, and an old install could hand out documentation that quietly disagreed
150
+ with the live site. The wiki now serves the same pages over MCP at
151
+ `https://docs.stackbone.ai/mcp`, which searches by meaning and always reflects
152
+ the current deploy, so the command's job is the connection details: the
153
+ endpoint, the `claude mcp add` one-liner, and the `mcpServers` block every
154
+ other client accepts. `--json` returns them structured, with
155
+ `install.mcpServers` ready to write into a client config without parsing the
156
+ human output.
157
+
158
+ **Breaking.** Passing a topic now exits `4` and names the replacement rather
159
+ than rendering a page. Rejecting the argument beats ignoring it: a script that
160
+ still passes one finds out, instead of silently reading a help screen where it
161
+ expected a reference page. The binary lost ~518 KB.
162
+
163
+ ### Removed
164
+
165
+ - **The wiki-to-CLI documentation sync.** `apps/cli/src/docs/` (including the
166
+ generated `topics.generated.ts`), the `sync-docs` and `sync-docs:check` Nx
167
+ targets, the `cli:sync-docs` / `cli:sync-docs:check` workspace scripts, and the
168
+ `sync-docs` dependency of `cli:build`. Nothing regenerates into the binary any
169
+ more, so nothing can drift against it.
170
+
10
171
  ## [0.3.3] - 2026-08-11
11
172
 
12
173
  ### Added
package/README.md CHANGED
@@ -19,23 +19,23 @@ That's it. `init` scaffolds a new workspace shell (agents + workflows + coding-a
19
19
 
20
20
  ## Commands
21
21
 
22
- | Command | What it does |
23
- | ----------------------------- | ---------------------------------------------------------------------- |
24
- | `stackbone init [name]` | Scaffold a new workspace shell and link it to your org (needs login). |
25
- | `stackbone add <kind> <name>` | Add an agent / workflow / workflow-agent to the workspace (offline). |
26
- | `stackbone dev` | Boot the whole workspace locally + Stackbone Studio. |
27
- | `stackbone workflows <verb>` | List, inspect the schema of, or start the install's workflows. |
28
- | `stackbone build` | Compile the workspace into the bundle your container image bakes in. |
29
- | `stackbone login` / `logout` | Authenticate the CLI via the device-code flow (RFC 8628). |
30
- | `stackbone whoami` | Show the active user and organization. |
31
- | `stackbone current` | Print the organization currently linked to this session. |
32
- | `stackbone link` | Link the current directory to an existing organization + agent. |
33
- | `stackbone list` | List organizations the current user owns. |
34
- | `stackbone metadata` | Agent-friendly snapshot of the workspace state. |
35
- | `stackbone db <subcmd>` | Manage the local emulator database (migrations, queries). |
36
- | `stackbone docs <topic>` | Print Stackbone documentation inline. Run with no args to list topics. |
37
-
38
- Run any command with `--help` for the full flag reference, or `npx @stackbone/cli docs cli` for the inline documentation.
22
+ | Command | What it does |
23
+ | ----------------------------- | --------------------------------------------------------------------- |
24
+ | `stackbone init [name]` | Scaffold a new workspace shell and link it to your org (needs login). |
25
+ | `stackbone add <kind> <name>` | Add an agent / workflow / workflow-agent to the workspace (offline). |
26
+ | `stackbone dev` | Boot the whole workspace locally + Stackbone Studio. |
27
+ | `stackbone workflows <verb>` | List, inspect the schema of, or start the install's workflows. |
28
+ | `stackbone build` | Compile the workspace into the bundle your container image bakes in. |
29
+ | `stackbone login` / `logout` | Authenticate the CLI via the device-code flow (RFC 8628). |
30
+ | `stackbone whoami` | Show the active user and organization. |
31
+ | `stackbone current` | Print the organization currently linked to this session. |
32
+ | `stackbone link` | Link the current directory to an existing organization + agent. |
33
+ | `stackbone list` | List organizations the current user owns. |
34
+ | `stackbone metadata` | Agent-friendly snapshot of the workspace state. |
35
+ | `stackbone db <subcmd>` | Manage the local emulator database (migrations, queries). |
36
+ | `stackbone docs` | Show how to reach the documentation over MCP. |
37
+
38
+ Run any command with `--help` for the full flag reference. The full documentation lives at <https://docs.stackbone.ai>, and is also served to coding agents over MCP at <https://docs.stackbone.ai/mcp> — run `stackbone docs` for the connection details.
39
39
 
40
40
  ## Requirements
41
41
 
@@ -46,7 +46,7 @@ Run any command with `--help` for the full flag reference, or `npx @stackbone/cl
46
46
 
47
47
  - Documentation: <https://docs.stackbone.ai>
48
48
  - Marketplace: <https://stackbone.ai>
49
- - Issues & feedback: report via `stackbone docs feedback` once authenticated, or contact the team directly.
49
+ - Issues & feedback: contact the team directly.
50
50
 
51
51
  ## License
52
52