@vectros-ai/cli 0.13.0 → 0.14.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 +9 -2
- package/CHANGELOG.md +63 -0
- package/README.md +3 -1
- package/dist/cli.js +4883 -4575
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +4881 -4573
- package/dist/cli.mjs.map +1 -1
- package/package.json +2 -2
package/AUTHORING.md
CHANGED
|
@@ -78,7 +78,11 @@ A name must be 2–50 chars: a lowercase letter, then lowercase letters / digits
|
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
`bootstrap` shows the same plan and asks for confirmation before minting
|
|
81
|
-
(`--yes` skips the prompt for CI/agents
|
|
81
|
+
(`--yes` skips the prompt for CI/agents). ⚠️ **`--no-merge` is NOT a dry run** — it still
|
|
82
|
+
mints/reconciles for real; it only changes where the resulting credential goes, printing the MCP
|
|
83
|
+
config snippet to stdout instead of merging it into your client's config file. To preview without
|
|
84
|
+
touching your account, stop at `blueprint plan` (offline) — `bootstrap`, with or without `--no-merge`,
|
|
85
|
+
always applies.
|
|
82
86
|
|
|
83
87
|
**Provisioning a production context — `--no-seed`.** A blueprint's `seed`
|
|
84
88
|
records are illustrative sample data: handy for a getting-started or demo
|
|
@@ -120,7 +124,10 @@ contextId: mcp # 3-31 chars, lowercase-start. The app-context the key b
|
|
|
120
124
|
schemas:
|
|
121
125
|
- typeName: thing # immutable after first apply
|
|
122
126
|
displayName: Thing
|
|
123
|
-
indexMode: HYBRID # HYBRID
|
|
127
|
+
indexMode: HYBRID # HYBRID | SEMANTIC | TEXT | NONE (store-only).
|
|
128
|
+
# Omitting it does NOT mean HYBRID: a record schema with no
|
|
129
|
+
# indexMode resolves to NONE, and a document schema with none
|
|
130
|
+
# is rejected. Declare the mode you want.
|
|
124
131
|
fields:
|
|
125
132
|
- fieldId: title
|
|
126
133
|
fieldType: string # string | number | boolean | date | enum | array | object | reference
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,69 @@
|
|
|
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.14.0
|
|
7
|
+
|
|
8
|
+
### Security
|
|
9
|
+
|
|
10
|
+
- **`bootstrap` no longer stores your minted `ssk_*` in plaintext.** The key
|
|
11
|
+
goes to this machine's OS credential store (or an encrypted file where none
|
|
12
|
+
is available); your MCP client config references it by alias only
|
|
13
|
+
(`VECTROS_KEYRING_ALIAS`), never the raw secret. **Breaking:** a config
|
|
14
|
+
merged by an older CLI keeps working, but a fresh `bootstrap` run now
|
|
15
|
+
produces the alias-only shape — if you scripted against the printed
|
|
16
|
+
snippet's `VECTROS_API_KEY` field, it's `VECTROS_KEYRING_ALIAS` now.
|
|
17
|
+
|
|
18
|
+
- **`--print` is renamed `--no-merge`, with no back-compat alias.** It was
|
|
19
|
+
never a dry run — it always applies for real and only changes where the
|
|
20
|
+
result goes. It still applies; it just skips writing your client's config
|
|
21
|
+
file. For a true preview, use `blueprint plan`.
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **`key issue --to-keyring` and `key rotate --to-keyring` store the minted secret
|
|
26
|
+
instead of printing it.** Until now the mint verbs could only *emit* a key, so on
|
|
27
|
+
a desktop the only place to put it was the MCP client's config file, in plaintext.
|
|
28
|
+
`--to-keyring` writes it to this machine's OS credential store where one is in use,
|
|
29
|
+
and to the encrypted file under `~/.vectros/secrets` otherwise — telling you which
|
|
30
|
+
of the two took it either way, because only one of them is login-gated. The key is
|
|
31
|
+
never printed to a terminal, a pipe or a transcript. Anything that resolves a
|
|
32
|
+
credential through `vectros keyring show --format raw` — the MCP server included
|
|
33
|
+
— then reads it with no `VECTROS_API_KEY` set anywhere.
|
|
34
|
+
|
|
35
|
+
`--alias <name>` names the entry (default: the context id) and `--no-activate`
|
|
36
|
+
stores it without making it the active identity. Emitting stays the **default**:
|
|
37
|
+
it is the right behaviour for a headless server, where a secrets manager
|
|
38
|
+
distributes the key and nothing should persist it locally. The two destinations
|
|
39
|
+
are mutually exclusive — `--to-keyring` with `--format raw|env|json` is rejected
|
|
40
|
+
before anything is minted, rather than storing the key and printing it anyway.
|
|
41
|
+
|
|
42
|
+
`rotate --to-keyring` proves the store will accept a write *before* it revokes
|
|
43
|
+
the old key, so a machine that cannot hold a secret fails with your existing
|
|
44
|
+
credential intact.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- **`bootstrap --plan` no longer claims `HYBRID` for a schema that declares no
|
|
49
|
+
`indexMode`.** The plan rendered an absent mode as `HYBRID`, but nothing
|
|
50
|
+
substitutes that default — the value is forwarded untouched, and the platform
|
|
51
|
+
then resolves an absent mode to `NONE` (store-only, never searchable) on a record
|
|
52
|
+
schema, and rejects a document schema that declares none. So the plan promised a
|
|
53
|
+
searchable type and the apply produced a store-only one, or previewed a request
|
|
54
|
+
the API would refuse. The plan now names the real outcome in both cases.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **A blueprint may now declare `indexMode: NONE`** (store-only: kept and looked up, never
|
|
59
|
+
searchable). The mode has always been accepted by the platform, and `bootstrap`/`validate`/`plan`
|
|
60
|
+
rejected it earlier than that — structural validation runs against this CLI's own bundled copy of
|
|
61
|
+
the blueprint format, which predated the value. That copy now carries it, so a blueprint declaring
|
|
62
|
+
`NONE` validates and applies. This governs blueprints loaded **from a file** as much as bundled
|
|
63
|
+
ones: both funnel through the same structural parse.
|
|
64
|
+
|
|
65
|
+
- **`blueprint init` scaffold and `AUTHORING.md`** document the full `indexMode` set including
|
|
66
|
+
`NONE`, and warn that omitting the field does not mean `HYBRID` — a record schema with no mode of
|
|
67
|
+
its own resolves to `NONE`, and a document schema with none is rejected.
|
|
68
|
+
|
|
6
69
|
## 0.13.0
|
|
7
70
|
|
|
8
71
|
### Added
|
package/README.md
CHANGED
|
@@ -115,7 +115,9 @@ The app-context is intentionally **not** deleted (it's idempotent and reused).
|
|
|
115
115
|
A machine can hold several Vectros identities (one per context or principal).
|
|
116
116
|
The keyring stores them as named entries plus one **active** pointer, so you can
|
|
117
117
|
switch between them without re-issuing keys. `vectros join <context>` adds an
|
|
118
|
-
entry and activates it; `vectros
|
|
118
|
+
entry and activates it; `vectros key issue`/`key rotate` add one when passed
|
|
119
|
+
`--to-keyring` (which stores the new secret instead of printing it); `vectros switch
|
|
120
|
+
<alias>` flips the active one.
|
|
119
121
|
|
|
120
122
|
```bash
|
|
121
123
|
vectros keyring list # the entries; * marks the active one
|