@vectros-ai/cli 0.14.0 → 0.15.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/AUTHORING.md CHANGED
@@ -166,6 +166,20 @@ seed:
166
166
  # Seeds are illustrative sample data. They're applied by default; provision a
167
167
  # production context with `bootstrap --no-seed` to skip them (schemas + key
168
168
  # still apply).
169
+
170
+ issuers:
171
+ - issuerId: auth0-prod # your slug; 3-31 chars, lowercase letter first
172
+ issuer: "https://your-tenant.us.auth0.com/"
173
+ jwksUri: "https://your-tenant.us.auth0.com/.well-known/jwks.json"
174
+ audience: "https://api.your-app.example.com" # globally unique per (issuer, audience)
175
+ contextId: my-thing # which app context an exchanged token targets
176
+ # Optional trusted third-party IdP issuers (BYO-IdP token exchange). Applied
177
+ # in the BOOTSTRAP-token phase, alongside app-context/service-principal
178
+ # creation — NOT the same phase as schemas/accessProfile/roles above (see
179
+ # BLUEPRINT_FIELD_PHASES, exported by @vectros-ai/blueprints). Registration
180
+ # is create-once: re-applying an already-registered issuerId leaves it
181
+ # unchanged — there's no update, so an edited jwksUri/audience on a live
182
+ # issuer won't take effect via re-apply.
169
183
  ```
170
184
 
171
185
  YAML or JSON are both accepted (chosen by extension). The bundled library is
@@ -284,7 +298,10 @@ reference Y", add the reference field to `lookupFields` as an equality lookup
284
298
  ### The scope gate — what you can and can't request
285
299
 
286
300
  The gate allows only **data-plane** resources:
287
- `records`, `schemas`, `search`, `documents`, `folders`, `inference`.
301
+ `records`, `schemas`, `search`, `documents`, `folders`, `inference`, `entities`
302
+ (per-namespace identity-entity CRUD — `org`/`client`/any namespace you
303
+ registered — ownership-gated the same way as `records`; it grants no
304
+ authority over the namespace *registry* itself, which stays root-key-only).
288
305
  Operations are `c|r|u|d`, combinable (`records:cru`), with a per-resource
289
306
  wildcard (`records:*`). Anything else — control-plane resources or the bare
290
307
  `*` — is rejected, and there is **intentionally no override flag**. This is
package/CHANGELOG.md CHANGED
@@ -3,6 +3,68 @@
3
3
  All notable changes to `@vectros-ai/cli` are documented here.
4
4
  This project adheres to [Semantic Versioning](https://semver.org).
5
5
 
6
+ ## 0.15.0
7
+
8
+ ### Added
9
+
10
+ - **`bootstrap` can register trusted third-party IdP issuers via a blueprint's
11
+ new `issuers:` block** (requires `@vectros-ai/blueprints` 0.12.0+). Each entry
12
+ (`issuerId`, `issuer`, `jwksUri`, `audience`, `contextId`, optional `subClaim`/
13
+ `emailClaim`) is applied in the bootstrap-token phase — alongside app-context
14
+ and service-principal creation — using the same owner-only authority that
15
+ creates the app context itself, never an ordinary partner-grantable scope.
16
+ `vectros blueprint plan` names this phase explicitly in the preview.
17
+
18
+ - **`vectros blueprint-test` now verifies a declared `issuers:` entry actually
19
+ registered and is readable back**, the same live-credential proof it already
20
+ gives schemas and roles. One limitation, surfaced explicitly in the run's
21
+ report rather than silently: the platform has no way to remove a registered
22
+ issuer yet, so (unlike every other resource `blueprint-test` provisions)
23
+ issuer registrations are not torn down after the test run.
24
+
25
+ ### Fixed
26
+
27
+ - **`key rotate` no longer silently mints a second key when `--name` defaults
28
+ to `'default'` and the real key you meant to rotate is named something
29
+ else** (e.g. a `bootstrap`-minted key, which is never named `'default'`).
30
+ It now refuses when the default name matches no active key but another
31
+ active key already exists for the same principal/context, naming the
32
+ other key(s) so you can re-run with the right `--name` — or `--force-new`
33
+ to mint a new one alongside them anyway. Previously this minted an
34
+ unrelated key with no error or warning, leaving the original — possibly
35
+ the reason you were rotating — still active.
36
+
37
+ - **`bootstrap --blueprint <file>` now accepts `--set name=value` / `--values
38
+ <file>`** for a file blueprint's declared `inputs:`, matching what `vectros
39
+ blueprint validate`/`plan` already supported. Previously there was no way
40
+ to apply a blueprint with a required, no-default input via `bootstrap` at
41
+ all — the flags simply didn't exist on that command. Supplying either flag
42
+ against a bundled or `--blank` blueprint (which have no `inputs:` to set)
43
+ is now a clear usage error rather than a silent no-op.
44
+
45
+ - **The bootstrap scope gate no longer treats `entities` (identity-entity
46
+ CRUD — `org`/`client`/any namespace you registered) as control-plane.**
47
+ It's ordinary tenant data, ownership-gated the same way as `records` —
48
+ creating or reading an entity grants no additional access by itself. This
49
+ had blocked provisioning any blueprint role that manages its own
50
+ entities (e.g. a user creating their own org). The namespace *registry*
51
+ itself (registering a new namespace type) is unaffected and stays
52
+ root-key-only, correctly rejected by the gate as before.
53
+
54
+ - **The displayed/stored environment (`whoami`, `keyring list`/`doctor`, `blueprint-test`'s
55
+ banner) now reflects the base URL a command actually resolved and sent requests to, not
56
+ a hidden flag default.** The two diverge whenever `VECTROS_API_BASE_URL`/`--base-url`
57
+ alone selects the environment (the common shape when targeting staging without also
58
+ passing `--env staging`) — previously this echoed the wrong environment label next to a
59
+ key or session that was actually minted/used against a different one.
60
+
61
+ ### Changed
62
+
63
+ - **Dependency maintenance** — repinned the bundled `@vectros-ai/sdk` to `0.39.0` (the
64
+ trusted BYO-IdP issuer registry and RFC 8693 token exchange, `exists-by-email`, and the
65
+ scoped-token TTL cap narrowed to 1 hour). The CLI bundles the SDK into its published
66
+ binary, so this is a rebuild against its current version.
67
+
6
68
  ## 0.14.0
7
69
 
8
70
  ### Security
package/README.md CHANGED
@@ -188,9 +188,10 @@ Blueprints are **untrusted input** (agent- or community-authored) and the
188
188
  CLI runs under an elevated ephemeral bridge token. So the trust boundary is
189
189
  **this binary, not the blueprint**: a hardcoded **scope gate** bounds every
190
190
  mint to a data-plane allowlist (`records` / `schemas` / `search` / `documents`
191
- / `folders` / `inference`). Any control-plane scope (keys / profiles / users /
192
- billing / admin) or `*` wildcard **hard-rejects** — the CLI mints nothing and
193
- exits non-zero. There is intentionally **no override flag**.
191
+ / `folders` / `inference` / `entities`). Any control-plane scope (keys /
192
+ profiles / users / billing / admin / namespaces) or `*` wildcard
193
+ **hard-rejects** — the CLI mints nothing and exits non-zero. There is
194
+ intentionally **no override flag**.
194
195
 
195
196
  ## Rate limits
196
197