@vectros-ai/cli 0.6.5 → 0.6.7
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 +26 -0
- package/dist/cli.js +75 -13
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +75 -13
- package/dist/cli.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,32 @@
|
|
|
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.6.7 — 2026-07-04
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Bundled blueprint library updated to `@vectros-ai/blueprints` 0.6.5.** The
|
|
11
|
+
`agentic-sdlc` blueprint's service-principal `accessProfile` now includes
|
|
12
|
+
`documents:u`, so a `bootstrap`ped agent key can archive and re-ingest documents —
|
|
13
|
+
the repo↔KB sync the blueprint documents was previously unexecutable by the key it
|
|
14
|
+
mints. Re-running `vectros bootstrap` against an existing context brings its scopes
|
|
15
|
+
current with the blueprint; no key rotation is needed, and the installed key gains
|
|
16
|
+
`documents:u` within a few minutes. No CLI command or flag changes.
|
|
17
|
+
|
|
18
|
+
## 0.6.6 — 2026-07-03
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- **Bundled blueprint library updated to `@vectros-ai/blueprints` 0.6.4.** The
|
|
23
|
+
`agentic-sdlc` blueprint's record schemas (`control` / `convention` / `gotcha` /
|
|
24
|
+
`term`) now carry a `sourceRef` provenance field — the sync-back index that lets a
|
|
25
|
+
knowledge base stay in sync with the repo it mirrors — and its bundled guide and
|
|
26
|
+
agent prompt document that sync pattern. No CLI command or flag changes.
|
|
27
|
+
- Updated the bundled `@vectros-ai/sdk` to **0.32.0**, keeping the CLI aligned with
|
|
28
|
+
the current Vectros API. Documents gained a lifecycle `status` (archive/restore
|
|
29
|
+
without deleting) and their processing state moved to `indexStatus`; no CLI
|
|
30
|
+
command or flag changes.
|
|
31
|
+
|
|
6
32
|
## 0.6.5 — 2026-07-01
|
|
7
33
|
|
|
8
34
|
### Added
|
package/dist/cli.js
CHANGED
|
@@ -504,10 +504,18 @@ var DocumentRequest;
|
|
|
504
504
|
Text: "TEXT",
|
|
505
505
|
None: "NONE"
|
|
506
506
|
};
|
|
507
|
+
DocumentRequest2.Status = {
|
|
508
|
+
Active: "ACTIVE",
|
|
509
|
+
Archived: "ARCHIVED"
|
|
510
|
+
};
|
|
507
511
|
})(DocumentRequest || (DocumentRequest = {}));
|
|
508
512
|
var DocumentResponse;
|
|
509
513
|
((DocumentResponse2) => {
|
|
510
514
|
DocumentResponse2.Status = {
|
|
515
|
+
Active: "ACTIVE",
|
|
516
|
+
Archived: "ARCHIVED"
|
|
517
|
+
};
|
|
518
|
+
DocumentResponse2.IndexStatus = {
|
|
511
519
|
PendingUpload: "PENDING_UPLOAD",
|
|
512
520
|
Uploaded: "UPLOADED",
|
|
513
521
|
Extracting: "EXTRACTING",
|
|
@@ -5278,7 +5286,7 @@ var DocumentsClient = class {
|
|
|
5278
5286
|
return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/v1/documents/{id}/versions");
|
|
5279
5287
|
}
|
|
5280
5288
|
/**
|
|
5281
|
-
* Starts a file-based document by returning a short-lived presigned S3 PUT URL. Upload the file bytes directly to `uploadUrl`; the document is then automatically queued for text extraction and asynchronous indexing. Supplying an `externalId` makes this idempotent — re-initiating an upload with the same `externalId` re-issues a fresh presigned URL to the SAME existing document/object (so a re-upload inherently replaces the file body) rather than creating a duplicate. The response's `created` field (and the HTTP status — 201 when a new document was minted, 200 when an existing one was matched) tells the two apart. With `?upsert=true`, the submitted `payload`/`title` are also applied to the matched document (file-body divergence cannot be diffed at upload-init — the bytes have not arrived yet — so the re-upload itself replaces the body
|
|
5289
|
+
* Starts a file-based document by returning a short-lived presigned S3 PUT URL. Upload the file bytes directly to `uploadUrl`; the document is then automatically queued for text extraction and asynchronous indexing. Supplying an `externalId` makes this idempotent — re-initiating an upload with the same `externalId` re-issues a fresh presigned URL to the SAME existing document/object (so a re-upload inherently replaces the file body) rather than creating a duplicate. The response's `created` field (and the HTTP status — 201 when a new document was minted, 200 when an existing one was matched) tells the two apart. With `?upsert=true`, the submitted `payload`/`title` are also applied to the matched document (file-body divergence cannot be diffed at upload-init — the bytes have not arrived yet — so the re-upload itself replaces the body). Creating a NEW document requires the `documents:c` scope. Re-uploading over an EXISTING document overwrites (and re-indexes) its body, so it is an update: it requires the `documents:u` scope (as does `?upsert=true` for the metadata).
|
|
5282
5290
|
*
|
|
5283
5291
|
* @param {Vectros.FileUploadRequest} request
|
|
5284
5292
|
* @param {DocumentsClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
@@ -9680,12 +9688,14 @@ var DATA_PLANE_ACTIONS = [
|
|
|
9680
9688
|
"inference:r",
|
|
9681
9689
|
"documents:r",
|
|
9682
9690
|
"documents:c",
|
|
9691
|
+
"documents:u",
|
|
9683
9692
|
"folders:r",
|
|
9684
9693
|
"folders:c"
|
|
9685
9694
|
];
|
|
9695
|
+
var EDITOR_ACTIONS = [...DATA_PLANE_ACTIONS, "records:d", "documents:d", "folders:d"];
|
|
9686
9696
|
var agenticSdlc = {
|
|
9687
9697
|
name: "agentic-sdlc",
|
|
9688
|
-
version: "1.
|
|
9698
|
+
version: "1.3.0",
|
|
9689
9699
|
description: "A whole-SDLC system of record for an AI development team \u2014 decisions, designs, references, runbooks, post-mortems (as documents) plus controls, conventions, gotchas, and a glossary (as records), cross-linked and recalled by meaning.",
|
|
9690
9700
|
contextId: "agentic-sdlc",
|
|
9691
9701
|
contextName: "Agentic SDLC Knowledge Base",
|
|
@@ -10120,6 +10130,19 @@ var agenticSdlc = {
|
|
|
10120
10130
|
fieldType: "date",
|
|
10121
10131
|
description: "ISO-8601 last-reviewed date. Range-queryable.",
|
|
10122
10132
|
renderHints: { label: "Reviewed on", widget: "date", order: 12 }
|
|
10133
|
+
},
|
|
10134
|
+
{
|
|
10135
|
+
// Provenance for sync: the source file this record was distilled from. A
|
|
10136
|
+
// record can't carry an in-file marker the way a document can (many records
|
|
10137
|
+
// come from one file), so it names its source instead — a change to that file
|
|
10138
|
+
// finds (equality lookup) and re-extracts exactly its records. Equality, not
|
|
10139
|
+
// range: file-level is the sync unit (re-extraction reprocesses the whole file),
|
|
10140
|
+
// and the schema keeps its single range lookup for the date row.
|
|
10141
|
+
fieldId: "sourceRef",
|
|
10142
|
+
fieldType: "string",
|
|
10143
|
+
filterable: true,
|
|
10144
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
10145
|
+
renderHints: { label: "Source ref", widget: "text", order: 13 }
|
|
10123
10146
|
}
|
|
10124
10147
|
],
|
|
10125
10148
|
lookupFields: [
|
|
@@ -10129,7 +10152,8 @@ var agenticSdlc = {
|
|
|
10129
10152
|
"area",
|
|
10130
10153
|
"verifiedBy",
|
|
10131
10154
|
"relatedDecision",
|
|
10132
|
-
{ fieldName: "reviewedOn", rangeEnabled: true }
|
|
10155
|
+
{ fieldName: "reviewedOn", rangeEnabled: true },
|
|
10156
|
+
"sourceRef"
|
|
10133
10157
|
]
|
|
10134
10158
|
},
|
|
10135
10159
|
{
|
|
@@ -10206,9 +10230,23 @@ var agenticSdlc = {
|
|
|
10206
10230
|
fieldType: "date",
|
|
10207
10231
|
description: "ISO-8601 \u2014 when last revised. Range-queryable.",
|
|
10208
10232
|
renderHints: { label: "Updated on", widget: "date", order: 9 }
|
|
10233
|
+
},
|
|
10234
|
+
{
|
|
10235
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
10236
|
+
fieldId: "sourceRef",
|
|
10237
|
+
fieldType: "string",
|
|
10238
|
+
filterable: true,
|
|
10239
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
10240
|
+
renderHints: { label: "Source ref", widget: "text", order: 10 }
|
|
10209
10241
|
}
|
|
10210
10242
|
],
|
|
10211
|
-
lookupFields: [
|
|
10243
|
+
lookupFields: [
|
|
10244
|
+
"area",
|
|
10245
|
+
"status",
|
|
10246
|
+
"establishedBy",
|
|
10247
|
+
{ fieldName: "updatedOn", rangeEnabled: true },
|
|
10248
|
+
"sourceRef"
|
|
10249
|
+
]
|
|
10212
10250
|
},
|
|
10213
10251
|
{
|
|
10214
10252
|
// A GOTCHA / sharp edge: a symptom, its cause, and the fix. A tight typed
|
|
@@ -10262,9 +10300,22 @@ var agenticSdlc = {
|
|
|
10262
10300
|
fieldType: "date",
|
|
10263
10301
|
description: "ISO-8601 \u2014 when first hit. Range-queryable.",
|
|
10264
10302
|
renderHints: { label: "Discovered on", widget: "date", order: 7 }
|
|
10303
|
+
},
|
|
10304
|
+
{
|
|
10305
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
10306
|
+
fieldId: "sourceRef",
|
|
10307
|
+
fieldType: "string",
|
|
10308
|
+
filterable: true,
|
|
10309
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
10310
|
+
renderHints: { label: "Source ref", widget: "text", order: 8 }
|
|
10265
10311
|
}
|
|
10266
10312
|
],
|
|
10267
|
-
lookupFields: [
|
|
10313
|
+
lookupFields: [
|
|
10314
|
+
"area",
|
|
10315
|
+
"status",
|
|
10316
|
+
{ fieldName: "discoveredOn", rangeEnabled: true },
|
|
10317
|
+
"sourceRef"
|
|
10318
|
+
]
|
|
10268
10319
|
},
|
|
10269
10320
|
{
|
|
10270
10321
|
// A glossary TERM — a definition keyed by the term itself. Structure-dominant:
|
|
@@ -10324,6 +10375,14 @@ var agenticSdlc = {
|
|
|
10324
10375
|
fieldType: "date",
|
|
10325
10376
|
description: "ISO-8601 \u2014 when last revised. Range-queryable.",
|
|
10326
10377
|
renderHints: { label: "Updated on", widget: "date", order: 7 }
|
|
10378
|
+
},
|
|
10379
|
+
{
|
|
10380
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
10381
|
+
fieldId: "sourceRef",
|
|
10382
|
+
fieldType: "string",
|
|
10383
|
+
filterable: true,
|
|
10384
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
10385
|
+
renderHints: { label: "Source ref", widget: "text", order: 8 }
|
|
10327
10386
|
}
|
|
10328
10387
|
],
|
|
10329
10388
|
// `term` is a UNIQUE equality lookup — exact "define X" + a one-per-term
|
|
@@ -10332,7 +10391,8 @@ var agenticSdlc = {
|
|
|
10332
10391
|
{ fieldName: "term", unique: true },
|
|
10333
10392
|
"area",
|
|
10334
10393
|
"relatedDecision",
|
|
10335
|
-
{ fieldName: "updatedOn", rangeEnabled: true }
|
|
10394
|
+
{ fieldName: "updatedOn", rangeEnabled: true },
|
|
10395
|
+
"sourceRef"
|
|
10336
10396
|
]
|
|
10337
10397
|
}
|
|
10338
10398
|
],
|
|
@@ -10350,11 +10410,13 @@ var agenticSdlc = {
|
|
|
10350
10410
|
// grants the human none by default. Bind it after bootstrap with:
|
|
10351
10411
|
// vectros access grant --principal usr_<your-user-id> --context agentic-sdlc --role editor
|
|
10352
10412
|
// (or the admin app's Access > Contexts > agentic-sdlc > Profiles > Create).
|
|
10353
|
-
//
|
|
10354
|
-
//
|
|
10355
|
-
//
|
|
10413
|
+
// The editor gets the full data plane so a human curator can browse, write/correct,
|
|
10414
|
+
// AND hard-delete the KB (EDITOR_ACTIONS = the service key's set + delete). The
|
|
10415
|
+
// service key deliberately lacks delete and archives instead; the trusted human
|
|
10416
|
+
// owner may permanently remove genuine strays. Still no control-plane action, so
|
|
10417
|
+
// the scope gate accepts it as a data-plane-only role.
|
|
10356
10418
|
roles: {
|
|
10357
|
-
editor: [{ allowedActions:
|
|
10419
|
+
editor: [{ allowedActions: EDITOR_ACTIONS }]
|
|
10358
10420
|
},
|
|
10359
10421
|
servicePrincipal: {
|
|
10360
10422
|
externalId: "agentic-sdlc",
|
|
@@ -14033,9 +14095,9 @@ async function runBlueprintTest(fileOrName, opts, deps = {}) {
|
|
|
14033
14095
|
|
|
14034
14096
|
// src/build-info.ts
|
|
14035
14097
|
var BUILD_INFO = {
|
|
14036
|
-
cli: true ? "0.6.
|
|
14037
|
-
sdk: true ? "0.
|
|
14038
|
-
blueprints: true ? "0.6.
|
|
14098
|
+
cli: true ? "0.6.7" : "dev",
|
|
14099
|
+
sdk: true ? "0.32.0" : "dev",
|
|
14100
|
+
blueprints: true ? "0.6.5" : "dev"
|
|
14039
14101
|
};
|
|
14040
14102
|
function formatBuildInfo() {
|
|
14041
14103
|
return `vectros ${BUILD_INFO.cli} (sdk ${BUILD_INFO.sdk}, blueprints ${BUILD_INFO.blueprints})`;
|