camstack 1.2.63 → 1.2.66

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.
@@ -14522,7 +14522,7 @@ function date4(params) {
14522
14522
  // ../../node_modules/zod/v4/classic/external.js
14523
14523
  config(en_default());
14524
14524
 
14525
- // ../types/dist/sleep-L5-bG_a_.mjs
14525
+ // ../types/dist/sleep-bm0x6zZF.mjs
14526
14526
  var WELL_KNOWN_TABS = [
14527
14527
  {
14528
14528
  id: "overview",
@@ -15772,6 +15772,21 @@ var RelocateJobSchema = external_exports.object({
15772
15772
  bytesMoved: external_exports.number().int(),
15773
15773
  /** Total files discovered up front; null while (or when) unknown. */
15774
15774
  filesTotal: external_exports.number().int().nullable(),
15775
+ /**
15776
+ * Rows this run CORRECTED while moving them — a durable mutation the move
15777
+ * made that nobody asked for, so it is reported where the operator reads the
15778
+ * job rather than only in a log line.
15779
+ *
15780
+ * A footage segment records its byte count in its own NAME, and the durable
15781
+ * hour row derives its aggregates from those names. A file that does not
15782
+ * match its name therefore makes the ledger's sums — and with them quota and
15783
+ * pressure eviction — wrong by the difference, and only a rename can fix it.
15784
+ * On 2026-08-30 one such row also stalled a 110 749-file drain permanently.
15785
+ *
15786
+ * Absent on lanes where the question has no meaning: a media blob's size is
15787
+ * in its row, not in its name, so `MediaRelocateEngine` never reconciles one.
15788
+ */
15789
+ rowsReconciled: external_exports.number().int().nonnegative().optional(),
15775
15790
  startedAt: external_exports.number(),
15776
15791
  finishedAt: external_exports.number().nullable(),
15777
15792
  error: external_exports.string().nullable()
@@ -15814,11 +15829,18 @@ var RelocateMediaInputSchema = external_exports.object({
15814
15829
  /** Omitted = `move`, the pre-existing behaviour. */
15815
15830
  mode: MediaRelocateModeSchema.optional()
15816
15831
  });
15817
- var UnstampedEventMediaCountSchema = external_exports.object({
15818
- media: external_exports.number().int().nonnegative(),
15819
- retrainFrames: external_exports.number().int().nonnegative(),
15820
- total: external_exports.number().int().nonnegative()
15832
+ var UnstampedRowsSchema = external_exports.object({
15833
+ present: external_exports.boolean(),
15834
+ rows: external_exports.number().int().nonnegative().nullable()
15821
15835
  });
15836
+ var UnstampedEventMediaCountSchema = external_exports.object({
15837
+ media: UnstampedRowsSchema,
15838
+ retrainFrames: UnstampedRowsSchema,
15839
+ /** True when EITHER collection holds one. The refusal reads this. */
15840
+ anyPresent: external_exports.boolean(),
15841
+ /** Sum across both, or `null` when either lane could not be counted. */
15842
+ total: external_exports.number().int().nonnegative().nullable()
15843
+ }).nullable();
15822
15844
  var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: external_exports.string().min(1) });
15823
15845
  var StorageMigrationClassSchema = external_exports.enum([
15824
15846
  "recordings",
@@ -15860,13 +15882,33 @@ var StorageMigrationParticipantSchema = external_exports.enum([
15860
15882
  "recorder",
15861
15883
  "analytics"
15862
15884
  ]);
15885
+ var StorageMigrationMoveProgressSchema = external_exports.object({
15886
+ filesMoved: external_exports.number().int().nonnegative(),
15887
+ /** The archive census — the **M** of "N of M" (D295). `null` = unknowable. */
15888
+ filesTotal: external_exports.number().int().nonnegative().nullable(),
15889
+ bytesMoved: external_exports.number().int().nonnegative(),
15890
+ /** Rows the mover corrected while moving them — see `RelocateJob`. Absent on
15891
+ * a lane that cannot reconcile. A migration that silently rewrote durable
15892
+ * rows would be the same failure as one that silently skipped them. */
15893
+ rowsReconciled: external_exports.number().int().nonnegative().optional(),
15894
+ /** The MOVER's start, not the migration's: a drain restarted after an addon
15895
+ * crash gets a new mover, and a rate computed from the migration's start
15896
+ * would silently average in the time nothing was running. */
15897
+ startedAt: external_exports.number(),
15898
+ /** When the coordinator last read these numbers. Paired with `startedAt` it
15899
+ * is the only honest rate: both clocks are the hub's, so a UI never has to
15900
+ * subtract its own. */
15901
+ observedAt: external_exports.number()
15902
+ });
15863
15903
  var StorageMigrationMoveSchema = external_exports.object({
15864
15904
  storageClass: StorageMigrationClassSchema,
15865
15905
  fromLocationId: external_exports.string(),
15866
15906
  toLocationId: external_exports.string(),
15867
15907
  moverJobId: external_exports.string().nullable(),
15868
15908
  state: RelocateJobStateSchema.nullable(),
15869
- error: external_exports.string().nullable()
15909
+ error: external_exports.string().nullable(),
15910
+ /** Last observed mover counters; `null` until the mover has been polled once. */
15911
+ progress: StorageMigrationMoveProgressSchema.nullable()
15870
15912
  });
15871
15913
  var StorageMigrationJobSchema = external_exports.object({
15872
15914
  jobId: external_exports.string(),
@@ -15912,6 +15954,52 @@ var StorageMigrationPlanSchema = external_exports.object({
15912
15954
  })),
15913
15955
  findings: external_exports.array(StorageMigrationFindingSchema)
15914
15956
  });
15957
+ var StorageMigrationLaneSchema = external_exports.enum(["footage", "media"]);
15958
+ var StorageMigrationMoverSchema = external_exports.object({
15959
+ lane: StorageMigrationLaneSchema,
15960
+ job: RelocateJobSchema,
15961
+ /** The coordinator job that armed this mover, or `null` for a mover armed
15962
+ * directly against the owning addon. */
15963
+ migrationJobId: external_exports.string().nullable(),
15964
+ /** When the hub read these counters. Stamped here so a rate is `bytesMoved`
15965
+ * over (`observedAt` − `job.startedAt`) with BOTH ends on the hub's clock —
15966
+ * a browser subtracting its own `Date.now()` from a server `startedAt` is a
15967
+ * rate made of two different clocks. */
15968
+ observedAt: external_exports.number()
15969
+ });
15970
+ var StorageMigrationResidueSchema = external_exports.object({
15971
+ storageClass: StorageMigrationClassSchema,
15972
+ /** The location still holding the data. `'*'` for the media lane, whose rows
15973
+ * move from wherever they are rather than from one named source. */
15974
+ fromLocationId: external_exports.string(),
15975
+ /** Where a drain would move it — the class's CURRENT default. */
15976
+ toLocationId: external_exports.string(),
15977
+ /** Segments (footage lane) or rows (media lane) still on the source. */
15978
+ items: external_exports.number().int().nonnegative().nullable(),
15979
+ /** Bytes on the source; `null` when the lane counts rows rather than bytes. */
15980
+ bytes: external_exports.number().int().nonnegative().nullable()
15981
+ });
15982
+ var StorageMigrationDrainInputSchema = external_exports.object({
15983
+ /** The classes to drain. Each must appear in `storageMigration.residue`, so
15984
+ * a class whose source is already empty is refused rather than started. */
15985
+ classes: external_exports.array(StorageMigrationClassSchema).min(1),
15986
+ throttleMbps: external_exports.number().min(1).max(1e3).optional()
15987
+ });
15988
+ var RelocateResidueInputSchema = external_exports.object({
15989
+ fromLocationId: external_exports.string().min(1),
15990
+ /** Narrow to one logical class; omit for every profile on the location. */
15991
+ footageClass: RelocateFootageClassSchema.optional()
15992
+ });
15993
+ var RelocateResidueSchema = external_exports.object({
15994
+ segments: external_exports.number().int().nonnegative(),
15995
+ bytes: external_exports.number().int().nonnegative()
15996
+ }).nullable();
15997
+ var RelocatableMediaCountSchema = external_exports.object({ rows: external_exports.number().int().nonnegative() }).nullable();
15998
+ var RelocatableMediaCountInputSchema = external_exports.object({
15999
+ toLocationId: external_exports.string().min(1),
16000
+ /** Omitted = `move`. */
16001
+ mode: MediaRelocateModeSchema.optional()
16002
+ });
15915
16003
  var StorageLocationTypeSchema = external_exports.string().regex(/^[a-z][a-zA-Z0-9-]*$/);
15916
16004
  var StorageLocationSchema = external_exports.object({
15917
16005
  id: external_exports.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
@@ -15955,6 +16043,7 @@ var StorageLocationSchema = external_exports.object({
15955
16043
  updatedAt: external_exports.number()
15956
16044
  });
15957
16045
  var StorageLocationRefSchema = external_exports.union([StorageLocationTypeSchema, external_exports.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]);
16046
+ var StorageAccessSchema = external_exports.enum(["local-path", "cap-mediated"]);
15958
16047
  var StorageLocationDeclarationSchema = external_exports.object({
15959
16048
  /**
15960
16049
  * Global location identifier, e.g. `recordings` or `recordingsLow`.
@@ -15974,6 +16063,19 @@ var StorageLocationDeclarationSchema = external_exports.object({
15974
16063
  */
15975
16064
  cardinality: external_exports.enum(["single", "multi"]),
15976
16065
  /**
16066
+ * HOW the declaring service reaches the bytes — and therefore WHICH
16067
+ * providers may back a location of this kind. See {@link StorageAccessSchema}
16068
+ * and {@link STORAGE_ACCESS_FALLBACK}.
16069
+ *
16070
+ * Absent means `'local-path'`. That default is FAIL-CLOSED on purpose: it
16071
+ * can only over-restrict (refuse a remote provider for a kind that might
16072
+ * have coped) and never under-restrict. Declaring `'cap-mediated'` is the
16073
+ * permissive direction and is therefore never inferred — a repo guard
16074
+ * (`scripts/check-storage-access-declarations.ts`) refuses to let it be
16075
+ * reached by omission.
16076
+ */
16077
+ access: StorageAccessSchema.optional(),
16078
+ /**
15977
16079
  * When set, the default instance for this location inherits its resolved
15978
16080
  * root from the named location's default instance. Useful for derivative
15979
16081
  * slots (e.g. `recordingsLow` → `recordings`) so operators only need to
@@ -20728,6 +20830,15 @@ var deviceManagerCapability = {
20728
20830
  * calls are sync. Bindings change rarely (only on wrapper toggle or
20729
20831
  * device add/remove) — clients invalidate via the
20730
20832
  * `capability.binding-changed` event.
20833
+ *
20834
+ * "A single round-trip" describes the CLIENT's side and used not to
20835
+ * describe the server's: until 2026-08-30 the resolver read the persisted
20836
+ * wrapper activations once per device, so answering this cost one
20837
+ * settings-door RPC per device — 1 020 on the live 1 019-device hub, and
20838
+ * it did not return in 240 s against `SystemMirror.init`'s 15 s budget.
20839
+ * The server side is now two reads for the whole fleet. Anything PERIODIC
20840
+ * still belongs on `getBindings` / `getBindingsBatch` (D12); this remains
20841
+ * a warm seed.
20731
20842
  */
20732
20843
  getAllBindings: method(external_exports.object({}), external_exports.array(DeviceBindingsForDeviceSchema)),
20733
20844
  /**
@@ -25724,8 +25835,10 @@ var TrackSchema = external_exports.object({
25724
25835
  lastSeen: external_exports.number(),
25725
25836
  /** Frame-rate position history (subject to maxPositionHistory cap). */
25726
25837
  positions: external_exports.array(TrackPositionSchema).readonly(),
25727
- /** Periodic snapshots at snapshotIntervalMs cadence (subject to
25728
- * saveThumbnails policy). */
25838
+ /** Periodic snapshots at snapshotIntervalMs cadence DEBUG media, produced
25839
+ * only while `MediaSettings.debugMediaEnabled` is on for the camera (D299;
25840
+ * the retired `saveThumbnails` used to gate this and the rolling
25841
+ * `lastFrame` together). Empty is the healthy default, not a capture gap. */
25729
25842
  snapshots: external_exports.array(TrackSnapshotSchema).readonly(),
25730
25843
  /** Deduplicated zones the track has entered at least once. Zone IDS. */
25731
25844
  zonesVisited: external_exports.array(external_exports.string()).readonly(),
@@ -26706,8 +26819,34 @@ var pipelineAnalyticsCapability = {
26706
26819
  * happens to stamp it. This count is what the migration planner's
26707
26820
  * non-blocking gate reads; `relocateMedia({ mode: 'seal' })` is what drives
26708
26821
  * it to zero.
26822
+ *
26823
+ * TWO indexed statements per collection, not a walk. It used to page the
26824
+ * whole collection at 200 rows per RPC ordered by an unindexed column, so
26825
+ * on the live hub — 1 254 576 rows — it hit the 60 s RPC deadline every
26826
+ * time it was called, and the migration it gates could never start. The
26827
+ * cheap question (`present`: is there at least one) is asked first and
26828
+ * separately from the expensive one (`rows`), because only the first has
26829
+ * to be answerable for the gate to do its job.
26830
+ *
26831
+ * **`null` is "not measurable", never zero** — at either level. An
26832
+ * unreadable collection must not read as a sealed one.
26709
26833
  */
26710
26834
  countUnstampedEventMedia: method(external_exports.object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
26835
+ /**
26836
+ * How many rows a pass would STILL act on against `toLocationId`.
26837
+ *
26838
+ * One derivation, two consumers: it is the media lane's denominator (the
26839
+ * **M** the footage lane gets from the ledger census — D295) and it is the
26840
+ * residue behind "drain remaining". Deriving them separately is how "N of M"
26841
+ * ends up comparing two different populations.
26842
+ *
26843
+ * `null` means the count could not be taken; it is never zero-filled,
26844
+ * because a zero here reads as "nothing left to move".
26845
+ */
26846
+ countRelocatableMedia: method(RelocatableMediaCountInputSchema, RelocatableMediaCountSchema, {
26847
+ kind: "query",
26848
+ auth: "admin"
26849
+ }),
26711
26850
  /** Every relocate job this addon knows about, newest first (in RAM: the
26712
26851
  * move is resumable, so a lost list costs nothing but the display). */
26713
26852
  listRelocateMediaJobs: method(external_exports.object({}), external_exports.array(RelocateJobSchema).readonly(), {
@@ -29393,6 +29532,35 @@ var storageMigrationCapability = {
29393
29532
  cancel: method(external_exports.object({ jobId: external_exports.string() }), external_exports.object({ cancelled: external_exports.boolean() }), {
29394
29533
  kind: "mutation",
29395
29534
  auth: "admin"
29535
+ }),
29536
+ /**
29537
+ * Every mover running RIGHT NOW, in both lanes, with its counters.
29538
+ *
29539
+ * `status` covers a migration's own moves — the coordinator folds their
29540
+ * progress onto the durable job record it is already polling. This covers
29541
+ * the other case, and it is not hypothetical: a drain armed straight against
29542
+ * `recording.relocateFootage` (the only path that existed before
29543
+ * {@link drain}) has no job to fold into and would otherwise be invisible.
29544
+ */
29545
+ movers: method(external_exports.object({}), external_exports.array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }),
29546
+ /**
29547
+ * What each class's SOURCE still holds, from the archive — never from the
29548
+ * resident index (D295). Only classes with something left (or something
29549
+ * unknown) are listed, so an empty list means there is nothing to drain and
29550
+ * the UI has no honest button to offer.
29551
+ */
29552
+ residue: method(external_exports.object({}), external_exports.array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }),
29553
+ /**
29554
+ * Run the drain half alone, on a class whose default has ALREADY moved.
29555
+ *
29556
+ * It never repoints anything, which is what lets `start` keep refusing a
29557
+ * destination that is already the default: the two verbs cannot be confused
29558
+ * for one another, and no operator can re-repoint a migrated class through
29559
+ * this door.
29560
+ */
29561
+ drain: method(StorageMigrationDrainInputSchema, external_exports.object({ jobId: external_exports.string() }), {
29562
+ kind: "mutation",
29563
+ auth: "admin"
29396
29564
  })
29397
29565
  }
29398
29566
  };
@@ -29902,7 +30070,20 @@ var VectorQueryResultSchema = external_exports.object({
29902
30070
  */
29903
30071
  scanned: external_exports.number(),
29904
30072
  /** True when the backend could not consider every row that passed the filter. */
29905
- truncated: external_exports.boolean()
30073
+ truncated: external_exports.boolean(),
30074
+ /**
30075
+ * The `topK` the backend actually ran with.
30076
+ *
30077
+ * Every backend has a ceiling — sqlite-vec's is 4,096 — and a caller asking
30078
+ * past it used to learn nothing but a boolean, from a WARN in the provider's
30079
+ * own log rather than in its answer. That is how an audit asking for 20,000
30080
+ * consumed 4,096 and reported `examined: 4096` as if it had walked the index,
30081
+ * for weeks. `truncated` says THAT the answer was short; this says BY HOW
30082
+ * MUCH, in the return value, where the caller cannot fail to see it.
30083
+ *
30084
+ * Equals the requested `topK` whenever nothing was lowered.
30085
+ */
30086
+ effectiveTopK: external_exports.number().int().positive()
29906
30087
  });
29907
30088
  var VectorDeleteInputSchema = external_exports.object({
29908
30089
  index: external_exports.string(),
@@ -29921,6 +30102,35 @@ var VectorGetResultSchema = external_exports.object({ items: external_exports.ar
29921
30102
  id: external_exports.string(),
29922
30103
  metadata: VectorMetadataSchema
29923
30104
  })) });
30105
+ var VectorFetchInputSchema = external_exports.object({
30106
+ index: external_exports.string(),
30107
+ ids: external_exports.array(external_exports.string())
30108
+ });
30109
+ var VectorFetchResultSchema = external_exports.object({ items: external_exports.array(external_exports.object({
30110
+ id: external_exports.string(),
30111
+ /** base64 Float32LE — the same wire form `upsert` accepts. */
30112
+ vector: external_exports.string(),
30113
+ metadata: VectorMetadataSchema
30114
+ })) });
30115
+ var VectorScanInputSchema = external_exports.object({
30116
+ index: external_exports.string(),
30117
+ /** Opaque resume point. `0` starts at the top; pass back `nextCursor`. */
30118
+ cursor: external_exports.number().int().nonnegative().default(0),
30119
+ limit: external_exports.number().int().positive()
30120
+ });
30121
+ var VectorScanResultSchema = external_exports.object({
30122
+ items: external_exports.array(external_exports.object({
30123
+ id: external_exports.string(),
30124
+ metadata: VectorMetadataSchema
30125
+ })),
30126
+ /**
30127
+ * Where the next page starts, or `null` when the walk reached the end.
30128
+ *
30129
+ * `null` is the ONLY end-of-index signal. A caller must not infer the end
30130
+ * from a short page: a backend is free to return fewer rows than asked.
30131
+ */
30132
+ nextCursor: external_exports.number().int().nonnegative().nullable()
30133
+ });
29924
30134
  var VectorStatsInputSchema = external_exports.object({ index: external_exports.string() });
29925
30135
  var VectorStatsResultSchema = external_exports.object({
29926
30136
  /** Provider id, so an operator can tell brute force from an ANN index. */
@@ -29951,6 +30161,10 @@ var vectorStoreCapability = {
29951
30161
  query: method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }),
29952
30162
  /** Metadata by id, no vectors — see {@link VectorGetResultSchema}. */
29953
30163
  getByIds: method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }),
30164
+ /** Metadata AND vectors, by named id — see {@link VectorFetchInputSchema}. */
30165
+ fetchByIds: method(VectorFetchInputSchema, VectorFetchResultSchema, { auth: "admin" }),
30166
+ /** One page of the whole index, unranked — see {@link VectorScanInputSchema}. */
30167
+ scan: method(VectorScanInputSchema, VectorScanResultSchema, { auth: "admin" }),
29954
30168
  deleteByIds: method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
29955
30169
  kind: "mutation",
29956
30170
  auth: "admin"
@@ -36412,6 +36626,20 @@ var recordingCapability = {
36412
36626
  kind: "query",
36413
36627
  auth: "admin"
36414
36628
  }),
36629
+ /**
36630
+ * What a location STILL holds, asked of the durable hour ledger.
36631
+ *
36632
+ * The number behind "drain remaining": segments and bytes that would still
36633
+ * have to move off `fromLocationId`. It is a ledger aggregate — the archive
36634
+ * — because the resident index is not the archive (D295), and a drain sized
36635
+ * off the index is exactly what reported `done` over 80.3 GB on 2026-08-29.
36636
+ * `null` means the archive could not be asked (no ledger on this node, or
36637
+ * the aggregate failed) and is never conflated with an empty source.
36638
+ */
36639
+ getRelocateResidue: method(RelocateResidueInputSchema, RelocateResidueSchema, {
36640
+ kind: "query",
36641
+ auth: "admin"
36642
+ }),
36415
36643
  /** Cancel a running or queued relocate job. A queued job never runs. */
36416
36644
  cancelRelocateJob: method(external_exports.object({ jobId: external_exports.string() }), external_exports.object({ cancelled: external_exports.boolean() }), {
36417
36645
  kind: "mutation",
@@ -41650,6 +41878,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
41650
41878
  addonId: null,
41651
41879
  access: "create"
41652
41880
  },
41881
+ "pipelineAnalytics.countRelocatableMedia": {
41882
+ capName: "pipeline-analytics",
41883
+ capScope: "device",
41884
+ addonId: null,
41885
+ access: "view"
41886
+ },
41653
41887
  "pipelineAnalytics.countUnstampedEventMedia": {
41654
41888
  capName: "pipeline-analytics",
41655
41889
  capScope: "device",
@@ -42814,6 +43048,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
42814
43048
  addonId: null,
42815
43049
  access: "view"
42816
43050
  },
43051
+ "recording.getRelocateResidue": {
43052
+ capName: "recording",
43053
+ capScope: "system",
43054
+ addonId: null,
43055
+ access: "view"
43056
+ },
42817
43057
  "recording.getStorageMigrationMoveStatus": {
42818
43058
  capName: "recording",
42819
43059
  capScope: "system",
@@ -43360,12 +43600,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
43360
43600
  addonId: null,
43361
43601
  access: "create"
43362
43602
  },
43603
+ "storageMigration.drain": {
43604
+ capName: "storage-migration",
43605
+ capScope: "system",
43606
+ addonId: null,
43607
+ access: "create"
43608
+ },
43609
+ "storageMigration.movers": {
43610
+ capName: "storage-migration",
43611
+ capScope: "system",
43612
+ addonId: null,
43613
+ access: "view"
43614
+ },
43363
43615
  "storageMigration.plan": {
43364
43616
  capName: "storage-migration",
43365
43617
  capScope: "system",
43366
43618
  addonId: null,
43367
43619
  access: "view"
43368
43620
  },
43621
+ "storageMigration.residue": {
43622
+ capName: "storage-migration",
43623
+ capScope: "system",
43624
+ addonId: null,
43625
+ access: "view"
43626
+ },
43369
43627
  "storageMigration.start": {
43370
43628
  capName: "storage-migration",
43371
43629
  capScope: "system",
@@ -44200,6 +44458,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
44200
44458
  addonId: null,
44201
44459
  access: "delete"
44202
44460
  },
44461
+ "vectorStore.fetchByIds": {
44462
+ capName: "vector-store",
44463
+ capScope: "system",
44464
+ addonId: null,
44465
+ access: "view"
44466
+ },
44203
44467
  "vectorStore.getByIds": {
44204
44468
  capName: "vector-store",
44205
44469
  capScope: "system",
@@ -44212,6 +44476,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
44212
44476
  addonId: null,
44213
44477
  access: "view"
44214
44478
  },
44479
+ "vectorStore.scan": {
44480
+ capName: "vector-store",
44481
+ capScope: "system",
44482
+ addonId: null,
44483
+ access: "view"
44484
+ },
44215
44485
  "vectorStore.stats": {
44216
44486
  capName: "vector-store",
44217
44487
  capScope: "system",
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-SEHB4NXH.js";
4
+ } from "./chunk-EJO2K6FH.js";
5
5
  import "./chunk-LMMQX4CK.js";
6
6
 
7
7
  // src/cli.ts
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-RA6HGFNQ.js");
41
+ await import("./launcher-EJVL74UN.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-RA6HGFNQ.js");
86
+ await import("./launcher-EJVL74UN.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
1130
1130
  return true;
1131
1131
  }
1132
1132
  async function resolveServerInteractive(presetNamespace) {
1133
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-LCFHENJ3.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-4BY6AQ3K.js");
1134
1134
  if (presetNamespace) {
1135
1135
  const spinner4 = clack.spinner();
1136
1136
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-SEHB4NXH.js";
8
+ } from "./chunk-EJO2K6FH.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,