@incodetech/core 2.2.0-rc.6 → 2.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 (123) hide show
  1. package/dist/{BrowserDiagnosticsCryptoProvider-Ce3rctBe.esm.js → BrowserDiagnosticsCryptoProvider-B8vorxN5.esm.js} +1 -1
  2. package/dist/{addressSearch-DQyrvDQj.esm.js → addressSearch-D1XpBdUS.esm.js} +1 -1
  3. package/dist/ae-signature.esm.js +1 -1
  4. package/dist/antifraud.esm.js +2 -2
  5. package/dist/{antifraudManager-BMZvuxv0.esm.js → antifraudManager-CQFNgSPt.esm.js} +2 -2
  6. package/dist/{antifraudStateMachine-r4VxSBS4.esm.js → antifraudStateMachine-Bf_JVNwn.esm.js} +2 -2
  7. package/dist/{apiError-BSXFYi4z.esm.js → apiError-BA1d_au0.esm.js} +1 -1
  8. package/dist/authentication.esm.js +2 -2
  9. package/dist/{authenticationManager-DYqYkfs6.esm.js → authenticationManager-zh9TC62P.esm.js} +3 -3
  10. package/dist/{authenticationStateMachine-9tP0fEe0.esm.js → authenticationStateMachine-xzi-vnvE.esm.js} +4 -4
  11. package/dist/certificate-issuance.esm.js +2 -2
  12. package/dist/{certificateIssuanceStateMachine-COd7_l2T.esm.js → certificateIssuanceStateMachine-D_R92TYu.esm.js} +2 -2
  13. package/dist/consent.esm.js +2 -2
  14. package/dist/{consentManager-DyBXdkFn.esm.js → consentManager-BxjpLZAG.esm.js} +2 -2
  15. package/dist/{consentStateMachine-WD-S-Yhs.esm.js → consentStateMachine-D9D4ON8Z.esm.js} +2 -2
  16. package/dist/cross-document-data-match.esm.js +1 -1
  17. package/dist/{crossDocumentDataMatchManager-pNkutndd.esm.js → crossDocumentDataMatchManager-CGT0V6RV.esm.js} +2 -2
  18. package/dist/curp-validation.esm.js +2 -2
  19. package/dist/{curpValidationManager-DEesnLee.esm.js → curpValidationManager-6Nmkn5u1.esm.js} +2 -2
  20. package/dist/{curpValidationStateMachine-9KwnqeoB.esm.js → curpValidationStateMachine-Ds7KMacK.esm.js} +2 -2
  21. package/dist/custom-fields.esm.js +2 -2
  22. package/dist/custom-watchlist.esm.js +2 -2
  23. package/dist/{customWatchlistStateMachine-B_ey3TFj.esm.js → customWatchlistStateMachine-YWSgKLbF.esm.js} +2 -2
  24. package/dist/{deepsightLoader-CraWVfCs.esm.js → deepsightLoader--wMKWECS.esm.js} +3 -3
  25. package/dist/document-capture.esm.js +2 -2
  26. package/dist/document-upload.esm.js +2 -2
  27. package/dist/{documentCaptureManager-DwM7AmEJ.esm.js → documentCaptureManager-DsQQhWry.esm.js} +2 -2
  28. package/dist/{documentCaptureStateMachine-D2jBwwVb.esm.js → documentCaptureStateMachine-BM4Ex_5x.esm.js} +2 -2
  29. package/dist/dynamic-forms.esm.js +2 -2
  30. package/dist/{dynamicFormsManager-CXkZG8c6.esm.js → dynamicFormsManager-fFVIRBNv.esm.js} +2 -2
  31. package/dist/{dynamicFormsStateMachine-Cl3kW4E7.esm.js → dynamicFormsStateMachine-D6D7oEYk.esm.js} +3 -3
  32. package/dist/ekyb.esm.js +3 -3
  33. package/dist/{ekybManager-BY8ijn3M.esm.js → ekybManager-Y3MkoXpC.esm.js} +2 -2
  34. package/dist/{ekybStateMachine-Cyv8iPyH.esm.js → ekybStateMachine-3nlnqdlr.esm.js} +4 -4
  35. package/dist/ekyc.esm.js +2 -2
  36. package/dist/{ekycManager-CasdX1Ou.esm.js → ekycManager-DgT48ky6.esm.js} +2 -2
  37. package/dist/{ekycStateMachine-DHvksnrr.esm.js → ekycStateMachine-CQwqiR-R.esm.js} +3 -3
  38. package/dist/electronic-signature.esm.js +1 -1
  39. package/dist/{electronicSignatureManager-CAHjq6JR.esm.js → electronicSignatureManager-DGbAJ00W.esm.js} +3 -3
  40. package/dist/email.esm.js +2 -2
  41. package/dist/{emailManager-NLzaP12q.esm.js → emailManager-BY0jeYwR.esm.js} +2 -2
  42. package/dist/{emailStateMachine-Bm894MHB.esm.js → emailStateMachine-Crw8QVmc.esm.js} +2 -2
  43. package/dist/extensibility.d.ts +2 -2
  44. package/dist/extensibility.esm.js +28 -28
  45. package/dist/face-match.esm.js +2 -2
  46. package/dist/{faceCaptureManagerFactory-BdAtEQUX.esm.js → faceCaptureManagerFactory-CVnZ0fa5.esm.js} +2 -2
  47. package/dist/{faceCaptureSetup-BUNskJhm.esm.js → faceCaptureSetup-Cd-04W_X.esm.js} +4 -4
  48. package/dist/{faceMatchManager-DEVhhdf4.esm.js → faceMatchManager-Ri4UbNz0.esm.js} +2 -2
  49. package/dist/{faceMatchStateMachine-CJiO2yLO.esm.js → faceMatchStateMachine-20DdZ3jg.esm.js} +2 -2
  50. package/dist/{feature-management-Bo_xbwQa.esm.js → feature-management-CPQ4qv3F.esm.js} +1 -1
  51. package/dist/feature-management.esm.js +1 -1
  52. package/dist/field-comparison.esm.js +1 -1
  53. package/dist/{fieldComparisonManager-BRYsIi34.esm.js → fieldComparisonManager-Cg6kPQQx.esm.js} +2 -2
  54. package/dist/fiscal-qr.esm.js +2 -2
  55. package/dist/flow.d.ts +1 -1
  56. package/dist/flow.esm.js +5 -5
  57. package/dist/{flowCompletionService-J_2XiDZG.esm.js → flowCompletionService-tfeoGre9.esm.js} +1 -1
  58. package/dist/{flowServices-BydHVxc7.esm.js → flowServices-f5Ruz7R9.esm.js} +4 -4
  59. package/dist/geolocation.esm.js +2 -2
  60. package/dist/{geolocationManager-BF_JcCgS.esm.js → geolocationManager-CH6RfqFH.esm.js} +2 -2
  61. package/dist/{geolocationStateMachine-rYPrOUyM.esm.js → geolocationStateMachine-DmbWFely.esm.js} +3 -3
  62. package/dist/government-validation.esm.js +2 -2
  63. package/dist/{governmentValidationStateMachine-BYKYUdza.esm.js → governmentValidationStateMachine-CK9DrZXX.esm.js} +2 -2
  64. package/dist/home.esm.js +1 -1
  65. package/dist/id-ocr.esm.js +2 -2
  66. package/dist/id-selfie-flow.esm.js +8 -8
  67. package/dist/id-verification.esm.js +2 -2
  68. package/dist/id.d.ts +2 -2
  69. package/dist/id.esm.js +5 -5
  70. package/dist/{idCaptureManager-C5zp-Xje.esm.js → idCaptureManager-BYwTZ2H8.esm.js} +12 -16
  71. package/dist/{idCaptureManager-BjU-Wyow.d.ts → idCaptureManager-CqrqSjJV.d.ts} +20 -10
  72. package/dist/{idCaptureServices-28d5mDGM.esm.js → idCaptureServices-44kwQItl.esm.js} +141 -15
  73. package/dist/{idCaptureStateMachine-3jTqEo76.esm.js → idCaptureStateMachine-kZ5OpdfM.esm.js} +445 -54
  74. package/dist/{idOcrManager-D_2k-6Vv.esm.js → idOcrManager-BIQYQXXj.esm.js} +2 -2
  75. package/dist/{idOcrStateMachine-Bq_e3l4E.esm.js → idOcrStateMachine-cSxzHpHt.esm.js} +2 -2
  76. package/dist/{idVerificationManager-DdlrWSSB.esm.js → idVerificationManager-JpV_SAsl.esm.js} +2 -2
  77. package/dist/{idVerificationStateMachine-GEQWUPU2.esm.js → idVerificationStateMachine-nPeUNyFq.esm.js} +2 -2
  78. package/dist/identity-reuse.esm.js +2 -2
  79. package/dist/{identityReuseManager-CzLZNgdh.esm.js → identityReuseManager-kNCg9AbD.esm.js} +2 -2
  80. package/dist/{identityReuseStateMachine-AubRPhIi.esm.js → identityReuseStateMachine-DyulxDjP.esm.js} +2 -2
  81. package/dist/index.esm.js +1 -1
  82. package/dist/mandatory-consent.esm.js +2 -2
  83. package/dist/{mandatoryConsentManager-CEIkNukS.esm.js → mandatoryConsentManager-B4Niyg_u.esm.js} +2 -2
  84. package/dist/{mandatoryConsentStateMachine-zroQGzwb.esm.js → mandatoryConsentStateMachine-B4-1u-L8.esm.js} +2 -2
  85. package/dist/{onDeviceFaceResults-CTinxa9H.esm.js → onDeviceFaceResults-CUHwyZT4.esm.js} +3 -3
  86. package/dist/personhood.esm.js +5 -5
  87. package/dist/phone.esm.js +2 -2
  88. package/dist/{phoneManager-B_03mKyi.esm.js → phoneManager-FsJ0W2Ei.esm.js} +2 -2
  89. package/dist/{phoneStateMachine-E1fUUcNM.esm.js → phoneStateMachine-Ba0wKHyX.esm.js} +2 -2
  90. package/dist/qe-signature.esm.js +1 -1
  91. package/dist/{recordingService-DtWTn91V.esm.js → recordingService-3NSENVwp.esm.js} +1 -1
  92. package/dist/redirect-to-mobile.esm.js +2 -2
  93. package/dist/{redirectToMobileManager-Bgo6eqri.esm.js → redirectToMobileManager-y4VQB11M.esm.js} +3 -3
  94. package/dist/{redirectToMobileStateMachine-C9SYCJcH.esm.js → redirectToMobileStateMachine-Cyv2x0PP.esm.js} +2 -2
  95. package/dist/{runChildModule-Bl5F16W9.esm.js → runChildModule-Dukuw23X.esm.js} +3 -3
  96. package/dist/{sdkVersion-DEks9mOi.esm.js → sdkVersion-D1Bm59g6.esm.js} +1 -1
  97. package/dist/selfie.esm.js +6 -6
  98. package/dist/{selfieManager-D1jZ1_6k.esm.js → selfieManager-Bj6B2ZVy.esm.js} +3 -3
  99. package/dist/{selfieStateMachine-CW_c5AnO.esm.js → selfieStateMachine-CHV_WNst.esm.js} +4 -4
  100. package/dist/{session-ChIfu6mP.esm.js → session-BFdLgN4i.esm.js} +4 -4
  101. package/dist/session.esm.js +4 -4
  102. package/dist/{sessionInitializer-BFJAT3u0.esm.js → sessionInitializer-dlfDehHk.esm.js} +4 -4
  103. package/dist/{setup-CcxP8TVK.esm.js → setup-BIAtLa8k.esm.js} +5 -5
  104. package/dist/signature.esm.js +2 -2
  105. package/dist/{signatureManager-DoACIR02.esm.js → signatureManager-Ca43yhwk.esm.js} +2 -2
  106. package/dist/{signatureStateMachine-Cf73DGWO.esm.js → signatureStateMachine-K1LMRrxG.esm.js} +2 -2
  107. package/dist/trueSight-B_icM8r2.esm.js +1 -0
  108. package/dist/{trueSightService-B49-Eq-5.esm.js → trueSightService---iW2KKJ.esm.js} +2 -2
  109. package/dist/trust-graph.esm.js +1 -1
  110. package/dist/{types-M6eb82ra2.d.ts → types-Bdf8_LYB2.d.ts} +69 -13
  111. package/dist/video-selfie.esm.js +5 -5
  112. package/dist/{videoSelfieCameraWarmer-qld900rY.esm.js → videoSelfieCameraWarmer-NEhFZvWx.esm.js} +2 -2
  113. package/dist/wasm.esm.js +1 -1
  114. package/dist/watchlist-for-business.esm.js +2 -2
  115. package/dist/watchlist.esm.js +2 -2
  116. package/dist/{watchlistForBusinessStateMachine-BcBMkMvV.esm.js → watchlistForBusinessStateMachine-CxFnlshm.esm.js} +2 -2
  117. package/dist/{watchlistManager-CPBZnFYj.esm.js → watchlistManager-LoNZH9qm.esm.js} +2 -2
  118. package/dist/{watchlistStateMachine-Bl7Wy9Cm.esm.js → watchlistStateMachine-DIKQDoUT.esm.js} +2 -2
  119. package/dist/workflow.esm.js +36 -36
  120. package/dist/{xstate-actors.esm-CtI5S0f4.esm.js → xstate-actors.esm-BXeQ-Ucz.esm.js} +1 -1
  121. package/dist/{xstate.esm-Cf4e0Cfd.esm.js → xstate.esm-BuFLFuzz.esm.js} +1 -1
  122. package/package.json +2 -2
  123. package/dist/trueSight-CAaztf3O.esm.js +0 -1
@@ -1,11 +1,11 @@
1
- import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-Bo_xbwQa.esm.js";
1
+ import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-CPQ4qv3F.esm.js";
2
2
  import { t as api } from "./api-Bx3gKW_y.esm.js";
3
3
  import { t as endpoints } from "./endpoints-CCzL3XD_.esm.js";
4
4
  import { r as isDesktop } from "./platform-BJrm5nzZ.esm.js";
5
- import { h as stopRecording$1, m as startRecording, p as createRecordingSession } from "./onDeviceFaceResults-CTinxa9H.esm.js";
5
+ import { h as stopRecording$1, m as startRecording, p as createRecordingSession } from "./onDeviceFaceResults-CUHwyZT4.esm.js";
6
6
  import { n as getBackCameraStream } from "./backCameraStream-CUeYm5eu.esm.js";
7
7
  import { t as getDeviceClass } from "./getDeviceClass-9y-kbVDw.esm.js";
8
- import { n as preloadOpenViduProvider } from "./recordingService-DtWTn91V.esm.js";
8
+ import { n as preloadOpenViduProvider } from "./recordingService-3NSENVwp.esm.js";
9
9
  import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider } from "./idCaptureDefaults-WeHbQM7W.esm.js";
10
10
  //#region src/modules/id/idCameraStream.ts
11
11
  async function getIdCameraStream(deviceId) {
@@ -14,25 +14,149 @@ async function getIdCameraStream(deviceId) {
14
14
  //#endregion
15
15
  //#region src/modules/id/idCaptureExperiments.ts
16
16
  /**
17
+ * IDC-05 splits the WASM frames-aggregation window into a silent live half
18
+ * (`framesAggregationIntervalMs`, "Taking photo…") and an optimizing half
19
+ * (`resultPreviewDwellMs`, "Successfully captured" / "Optimizing your capture…")
20
+ * during which detection keeps running, so the frame that finally uploads is
21
+ * the best across both halves. WASM receives their sum. iOS uses 1500 + 1500
22
+ * (`IDCaptureExp05Timing`).
23
+ *
24
+ * The two param names below are the **Statsig payload keys**, deliberately kept
25
+ * as originally configured; everything downstream of
26
+ * `resolveCaptureOptimizingTreatment` speaks of the optimizing phase instead
27
+ * (`captureWindowMs` / `optimizingDwellMs`). Renaming a key here renames what
28
+ * the console must send, and a payload still using the old spelling would
29
+ * silently fall back to these code defaults.
30
+ *
31
+ * The split is NOT pinned to a fixed total. The only ceiling is the session's
32
+ * autocapture budget, applied in `resolveCaptureOptimizingTreatment`: a
33
+ * payload whose halves exceed it is halved to fit rather than rejected, and a
34
+ * session whose budget cannot fit a meaningful split runs the countdown arm.
35
+ * Note this means the console payload decides total capture duration — a
36
+ * treatment payload that leaves `framesAggregationIntervalMs` at its 3000
37
+ * default produces a 4500ms window against the 5s default budget, i.e. longer
38
+ * than the countdown arm's 3000ms. Set both halves explicitly.
39
+ */
40
+ const MAX_OPTIMIZING_DWELL_MS = 2500;
41
+ const DEFAULT_OPTIMIZING_DWELL_MS = 1500;
42
+ /**
43
+ * How long the machine waits for WASM's commit *after* the optimizing phase has
44
+ * had its full dwell, before treating the window as abandoned
45
+ * (`optimizingGrace`, `idCaptureStateMachine.ts`).
46
+ *
47
+ * The phase is expected to last exactly one dwell: it starts at
48
+ * `T0 + captureWindowMs` and WASM closes its aggregation window with
49
+ * `onCapture` at `T0 + captureWindowMs + optimizingDwellMs`. This grace covers
50
+ * the case where that `onCapture` never arrives — aggregation aborting
51
+ * mid-phase because the document left the frame, so the window the frozen still
52
+ * belongs to is simply abandoned.
53
+ *
54
+ * Sized to be unreachable on a healthy phase: WASM's frame loop and the JS
55
+ * boundary timer both jitter, and a late boundary only *delays* the phase, which
56
+ * delays this grace with it — so the only way to overrun a full second past the
57
+ * dwell is that no commit is coming.
58
+ */
59
+ const OPTIMIZING_WATCHDOG_MARGIN_MS = 1e3;
60
+ /**
17
61
  * IDC-05 — resolved by core because `framesAggregationIntervalMs` feeds
18
62
  * `setThresholds` before detection can run.
63
+ *
64
+ * `framesAggregationIntervalMs` carries no upper bound here because it means
65
+ * two different things depending on the arm: the WHOLE aggregation window in
66
+ * the countdown arm, only the pre-boundary half in the treatment arm. Bounding it
67
+ * for one would break the other, so the arm-aware handling lives in
68
+ * `resolveCaptureOptimizingTreatment`. Its code default stays at the
69
+ * canonical 3000 so an unallocated session keeps shipped control behavior.
19
70
  */
20
- const CAPTURE_RESULT_PREVIEW = {
71
+ const CAPTURE_OPTIMIZING = {
21
72
  storeParam: "idcExp05ShowResult",
22
73
  ...defineExperimentParams({
23
74
  showCaptureResultPreview: booleanParam(false),
24
- framesAggregationIntervalMs: numberParam(DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval)
75
+ framesAggregationIntervalMs: numberParam(DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval, { min: 0 }),
76
+ resultPreviewDwellMs: numberParam(DEFAULT_OPTIMIZING_DWELL_MS, {
77
+ min: 0,
78
+ max: MAX_OPTIMIZING_DWELL_MS
79
+ })
25
80
  })
26
81
  };
27
82
  //#endregion
28
83
  //#region src/modules/id/idCaptureThresholds.ts
29
- function resolveCaptureResultPreviewTreatment(config) {
30
- if (config.supportsCaptureResultPreview !== true) return void 0;
31
- const { params } = resolveExperimentOnce(CAPTURE_RESULT_PREVIEW);
32
- return {
33
- mode: params.showCaptureResultPreview ? "result-preview" : "countdown",
84
+ /**
85
+ * WASM restarts its manual-capture timer at first ID *detection* but only opens
86
+ * the frames-aggregation window at the first *good-quality* frame, and never
87
+ * stops that timer once aggregation begins. If it fires mid-window it captures
88
+ * early (`CapturingManager.cpp`, the `isLookingForBestFrame` branch of the
89
+ * `manualCaptureTimer` interval callback), which would truncate the
90
+ * optimizing half.
91
+ */
92
+ const AUTOCAPTURE_SAFETY_MARGIN_MS = 500;
93
+ /**
94
+ * Smallest autocapture budget that can still carry a meaningful IDC-05 split.
95
+ *
96
+ * An over-budget payload is halved to fit (below), so the budget alone decides
97
+ * how short each half can get. At 3000ms each half is 1500ms — the iOS timing
98
+ * and the shortest pre-boundary window that reliably yields a best frame. Below
99
+ * that the session runs the countdown arm instead: a 1000ms/1000ms split would
100
+ * reveal a frame WASM has barely had time to score.
101
+ *
102
+ * Budget is `autocaptureTimeout - AUTOCAPTURE_SAFETY_MARGIN_MS`, so this floor
103
+ * means an effective `autocaptureTimeout` of at least 3500ms.
104
+ */
105
+ const MIN_EXPERIMENT_AUTOCAPTURE_BUDGET_MS = 3e3;
106
+ /**
107
+ * The autocapture window WASM will be given, derived the same way whether the
108
+ * caller is building thresholds or checking whether a split window fits inside
109
+ * it. Shared so the two can't drift.
110
+ */
111
+ function resolveAutocaptureTimeout(config) {
112
+ return config.thresholds?.autocaptureTimeout ?? (config.autoCaptureTimeout ?? 5) * 1e3;
113
+ }
114
+ /**
115
+ * Resolves the IDC-05 arm and, for the treatment, the two halves of the capture
116
+ * window. Precedence:
117
+ *
118
+ * 1. An explicit `config.thresholds.framesAggregationInterval` (host/headless
119
+ * override) opts the session OUT of the treatment: the host has deliberately
120
+ * pinned the capture window, and splitting it against that intent is worse
121
+ * than not running the experiment on that traffic.
122
+ * 2. Countdown arm (or unallocated) → the experiment's interval straight
123
+ * through, unchanged from before this split existed.
124
+ * 3. Treatment arm, budget too small for a viable split → countdown arm on the
125
+ * CANONICAL window (not the payload's, see below).
126
+ * 4. Treatment arm → the payload's two halves, each halved to `budget / 2` if
127
+ * their sum would overrun the autocapture budget. Deliberately no contract
128
+ * on the total and no rejection path: an out-of-range payload is fitted, not
129
+ * refused, so no session logs a warning or silently runs mis-timed.
130
+ */
131
+ function resolveCaptureOptimizingTreatment(config) {
132
+ if (config.supportsOptimizingStatus !== true) return void 0;
133
+ const { params } = resolveExperimentOnce(CAPTURE_OPTIMIZING);
134
+ const hostInterval = config.thresholds?.framesAggregationInterval;
135
+ if (hostInterval !== void 0) return {
136
+ mode: "countdown",
137
+ framesAggregationInterval: hostInterval
138
+ };
139
+ const budget = resolveAutocaptureTimeout(config) - AUTOCAPTURE_SAFETY_MARGIN_MS;
140
+ if (!params.showCaptureResultPreview) return {
141
+ mode: "countdown",
34
142
  framesAggregationInterval: params.framesAggregationIntervalMs
35
143
  };
144
+ if (budget < MIN_EXPERIMENT_AUTOCAPTURE_BUDGET_MS) return {
145
+ mode: "countdown",
146
+ framesAggregationInterval: DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval
147
+ };
148
+ let captureWindowMs = params.framesAggregationIntervalMs;
149
+ let optimizingDwellMs = params.resultPreviewDwellMs;
150
+ if (captureWindowMs + optimizingDwellMs > budget) {
151
+ captureWindowMs = Math.floor(budget / 2);
152
+ optimizingDwellMs = captureWindowMs;
153
+ }
154
+ return {
155
+ mode: "optimizing",
156
+ framesAggregationInterval: captureWindowMs + optimizingDwellMs,
157
+ captureWindowMs,
158
+ optimizingDwellMs
159
+ };
36
160
  }
37
161
  /**
38
162
  * Single source of truth for the WASM ID-capture thresholds passed to
@@ -41,9 +165,11 @@ function resolveCaptureResultPreviewTreatment(config) {
41
165
  * 3000ms) — with precedence:
42
166
  *
43
167
  * 1. An explicit `config.thresholds.framesAggregationInterval` (host/headless
44
- * override) always wins including when allocated to the treatment arm,
45
- * which then runs the treatment UI on the host's aggregation window.
46
- * 2. Otherwise, the IDC-05 experiment's `framesAggregationInterval`.
168
+ * override) always wins. Such a session never runs the IDC-05 treatment
169
+ * (see `resolveCaptureOptimizingTreatment`), so the override is the whole
170
+ * window, undivided.
171
+ * 2. Otherwise, the IDC-05-resolved interval — the summed split window in the
172
+ * treatment arm, the plain interval in the countdown arm.
47
173
  * 3. Otherwise, the canonical default.
48
174
  *
49
175
  * `idDetectedTimeout`/`autocaptureTimeout` are derived here too (from
@@ -64,7 +190,7 @@ function resolveIdCaptureThresholds(config, experimentInterval) {
64
190
  ...config.thresholds,
65
191
  framesAggregationInterval: config.thresholds?.framesAggregationInterval ?? experimentInterval ?? DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval,
66
192
  idDetectedTimeout: config.thresholds?.idDetectedTimeout ?? (config.deviceIdleTimeout ?? 10) * 1e3,
67
- autocaptureTimeout: config.thresholds?.autocaptureTimeout ?? (config.autoCaptureTimeout ?? 5) * 1e3
193
+ autocaptureTimeout: resolveAutocaptureTimeout(config)
68
194
  };
69
195
  }
70
196
  //#endregion
@@ -393,4 +519,4 @@ async function addBarcode(params) {
393
519
  return res.data;
394
520
  }
395
521
  //#endregion
396
- export { processId as a, stopStream as c, validateUploadResponse as d, ID_ERROR_CODES as f, getIdCameraStream as g, CAPTURE_RESULT_PREVIEW as h, preloadIdRecordingProvider as i, uploadIdImage as l, resolveIdCaptureThresholds as m, barcodeToBase64 as n, startRecordingSession as o, resolveCaptureResultPreviewTreatment as p, initializeIdCapture as r, stopRecording as s, addBarcode as t, uploadManualIdFile as u };
522
+ export { getIdCameraStream as _, processId as a, stopStream as c, validateUploadResponse as d, ID_ERROR_CODES as f, OPTIMIZING_WATCHDOG_MARGIN_MS as g, CAPTURE_OPTIMIZING as h, preloadIdRecordingProvider as i, uploadIdImage as l, resolveIdCaptureThresholds as m, barcodeToBase64 as n, startRecordingSession as o, resolveCaptureOptimizingTreatment as p, initializeIdCapture as r, stopRecording as s, addBarcode as t, uploadManualIdFile as u };