@a4anthony/proctorkit-vue 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +176 -8
  2. package/dist/ProctoredAssessment.vue.d.ts +70 -2
  3. package/dist/ProctoredAssessment.vue.d.ts.map +1 -1
  4. package/dist/ProctoringDeviceSettings.vue.d.ts +27 -1
  5. package/dist/ProctoringDeviceSettings.vue.d.ts.map +1 -1
  6. package/dist/ProctoringSystemCheck.vue.d.ts +39 -11
  7. package/dist/ProctoringSystemCheck.vue.d.ts.map +1 -1
  8. package/dist/browser-face-detector.d.ts +59 -0
  9. package/dist/browser-face-detector.d.ts.map +1 -0
  10. package/dist/check-cards/system/DisplayPermissionDialog.vue.d.ts +24 -0
  11. package/dist/check-cards/system/DisplayPermissionDialog.vue.d.ts.map +1 -0
  12. package/dist/check-cards/system/DisplayRecovery.vue.d.ts +25 -0
  13. package/dist/check-cards/system/DisplayRecovery.vue.d.ts.map +1 -0
  14. package/dist/check-cards/system/SystemCheckCard.vue.d.ts +13 -1
  15. package/dist/check-cards/system/SystemCheckCard.vue.d.ts.map +1 -1
  16. package/dist/check-cards/system/display-progress-story.d.ts +468 -0
  17. package/dist/check-cards/system/display-progress-story.d.ts.map +1 -0
  18. package/dist/check-cards/system/display-recovery-story.d.ts +290 -0
  19. package/dist/check-cards/system/display-recovery-story.d.ts.map +1 -0
  20. package/dist/demo-runner/QuestionCard.vue.d.ts.map +1 -1
  21. package/dist/detect-face.d.ts +22 -95
  22. package/dist/detect-face.d.ts.map +1 -1
  23. package/dist/i18n/merge.d.ts.map +1 -1
  24. package/dist/index.d.ts +19 -8
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +9637 -2485
  27. package/dist/media-controls/AudioPlayer.vue.d.ts +43 -20
  28. package/dist/media-controls/AudioPlayer.vue.d.ts.map +1 -1
  29. package/dist/media-controls/AudioRecorder.vue.d.ts +171 -11
  30. package/dist/media-controls/AudioRecorder.vue.d.ts.map +1 -1
  31. package/dist/media-controls/RecorderUploadIndicator.vue.d.ts +17 -0
  32. package/dist/media-controls/RecorderUploadIndicator.vue.d.ts.map +1 -0
  33. package/dist/media-controls/VideoPlayer.vue.d.ts +36 -13
  34. package/dist/media-controls/VideoPlayer.vue.d.ts.map +1 -1
  35. package/dist/media-controls/VideoRecorder.vue.d.ts +90 -10
  36. package/dist/media-controls/VideoRecorder.vue.d.ts.map +1 -1
  37. package/dist/media-controls/audio-recorder-messages.d.ts +15 -0
  38. package/dist/media-controls/audio-recorder-messages.d.ts.map +1 -0
  39. package/dist/media-controls/local-media-playback-client.d.ts +2 -6
  40. package/dist/media-controls/local-media-playback-client.d.ts.map +1 -1
  41. package/dist/media-controls/local-media-recording-client.d.ts.map +1 -1
  42. package/dist/media-controls/media-recovery-story.d.ts +9 -0
  43. package/dist/media-controls/media-recovery-story.d.ts.map +1 -0
  44. package/dist/media-controls/storybook-mock-client.d.ts +2 -0
  45. package/dist/media-controls/storybook-mock-client.d.ts.map +1 -1
  46. package/dist/media-controls/types.d.ts +63 -7
  47. package/dist/media-controls/types.d.ts.map +1 -1
  48. package/dist/media-controls/ui-config.d.ts +2 -2
  49. package/dist/media-controls/ui-config.d.ts.map +1 -1
  50. package/dist/media-controls/useLiveInputCheck.d.ts +18 -0
  51. package/dist/media-controls/useLiveInputCheck.d.ts.map +1 -0
  52. package/dist/media-controls/useMediaClipRecorder.d.ts +90 -12
  53. package/dist/media-controls/useMediaClipRecorder.d.ts.map +1 -1
  54. package/dist/media-controls/useMediaFilePlayback.d.ts +8 -1
  55. package/dist/media-controls/useMediaFilePlayback.d.ts.map +1 -1
  56. package/dist/media-controls/useMinimumVisibleUpload.d.ts +18 -0
  57. package/dist/media-controls/useMinimumVisibleUpload.d.ts.map +1 -0
  58. package/dist/proctored-assessment/PreparationGate.vue.d.ts +16 -0
  59. package/dist/proctored-assessment/PreparationGate.vue.d.ts.map +1 -0
  60. package/dist/proctored-assessment/preparation-feedback.d.ts +7 -0
  61. package/dist/proctored-assessment/preparation-feedback.d.ts.map +1 -0
  62. package/dist/proctored-assessment/replay-failure-queue.d.ts +18 -0
  63. package/dist/proctored-assessment/replay-failure-queue.d.ts.map +1 -0
  64. package/dist/proctored-assessment/replay-failure-queue.test.d.ts +2 -0
  65. package/dist/proctored-assessment/replay-failure-queue.test.d.ts.map +1 -0
  66. package/dist/proctored-assessment/request-deadline.d.ts +1 -0
  67. package/dist/proctored-assessment/request-deadline.d.ts.map +1 -1
  68. package/dist/proctored-assessment/resume-microphone-route.d.ts +13 -0
  69. package/dist/proctored-assessment/resume-microphone-route.d.ts.map +1 -0
  70. package/dist/proctored-assessment/resume-microphone-route.test.d.ts +2 -0
  71. package/dist/proctored-assessment/resume-microphone-route.test.d.ts.map +1 -0
  72. package/dist/proctored-assessment/resume-probe.d.ts +13 -0
  73. package/dist/proctored-assessment/resume-probe.d.ts.map +1 -1
  74. package/dist/proctored-assessment/resume-speaker-confirmation.d.ts +27 -0
  75. package/dist/proctored-assessment/resume-speaker-confirmation.d.ts.map +1 -0
  76. package/dist/proctored-assessment/resume-speaker-route.d.ts +32 -0
  77. package/dist/proctored-assessment/resume-speaker-route.d.ts.map +1 -0
  78. package/dist/proctored-assessment/session-start.d.ts +2 -2
  79. package/dist/proctored-assessment/types.d.ts +14 -4
  80. package/dist/proctored-assessment/types.d.ts.map +1 -1
  81. package/dist/proctored-assessment/usePreparationRetryTiming.d.ts +13 -0
  82. package/dist/proctored-assessment/usePreparationRetryTiming.d.ts.map +1 -0
  83. package/dist/proctored-assessment/useResumeDisplayGuard.d.ts +20 -0
  84. package/dist/proctored-assessment/useResumeDisplayGuard.d.ts.map +1 -0
  85. package/dist/proctoring-client.d.ts +6 -2
  86. package/dist/proctoring-client.d.ts.map +1 -1
  87. package/dist/proctoring-system-check-contract.d.ts +2 -0
  88. package/dist/proctoring-system-check-contract.d.ts.map +1 -1
  89. package/dist/runtime-devices/DevicePickerItem.vue.d.ts +58 -0
  90. package/dist/runtime-devices/DevicePickerItem.vue.d.ts.map +1 -0
  91. package/dist/runtime-devices/PickerMessage.vue.d.ts +17 -0
  92. package/dist/runtime-devices/PickerMessage.vue.d.ts.map +1 -0
  93. package/dist/runtime-devices/ProctoringDevicePicker.vue.d.ts +89 -0
  94. package/dist/runtime-devices/ProctoringDevicePicker.vue.d.ts.map +1 -0
  95. package/dist/runtime-devices/device-picker-messages.d.ts +42 -0
  96. package/dist/runtime-devices/device-picker-messages.d.ts.map +1 -0
  97. package/dist/runtime-devices/microphone-attention.d.ts +48 -0
  98. package/dist/runtime-devices/microphone-attention.d.ts.map +1 -0
  99. package/dist/runtime-devices/microphone-check-messages.d.ts +13 -0
  100. package/dist/runtime-devices/microphone-check-messages.d.ts.map +1 -0
  101. package/dist/runtime-devices/runtime-device-activity.d.ts +16 -0
  102. package/dist/runtime-devices/runtime-device-activity.d.ts.map +1 -0
  103. package/dist/runtime-devices/runtime-device-selection.d.ts +11 -0
  104. package/dist/runtime-devices/runtime-device-selection.d.ts.map +1 -0
  105. package/dist/runtime-devices/useRuntimeDevice.d.ts +72 -0
  106. package/dist/runtime-devices/useRuntimeDevice.d.ts.map +1 -0
  107. package/dist/runtime-devices/useTrackLoss.d.ts +15 -0
  108. package/dist/runtime-devices/useTrackLoss.d.ts.map +1 -0
  109. package/dist/style.css +367 -14
  110. package/dist/text-answer/ProctoredTextarea.vue.d.ts +8 -1
  111. package/dist/text-answer/ProctoredTextarea.vue.d.ts.map +1 -1
  112. package/dist/text-answer/useProctoredText.d.ts +5 -2
  113. package/dist/text-answer/useProctoredText.d.ts.map +1 -1
  114. package/dist/ui/ProctoringAlert.vue.d.ts.map +1 -1
  115. package/dist/ui/ProctoringFileUpload.vue.d.ts +3 -3
  116. package/dist/ui/ProctoringFileUpload.vue.d.ts.map +1 -1
  117. package/dist/ui/ProctoringInput.vue.d.ts +3 -3
  118. package/dist/ui/ProctoringInput.vue.d.ts.map +1 -1
  119. package/dist/ui/ProctoringSelect.vue.d.ts +2 -2
  120. package/dist/ui/ProctoringSelect.vue.d.ts.map +1 -1
  121. package/dist/usePreflightCheck.d.ts +4 -3
  122. package/dist/usePreflightCheck.d.ts.map +1 -1
  123. package/dist/vision_bundle-8xEDyfqS.js +4160 -0
  124. package/dist/wizard/BrowserDisplayPermissionGuide.vue.d.ts +11 -0
  125. package/dist/wizard/BrowserDisplayPermissionGuide.vue.d.ts.map +1 -0
  126. package/dist/wizard/BrowserPermissionLocation.vue.d.ts +9 -0
  127. package/dist/wizard/BrowserPermissionLocation.vue.d.ts.map +1 -0
  128. package/dist/wizard/CameraStep.vue.d.ts +10 -1
  129. package/dist/wizard/CameraStep.vue.d.ts.map +1 -1
  130. package/dist/wizard/CandidateHeadshotField.vue.d.ts.map +1 -1
  131. package/dist/wizard/CandidateIntakeStep.vue.d.ts +3 -0
  132. package/dist/wizard/CandidateIntakeStep.vue.d.ts.map +1 -1
  133. package/dist/wizard/ChecklistShell.vue.d.ts +3 -0
  134. package/dist/wizard/ChecklistShell.vue.d.ts.map +1 -1
  135. package/dist/wizard/FinalStep.vue.d.ts +6 -2
  136. package/dist/wizard/FinalStep.vue.d.ts.map +1 -1
  137. package/dist/wizard/MediaDeviceSelect.vue.d.ts +11 -1
  138. package/dist/wizard/MediaDeviceSelect.vue.d.ts.map +1 -1
  139. package/dist/wizard/MicStep.vue.d.ts +24 -3
  140. package/dist/wizard/MicStep.vue.d.ts.map +1 -1
  141. package/dist/wizard/PermissionDeniedPanel.vue.d.ts +9 -4
  142. package/dist/wizard/PermissionDeniedPanel.vue.d.ts.map +1 -1
  143. package/dist/wizard/ResumeCheck.vue.d.ts +16 -2
  144. package/dist/wizard/ResumeCheck.vue.d.ts.map +1 -1
  145. package/dist/wizard/SpeakerStep.vue.d.ts +17 -4
  146. package/dist/wizard/SpeakerStep.vue.d.ts.map +1 -1
  147. package/dist/wizard/SystemStep.vue.d.ts +9 -0
  148. package/dist/wizard/SystemStep.vue.d.ts.map +1 -1
  149. package/dist/wizard/WizardShell.vue.d.ts +3 -3
  150. package/dist/wizard/WizardShell.vue.d.ts.map +1 -1
  151. package/dist/wizard/candidate-intake-draft.d.ts +9 -0
  152. package/dist/wizard/candidate-intake-draft.d.ts.map +1 -0
  153. package/dist/wizard/display-diagnostics.d.ts +21 -0
  154. package/dist/wizard/display-diagnostics.d.ts.map +1 -0
  155. package/dist/wizard/event-telemetry.d.ts +24 -0
  156. package/dist/wizard/event-telemetry.d.ts.map +1 -0
  157. package/dist/wizard/media-device-list.d.ts +8 -1
  158. package/dist/wizard/media-device-list.d.ts.map +1 -1
  159. package/dist/wizard/microphone-preflight-trace.d.ts +10 -0
  160. package/dist/wizard/microphone-preflight-trace.d.ts.map +1 -0
  161. package/dist/wizard/microphone-preflight-trace.test.d.ts +2 -0
  162. package/dist/wizard/microphone-preflight-trace.test.d.ts.map +1 -0
  163. package/dist/wizard/resume-check-stories/shared.d.ts +35 -11
  164. package/dist/wizard/resume-check-stories/shared.d.ts.map +1 -1
  165. package/dist/wizard/speaker-test-tone.d.ts +29 -4
  166. package/dist/wizard/speaker-test-tone.d.ts.map +1 -1
  167. package/dist/wizard/useCandidateIssues.d.ts +30 -0
  168. package/dist/wizard/useCandidateIssues.d.ts.map +1 -0
  169. package/dist/wizard/useCandidateIssues.test.d.ts +2 -0
  170. package/dist/wizard/useCandidateIssues.test.d.ts.map +1 -0
  171. package/dist/wizard/useLiveDisplayCheck.d.ts +8 -0
  172. package/dist/wizard/useLiveDisplayCheck.d.ts.map +1 -0
  173. package/dist/wizard/usePreflightTelemetry.d.ts +6 -26
  174. package/dist/wizard/usePreflightTelemetry.d.ts.map +1 -1
  175. package/dist/wizard/useWizardSteps.d.ts +10 -1
  176. package/dist/wizard/useWizardSteps.d.ts.map +1 -1
  177. package/package.json +4 -3
package/README.md CHANGED
@@ -314,13 +314,15 @@ Slots:
314
314
 
315
315
  Use `ProctoringSystemCheck` directly only when you need a custom preflight UI or
316
316
  framework wrapper. Normal Vue integrations should not need to import
317
- `createNestDetectFace`, build `engineOptions`, or manually check preflight
317
+ `createBrowserDetectFace`, build `engineOptions`, or manually check preflight
318
318
  outcomes.
319
319
 
320
320
  When you mount `ProctoringSystemCheck` directly, either serve the VAD assets at
321
321
  `/vad/` and `/ort/`, or pass the same `vad-assets` object shown above. Direct
322
322
  wizard mounts do not know your API base URL, so they cannot infer the backend
323
- asset routes automatically.
323
+ asset routes automatically. The in-browser face detector's assets default to
324
+ `/sdk-assets/vision/<version>/` at the ingest URL's origin; pass `vision-assets`
325
+ to serve them elsewhere.
324
326
 
325
327
  ## Media question components
326
328
 
@@ -372,25 +374,189 @@ import { AudioPlayer, AudioRecorder, VideoRecorder } from "@a4anthony/proctorkit
372
374
  <AudioRecorder
373
375
  :client="client"
374
376
  title="Speaking answer"
377
+ :clip-id="question.currentAudioClipId"
375
378
  :max-duration-ms="120000"
376
- @uploaded="({ clipNumber }) => saveAnswer({ clipNumber })"
377
- @dropped="({ reason }) => showUploadError(reason)"
379
+ @uploaded="
380
+ ({ kind, clipId, clipNumber, delivery }) =>
381
+ saveAnswer({ kind, clipId, clipNumber, delivery })
382
+ "
383
+ @dropped="({ clipId, code, reason }) => showUploadError({ clipId, code, reason })"
378
384
  />
379
385
 
380
386
  <VideoRecorder
381
387
  :client="client"
382
388
  title="Video answer"
389
+ :clip-id="question.currentVideoClipId"
383
390
  :max-duration-ms="120000"
384
391
  :stream="candidateCameraStream"
385
392
  :video-bitrate="1500000"
386
- @uploaded="({ clipNumber }) => saveAnswer({ clipNumber })"
387
- @dropped="({ reason }) => showUploadError(reason)"
393
+ @uploaded="
394
+ ({ kind, clipId, clipNumber, delivery }) =>
395
+ saveAnswer({ kind, clipId, clipNumber, delivery })
396
+ "
397
+ @dropped="({ clipId, code, reason }) => showUploadError({ clipId, code, reason })"
388
398
  />
389
399
  </template>
390
400
  </ProctoredAssessment>
391
401
  </template>
392
402
  ```
393
403
 
404
+ `clip-id` is optional. When omitted, ProctorKit generates a stable opaque ID
405
+ for the current take only. Generated IDs are not persisted across a component
406
+ or client recreation. Persist the accepted `clipId` with the logical answer so
407
+ you can correlate stored results across a reload. A reload cannot resume an
408
+ in-progress recording or its retry bytes: start a new take with a new ID after a
409
+ reload or new component/client instance, even with the same answer mapping.
410
+ Reuse an ID only for the exact retained bytes of a retry. When the host provides
411
+ an ID, use a fresh 1–200-character ASCII token for every
412
+ distinct retake (for example,
413
+ `speaking-q31-<unique-value>.webm`); `.webm` and `.opus` suffixes are allowed.
414
+ Reuse an ID only to retry the same media bytes. A different recording with the
415
+ same ID produces a `dropped` payload with `code: "conflict"` and
416
+ `reason: "clip-id-conflict"`. Update the current ID before the candidate starts
417
+ another distinct take.
418
+
419
+ All recorder lifecycle payloads — `started`, `stopped`, `uploaded`, `dropped`,
420
+ and `clip-mirror-failed` — contain `clipId`. Use a persisted accepted ID to
421
+ correlate a stored answer with its question across a reload; never re-supply it
422
+ for different media. `started` and `stopped` carry a provisional `clipNumber`.
423
+ `uploaded` also carries `delivery`:
424
+
425
+ | `delivery` | `clipNumber` | Persist |
426
+ | -------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
427
+ | `"client"` | Provisional because the host `sendClip` completes before ProctorKit allocates a number. | Use `clipId` as the stable answer and evidence correlation key. |
428
+ | `"fallback"` | Canonical within the session and media kind. | Store `kind`, `clipId`, `clipNumber`, `answerReference`, `contentSha256`, and `fallbackSelection`; it is emitted only after the server records the exact durable fallback selection. |
429
+ | `"proctorkit"` | Canonical within the session and media kind. | Save `kind`, `clipId`, and `clipNumber` for ProctorKit lookup. |
430
+ | `"local"` | Provisional and non-canonical. No client or `sendClip` received the bytes. | Do not treat it as an uploaded answer; use this mode only for non-proctored local UI. |
431
+
432
+ The clip ID is never used as a storage path or trusted as a media-type
433
+ extension. Deploy the clip-ID-aware server before upgrading clients: an older
434
+ or misrouted server is surfaced as `dropped` with `code: "server-error"` and
435
+ `reason: "invalid-response"`, rather than a false success.
436
+
437
+ ### Host-primary recording upload
438
+
439
+ `sendClip` delivers each finalized recording to your backend as the primary
440
+ upload. Its optional second argument lets the component render upload progress
441
+ internally:
442
+
443
+ ```ts
444
+ import type { MediaClipDataSink } from "@a4anthony/proctorkit-vue";
445
+
446
+ const sendClip: MediaClipDataSink = (clip, context) =>
447
+ new Promise<void>((resolve, reject) => {
448
+ const request = new XMLHttpRequest();
449
+ const signal = context?.signal;
450
+ const abort = () => request.abort();
451
+ const cleanup = () => signal?.removeEventListener("abort", abort);
452
+ request.upload.onprogress = ({ lengthComputable, loaded, total }) => {
453
+ if (lengthComputable && total > 0) {
454
+ context?.reportProgress?.((loaded / total) * 100);
455
+ }
456
+ };
457
+ request.onload = () => {
458
+ cleanup();
459
+ if (request.status >= 200 && request.status < 300) resolve();
460
+ else reject(new Error(`Upload failed: ${request.status}`));
461
+ };
462
+ request.onerror = () => {
463
+ cleanup();
464
+ reject(new Error("Upload failed"));
465
+ };
466
+ request.onabort = () => {
467
+ cleanup();
468
+ reject(new DOMException("Upload aborted", "AbortError"));
469
+ };
470
+ request.open("POST", "/api/recordings");
471
+ request.setRequestHeader("Content-Type", clip.mimeType);
472
+ request.setRequestHeader("X-Clip-ID", clip.clipId);
473
+ if (signal?.aborted) {
474
+ cleanup();
475
+ reject(new DOMException("Upload aborted", "AbortError"));
476
+ return;
477
+ }
478
+ signal?.addEventListener("abort", abort, { once: true });
479
+ request.send(clip.blob);
480
+ });
481
+ ```
482
+
483
+ Existing one-argument callbacks remain valid. With an active ProctorKit client,
484
+ your `sendClip` and the ProctorKit evidence upload start together. The component
485
+ waits for your callback, then emits `uploaded` with `delivery: "client"`; the
486
+ candidate may move to the next question without waiting for the evidence copy.
487
+ The indicator therefore represents `sendClip` and becomes determinate when it
488
+ calls `reportProgress`. Values are rounded and clamped to `0`–`100`.
489
+
490
+ The ProctorKit upload is background evidence while `sendClip` is present. Its
491
+ failure does not emit a candidate-facing drop, error, or retry control and does
492
+ not change a successful client upload. It continues after a recorder unmount
493
+ while the same session client remains alive. A genuine session end gives it a
494
+ bounded drain period; closing or reloading the page does not preserve a pending
495
+ browser upload. Without `sendClip`, ProctorKit stays primary only when an active
496
+ or explicit client is available, and `uploaded` reports `delivery:
497
+ "proctorkit"`. Without a client, local standalone completion reports
498
+ `delivery: "local"`; it has not uploaded bytes anywhere.
499
+
500
+ If `sendClip` rejects, the component emits the historical
501
+ `clip-mirror-failed` event name and holds the exact finalized Blob for **Retry
502
+ upload**. It does not report success just because the background ProctorKit copy
503
+ succeeds. The retried callback receives the same bytes, `clipId`, duration, and
504
+ provisional `clipNumber`; it does not record again. An empty recording has no
505
+ bytes and is not retryable. When ProctorKit is primary because `sendClip` is
506
+ unset, rejected and conflicting ProctorKit requests are also not retryable. The
507
+ `signal` is aborted on component unmount, allowing a host transport to cancel
508
+ its request.
509
+
510
+ ### Audio fallback for a failed host upload
511
+
512
+ `AudioRecorder` has an audio-only `proctoringFallback` prop for integrations
513
+ that can recover a missing answer later through the server-to-server
514
+ [`GET /v1/sessions/:id/audio-clips`](../docs-content/customer/api/sessions.md#recover-mapped-speaking-recordings)
515
+ read. Pass the host’s original question and answer filename with the primary
516
+ sink:
517
+
518
+ ```vue
519
+ <AudioRecorder
520
+ :client="client"
521
+ :send-clip="sendAnswerToYourBackend"
522
+ :proctoring-fallback="{
523
+ questionId: String(question.id),
524
+ answerFileName: question.upload.file_name,
525
+ }"
526
+ @uploaded="onAudioUploaded"
527
+ />
528
+ ```
529
+
530
+ The client destination remains the priority. Its success emits `delivery:
531
+ "client"` immediately. If it fails, the component waits for the mapped
532
+ ProctorKit request, then for the server to persist an immutable selection of
533
+ that exact ready clip. It emits `delivery: "fallback"` only after that
534
+ acknowledgement, with canonical `clipId`, `clipNumber`, `answerReference`,
535
+ `contentSha256`, and `fallbackSelection: { source: "client_reported",
536
+ selectedAt }`. Use the exported
537
+ `isAudioClipFallbackUploadedPayload(payload)` guard before accepting that path.
538
+ If both destinations fail, **Retry upload** retries the same finalized take and
539
+ its retryable ProctorKit upload or selection acknowledgement. This does not
540
+ create a fake client upload or place the file in the host’s storage. A fallback
541
+ selection does not establish that the host's next-question API accepted the
542
+ answer. `ProctoredAssessment` supplies its per-tab owner token automatically;
543
+ direct SDK integrations pass it as `sessionOwnerToken` for stale-tab
544
+ concurrency checks. See the [AudioRecorder reference](../docs-content/customer/ui/audio-recorder.md#durable-fallback-for-a-failed-client-upload)
545
+ for the complete contract and recovery safety rules.
546
+
547
+ For browser ProctorKit uploads, the deadline is progress-aware: it allows 30
548
+ seconds without upload progress and 30 seconds for the response after upload
549
+ completion. Continued progress avoids a fixed whole-upload timeout. The SDK is
550
+ still uploading the completed Blob, not performing end-to-end request streaming.
551
+
552
+ The circular UI is customizable through `uploadProgressContainer`,
553
+ `uploadProgressLabel`, `uploadProgress`, and `uploadProgressIndicator`. The
554
+ `controls` and `meta` slots receive `mirrorUploading`, `mirrorProgress`,
555
+ `mirrorFailure`, `retrying`, `retryable`, `retryTarget`, and `retryUpload`.
556
+ `retryTarget` is `canonical`, `client`, or `null`; the `mirror*` names are kept
557
+ for slot compatibility and describe the client delivery when `sendClip` exists.
558
+ A custom `controls` slot owns its retry affordance.
559
+
394
560
  ### Media UI customization
395
561
 
396
562
  Set media design tokens and part classes once when creating the Vue app:
@@ -456,5 +622,7 @@ to the system default output.
456
622
  `client.recordVideoClip()`.
457
623
  `AudioRecorder` and `VideoRecorder` accept an optional `stream` prop when your
458
624
  assessment already owns a microphone/camera stream. The video component previews
459
- that stream but does not stop its tracks. All four components clean up active
460
- handles when the component unmounts.
625
+ that stream but does not stop its tracks. Components release their active UI and
626
+ capture resources on unmount. When `sendClip` made ProctorKit an active session
627
+ client's background evidence copy, that session-owned upload continues after the
628
+ recorder unmounts until it settles or the session reaches its bounded end drain.
@@ -1,5 +1,6 @@
1
1
  import { type PropType } from "vue";
2
- import { type CheckpointConfig } from "@a4anthony/proctorkit-sdk";
2
+ import { type AudioKeepAliveOptions, type CheckpointConfig, type WebcamSnapshotJsonObject, type CandidateIssueReporter } from "@a4anthony/proctorkit-sdk";
3
+ import { type VisionAssets } from "./browser-face-detector.js";
3
4
  import { type IntegrityClearInfo, type IntegrityHoldInfo } from "./proctored-assessment/integrity-hold.js";
4
5
  import { type PreflightMessages } from "./messages.js";
5
6
  import { type Candidate, type ProctoredAssessmentPreset, type ProctoringPolicyInput } from "./proctored-assessment/policy.js";
@@ -21,6 +22,16 @@ type __VLS_Slots = {
21
22
  ended?: (props: ProctoredAssessmentEndedSlotProps) => unknown;
22
23
  };
23
24
  declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
25
+ /** Experimental output preparation; disabled by default. */
26
+ audioKeepAlive: {
27
+ type: PropType<AudioKeepAliveOptions>;
28
+ default: undefined;
29
+ };
30
+ /** Share this reporter with host-owned identity operations. */
31
+ issueReporter: {
32
+ type: PropType<CandidateIssueReporter>;
33
+ default: undefined;
34
+ };
24
35
  appId: {
25
36
  type: StringConstructor;
26
37
  required: true;
@@ -29,6 +40,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
29
40
  type: StringConstructor;
30
41
  required: true;
31
42
  };
43
+ sessionMetadata: {
44
+ type: PropType<Record<string, string | boolean> | undefined>;
45
+ default: undefined;
46
+ };
32
47
  candidate: {
33
48
  type: PropType<Candidate | undefined>;
34
49
  default: undefined;
@@ -53,6 +68,15 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
53
68
  type: PropType<ProctoringPolicyInput | undefined>;
54
69
  default: undefined;
55
70
  };
71
+ /**
72
+ * Read live host context for each random webcam snapshot. The current
73
+ * callback is invoked at frame-capture time, so reactive question, view and
74
+ * section values are frozen with the photo they describe.
75
+ */
76
+ getSnapshotMetadata: {
77
+ type: PropType<() => WebcamSnapshotJsonObject | null | undefined>;
78
+ default: undefined;
79
+ };
56
80
  apiBaseUrl: {
57
81
  type: StringConstructor;
58
82
  default: string;
@@ -120,6 +144,14 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
120
144
  type: PropType<(info: IntegrityClearInfo) => void | Promise<void>>;
121
145
  default: undefined;
122
146
  };
147
+ /**
148
+ * Where the in-browser face detector's runtime and model are served.
149
+ * Defaults to `<apiBaseUrl>/sdk-assets/vision/<version>/`.
150
+ */
151
+ visionAssets: {
152
+ type: PropType<VisionAssets | undefined>;
153
+ default: undefined;
154
+ };
123
155
  vadAssets: {
124
156
  type: PropType<{
125
157
  baseAssetPath?: string;
@@ -210,6 +242,16 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
210
242
  "integrity-hold": (info: IntegrityHoldInfo) => any;
211
243
  "integrity-cleared": (info: IntegrityClearInfo) => any;
212
244
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
245
+ /** Experimental output preparation; disabled by default. */
246
+ audioKeepAlive: {
247
+ type: PropType<AudioKeepAliveOptions>;
248
+ default: undefined;
249
+ };
250
+ /** Share this reporter with host-owned identity operations. */
251
+ issueReporter: {
252
+ type: PropType<CandidateIssueReporter>;
253
+ default: undefined;
254
+ };
213
255
  appId: {
214
256
  type: StringConstructor;
215
257
  required: true;
@@ -218,6 +260,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
218
260
  type: StringConstructor;
219
261
  required: true;
220
262
  };
263
+ sessionMetadata: {
264
+ type: PropType<Record<string, string | boolean> | undefined>;
265
+ default: undefined;
266
+ };
221
267
  candidate: {
222
268
  type: PropType<Candidate | undefined>;
223
269
  default: undefined;
@@ -242,6 +288,15 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
242
288
  type: PropType<ProctoringPolicyInput | undefined>;
243
289
  default: undefined;
244
290
  };
291
+ /**
292
+ * Read live host context for each random webcam snapshot. The current
293
+ * callback is invoked at frame-capture time, so reactive question, view and
294
+ * section values are frozen with the photo they describe.
295
+ */
296
+ getSnapshotMetadata: {
297
+ type: PropType<() => WebcamSnapshotJsonObject | null | undefined>;
298
+ default: undefined;
299
+ };
245
300
  apiBaseUrl: {
246
301
  type: StringConstructor;
247
302
  default: string;
@@ -309,6 +364,14 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
309
364
  type: PropType<(info: IntegrityClearInfo) => void | Promise<void>>;
310
365
  default: undefined;
311
366
  };
367
+ /**
368
+ * Where the in-browser face detector's runtime and model are served.
369
+ * Defaults to `<apiBaseUrl>/sdk-assets/vision/<version>/`.
370
+ */
371
+ visionAssets: {
372
+ type: PropType<VisionAssets | undefined>;
373
+ default: undefined;
374
+ };
312
375
  vadAssets: {
313
376
  type: PropType<{
314
377
  baseAssetPath?: string;
@@ -409,16 +472,21 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
409
472
  } | undefined;
410
473
  ingestUrl: string;
411
474
  preferredLocale: string;
475
+ visionAssets: VisionAssets | undefined;
412
476
  submitCandidateIntake: CandidateIntakeSubmitter | undefined;
477
+ checkpoint: CheckpointConfig | undefined;
413
478
  preset: ProctoredAssessmentPreset | undefined;
479
+ audioKeepAlive: AudioKeepAliveOptions;
480
+ issueReporter: CandidateIssueReporter;
481
+ sessionMetadata: Record<string, string | boolean> | undefined;
414
482
  policyOverrides: ProctoringPolicyInput | undefined;
483
+ getSnapshotMetadata: () => WebcamSnapshotJsonObject | null | undefined;
415
484
  apiBaseUrl: string;
416
485
  assessmentSlug: string;
417
486
  autoStartPreflight: boolean;
418
487
  preflightUi: PreflightUi;
419
488
  fullscreenExitModal: boolean;
420
489
  workerUrl: string | URL | undefined;
421
- checkpoint: CheckpointConfig | undefined;
422
490
  onIntegrityHold: (info: IntegrityHoldInfo) => void | Promise<void>;
423
491
  onIntegrityCleared: (info: IntegrityClearInfo) => void | Promise<void>;
424
492
  contentClass: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ProctoredAssessment.vue.d.ts","sourceRoot":"","sources":["../src/ProctoredAssessment.vue"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProctoredAssessment.vue.d.ts","sourceRoot":"","sources":["../src/ProctoredAssessment.vue"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { type DeepCameraCheckOptions, type RuntimeDeviceKind, type RuntimeDevice
2
2
  import { type ProctoringDeviceSettingsMessages as CentralDeviceSettingsMessages } from "@a4anthony/proctorkit-content";
3
3
  import { type PreflightMessages } from "./messages.js";
4
4
  import type { MediaHelpTopicId } from "./i18n/media-help.js";
5
+ import { type MicrophoneCheckMessages } from "./runtime-devices/microphone-check-messages.js";
6
+ import { type VisionAssets } from "./browser-face-detector.js";
5
7
  export type ProctoringDeviceSettingsKind = RuntimeDeviceKind;
6
8
  export interface ProctoringDeviceSettingsOption {
7
9
  deviceId: string;
@@ -29,8 +31,13 @@ type __VLS_Props = {
29
31
  devices?: Partial<Record<ProctoringDeviceSettingsKind, ProctoringDeviceSettingsOption[]>>;
30
32
  /** @deprecated The shared MicStep, SpeakerStep, and CameraStep own verification. */
31
33
  testDevice?: ProctoringDeviceSettingsTestFn;
32
- /** Face detector used by the shared CameraStep verifier. */
34
+ /**
35
+ * Face detector used by the shared CameraStep verifier. Defaults to
36
+ * the in-browser detector loaded from `visionAssets`.
37
+ */
33
38
  detectFace?: ProctoringDeviceSettingsDetectFace;
39
+ /** Where the in-browser face detector's runtime and model are served. */
40
+ visionAssets?: VisionAssets;
34
41
  /** VAD and ONNX Runtime asset paths used by the shared MicStep verifier. */
35
42
  vadAssets?: {
36
43
  baseAssetPath?: string;
@@ -39,6 +46,21 @@ type __VLS_Props = {
39
46
  messages?: Partial<ProctoringDeviceSettingsMessages>;
40
47
  /** Candidate wizard copy used by the shared device steps. */
41
48
  wizardMessages?: Partial<PreflightMessages>;
49
+ /**
50
+ * Offer virtual devices (OBS, Zoom, VB-Cable, …) in the pickers. Pass the
51
+ * value the policy resolves through the SDK's `resolveAllowVirtualDevices`
52
+ * so this panel agrees with preflight and the resume check. Default false.
53
+ */
54
+ allowVirtualDevices?: boolean;
55
+ /**
56
+ * Opened to check a device that may not be working (a recorder's "Check
57
+ * microphone"): the first device's card opens straight away, and the
58
+ * microphone re-runs its speech check on the microphone already in use
59
+ * instead of offering selection only.
60
+ */
61
+ checkCurrent?: boolean;
62
+ /** Copy for the alert shown at the top of a microphone-only check. */
63
+ microphoneCheckMessages?: Partial<MicrophoneCheckMessages>;
42
64
  };
43
65
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
66
  error: (error: Error) => any;
@@ -55,15 +77,19 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
55
77
  messages: Partial<ProctoringDeviceSettingsMessages>;
56
78
  open: boolean;
57
79
  dark: boolean;
80
+ allowVirtualDevices: boolean;
58
81
  vadAssets: {
59
82
  baseAssetPath?: string;
60
83
  onnxWASMBasePath?: string;
61
84
  };
62
85
  detectFace: ProctoringDeviceSettingsDetectFace;
86
+ visionAssets: VisionAssets;
63
87
  client: ProctoringDeviceSettingsClient | null;
64
88
  kinds: ProctoringDeviceSettingsKind[];
65
89
  testDevice: ProctoringDeviceSettingsTestFn;
66
90
  wizardMessages: Partial<PreflightMessages>;
91
+ checkCurrent: boolean;
92
+ microphoneCheckMessages: Partial<MicrophoneCheckMessages>;
67
93
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
68
94
  export default _default;
69
95
  //# sourceMappingURL=ProctoringDeviceSettings.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProctoringDeviceSettings.vue.d.ts","sourceRoot":"","sources":["../src/ProctoringDeviceSettings.vue"],"names":[],"mappings":"AAuiBA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EAErB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAGL,KAAK,gCAAgC,IAAI,6BAA6B,EACvE,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAc7D,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAE7D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/E,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5E,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC5E;AAED,sFAAsF;AACtF,MAAM,MAAM,8BAA8B,GAAG,CAC3C,IAAI,EAAE,4BAA4B,EAClC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhD,MAAM,MAAM,kCAAkC,GAAG,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,gCAAgC,GAAG,6BAA6B,CAAC;AAE7E,KAAK,WAAW,GAAG;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC/C,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;IAC1F,oFAAoF;IACpF,UAAU,CAAC,EAAE,8BAA8B,CAAC;IAC5C,4DAA4D;IAC5D,UAAU,CAAC,EAAE,kCAAkC,CAAC;IAChD,4EAA4E;IAC5E,SAAS,CAAC,EAAE;QACV,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACrD,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7C,CAAC;;;;;;;;;;;;aAbU,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,CAAC,CAAC;cAU9E,OAAO,CAAC,gCAAgC,CAAC;UAf7C,OAAO;UACP,OAAO;eAUF;QACV,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;gBALY,kCAAkC;YAPtC,8BAA8B,GAAG,IAAI;WACtC,4BAA4B,EAAE;gBAIzB,8BAA8B;oBAU1B,OAAO,CAAC,iBAAiB,CAAC;;AAq1B/C,wBAQG"}
1
+ {"version":3,"file":"ProctoringDeviceSettings.vue.d.ts","sourceRoot":"","sources":["../src/ProctoringDeviceSettings.vue"],"names":[],"mappings":"AAmtBA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EAErB,MAAM,2BAA2B,CAAC;AAYnC,OAAO,EAGL,KAAK,gCAAgC,IAAI,6BAA6B,EACvE,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAcxF,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAE7D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/E,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5E,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC5E;AAED,sFAAsF;AACtF,MAAM,MAAM,8BAA8B,GAAG,CAC3C,IAAI,EAAE,4BAA4B,EAClC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhD,MAAM,MAAM,kCAAkC,GAAG,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,gCAAgC,GAAG,6BAA6B,CAAC;AAE7E,KAAK,WAAW,GAAG;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC/C,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;IAC1F,oFAAoF;IACpF,UAAU,CAAC,EAAE,8BAA8B,CAAC;IAC5C;;;OAGG;IACH,UAAU,CAAC,EAAE,kCAAkC,CAAC;IAChD,yEAAyE;IACzE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE;QACV,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACrD,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC5D,CAAC;;;;;;;;;;;;aAjCU,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,CAAC,CAAC;cAe9E,OAAO,CAAC,gCAAgC,CAAC;UApB7C,OAAO;UACP,OAAO;yBA2BQ,OAAO;eAZjB;QACV,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;gBAPY,kCAAkC;kBAEhC,YAAY;YAZlB,8BAA8B,GAAG,IAAI;WACtC,4BAA4B,EAAE;gBAIzB,8BAA8B;oBAe1B,OAAO,CAAC,iBAAiB,CAAC;kBAa5B,OAAO;6BAEI,OAAO,CAAC,uBAAuB,CAAC;;AAo/B9D,wBAQG"}
@@ -1,16 +1,18 @@
1
+ import { type PreparationFeedback } from "./proctored-assessment/preparation-feedback.js";
1
2
  import { type PropType } from "vue";
2
3
  import type { CheckKind, FailCode, SimulatedCheckResult } from "@a4anthony/proctorkit-sdk";
3
4
  import { type SystemCheckMode, type SystemCheckOptions } from "./usePreflightCheck.js";
4
5
  import { type PreflightMessages } from "./messages.js";
5
6
  import { type CandidateIntakeConfig, type CandidateIntakeSubmission, type CandidateIntakeSubmitter } from "./candidate-intake.js";
7
+ import { type VisionAssets } from "./browser-face-detector.js";
6
8
  import type { PreflightUi } from "./preflight-ui.js";
7
- declare var __VLS_5: {}, __VLS_10: {}, __VLS_87: {};
9
+ declare var __VLS_5: {}, __VLS_10: {}, __VLS_89: {};
8
10
  type __VLS_Slots = {} & {
9
11
  'top-left'?: (props: typeof __VLS_5) => any;
10
12
  } & {
11
13
  'top-right'?: (props: typeof __VLS_10) => any;
12
14
  } & {
13
- 'footer-extras'?: (props: typeof __VLS_87) => any;
15
+ 'footer-extras'?: (props: typeof __VLS_89) => any;
14
16
  };
15
17
  declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
16
18
  mode: {
@@ -66,6 +68,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
66
68
  * with the button spinning while a session starts, instead of swapping to a
67
69
  * separate "starting" screen.
68
70
  */
71
+ preparationError: {
72
+ type: PropType<PreparationFeedback>;
73
+ default: undefined;
74
+ };
69
75
  starting: {
70
76
  type: BooleanConstructor;
71
77
  default: boolean;
@@ -90,10 +96,9 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
90
96
  };
91
97
  /**
92
98
  * By default the wizard waits for the final preflight telemetry
93
- * flush before emitting `pass`. Wrappers that immediately start
94
- * runtime proctoring from the final wizard actions can disable this
95
- * so browser user activation is still available for fullscreen /
96
- * screen-share prompts. Telemetry still flushes with keepalive.
99
+ * acknowledgement before emitting `pass`. Standalone integrations can
100
+ * opt out when they own confirmation themselves. ProctoredAssessment
101
+ * always requires acknowledgement before preparing runtime delivery.
97
102
  */
98
103
  flushBeforePass: {
99
104
  type: BooleanConstructor;
@@ -106,6 +111,15 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
106
111
  }>;
107
112
  default: undefined;
108
113
  };
114
+ /**
115
+ * Where the in-browser face detector's runtime and model are served.
116
+ * Defaults to the ProctorKit API at the ingest URL's origin
117
+ * (`/sdk-assets/vision/<version>/`).
118
+ */
119
+ visionAssets: {
120
+ type: PropType<VisionAssets>;
121
+ default: undefined;
122
+ };
109
123
  runtimeScreenShareRequired: {
110
124
  type: BooleanConstructor;
111
125
  default: boolean;
@@ -240,6 +254,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
240
254
  * with the button spinning while a session starts, instead of swapping to a
241
255
  * separate "starting" screen.
242
256
  */
257
+ preparationError: {
258
+ type: PropType<PreparationFeedback>;
259
+ default: undefined;
260
+ };
243
261
  starting: {
244
262
  type: BooleanConstructor;
245
263
  default: boolean;
@@ -264,10 +282,9 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
264
282
  };
265
283
  /**
266
284
  * By default the wizard waits for the final preflight telemetry
267
- * flush before emitting `pass`. Wrappers that immediately start
268
- * runtime proctoring from the final wizard actions can disable this
269
- * so browser user activation is still available for fullscreen /
270
- * screen-share prompts. Telemetry still flushes with keepalive.
285
+ * acknowledgement before emitting `pass`. Standalone integrations can
286
+ * opt out when they own confirmation themselves. ProctoredAssessment
287
+ * always requires acknowledgement before preparing runtime delivery.
271
288
  */
272
289
  flushBeforePass: {
273
290
  type: BooleanConstructor;
@@ -280,6 +297,15 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
280
297
  }>;
281
298
  default: undefined;
282
299
  };
300
+ /**
301
+ * Where the in-browser face detector's runtime and model are served.
302
+ * Defaults to the ProctorKit API at the ingest URL's origin
303
+ * (`/sdk-assets/vision/<version>/`).
304
+ */
305
+ visionAssets: {
306
+ type: PropType<VisionAssets>;
307
+ default: undefined;
308
+ };
283
309
  runtimeScreenShareRequired: {
284
310
  type: BooleanConstructor;
285
311
  default: boolean;
@@ -362,6 +388,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
362
388
  "onCandidate-intake-submitted"?: ((submission: CandidateIntakeSubmission) => any) | undefined;
363
389
  }>, {
364
390
  candidateIntake: CandidateIntakeConfig | undefined;
391
+ mode: SystemCheckMode;
365
392
  autoStart: boolean;
366
393
  candidate: {
367
394
  id: string;
@@ -369,7 +396,6 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
369
396
  email?: string;
370
397
  metadata?: Record<string, unknown>;
371
398
  };
372
- mode: SystemCheckMode;
373
399
  fullPolicy: Record<string, unknown>;
374
400
  messages: Partial<PreflightMessages>;
375
401
  dark: boolean;
@@ -382,12 +408,14 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
382
408
  appId: string;
383
409
  autoResumeSeconds: number;
384
410
  starting: boolean;
411
+ preparationError: PreparationFeedback;
385
412
  engineOptions: Omit<SystemCheckOptions, "mode">;
386
413
  preferredLocale: string;
387
414
  goodReferencePhoto: string;
388
415
  simulateResults: SimulatedCheckResult[];
389
416
  allowDevSkip: boolean;
390
417
  flushBeforePass: boolean;
418
+ visionAssets: VisionAssets;
391
419
  runtimeScreenShareRequired: boolean;
392
420
  runtimeScreenShareState: "pending" | "error" | "active" | "idle";
393
421
  runtimeScreenShareError: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ProctoringSystemCheck.vue.d.ts","sourceRoot":"","sources":["../src/ProctoringSystemCheck.vue"],"names":[],"mappings":"AAuzBA,OAAO,EAA4C,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAM3F,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAgBvD,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0iCrD,QAAA,IAAI,OAAO,IAAU,EAAE,QAAQ,IAAU,EAAE,QAAQ,IAAY,CAAE;AACjE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC/C;IAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GACjD;IAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AA0OxD,QAAA,MAAM,eAAe;;cAQD,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;IAG5D;;;;;;;OAOG;;cAEe,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;;cAIjC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;;;IAGtD;;;;;;OAMG;;;;;;;;;;cAWc,QAAQ,CAAC,oBAAoB,EAAE,CAAC;;;;;;;IAOjD;;;;;OAKG;;;;;;;;;;;;;IAaH;;;;;OAKG;;;;;IAKH;;;;;;OAMG;;;;;;cAMe,QAAQ,CAAC;YACvB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;;;;;;;;cAQc,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;;;;;;;IAOnE;;;;;;;;;;OAUG;;;;;IAKH;;;;OAIG;;;;;IAKH;;;OAGG;;cAEe,QAAQ,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACpC,CAAC;;;;cAIc,QAAQ,CAAC,qBAAqB,GAAG,SAAS,CAAC;;;;cAIzC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC;;;IAGlE;;;OAGG;;;;;IAKH,qEAAqE;;cAEnD,QAAQ,CAAC,WAAW,CAAC;;;;;;cAzwCR,SAAS;cAAQ,QAAQ;gBAAU,MAAM;;;;;;;cAymCtD,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;IAG5D;;;;;;;OAOG;;cAEe,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;;cAIjC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;;;IAGtD;;;;;;OAMG;;;;;;;;;;cAWc,QAAQ,CAAC,oBAAoB,EAAE,CAAC;;;;;;;IAOjD;;;;;OAKG;;;;;;;;;;;;;IAaH;;;;;OAKG;;;;;IAKH;;;;;;OAMG;;;;;;cAMe,QAAQ,CAAC;YACvB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;;;;;;;;cAQc,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;;;;;;;IAOnE;;;;;;;;;;OAUG;;;;;IAKH;;;;OAIG;;;;;IAKH;;;OAGG;;cAEe,QAAQ,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACpC,CAAC;;;;cAIc,QAAQ,CAAC,qBAAqB,GAAG,SAAS,CAAC;;;;cAIzC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC;;;IAGlE;;;OAGG;;;;;IAKH,qEAAqE;;cAEnD,QAAQ,CAAC,WAAW,CAAC;;;;;;cAzwCR,SAAS;cAAQ,QAAQ;gBAAU,MAAM;;;;;;;;;YAgvChE,MAAM;eACH,MAAM;gBACL,MAAM;mBACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;wBAlDlB,MAAM;2BACH,MAAM;;;;;;;;;;;;;;;;;4EA2E7B,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAE1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ProctoringSystemCheck.vue.d.ts","sourceRoot":"","sources":["../src/ProctoringSystemCheck.vue"],"names":[],"mappings":"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"}