@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/dist/cli.mjs CHANGED
@@ -481,10 +481,18 @@ var DocumentRequest;
481
481
  Text: "TEXT",
482
482
  None: "NONE"
483
483
  };
484
+ DocumentRequest2.Status = {
485
+ Active: "ACTIVE",
486
+ Archived: "ARCHIVED"
487
+ };
484
488
  })(DocumentRequest || (DocumentRequest = {}));
485
489
  var DocumentResponse;
486
490
  ((DocumentResponse2) => {
487
491
  DocumentResponse2.Status = {
492
+ Active: "ACTIVE",
493
+ Archived: "ARCHIVED"
494
+ };
495
+ DocumentResponse2.IndexStatus = {
488
496
  PendingUpload: "PENDING_UPLOAD",
489
497
  Uploaded: "UPLOADED",
490
498
  Extracting: "EXTRACTING",
@@ -5255,7 +5263,7 @@ var DocumentsClient = class {
5255
5263
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/v1/documents/{id}/versions");
5256
5264
  }
5257
5265
  /**
5258
- * 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; `?upsert=true` requires the `documents:u` scope). Requires the `documents:c` scope.
5266
+ * 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).
5259
5267
  *
5260
5268
  * @param {Vectros.FileUploadRequest} request
5261
5269
  * @param {DocumentsClient.RequestOptions} requestOptions - Request-specific configuration.
@@ -9657,12 +9665,14 @@ var DATA_PLANE_ACTIONS = [
9657
9665
  "inference:r",
9658
9666
  "documents:r",
9659
9667
  "documents:c",
9668
+ "documents:u",
9660
9669
  "folders:r",
9661
9670
  "folders:c"
9662
9671
  ];
9672
+ var EDITOR_ACTIONS = [...DATA_PLANE_ACTIONS, "records:d", "documents:d", "folders:d"];
9663
9673
  var agenticSdlc = {
9664
9674
  name: "agentic-sdlc",
9665
- version: "1.0.0",
9675
+ version: "1.3.0",
9666
9676
  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.",
9667
9677
  contextId: "agentic-sdlc",
9668
9678
  contextName: "Agentic SDLC Knowledge Base",
@@ -10097,6 +10107,19 @@ var agenticSdlc = {
10097
10107
  fieldType: "date",
10098
10108
  description: "ISO-8601 last-reviewed date. Range-queryable.",
10099
10109
  renderHints: { label: "Reviewed on", widget: "date", order: 12 }
10110
+ },
10111
+ {
10112
+ // Provenance for sync: the source file this record was distilled from. A
10113
+ // record can't carry an in-file marker the way a document can (many records
10114
+ // come from one file), so it names its source instead — a change to that file
10115
+ // finds (equality lookup) and re-extracts exactly its records. Equality, not
10116
+ // range: file-level is the sync unit (re-extraction reprocesses the whole file),
10117
+ // and the schema keeps its single range lookup for the date row.
10118
+ fieldId: "sourceRef",
10119
+ fieldType: "string",
10120
+ filterable: true,
10121
+ 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.",
10122
+ renderHints: { label: "Source ref", widget: "text", order: 13 }
10100
10123
  }
10101
10124
  ],
10102
10125
  lookupFields: [
@@ -10106,7 +10129,8 @@ var agenticSdlc = {
10106
10129
  "area",
10107
10130
  "verifiedBy",
10108
10131
  "relatedDecision",
10109
- { fieldName: "reviewedOn", rangeEnabled: true }
10132
+ { fieldName: "reviewedOn", rangeEnabled: true },
10133
+ "sourceRef"
10110
10134
  ]
10111
10135
  },
10112
10136
  {
@@ -10183,9 +10207,23 @@ var agenticSdlc = {
10183
10207
  fieldType: "date",
10184
10208
  description: "ISO-8601 \u2014 when last revised. Range-queryable.",
10185
10209
  renderHints: { label: "Updated on", widget: "date", order: 9 }
10210
+ },
10211
+ {
10212
+ // Provenance for sync — see the note on `control.sourceRef`.
10213
+ fieldId: "sourceRef",
10214
+ fieldType: "string",
10215
+ filterable: true,
10216
+ 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.",
10217
+ renderHints: { label: "Source ref", widget: "text", order: 10 }
10186
10218
  }
10187
10219
  ],
10188
- lookupFields: ["area", "status", "establishedBy", { fieldName: "updatedOn", rangeEnabled: true }]
10220
+ lookupFields: [
10221
+ "area",
10222
+ "status",
10223
+ "establishedBy",
10224
+ { fieldName: "updatedOn", rangeEnabled: true },
10225
+ "sourceRef"
10226
+ ]
10189
10227
  },
10190
10228
  {
10191
10229
  // A GOTCHA / sharp edge: a symptom, its cause, and the fix. A tight typed
@@ -10239,9 +10277,22 @@ var agenticSdlc = {
10239
10277
  fieldType: "date",
10240
10278
  description: "ISO-8601 \u2014 when first hit. Range-queryable.",
10241
10279
  renderHints: { label: "Discovered on", widget: "date", order: 7 }
10280
+ },
10281
+ {
10282
+ // Provenance for sync — see the note on `control.sourceRef`.
10283
+ fieldId: "sourceRef",
10284
+ fieldType: "string",
10285
+ filterable: true,
10286
+ 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.",
10287
+ renderHints: { label: "Source ref", widget: "text", order: 8 }
10242
10288
  }
10243
10289
  ],
10244
- lookupFields: ["area", "status", { fieldName: "discoveredOn", rangeEnabled: true }]
10290
+ lookupFields: [
10291
+ "area",
10292
+ "status",
10293
+ { fieldName: "discoveredOn", rangeEnabled: true },
10294
+ "sourceRef"
10295
+ ]
10245
10296
  },
10246
10297
  {
10247
10298
  // A glossary TERM — a definition keyed by the term itself. Structure-dominant:
@@ -10301,6 +10352,14 @@ var agenticSdlc = {
10301
10352
  fieldType: "date",
10302
10353
  description: "ISO-8601 \u2014 when last revised. Range-queryable.",
10303
10354
  renderHints: { label: "Updated on", widget: "date", order: 7 }
10355
+ },
10356
+ {
10357
+ // Provenance for sync — see the note on `control.sourceRef`.
10358
+ fieldId: "sourceRef",
10359
+ fieldType: "string",
10360
+ filterable: true,
10361
+ 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.",
10362
+ renderHints: { label: "Source ref", widget: "text", order: 8 }
10304
10363
  }
10305
10364
  ],
10306
10365
  // `term` is a UNIQUE equality lookup — exact "define X" + a one-per-term
@@ -10309,7 +10368,8 @@ var agenticSdlc = {
10309
10368
  { fieldName: "term", unique: true },
10310
10369
  "area",
10311
10370
  "relatedDecision",
10312
- { fieldName: "updatedOn", rangeEnabled: true }
10371
+ { fieldName: "updatedOn", rangeEnabled: true },
10372
+ "sourceRef"
10313
10373
  ]
10314
10374
  }
10315
10375
  ],
@@ -10327,11 +10387,13 @@ var agenticSdlc = {
10327
10387
  // grants the human none by default. Bind it after bootstrap with:
10328
10388
  // vectros access grant --principal usr_<your-user-id> --context agentic-sdlc --role editor
10329
10389
  // (or the admin app's Access > Contexts > agentic-sdlc > Profiles > Create).
10330
- // Editor PARITY with the service key (same DATA_PLANE_ACTIONS) so a human
10331
- // curator can browse AND write/correct the KB; still no :d and no control-plane
10332
- // action, so the scope gate accepts it exactly like the accessProfile.
10390
+ // The editor gets the full data plane so a human curator can browse, write/correct,
10391
+ // AND hard-delete the KB (EDITOR_ACTIONS = the service key's set + delete). The
10392
+ // service key deliberately lacks delete and archives instead; the trusted human
10393
+ // owner may permanently remove genuine strays. Still no control-plane action, so
10394
+ // the scope gate accepts it as a data-plane-only role.
10333
10395
  roles: {
10334
- editor: [{ allowedActions: DATA_PLANE_ACTIONS }]
10396
+ editor: [{ allowedActions: EDITOR_ACTIONS }]
10335
10397
  },
10336
10398
  servicePrincipal: {
10337
10399
  externalId: "agentic-sdlc",
@@ -14010,9 +14072,9 @@ async function runBlueprintTest(fileOrName, opts, deps = {}) {
14010
14072
 
14011
14073
  // src/build-info.ts
14012
14074
  var BUILD_INFO = {
14013
- cli: true ? "0.6.5" : "dev",
14014
- sdk: true ? "0.31.0" : "dev",
14015
- blueprints: true ? "0.6.3" : "dev"
14075
+ cli: true ? "0.6.7" : "dev",
14076
+ sdk: true ? "0.32.0" : "dev",
14077
+ blueprints: true ? "0.6.5" : "dev"
14016
14078
  };
14017
14079
  function formatBuildInfo() {
14018
14080
  return `vectros ${BUILD_INFO.cli} (sdk ${BUILD_INFO.sdk}, blueprints ${BUILD_INFO.blueprints})`;