@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 +18 -1
- package/CHANGELOG.md +62 -0
- package/README.md +4 -3
- package/dist/cli.js +1108 -61
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +1108 -61
- package/dist/cli.mjs.map +1 -1
- package/package.json +3 -3
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 /
|
|
192
|
-
billing / admin) or `*` wildcard
|
|
193
|
-
exits non-zero. There is
|
|
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
|
|