@camstack/addon-remote-storage 1.1.21 → 1.1.23
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/s3.addon.js +1 -1
- package/dist/s3.addon.mjs +1 -1
- package/dist/sftp.addon.js +1 -1
- package/dist/sftp.addon.mjs +1 -1
- package/dist/{shared-BTuv4hPh.js → shared-BL-GGrW8.js} +231 -9
- package/dist/{shared-m1upfQvq.mjs → shared-CFMg2pY9.mjs} +231 -9
- package/dist/webdav.addon.js +1 -1
- package/dist/webdav.addon.mjs +1 -1
- package/package.json +1 -1
package/dist/s3.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-BL-GGrW8.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
|
|
8
8
|
let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
|
package/dist/s3.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-CFMg2pY9.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
4
4
|
import { Upload } from "@aws-sdk/lib-storage";
|
package/dist/sftp.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-BL-GGrW8.js");
|
|
6
6
|
let ssh2 = require("ssh2");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_shared.__toESM(node_path);
|
package/dist/sftp.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-CFMg2pY9.mjs";
|
|
2
2
|
import { Client } from "ssh2";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
//#region src/providers/sftp/sftp-config-schema.ts
|
|
@@ -4652,7 +4652,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4652
4652
|
return inst;
|
|
4653
4653
|
}
|
|
4654
4654
|
//#endregion
|
|
4655
|
-
//#region ../types/dist/sleep-
|
|
4655
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4656
4656
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4657
4657
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4658
4658
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6756,6 +6756,18 @@ function method(input, output, options) {
|
|
|
6756
6756
|
timeoutMs: options?.timeoutMs
|
|
6757
6757
|
};
|
|
6758
6758
|
}
|
|
6759
|
+
/**
|
|
6760
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6761
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6762
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6763
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6764
|
+
*/
|
|
6765
|
+
function systemMethod(input, output, options) {
|
|
6766
|
+
return {
|
|
6767
|
+
...method(input, output, options),
|
|
6768
|
+
systemOnly: true
|
|
6769
|
+
};
|
|
6770
|
+
}
|
|
6759
6771
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6760
6772
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6761
6773
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10494,6 +10506,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10494
10506
|
defaultModelId: string(),
|
|
10495
10507
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10496
10508
|
enabledByDefault: boolean().optional(),
|
|
10509
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10497
10510
|
defaultConfidence: number(),
|
|
10498
10511
|
group: string().optional(),
|
|
10499
10512
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10675,7 +10688,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10675
10688
|
image: _instanceof(Uint8Array).optional(),
|
|
10676
10689
|
referenceImage: string().optional(),
|
|
10677
10690
|
deviceId: number().optional(),
|
|
10678
|
-
sessionId: string().optional()
|
|
10691
|
+
sessionId: string().optional(),
|
|
10692
|
+
/**
|
|
10693
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10694
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10695
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10696
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10697
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10698
|
+
*/
|
|
10699
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10679
10700
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10680
10701
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10681
10702
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10800,6 +10821,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10800
10821
|
auth: "admin"
|
|
10801
10822
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10802
10823
|
/**
|
|
10824
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10825
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10826
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10827
|
+
* dims — no native resolution to plumb.
|
|
10828
|
+
*/
|
|
10829
|
+
var NativeCropBboxSchema = object({
|
|
10830
|
+
x: number(),
|
|
10831
|
+
y: number(),
|
|
10832
|
+
w: number(),
|
|
10833
|
+
h: number()
|
|
10834
|
+
});
|
|
10835
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10836
|
+
var NativeCropResultSchema = object({
|
|
10837
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10838
|
+
bytes: _instanceof(Uint8Array),
|
|
10839
|
+
width: number().int().positive(),
|
|
10840
|
+
height: number().int().positive()
|
|
10841
|
+
});
|
|
10842
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10843
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10844
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10845
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10846
|
+
* normalized [0,1] convention). */
|
|
10847
|
+
var DetailParentSchema = object({
|
|
10848
|
+
bbox: NativeCropBboxSchema,
|
|
10849
|
+
className: string()
|
|
10850
|
+
});
|
|
10851
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10852
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10853
|
+
* single tracked detection. */
|
|
10854
|
+
var DetailResultSchema = object({
|
|
10855
|
+
stepId: string(),
|
|
10856
|
+
className: string(),
|
|
10857
|
+
score: number(),
|
|
10858
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10859
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10860
|
+
embedding: string().optional(),
|
|
10861
|
+
label: string().optional(),
|
|
10862
|
+
alignedCropJpeg: string().optional()
|
|
10863
|
+
});
|
|
10864
|
+
/**
|
|
10803
10865
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10804
10866
|
* by both the Zod data schema (validation + default fallback) and
|
|
10805
10867
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11055,7 +11117,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11055
11117
|
avgInferenceTimeMs: number(),
|
|
11056
11118
|
queueDepth: number()
|
|
11057
11119
|
});
|
|
11058
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11120
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11121
|
+
handle: FrameHandleSchema,
|
|
11122
|
+
bbox: NativeCropBboxSchema,
|
|
11123
|
+
maxWidth: number().int().positive().optional()
|
|
11124
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11125
|
+
deviceId: number(),
|
|
11126
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11127
|
+
cropJpeg: string().optional(),
|
|
11128
|
+
parent: DetailParentSchema,
|
|
11129
|
+
steps: array(string()).optional()
|
|
11130
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11059
11131
|
object({
|
|
11060
11132
|
detected: boolean(),
|
|
11061
11133
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15093,7 +15165,17 @@ var TrackSchema = object({
|
|
|
15093
15165
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15094
15166
|
totalDistance: number(),
|
|
15095
15167
|
state: TrackStateSchema,
|
|
15096
|
-
active: boolean()
|
|
15168
|
+
active: boolean(),
|
|
15169
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15170
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15171
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15172
|
+
importance: number().optional(),
|
|
15173
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15174
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15175
|
+
bestEventId: string().optional(),
|
|
15176
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15177
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15178
|
+
importanceReason: string().optional()
|
|
15097
15179
|
});
|
|
15098
15180
|
var BaseEventFields = {
|
|
15099
15181
|
id: string(),
|
|
@@ -15158,8 +15240,18 @@ var ObjectEventSchema = object({
|
|
|
15158
15240
|
frameHeight: number().optional(),
|
|
15159
15241
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15160
15242
|
mediaKey: string().optional(),
|
|
15243
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15244
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15245
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15246
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15247
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15248
|
+
keyFrameMediaKey: string().optional(),
|
|
15161
15249
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15162
|
-
mediaUrl: string().optional()
|
|
15250
|
+
mediaUrl: string().optional(),
|
|
15251
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15252
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15253
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15254
|
+
importance: number().optional()
|
|
15163
15255
|
});
|
|
15164
15256
|
var AudioEventSchema = object({
|
|
15165
15257
|
...BaseEventFields,
|
|
@@ -15183,7 +15275,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15183
15275
|
"fullFrame",
|
|
15184
15276
|
"fullFrameBoxed",
|
|
15185
15277
|
"faceCrop",
|
|
15186
|
-
"plateCrop"
|
|
15278
|
+
"plateCrop",
|
|
15279
|
+
"keyFrame"
|
|
15187
15280
|
]);
|
|
15188
15281
|
var MediaFileSchema = object({
|
|
15189
15282
|
key: string(),
|
|
@@ -15204,6 +15297,32 @@ var DeviceEventQueryInput = object({
|
|
|
15204
15297
|
projection: _enum(["full", "slim"]).optional()
|
|
15205
15298
|
});
|
|
15206
15299
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15300
|
+
var KeyEventQueryInput = object({
|
|
15301
|
+
deviceId: number(),
|
|
15302
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15303
|
+
since: number(),
|
|
15304
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15305
|
+
until: number(),
|
|
15306
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15307
|
+
/** Drop tracks scoring below this importance. */
|
|
15308
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15309
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15310
|
+
classFilter: string().optional()
|
|
15311
|
+
});
|
|
15312
|
+
var KeyEventSchema = object({
|
|
15313
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15314
|
+
id: string(),
|
|
15315
|
+
trackId: string(),
|
|
15316
|
+
/** Track start time (firstSeen). */
|
|
15317
|
+
timestamp: number(),
|
|
15318
|
+
className: string(),
|
|
15319
|
+
label: string().optional(),
|
|
15320
|
+
importance: number(),
|
|
15321
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15322
|
+
bestEventId: string(),
|
|
15323
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15324
|
+
windowMs: number().optional()
|
|
15325
|
+
});
|
|
15207
15326
|
var TrackedDetectionSchema = object({
|
|
15208
15327
|
trackId: string(),
|
|
15209
15328
|
className: string(),
|
|
@@ -15233,7 +15352,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15233
15352
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15234
15353
|
kind: "mutation",
|
|
15235
15354
|
auth: "admin"
|
|
15236
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15355
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15237
15356
|
deviceId: number(),
|
|
15238
15357
|
since: number(),
|
|
15239
15358
|
until: number(),
|
|
@@ -16000,7 +16119,12 @@ DeviceType.Camera, method(object({
|
|
|
16000
16119
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
16001
16120
|
kind: "mutation",
|
|
16002
16121
|
auth: "admin"
|
|
16003
|
-
})
|
|
16122
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16123
|
+
deviceId: number(),
|
|
16124
|
+
lastCapturedAt: number().nullable(),
|
|
16125
|
+
cacheAgeMs: number().nullable(),
|
|
16126
|
+
etag: string().nullable()
|
|
16127
|
+
})));
|
|
16004
16128
|
/**
|
|
16005
16129
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
16006
16130
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16296,10 +16420,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16296
16420
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16297
16421
|
* the assertion, bumps the credential counter, returns ok.
|
|
16298
16422
|
*
|
|
16423
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16424
|
+
* passkey IS the primary factor, no password leg:
|
|
16425
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16426
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16427
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16428
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16429
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16430
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16431
|
+
* resolves the credential by the response's credential id,
|
|
16432
|
+
* verifies the assertion against the stored challenge + that
|
|
16433
|
+
* credential's public key/counter, and returns the OWNING
|
|
16434
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16435
|
+
*
|
|
16299
16436
|
* 3. Management:
|
|
16300
16437
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16301
16438
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16302
16439
|
*
|
|
16440
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16441
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16442
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16443
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16444
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16445
|
+
* row ⇒ `enabled: false`).
|
|
16446
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16447
|
+
* the providing addon beside its credentials.
|
|
16448
|
+
*
|
|
16303
16449
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16304
16450
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16305
16451
|
* the cap to non-admins.
|
|
@@ -16342,6 +16488,17 @@ method(object({
|
|
|
16342
16488
|
}), object({ verified: boolean() }), {
|
|
16343
16489
|
kind: "mutation",
|
|
16344
16490
|
access: "view"
|
|
16491
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16492
|
+
kind: "mutation",
|
|
16493
|
+
access: "view"
|
|
16494
|
+
}), method(object({
|
|
16495
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16496
|
+
response: record(string(), unknown()) }), object({
|
|
16497
|
+
verified: boolean(),
|
|
16498
|
+
userId: string().nullable()
|
|
16499
|
+
}), {
|
|
16500
|
+
kind: "mutation",
|
|
16501
|
+
access: "view"
|
|
16345
16502
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16346
16503
|
userId: string(),
|
|
16347
16504
|
credentialId: string()
|
|
@@ -16349,6 +16506,13 @@ method(object({
|
|
|
16349
16506
|
kind: "mutation",
|
|
16350
16507
|
auth: "admin",
|
|
16351
16508
|
access: "delete"
|
|
16509
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16510
|
+
userId: string(),
|
|
16511
|
+
enabled: boolean()
|
|
16512
|
+
}), object({ success: literal(true) }), {
|
|
16513
|
+
kind: "mutation",
|
|
16514
|
+
auth: "admin",
|
|
16515
|
+
access: "create"
|
|
16352
16516
|
});
|
|
16353
16517
|
/**
|
|
16354
16518
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17150,7 +17314,17 @@ var FaceInfoSchema = object({
|
|
|
17150
17314
|
recognizedIdentityId: string().optional(),
|
|
17151
17315
|
identityName: string().optional(),
|
|
17152
17316
|
assigned: boolean(),
|
|
17153
|
-
base64: string().optional()
|
|
17317
|
+
base64: string().optional(),
|
|
17318
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17319
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17320
|
+
* legacy rows written before design B. */
|
|
17321
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17322
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17323
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17324
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17325
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17326
|
+
* back to the inline `base64` face crop. */
|
|
17327
|
+
keyFrameMediaKey: string().optional()
|
|
17154
17328
|
});
|
|
17155
17329
|
var FaceFilterEnum = _enum([
|
|
17156
17330
|
"unassigned",
|
|
@@ -21269,6 +21443,12 @@ Object.freeze({
|
|
|
21269
21443
|
addonId: null,
|
|
21270
21444
|
access: "view"
|
|
21271
21445
|
},
|
|
21446
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21447
|
+
capName: "pipeline-analytics",
|
|
21448
|
+
capScope: "device",
|
|
21449
|
+
addonId: null,
|
|
21450
|
+
access: "view"
|
|
21451
|
+
},
|
|
21272
21452
|
"pipelineAnalytics.getMotionEvents": {
|
|
21273
21453
|
capName: "pipeline-analytics",
|
|
21274
21454
|
capScope: "device",
|
|
@@ -21797,12 +21977,24 @@ Object.freeze({
|
|
|
21797
21977
|
addonId: null,
|
|
21798
21978
|
access: "view"
|
|
21799
21979
|
},
|
|
21980
|
+
"pipelineRunner.getNativeCrop": {
|
|
21981
|
+
capName: "pipeline-runner",
|
|
21982
|
+
capScope: "system",
|
|
21983
|
+
addonId: null,
|
|
21984
|
+
access: "view"
|
|
21985
|
+
},
|
|
21800
21986
|
"pipelineRunner.reportMotion": {
|
|
21801
21987
|
capName: "pipeline-runner",
|
|
21802
21988
|
capScope: "system",
|
|
21803
21989
|
addonId: null,
|
|
21804
21990
|
access: "create"
|
|
21805
21991
|
},
|
|
21992
|
+
"pipelineRunner.runDetailSubtree": {
|
|
21993
|
+
capName: "pipeline-runner",
|
|
21994
|
+
capScope: "system",
|
|
21995
|
+
addonId: null,
|
|
21996
|
+
access: "create"
|
|
21997
|
+
},
|
|
21806
21998
|
"plateGallery.correctPlateText": {
|
|
21807
21999
|
capName: "plate-gallery",
|
|
21808
22000
|
capScope: "system",
|
|
@@ -22163,6 +22355,12 @@ Object.freeze({
|
|
|
22163
22355
|
addonId: null,
|
|
22164
22356
|
access: "view"
|
|
22165
22357
|
},
|
|
22358
|
+
"snapshot.getSnapshotOverview": {
|
|
22359
|
+
capName: "snapshot",
|
|
22360
|
+
capScope: "device",
|
|
22361
|
+
addonId: null,
|
|
22362
|
+
access: "view"
|
|
22363
|
+
},
|
|
22166
22364
|
"snapshot.invalidateCache": {
|
|
22167
22365
|
capName: "snapshot",
|
|
22168
22366
|
capScope: "device",
|
|
@@ -22841,6 +23039,12 @@ Object.freeze({
|
|
|
22841
23039
|
addonId: null,
|
|
22842
23040
|
access: "view"
|
|
22843
23041
|
},
|
|
23042
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23043
|
+
capName: "user-passkeys",
|
|
23044
|
+
capScope: "system",
|
|
23045
|
+
addonId: null,
|
|
23046
|
+
access: "view"
|
|
23047
|
+
},
|
|
22844
23048
|
"userPasskeys.beginRegistration": {
|
|
22845
23049
|
capName: "user-passkeys",
|
|
22846
23050
|
capScope: "system",
|
|
@@ -22853,12 +23057,24 @@ Object.freeze({
|
|
|
22853
23057
|
addonId: null,
|
|
22854
23058
|
access: "view"
|
|
22855
23059
|
},
|
|
23060
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23061
|
+
capName: "user-passkeys",
|
|
23062
|
+
capScope: "system",
|
|
23063
|
+
addonId: null,
|
|
23064
|
+
access: "view"
|
|
23065
|
+
},
|
|
22856
23066
|
"userPasskeys.finishRegistration": {
|
|
22857
23067
|
capName: "user-passkeys",
|
|
22858
23068
|
capScope: "system",
|
|
22859
23069
|
addonId: null,
|
|
22860
23070
|
access: "create"
|
|
22861
23071
|
},
|
|
23072
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23073
|
+
capName: "user-passkeys",
|
|
23074
|
+
capScope: "system",
|
|
23075
|
+
addonId: null,
|
|
23076
|
+
access: "view"
|
|
23077
|
+
},
|
|
22862
23078
|
"userPasskeys.listPasskeys": {
|
|
22863
23079
|
capName: "user-passkeys",
|
|
22864
23080
|
capScope: "system",
|
|
@@ -22871,6 +23087,12 @@ Object.freeze({
|
|
|
22871
23087
|
addonId: null,
|
|
22872
23088
|
access: "delete"
|
|
22873
23089
|
},
|
|
23090
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23091
|
+
capName: "user-passkeys",
|
|
23092
|
+
capScope: "system",
|
|
23093
|
+
addonId: null,
|
|
23094
|
+
access: "create"
|
|
23095
|
+
},
|
|
22874
23096
|
"vacuumControl.locate": {
|
|
22875
23097
|
capName: "vacuum-control",
|
|
22876
23098
|
capScope: "device",
|
|
@@ -4629,7 +4629,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4629
4629
|
return inst;
|
|
4630
4630
|
}
|
|
4631
4631
|
//#endregion
|
|
4632
|
-
//#region ../types/dist/sleep-
|
|
4632
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4633
4633
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4634
4634
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4635
4635
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6733,6 +6733,18 @@ function method(input, output, options) {
|
|
|
6733
6733
|
timeoutMs: options?.timeoutMs
|
|
6734
6734
|
};
|
|
6735
6735
|
}
|
|
6736
|
+
/**
|
|
6737
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6738
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6739
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6740
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6741
|
+
*/
|
|
6742
|
+
function systemMethod(input, output, options) {
|
|
6743
|
+
return {
|
|
6744
|
+
...method(input, output, options),
|
|
6745
|
+
systemOnly: true
|
|
6746
|
+
};
|
|
6747
|
+
}
|
|
6736
6748
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6737
6749
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6738
6750
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10471,6 +10483,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10471
10483
|
defaultModelId: string(),
|
|
10472
10484
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10473
10485
|
enabledByDefault: boolean().optional(),
|
|
10486
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10474
10487
|
defaultConfidence: number(),
|
|
10475
10488
|
group: string().optional(),
|
|
10476
10489
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10652,7 +10665,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10652
10665
|
image: _instanceof(Uint8Array).optional(),
|
|
10653
10666
|
referenceImage: string().optional(),
|
|
10654
10667
|
deviceId: number().optional(),
|
|
10655
|
-
sessionId: string().optional()
|
|
10668
|
+
sessionId: string().optional(),
|
|
10669
|
+
/**
|
|
10670
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10671
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10672
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10673
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10674
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10675
|
+
*/
|
|
10676
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10656
10677
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10657
10678
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10658
10679
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10777,6 +10798,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10777
10798
|
auth: "admin"
|
|
10778
10799
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10779
10800
|
/**
|
|
10801
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10802
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10803
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10804
|
+
* dims — no native resolution to plumb.
|
|
10805
|
+
*/
|
|
10806
|
+
var NativeCropBboxSchema = object({
|
|
10807
|
+
x: number(),
|
|
10808
|
+
y: number(),
|
|
10809
|
+
w: number(),
|
|
10810
|
+
h: number()
|
|
10811
|
+
});
|
|
10812
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10813
|
+
var NativeCropResultSchema = object({
|
|
10814
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10815
|
+
bytes: _instanceof(Uint8Array),
|
|
10816
|
+
width: number().int().positive(),
|
|
10817
|
+
height: number().int().positive()
|
|
10818
|
+
});
|
|
10819
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10820
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10821
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10822
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10823
|
+
* normalized [0,1] convention). */
|
|
10824
|
+
var DetailParentSchema = object({
|
|
10825
|
+
bbox: NativeCropBboxSchema,
|
|
10826
|
+
className: string()
|
|
10827
|
+
});
|
|
10828
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10829
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10830
|
+
* single tracked detection. */
|
|
10831
|
+
var DetailResultSchema = object({
|
|
10832
|
+
stepId: string(),
|
|
10833
|
+
className: string(),
|
|
10834
|
+
score: number(),
|
|
10835
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10836
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10837
|
+
embedding: string().optional(),
|
|
10838
|
+
label: string().optional(),
|
|
10839
|
+
alignedCropJpeg: string().optional()
|
|
10840
|
+
});
|
|
10841
|
+
/**
|
|
10780
10842
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10781
10843
|
* by both the Zod data schema (validation + default fallback) and
|
|
10782
10844
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11032,7 +11094,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11032
11094
|
avgInferenceTimeMs: number(),
|
|
11033
11095
|
queueDepth: number()
|
|
11034
11096
|
});
|
|
11035
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11097
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11098
|
+
handle: FrameHandleSchema,
|
|
11099
|
+
bbox: NativeCropBboxSchema,
|
|
11100
|
+
maxWidth: number().int().positive().optional()
|
|
11101
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11102
|
+
deviceId: number(),
|
|
11103
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11104
|
+
cropJpeg: string().optional(),
|
|
11105
|
+
parent: DetailParentSchema,
|
|
11106
|
+
steps: array(string()).optional()
|
|
11107
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11036
11108
|
object({
|
|
11037
11109
|
detected: boolean(),
|
|
11038
11110
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15070,7 +15142,17 @@ var TrackSchema = object({
|
|
|
15070
15142
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15071
15143
|
totalDistance: number(),
|
|
15072
15144
|
state: TrackStateSchema,
|
|
15073
|
-
active: boolean()
|
|
15145
|
+
active: boolean(),
|
|
15146
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15147
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15148
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15149
|
+
importance: number().optional(),
|
|
15150
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15151
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15152
|
+
bestEventId: string().optional(),
|
|
15153
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15154
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15155
|
+
importanceReason: string().optional()
|
|
15074
15156
|
});
|
|
15075
15157
|
var BaseEventFields = {
|
|
15076
15158
|
id: string(),
|
|
@@ -15135,8 +15217,18 @@ var ObjectEventSchema = object({
|
|
|
15135
15217
|
frameHeight: number().optional(),
|
|
15136
15218
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15137
15219
|
mediaKey: string().optional(),
|
|
15220
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15221
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15222
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15223
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15224
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15225
|
+
keyFrameMediaKey: string().optional(),
|
|
15138
15226
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15139
|
-
mediaUrl: string().optional()
|
|
15227
|
+
mediaUrl: string().optional(),
|
|
15228
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15229
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15230
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15231
|
+
importance: number().optional()
|
|
15140
15232
|
});
|
|
15141
15233
|
var AudioEventSchema = object({
|
|
15142
15234
|
...BaseEventFields,
|
|
@@ -15160,7 +15252,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15160
15252
|
"fullFrame",
|
|
15161
15253
|
"fullFrameBoxed",
|
|
15162
15254
|
"faceCrop",
|
|
15163
|
-
"plateCrop"
|
|
15255
|
+
"plateCrop",
|
|
15256
|
+
"keyFrame"
|
|
15164
15257
|
]);
|
|
15165
15258
|
var MediaFileSchema = object({
|
|
15166
15259
|
key: string(),
|
|
@@ -15181,6 +15274,32 @@ var DeviceEventQueryInput = object({
|
|
|
15181
15274
|
projection: _enum(["full", "slim"]).optional()
|
|
15182
15275
|
});
|
|
15183
15276
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15277
|
+
var KeyEventQueryInput = object({
|
|
15278
|
+
deviceId: number(),
|
|
15279
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15280
|
+
since: number(),
|
|
15281
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15282
|
+
until: number(),
|
|
15283
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15284
|
+
/** Drop tracks scoring below this importance. */
|
|
15285
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15286
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15287
|
+
classFilter: string().optional()
|
|
15288
|
+
});
|
|
15289
|
+
var KeyEventSchema = object({
|
|
15290
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15291
|
+
id: string(),
|
|
15292
|
+
trackId: string(),
|
|
15293
|
+
/** Track start time (firstSeen). */
|
|
15294
|
+
timestamp: number(),
|
|
15295
|
+
className: string(),
|
|
15296
|
+
label: string().optional(),
|
|
15297
|
+
importance: number(),
|
|
15298
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15299
|
+
bestEventId: string(),
|
|
15300
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15301
|
+
windowMs: number().optional()
|
|
15302
|
+
});
|
|
15184
15303
|
var TrackedDetectionSchema = object({
|
|
15185
15304
|
trackId: string(),
|
|
15186
15305
|
className: string(),
|
|
@@ -15210,7 +15329,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15210
15329
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15211
15330
|
kind: "mutation",
|
|
15212
15331
|
auth: "admin"
|
|
15213
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15332
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15214
15333
|
deviceId: number(),
|
|
15215
15334
|
since: number(),
|
|
15216
15335
|
until: number(),
|
|
@@ -15977,7 +16096,12 @@ DeviceType.Camera, method(object({
|
|
|
15977
16096
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
15978
16097
|
kind: "mutation",
|
|
15979
16098
|
auth: "admin"
|
|
15980
|
-
})
|
|
16099
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16100
|
+
deviceId: number(),
|
|
16101
|
+
lastCapturedAt: number().nullable(),
|
|
16102
|
+
cacheAgeMs: number().nullable(),
|
|
16103
|
+
etag: string().nullable()
|
|
16104
|
+
})));
|
|
15981
16105
|
/**
|
|
15982
16106
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
15983
16107
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16273,10 +16397,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16273
16397
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16274
16398
|
* the assertion, bumps the credential counter, returns ok.
|
|
16275
16399
|
*
|
|
16400
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16401
|
+
* passkey IS the primary factor, no password leg:
|
|
16402
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16403
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16404
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16405
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16406
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16407
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16408
|
+
* resolves the credential by the response's credential id,
|
|
16409
|
+
* verifies the assertion against the stored challenge + that
|
|
16410
|
+
* credential's public key/counter, and returns the OWNING
|
|
16411
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16412
|
+
*
|
|
16276
16413
|
* 3. Management:
|
|
16277
16414
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16278
16415
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16279
16416
|
*
|
|
16417
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16418
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16419
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16420
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16421
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16422
|
+
* row ⇒ `enabled: false`).
|
|
16423
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16424
|
+
* the providing addon beside its credentials.
|
|
16425
|
+
*
|
|
16280
16426
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16281
16427
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16282
16428
|
* the cap to non-admins.
|
|
@@ -16319,6 +16465,17 @@ method(object({
|
|
|
16319
16465
|
}), object({ verified: boolean() }), {
|
|
16320
16466
|
kind: "mutation",
|
|
16321
16467
|
access: "view"
|
|
16468
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16469
|
+
kind: "mutation",
|
|
16470
|
+
access: "view"
|
|
16471
|
+
}), method(object({
|
|
16472
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16473
|
+
response: record(string(), unknown()) }), object({
|
|
16474
|
+
verified: boolean(),
|
|
16475
|
+
userId: string().nullable()
|
|
16476
|
+
}), {
|
|
16477
|
+
kind: "mutation",
|
|
16478
|
+
access: "view"
|
|
16322
16479
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16323
16480
|
userId: string(),
|
|
16324
16481
|
credentialId: string()
|
|
@@ -16326,6 +16483,13 @@ method(object({
|
|
|
16326
16483
|
kind: "mutation",
|
|
16327
16484
|
auth: "admin",
|
|
16328
16485
|
access: "delete"
|
|
16486
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16487
|
+
userId: string(),
|
|
16488
|
+
enabled: boolean()
|
|
16489
|
+
}), object({ success: literal(true) }), {
|
|
16490
|
+
kind: "mutation",
|
|
16491
|
+
auth: "admin",
|
|
16492
|
+
access: "create"
|
|
16329
16493
|
});
|
|
16330
16494
|
/**
|
|
16331
16495
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17127,7 +17291,17 @@ var FaceInfoSchema = object({
|
|
|
17127
17291
|
recognizedIdentityId: string().optional(),
|
|
17128
17292
|
identityName: string().optional(),
|
|
17129
17293
|
assigned: boolean(),
|
|
17130
|
-
base64: string().optional()
|
|
17294
|
+
base64: string().optional(),
|
|
17295
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17296
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17297
|
+
* legacy rows written before design B. */
|
|
17298
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17299
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17300
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17301
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17302
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17303
|
+
* back to the inline `base64` face crop. */
|
|
17304
|
+
keyFrameMediaKey: string().optional()
|
|
17131
17305
|
});
|
|
17132
17306
|
var FaceFilterEnum = _enum([
|
|
17133
17307
|
"unassigned",
|
|
@@ -21246,6 +21420,12 @@ Object.freeze({
|
|
|
21246
21420
|
addonId: null,
|
|
21247
21421
|
access: "view"
|
|
21248
21422
|
},
|
|
21423
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21424
|
+
capName: "pipeline-analytics",
|
|
21425
|
+
capScope: "device",
|
|
21426
|
+
addonId: null,
|
|
21427
|
+
access: "view"
|
|
21428
|
+
},
|
|
21249
21429
|
"pipelineAnalytics.getMotionEvents": {
|
|
21250
21430
|
capName: "pipeline-analytics",
|
|
21251
21431
|
capScope: "device",
|
|
@@ -21774,12 +21954,24 @@ Object.freeze({
|
|
|
21774
21954
|
addonId: null,
|
|
21775
21955
|
access: "view"
|
|
21776
21956
|
},
|
|
21957
|
+
"pipelineRunner.getNativeCrop": {
|
|
21958
|
+
capName: "pipeline-runner",
|
|
21959
|
+
capScope: "system",
|
|
21960
|
+
addonId: null,
|
|
21961
|
+
access: "view"
|
|
21962
|
+
},
|
|
21777
21963
|
"pipelineRunner.reportMotion": {
|
|
21778
21964
|
capName: "pipeline-runner",
|
|
21779
21965
|
capScope: "system",
|
|
21780
21966
|
addonId: null,
|
|
21781
21967
|
access: "create"
|
|
21782
21968
|
},
|
|
21969
|
+
"pipelineRunner.runDetailSubtree": {
|
|
21970
|
+
capName: "pipeline-runner",
|
|
21971
|
+
capScope: "system",
|
|
21972
|
+
addonId: null,
|
|
21973
|
+
access: "create"
|
|
21974
|
+
},
|
|
21783
21975
|
"plateGallery.correctPlateText": {
|
|
21784
21976
|
capName: "plate-gallery",
|
|
21785
21977
|
capScope: "system",
|
|
@@ -22140,6 +22332,12 @@ Object.freeze({
|
|
|
22140
22332
|
addonId: null,
|
|
22141
22333
|
access: "view"
|
|
22142
22334
|
},
|
|
22335
|
+
"snapshot.getSnapshotOverview": {
|
|
22336
|
+
capName: "snapshot",
|
|
22337
|
+
capScope: "device",
|
|
22338
|
+
addonId: null,
|
|
22339
|
+
access: "view"
|
|
22340
|
+
},
|
|
22143
22341
|
"snapshot.invalidateCache": {
|
|
22144
22342
|
capName: "snapshot",
|
|
22145
22343
|
capScope: "device",
|
|
@@ -22818,6 +23016,12 @@ Object.freeze({
|
|
|
22818
23016
|
addonId: null,
|
|
22819
23017
|
access: "view"
|
|
22820
23018
|
},
|
|
23019
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23020
|
+
capName: "user-passkeys",
|
|
23021
|
+
capScope: "system",
|
|
23022
|
+
addonId: null,
|
|
23023
|
+
access: "view"
|
|
23024
|
+
},
|
|
22821
23025
|
"userPasskeys.beginRegistration": {
|
|
22822
23026
|
capName: "user-passkeys",
|
|
22823
23027
|
capScope: "system",
|
|
@@ -22830,12 +23034,24 @@ Object.freeze({
|
|
|
22830
23034
|
addonId: null,
|
|
22831
23035
|
access: "view"
|
|
22832
23036
|
},
|
|
23037
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23038
|
+
capName: "user-passkeys",
|
|
23039
|
+
capScope: "system",
|
|
23040
|
+
addonId: null,
|
|
23041
|
+
access: "view"
|
|
23042
|
+
},
|
|
22833
23043
|
"userPasskeys.finishRegistration": {
|
|
22834
23044
|
capName: "user-passkeys",
|
|
22835
23045
|
capScope: "system",
|
|
22836
23046
|
addonId: null,
|
|
22837
23047
|
access: "create"
|
|
22838
23048
|
},
|
|
23049
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23050
|
+
capName: "user-passkeys",
|
|
23051
|
+
capScope: "system",
|
|
23052
|
+
addonId: null,
|
|
23053
|
+
access: "view"
|
|
23054
|
+
},
|
|
22839
23055
|
"userPasskeys.listPasskeys": {
|
|
22840
23056
|
capName: "user-passkeys",
|
|
22841
23057
|
capScope: "system",
|
|
@@ -22848,6 +23064,12 @@ Object.freeze({
|
|
|
22848
23064
|
addonId: null,
|
|
22849
23065
|
access: "delete"
|
|
22850
23066
|
},
|
|
23067
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23068
|
+
capName: "user-passkeys",
|
|
23069
|
+
capScope: "system",
|
|
23070
|
+
addonId: null,
|
|
23071
|
+
access: "create"
|
|
23072
|
+
},
|
|
22851
23073
|
"vacuumControl.locate": {
|
|
22852
23074
|
capName: "vacuum-control",
|
|
22853
23075
|
capScope: "device",
|
package/dist/webdav.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-BL-GGrW8.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let webdav = require("webdav");
|
|
8
8
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/dist/webdav.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-CFMg2pY9.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { AuthType, createClient } from "webdav";
|
|
4
4
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/package.json
CHANGED