@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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=microphone-preflight-trace.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microphone-preflight-trace.test.d.ts","sourceRoot":"","sources":["../../src/wizard/microphone-preflight-trace.test.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { PreparationFeedback } from "../../proctored-assessment/preparation-feedback.js";
1
2
  import type { StoryObj } from "@storybook/vue3-vite";
2
3
  import { type PropType } from "vue";
3
4
  import type { MediaHelpTopicId } from "../../i18n/media-help.js";
@@ -58,10 +59,12 @@ export declare const baseMeta: {
58
59
  busy?: boolean;
59
60
  starting?: boolean;
60
61
  startError?: string | null;
62
+ preparationError?: PreparationFeedback;
61
63
  title?: string;
64
+ systemDefaultSpeakerLabel?: string;
62
65
  }> & Readonly<{
63
- onResume?: (() => any) | undefined;
64
66
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
67
+ onResume?: (() => any) | undefined;
65
68
  onStart?: (() => any) | undefined;
66
69
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
67
70
  onSelectDevice?: ((payload: {
@@ -77,8 +80,8 @@ export declare const baseMeta: {
77
80
  onSpeakerConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
78
81
  onCameraConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
79
82
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
80
- resume: () => any;
81
83
  retry: (kind: import("../device-check-presentation.js").DeviceCheckKind) => any;
84
+ resume: () => any;
82
85
  start: () => any;
83
86
  help: (topic?: MediaHelpTopicId | undefined) => any;
84
87
  selectDevice: (payload: {
@@ -121,10 +124,12 @@ export declare const baseMeta: {
121
124
  busy?: boolean;
122
125
  starting?: boolean;
123
126
  startError?: string | null;
127
+ preparationError?: PreparationFeedback;
124
128
  title?: string;
129
+ systemDefaultSpeakerLabel?: string;
125
130
  }> & Readonly<{
126
- onResume?: (() => any) | undefined;
127
131
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
132
+ onResume?: (() => any) | undefined;
128
133
  onStart?: (() => any) | undefined;
129
134
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
130
135
  onSelectDevice?: ((payload: {
@@ -164,10 +169,12 @@ export declare const baseMeta: {
164
169
  busy?: boolean;
165
170
  starting?: boolean;
166
171
  startError?: string | null;
172
+ preparationError?: PreparationFeedback;
167
173
  title?: string;
174
+ systemDefaultSpeakerLabel?: string;
168
175
  }> & Readonly<{
169
- onResume?: (() => any) | undefined;
170
176
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
177
+ onResume?: (() => any) | undefined;
171
178
  onStart?: (() => any) | undefined;
172
179
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
173
180
  onSelectDevice?: ((payload: {
@@ -183,8 +190,8 @@ export declare const baseMeta: {
183
190
  onSpeakerConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
184
191
  onCameraConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
185
192
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
186
- resume: () => any;
187
193
  retry: (kind: import("../device-check-presentation.js").DeviceCheckKind) => any;
194
+ resume: () => any;
188
195
  start: () => any;
189
196
  help: (topic?: MediaHelpTopicId | undefined) => any;
190
197
  selectDevice: (payload: {
@@ -287,6 +294,10 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
287
294
  type: StringConstructor;
288
295
  default: string;
289
296
  };
297
+ preparationError: {
298
+ type: PropType<PreparationFeedback>;
299
+ default: undefined;
300
+ };
290
301
  /** Select a mock microphone immediately after mount, allowing a named
291
302
  * story to settle into the real recovered-success state. */
292
303
  autoSelectMicrophoneId: {
@@ -330,6 +341,7 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
330
341
  }[] | undefined;
331
342
  selectedDeviceId?: string | undefined;
332
343
  deviceLabel?: string | undefined;
344
+ speakerOutputMode?: "selected-device" | "system-output" | undefined;
333
345
  }[];
334
346
  };
335
347
  fix: (kind: ResumeCheckKind) => void;
@@ -370,6 +382,10 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
370
382
  type: StringConstructor;
371
383
  default: string;
372
384
  };
385
+ preparationError: {
386
+ type: PropType<PreparationFeedback>;
387
+ default: undefined;
388
+ };
373
389
  /** Select a mock microphone immediately after mount, allowing a named
374
390
  * story to settle into the real recovered-success state. */
375
391
  autoSelectMicrophoneId: {
@@ -405,6 +421,7 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
405
421
  onResume?: ((...args: any[]) => any) | undefined;
406
422
  }>, {
407
423
  starting: boolean;
424
+ preparationError: PreparationFeedback;
408
425
  awaitingStart: boolean;
409
426
  probing: boolean;
410
427
  startError: string;
@@ -412,7 +429,7 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
412
429
  autoSelectCameraId: string;
413
430
  refreshYieldsNothing: import("../device-check-presentation.js").DeviceCheckKind[];
414
431
  mockCameraPreview: boolean;
415
- screenShareOutcome: "success" | "wrong-surface" | "unsupported" | "stopped" | "cancelled";
432
+ screenShareOutcome: "success" | "unsupported" | "wrong-surface" | "stopped" | "cancelled";
416
433
  }, {}, {
417
434
  CandidateCheckActions: import("vue").DefineComponent<{
418
435
  helpLabel: string;
@@ -465,10 +482,12 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
465
482
  busy?: boolean;
466
483
  starting?: boolean;
467
484
  startError?: string | null;
485
+ preparationError?: PreparationFeedback;
468
486
  title?: string;
487
+ systemDefaultSpeakerLabel?: string;
469
488
  }> & Readonly<{
470
- onResume?: (() => any) | undefined;
471
489
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
490
+ onResume?: (() => any) | undefined;
472
491
  onStart?: (() => any) | undefined;
473
492
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
474
493
  onSelectDevice?: ((payload: {
@@ -484,8 +503,8 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
484
503
  onSpeakerConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
485
504
  onCameraConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
486
505
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
487
- resume: () => any;
488
506
  retry: (kind: import("../device-check-presentation.js").DeviceCheckKind) => any;
507
+ resume: () => any;
489
508
  start: () => any;
490
509
  help: (topic?: MediaHelpTopicId | undefined) => any;
491
510
  selectDevice: (payload: {
@@ -528,10 +547,12 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
528
547
  busy?: boolean;
529
548
  starting?: boolean;
530
549
  startError?: string | null;
550
+ preparationError?: PreparationFeedback;
531
551
  title?: string;
552
+ systemDefaultSpeakerLabel?: string;
532
553
  }> & Readonly<{
533
- onResume?: (() => any) | undefined;
534
554
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
555
+ onResume?: (() => any) | undefined;
535
556
  onStart?: (() => any) | undefined;
536
557
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
537
558
  onSelectDevice?: ((payload: {
@@ -571,10 +592,12 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
571
592
  busy?: boolean;
572
593
  starting?: boolean;
573
594
  startError?: string | null;
595
+ preparationError?: PreparationFeedback;
574
596
  title?: string;
597
+ systemDefaultSpeakerLabel?: string;
575
598
  }> & Readonly<{
576
- onResume?: (() => any) | undefined;
577
599
  onRetry?: ((kind: import("../device-check-presentation.js").DeviceCheckKind) => any) | undefined;
600
+ onResume?: (() => any) | undefined;
578
601
  onStart?: (() => any) | undefined;
579
602
  onHelp?: ((topic?: MediaHelpTopicId | undefined) => any) | undefined;
580
603
  onSelectDevice?: ((payload: {
@@ -590,8 +613,8 @@ export declare const LiveResumeCheck: import("vue").DefineComponent<import("vue"
590
613
  onSpeakerConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
591
614
  onCameraConfirmed?: ((deviceId?: string | undefined) => any) | undefined;
592
615
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
593
- resume: () => any;
594
616
  retry: (kind: import("../device-check-presentation.js").DeviceCheckKind) => any;
617
+ resume: () => any;
595
618
  start: () => any;
596
619
  help: (topic?: MediaHelpTopicId | undefined) => any;
597
620
  selectDevice: (payload: {
@@ -632,6 +655,7 @@ export declare function story(items: ResumeCheckItem[], extra?: {
632
655
  probing?: boolean;
633
656
  starting?: boolean;
634
657
  startError?: string;
658
+ preparationError?: PreparationFeedback;
635
659
  autoSelectMicrophoneId?: string;
636
660
  autoSelectCameraId?: string;
637
661
  refreshYieldsNothing?: ResumeCheckKind[];
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/wizard/resume-check-stories/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/wizard/resume-check-stories/shared.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,40 @@
1
1
  export interface SpeakerTestToneResult {
2
2
  /** Whether the browser created and played the tone successfully. */
3
3
  played: boolean;
4
+ /**
5
+ * Enumerated output the browser accepted for this playback.
6
+ */
7
+ effectiveDeviceId?: string;
8
+ /** How the tone reached the candidate's audio output. */
9
+ outputMode?: "selected-device" | "system-output";
4
10
  }
5
11
  export interface SpeakerTestTonePlayer {
6
12
  play: (deviceId?: string) => Promise<SpeakerTestToneResult>;
7
13
  stop: () => Promise<void>;
8
14
  }
15
+ /** Preserve browser-provided ids, including the literal `default` output. */
16
+ export declare function normalizeSpeakerDeviceId(deviceId?: string): string | undefined;
17
+ /** Whether this browser can route Web Audio to a caller-selected output. */
18
+ export declare function supportsSpeakerOutputRouting(): boolean;
9
19
  /**
10
- * Creates the short 440 Hz speaker test used by both the initial pre-flight
11
- * wizard and the mid-assessment resume recovery. Browsers without
12
- * `AudioContext.setSinkId` still play through the system-default output.
20
+ * Resolve a saved speaker selection without playing audio. Resume uses this to
21
+ * avoid labelling an output as active unless the browser accepts that exact
22
+ * enumerated route.
13
23
  */
14
- export declare function createSpeakerTestTonePlayer(): SpeakerTestTonePlayer;
24
+ export declare function resolveSpeakerOutputRoute(deviceId?: string): Promise<string | undefined>;
25
+ export interface SpeakerTestToneOptions {
26
+ /**
27
+ * "tone": the short 440 Hz beep used by the pre-flight wizard and resume
28
+ * recovery. "chime": a soft three-note chime (about 1.4 s) that is harder to
29
+ * miss, used when a candidate picks a speaker mid-assessment.
30
+ */
31
+ sound?: "tone" | "chime";
32
+ }
33
+ /**
34
+ * Creates the speaker test used by the pre-flight wizard, the mid-assessment
35
+ * resume recovery, and the in-question device picker. A browser with output
36
+ * routing must accept the exact enumerated route. Browsers without that API
37
+ * play only through the current system output and never attest a named device.
38
+ */
39
+ export declare function createSpeakerTestTonePlayer(options?: SpeakerTestToneOptions): SpeakerTestTonePlayer;
15
40
  //# sourceMappingURL=speaker-test-tone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"speaker-test-tone.d.ts","sourceRoot":"","sources":["../../src/wizard/speaker-test-tone.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CA4DnE"}
1
+ {"version":3,"file":"speaker-test-tone.d.ts","sourceRoot":"","sources":["../../src/wizard/speaker-test-tone.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,UAAU,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,4EAA4E;AAC5E,wBAAgB,4BAA4B,IAAI,OAAO,CAUtD;AA0CD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB9F;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAmCD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAsEvB"}
@@ -0,0 +1,30 @@
1
+ import { type InjectionKey } from "vue";
2
+ import { type CandidateIssueReporter, type CandidateIssuePhase, type CandidateIssueStep, type CandidateIssueContext } from "@a4anthony/proctorkit-sdk";
3
+ export interface CandidateIssueCapture {
4
+ reporter: CandidateIssueReporter | null;
5
+ phase(): CandidateIssuePhase;
6
+ begin(phase: CandidateIssuePhase, step: CandidateIssueStep, retry?: boolean): string;
7
+ failed(phase: CandidateIssuePhase, step: CandidateIssueStep, code: unknown, message?: string, context?: CandidateIssueContext): void;
8
+ succeeded(phase: CandidateIssuePhase, step: CandidateIssueStep): void;
9
+ displayed(phase: CandidateIssuePhase, step: CandidateIssueStep, heading?: string, message?: string): void;
10
+ bindSession(sessionId: string): void;
11
+ }
12
+ export declare const CANDIDATE_ISSUE_SURFACE: InjectionKey<() => CandidateIssueStep | null>;
13
+ export declare const CANDIDATE_ISSUE_SURFACE_PHASE: InjectionKey<() => CandidateIssuePhase>;
14
+ export declare const useProvidedCandidateIssues: () => CandidateIssueCapture | null;
15
+ /** Covers component-owned permission, device switch and evidence-save errors. */
16
+ export declare function watchCandidateIssueSurface(step: CandidateIssueStep, busy: () => boolean, error: () => string | null, denied: () => boolean, code?: () => string): void;
17
+ export declare function useCandidateIssues(options: {
18
+ appId?: string;
19
+ ingestUrl: string;
20
+ correlationId?: string;
21
+ candidate?: {
22
+ id: string;
23
+ name?: string;
24
+ email?: string;
25
+ };
26
+ reporter?: CandidateIssueReporter;
27
+ phase?: () => CandidateIssuePhase;
28
+ disabled?: boolean;
29
+ }): CandidateIssueCapture;
30
+ //# sourceMappingURL=useCandidateIssues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCandidateIssues.d.ts","sourceRoot":"","sources":["../../src/wizard/useCandidateIssues.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,KAAK,CAAC;AACjF,OAAO,EAKL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACxC,KAAK,IAAI,mBAAmB,CAAC;IAC7B,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrF,MAAM,CACJ,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC;IACR,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtE,SAAS,CACP,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAAC;IACR,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAC/C,CAAC;AACpC,eAAO,MAAM,6BAA6B,EAAE,YAAY,CAAC,MAAM,mBAAmB,CAEjF,CAAC;AACF,eAAO,MAAM,0BAA0B,QAAO,qBAAqB,GAAG,IAAyB,CAAC;AAChG,iFAAiF;AACjF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,MAAM,OAAO,EACnB,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,EAC1B,MAAM,EAAE,MAAM,OAAO,EACrB,IAAI,CAAC,EAAE,MAAM,MAAM,GAClB,IAAI,CAmBN;AACD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,qBAAqB,CA2HxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useCandidateIssues.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCandidateIssues.test.d.ts","sourceRoot":"","sources":["../../src/wizard/useCandidateIssues.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { type Ref } from "vue";
2
+ import { type CheckRow, type DisplayMonitor, type SystemCheckOptions } from "@a4anthony/proctorkit-sdk";
3
+ import { type DisplayDiagnosticReporter, type DisplayTrigger } from "./display-diagnostics.js";
4
+ /** Own display changes for the entire preflight, including after the system step. */
5
+ export declare function useLiveDisplayCheck(options: SystemCheckOptions, rows: Ref<CheckRow[]>, running: Ref<boolean>, probe: () => Promise<void>, enabled?: boolean, monitor?: DisplayMonitor, report?: DisplayDiagnosticReporter): {
6
+ verify: (trigger?: DisplayTrigger) => Promise<boolean>;
7
+ };
8
+ //# sourceMappingURL=useLiveDisplayCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLiveDisplayCheck.d.ts","sourceRoot":"","sources":["../../src/wizard/useLiveDisplayCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACxE,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAmB,KAAK,yBAAyB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhH,qFAAqF;AACrF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EACrB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,EACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC1B,OAAO,UAAO,EACd,OAAO,GAAE,cAAoC,EAC7C,MAAM,CAAC,EAAE,yBAAyB;uBA4FH,cAAc,KAAoB,OAAO,CAAC,OAAO,CAAC;EAmBlF"}
@@ -1,31 +1,9 @@
1
- /**
2
- * Preflight telemetry — emits `preflight.*` events to the proctoring
3
- * server's /ingest endpoint as the wizard runs.
4
- *
5
- * Observability of the candidate's actual experience matters as
6
- * much as the verdict: a candidate who passed after three retries
7
- * tells a different story from one who passed first time. This
8
- * composable subscribes to the engine's row stream + the wizard's
9
- * UI-side hooks (attestation checkboxes, device picks) and folds
10
- * everything into a per-correlationId event log that the server
11
- * materialises into the `preflight_outcomes` row.
12
- *
13
- * Buffering strategy: events accumulate in memory, flushed in
14
- * batches every 500ms or when 50 events queue (whichever first).
15
- * Each flush is a single POST /ingest using the candidate's
16
- * correlationId as the sessionId. Failed batches are retried
17
- * once; persistent failure logs + drops -- preflight telemetry
18
- * is best-effort, not load-bearing for the verdict.
19
- *
20
- * The wizard's actual functional flow does not depend on these
21
- * events succeeding -- if the server is down, the candidate
22
- * still completes preflight normally and the runtime SDK starts.
23
- * The dashboard simply shows "no preflight data" for that
24
- * session.
25
- */
1
+ import { type CandidateIssueCapture } from "./useCandidateIssues.js";
26
2
  import { type Ref } from "vue";
27
3
  import type { CheckRow, EventKind } from "@a4anthony/proctorkit-sdk";
28
4
  export interface UsePreflightTelemetryOptions {
5
+ /** @internal Shared with the wizard's component-owned errors. */
6
+ issues?: CandidateIssueCapture;
29
7
  /**
30
8
  * Customer-provided opaque ID linking the wizard, the runtime
31
9
  * SDK, and the dashboard. Stored as `ProctoringSession.id` on
@@ -98,6 +76,8 @@ export declare const usePreflightTelemetry: (options: UsePreflightTelemetryOptio
98
76
  markRetry: (row: string) => void;
99
77
  /** Force a flush of buffered events. Call before navigation
100
78
  * / unmount to make sure preflight.completed lands. */
101
- flush: () => Promise<void>;
79
+ flush: (options?: {
80
+ requireAcknowledgement?: boolean;
81
+ }) => Promise<void>;
102
82
  };
103
83
  //# sourceMappingURL=usePreflightTelemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreflightTelemetry.d.ts","sourceRoot":"","sources":["../../src/wizard/usePreflightTelemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAiC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAGV,MAAM,2BAA2B,CAAC;AAMnC,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;IACF;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,eAAO,MAAM,qBAAqB,GAChC,SAAS,4BAA4B,KACpC;IACD,qEAAqE;IACrE,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,+DAA+D;IAC/D,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;4DACwD;IACxD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CA+O5B,CAAC"}
1
+ {"version":3,"file":"usePreflightTelemetry.d.ts","sourceRoot":"","sources":["../../src/wizard/usePreflightTelemetry.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAiC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAEV,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,4BAA4B;IAC3C,iEAAiE;IACjE,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;IACF;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAaD,eAAO,MAAM,qBAAqB,GAChC,SAAS,4BAA4B,KACpC;IACD,qEAAqE;IACrE,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,+DAA+D;IAC/D,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;4DACwD;IACxD,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAiJ1E,CAAC"}
@@ -12,7 +12,12 @@
12
12
  import { type Ref } from "vue";
13
13
  import { type UsePreflightCheckOptions } from "../usePreflightCheck.js";
14
14
  import { type WizardStep } from "./wizard-steps.js";
15
+ import type { DisplayDiagnosticReporter } from "./display-diagnostics.js";
15
16
  export interface UseWizardOptions extends UsePreflightCheckOptions {
17
+ /** @internal Diagnostic observer; cannot authorize a pass. */
18
+ onDisplayDiagnostic?: DisplayDiagnosticReporter;
19
+ /** @internal Frozen simulations do not observe the real machine's displays. */
20
+ monitorDisplayChanges?: boolean;
16
21
  /**
17
22
  * Skip the auto-mount run. When false, the system step won't
18
23
  * auto-start its checks on mount; callers drive it explicitly
@@ -39,8 +44,11 @@ export declare const useWizardSteps: (options?: UseWizardOptions) => {
39
44
  activeIndex: Ref<number, number>;
40
45
  totalSteps: import("vue").ComputedRef<number>;
41
46
  advance: () => void;
47
+ completeStep: (step: WizardStep) => void;
48
+ completedSteps: Ref<WizardStep[], WizardStep[]>;
42
49
  goTo: (step: WizardStep) => void;
43
50
  reset: () => void;
51
+ verifyDisplaySetup: (trigger?: import("./display-diagnostics.js").DisplayTrigger) => Promise<boolean>;
44
52
  engine: import("vue").ShallowRef<import("@a4anthony/proctorkit-sdk").SystemCheck, import("@a4anthony/proctorkit-sdk").SystemCheck>;
45
53
  rows: Ref<{
46
54
  kind: import("@a4anthony/proctorkit-sdk").CheckKind;
@@ -113,8 +121,9 @@ export declare const useWizardSteps: (options?: UseWizardOptions) => {
113
121
  retry: () => Promise<import("@a4anthony/proctorkit-sdk").PreflightReport>;
114
122
  runSystemClass: () => Promise<void>;
115
123
  retrySystemClass: () => Promise<void>;
124
+ probeMonitor: () => Promise<void>;
116
125
  probeMic: (deviceId?: string) => Promise<void>;
117
- probeSpeaker: () => Promise<void>;
126
+ probeSpeaker: (options?: import("@a4anthony/proctorkit-sdk").SpeakerProbeOptions) => Promise<void>;
118
127
  probeCamera: (deviceId?: string, existingStream?: {
119
128
  videoElement: HTMLVideoElement;
120
129
  }) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"useWizardSteps.d.ts","sourceRoot":"","sources":["../../src/wizard/useWizardSteps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAwB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB;IAChE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,GAAI,UAAS,gBAAqB;;;;;mBA0CvC,IAAI;iBAYJ,UAAU,KAAG,IAAI;iBAqBnB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAevB,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"useWizardSteps.d.ts","sourceRoot":"","sources":["../../src/wizard/useWizardSteps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAwB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB;IAChE,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,GAAI,UAAS,gBAAqB;;;;;mBA6FvC,IAAI;yBAdI,UAAU,KAAG,IAAI;;iBAsBzB,UAAU,KAAG,IAAI;iBAwBnB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBvB,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a4anthony/proctorkit-vue",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Vue 3 components for the proctoring SDK — pre-flight system check wizard.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,10 +22,11 @@
22
22
  "dependencies": {
23
23
  "@headlessui/vue": "^1.7.23",
24
24
  "@lucide/vue": "^1.16.0",
25
+ "@mediapipe/tasks-vision": "1.0.1",
25
26
  "@ricky0123/vad-web": "^0.0.30",
26
27
  "vue-i18n": "^11.1.0",
27
- "@a4anthony/proctorkit-content": "0.1.0",
28
- "@a4anthony/proctorkit-sdk": "0.2.2"
28
+ "@a4anthony/proctorkit-content": "0.2.0",
29
+ "@a4anthony/proctorkit-sdk": "0.3.0"
29
30
  },
30
31
  "devDependencies": {
31
32
  "@storybook/vue3-vite": "^10.4.0",