@mikashboks/capture-intelligence-core 0.1.24 → 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.
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Capture guidance — the shared semantic layer tying a guidance reason code
3
+ * to its traffic-light state, directional action, and presented copy.
4
+ *
5
+ * This is the cross-client home of the vocabulary first shipped in the web
6
+ * SDK's `capture-guidance-signal.ts`. The web SDK's local table must stay
7
+ * byte-identical to the `'self'` persona here (pinned by a parity test in
8
+ * `sdks/web-ui-sdk`); React Native clients (agent-kyc-app) consume this
9
+ * module directly with the `'agent'` persona.
10
+ *
11
+ * Persona rule: `'self'` is the end customer holding their own phone
12
+ * (kyc-mobile). `'agent'` is a trained field operator capturing on behalf of
13
+ * a customer — same semantics, third-person copy, faster damping.
14
+ */
15
+ import type { OverlayVariant } from './types.js';
16
+ import type { DocumentPlacementReason } from './document-placement.js';
17
+ export type CaptureGuidanceState = 'looking' | 'adjust' | 'ready';
18
+ /**
19
+ * Every non-'none' value MUST have a matching directional glyph in each
20
+ * client (web Overlay arrow CSS / RN GuidanceArrow component). Condition-only
21
+ * situations (blur/dark/glare) present as state 'adjust' with action 'none'.
22
+ */
23
+ export type CaptureGuidanceAction = 'none' | 'closer' | 'back' | 'left' | 'right' | 'up' | 'down' | 'center';
24
+ export type CaptureGuidancePersona = 'self' | 'agent';
25
+ export type CaptureGuidanceReasonCode = 'searching' | 'camera_preparing' | 'hold_still' | 'almost_ready' | 'document_found' | 'auto_safe' | 'review_safe' | 'manual_ready' | 'taking_photo' | 'too_small' | 'too_large_or_cutoff' | 'off_center' | 'nudge_left' | 'nudge_right' | 'nudge_up' | 'nudge_down' | 'too_dark' | 'glare' | 'blurry' | 'flatten_document' | 'mrz_band_closer' | 'mrz_band_lines' | 'readable_text_closer' | 'back_text_closer' | 'passport_code_lines_bottom' | 'keep_passport_page_in_frame' | 'keep_document_in_frame' | 'show_page_and_code' | 'burst_abort' | 'selfie_searching' | 'selfie_multiple_faces' | 'selfie_too_dark' | 'selfie_too_bright' | 'selfie_cropped' | 'selfie_too_small' | 'selfie_too_large' | 'selfie_off_center' | 'selfie_blurry' | 'selfie_hold_still' | 'selfie_ready' | 'unclassified';
26
+ export type ResolvedCaptureGuidanceReasonCode = Exclude<CaptureGuidanceReasonCode, 'unclassified'>;
27
+ export declare const MANUAL_CAPTURE_READY_FEEDBACK = "Tap button to take photo";
28
+ export declare const GOOD_HOLD_STILL_FEEDBACK = "Good. Hold still";
29
+ export declare const TAKING_PHOTO_META = "Hold still\u2026";
30
+ export declare const INITIAL_DOCUMENT_FEEDBACK = "Put your document inside the box";
31
+ export declare const AUTO_CAPTURE_BURST_ABORT_FEEDBACK = "No clear photo yet. Hold still.";
32
+ export declare function getDocumentSubjectLabel(overlayVariant: OverlayVariant): string;
33
+ export declare function getTiltAwayFromLightGuidance(overlayVariant: OverlayVariant): string;
34
+ export declare function getMoveToMiddleFeedback(overlayVariant: OverlayVariant): string;
35
+ export interface CaptureGuidanceSignalEntry {
36
+ reasonCode: ResolvedCaptureGuidanceReasonCode;
37
+ /** Pre-isReady state; isReady=true always promotes to 'ready'. */
38
+ state: CaptureGuidanceState;
39
+ action: CaptureGuidanceAction;
40
+ text: (overlayVariant: OverlayVariant, persona?: CaptureGuidancePersona) => string;
41
+ }
42
+ export interface PresentedCaptureGuidanceSignal {
43
+ text: string;
44
+ state: CaptureGuidanceState;
45
+ action: CaptureGuidanceAction;
46
+ reasonCode: CaptureGuidanceReasonCode;
47
+ }
48
+ export declare const CAPTURE_GUIDANCE_SIGNAL_TABLE: Record<ResolvedCaptureGuidanceReasonCode, CaptureGuidanceSignalEntry>;
49
+ export declare function resolveCaptureGuidanceSignal(reasonCode: ResolvedCaptureGuidanceReasonCode, isReady: boolean, overlayVariant?: OverlayVariant, persona?: CaptureGuidancePersona): PresentedCaptureGuidanceSignal;
50
+ /**
51
+ * Map a document placement failure to its guidance reason code. `ok` maps to
52
+ * the hold-still family because a passing placement frame is, by definition,
53
+ * waiting on stability/sharpness rather than a correction.
54
+ */
55
+ export declare const DOCUMENT_PLACEMENT_GUIDANCE_REASON: Record<DocumentPlacementReason, ResolvedCaptureGuidanceReasonCode>;
56
+ export declare function mapSelfieIssueToGuidanceReason(issueKey: string): ResolvedCaptureGuidanceReasonCode | null;
57
+ /**
58
+ * Presentation damping for live guidance. Dwell times are wall-clock floors a
59
+ * presented signal holds before a replacement renders; confirm frames are the
60
+ * consecutive analysis frames a NEW corrective signal must persist before it
61
+ * is allowed on screen at all. Frame counts assume each client's own analysis
62
+ * cadence (web ~15fps video loop; RN ~1.5-2fps snapshot loop), which is why
63
+ * the agent profile uses smaller frame counts, not just smaller dwells.
64
+ */
65
+ export interface CaptureGuidanceDampingProfile {
66
+ /** Normal corrective guidance (dark / blur / glare / placement). */
67
+ correctiveMinDwellMs: number;
68
+ correctiveConfirmFrames: number;
69
+ /** Distance reversals (closer<->back) flip-flop easily; damp harder. */
70
+ distanceReversalMinDwellMs: number;
71
+ distanceReversalConfirmFrames: number;
72
+ /** Once a ready state has been shown, corrections may swap faster. */
73
+ postReadyMinDwellMs: number;
74
+ postReadyConfirmFrames: number;
75
+ /** Urgent signals (glare/dark/blur) keep the screen at least this long. */
76
+ urgentMinDisplayMs: number;
77
+ /** Consecutive glare frames required before glare guidance latches. */
78
+ glareConfirmFrames: number;
79
+ }
80
+ export declare const CAPTURE_GUIDANCE_DAMPING_PROFILES: Record<CaptureGuidancePersona, CaptureGuidanceDampingProfile>;
81
+ export type CaptureSignalKind = 'ready' | 'review' | 'fail';
82
+ /**
83
+ * Vibration patterns per signal kind. Invariant (test-locked): ready stays
84
+ * the strongest pattern — it is the one signal that must cut through when the
85
+ * user's eyes are on the document, not the screen.
86
+ */
87
+ export declare const CAPTURE_SIGNAL_VIBRATION_PATTERNS: Record<CaptureSignalKind, number | number[]>;
88
+ /** Cooldown for the ready haptic+chime pair; boundary thrash never spams. */
89
+ export declare const READY_SIGNAL_COOLDOWN_MS = 2500;
90
+ /** How long the stored frame is held on screen as capture confirmation. */
91
+ export declare const CAPTURE_CONFIRMATION_HOLD_MS = 750;
92
+ /** Two-note ready chime (web parity: 660→880 Hz, 100ms apart). */
93
+ export declare const READY_CHIME_NOTES: ReadonlyArray<{
94
+ frequencyHz: number;
95
+ startOffsetMs: number;
96
+ durationMs: number;
97
+ }>;
98
+ export declare const READY_CHIME_GAIN = 0.12;
99
+ /**
100
+ * After the selfie manual-fallback timer expires onto a hard-block reason,
101
+ * the shutter holds through ONE bounded extension of this length, then
102
+ * unlocks permanently. Mirrors web selfie-detection semantics.
103
+ */
104
+ export declare const SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS = 8000;
105
+ //# sourceMappingURL=capture-guidance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-guidance.d.ts","sourceRoot":"","sources":["../../src/capture-guidance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ /**
3
+ * Capture guidance — the shared semantic layer tying a guidance reason code
4
+ * to its traffic-light state, directional action, and presented copy.
5
+ *
6
+ * This is the cross-client home of the vocabulary first shipped in the web
7
+ * SDK's `capture-guidance-signal.ts`. The web SDK's local table must stay
8
+ * byte-identical to the `'self'` persona here (pinned by a parity test in
9
+ * `sdks/web-ui-sdk`); React Native clients (agent-kyc-app) consume this
10
+ * module directly with the `'agent'` persona.
11
+ *
12
+ * Persona rule: `'self'` is the end customer holding their own phone
13
+ * (kyc-mobile). `'agent'` is a trained field operator capturing on behalf of
14
+ * a customer — same semantics, third-person copy, faster damping.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS = exports.READY_CHIME_GAIN = exports.READY_CHIME_NOTES = exports.CAPTURE_CONFIRMATION_HOLD_MS = exports.READY_SIGNAL_COOLDOWN_MS = exports.CAPTURE_SIGNAL_VIBRATION_PATTERNS = exports.CAPTURE_GUIDANCE_DAMPING_PROFILES = exports.DOCUMENT_PLACEMENT_GUIDANCE_REASON = exports.CAPTURE_GUIDANCE_SIGNAL_TABLE = exports.AUTO_CAPTURE_BURST_ABORT_FEEDBACK = exports.INITIAL_DOCUMENT_FEEDBACK = exports.TAKING_PHOTO_META = exports.GOOD_HOLD_STILL_FEEDBACK = exports.MANUAL_CAPTURE_READY_FEEDBACK = void 0;
18
+ exports.getDocumentSubjectLabel = getDocumentSubjectLabel;
19
+ exports.getTiltAwayFromLightGuidance = getTiltAwayFromLightGuidance;
20
+ exports.getMoveToMiddleFeedback = getMoveToMiddleFeedback;
21
+ exports.resolveCaptureGuidanceSignal = resolveCaptureGuidanceSignal;
22
+ exports.mapSelfieIssueToGuidanceReason = mapSelfieIssueToGuidanceReason;
23
+ /* -- Canonical copy constants (self persona = web kyc-mobile verbatim) ----- */
24
+ exports.MANUAL_CAPTURE_READY_FEEDBACK = 'Tap button to take photo';
25
+ exports.GOOD_HOLD_STILL_FEEDBACK = 'Good. Hold still';
26
+ // Shown while an armed capture decision is pending and during the burst.
27
+ // Deliberately NOT "Taking photo now": the armed capture can still abort, and
28
+ // announcing a photo that may never exist proved trust-destroying in
29
+ // production replays. The stored photo is confirmed by the freeze-flash at
30
+ // actual capture time instead.
31
+ exports.TAKING_PHOTO_META = 'Hold still…';
32
+ exports.INITIAL_DOCUMENT_FEEDBACK = 'Put your document inside the box';
33
+ exports.AUTO_CAPTURE_BURST_ABORT_FEEDBACK = 'No clear photo yet. Hold still.';
34
+ function getDocumentSubjectLabel(overlayVariant) {
35
+ if (overlayVariant === 'passport')
36
+ return 'passport photo page';
37
+ return 'document';
38
+ }
39
+ function getTiltAwayFromLightGuidance(overlayVariant) {
40
+ return `Tilt ${getDocumentSubjectLabel(overlayVariant)} away from light`;
41
+ }
42
+ function getMoveToMiddleFeedback(overlayVariant) {
43
+ if (overlayVariant === 'passport')
44
+ return 'Move passport photo page to the middle';
45
+ return 'Move document to the middle';
46
+ }
47
+ const selfOnly = (text) => (_overlayVariant, _persona = 'self') => text;
48
+ const byPersona = (self, agent) => (_overlayVariant, persona = 'self') => persona === 'agent' ? agent : self;
49
+ exports.CAPTURE_GUIDANCE_SIGNAL_TABLE = {
50
+ searching: {
51
+ reasonCode: 'searching',
52
+ state: 'looking',
53
+ action: 'none',
54
+ text: byPersona(exports.INITIAL_DOCUMENT_FEEDBACK, 'Put the document inside the box'),
55
+ },
56
+ camera_preparing: {
57
+ reasonCode: 'camera_preparing',
58
+ state: 'adjust',
59
+ action: 'none',
60
+ text: selfOnly('Preparing camera...'),
61
+ },
62
+ hold_still: {
63
+ reasonCode: 'hold_still',
64
+ state: 'adjust',
65
+ action: 'none',
66
+ text: selfOnly(exports.GOOD_HOLD_STILL_FEEDBACK),
67
+ },
68
+ almost_ready: {
69
+ reasonCode: 'almost_ready',
70
+ state: 'adjust',
71
+ action: 'none',
72
+ text: selfOnly(exports.GOOD_HOLD_STILL_FEEDBACK),
73
+ },
74
+ document_found: {
75
+ reasonCode: 'document_found',
76
+ state: 'adjust',
77
+ action: 'none',
78
+ text: selfOnly(exports.GOOD_HOLD_STILL_FEEDBACK),
79
+ },
80
+ auto_safe: {
81
+ reasonCode: 'auto_safe',
82
+ state: 'adjust',
83
+ action: 'none',
84
+ text: selfOnly(exports.GOOD_HOLD_STILL_FEEDBACK),
85
+ },
86
+ review_safe: {
87
+ reasonCode: 'review_safe',
88
+ state: 'adjust',
89
+ action: 'none',
90
+ text: selfOnly(exports.GOOD_HOLD_STILL_FEEDBACK),
91
+ },
92
+ manual_ready: {
93
+ reasonCode: 'manual_ready',
94
+ state: 'ready',
95
+ action: 'none',
96
+ text: selfOnly(exports.MANUAL_CAPTURE_READY_FEEDBACK),
97
+ },
98
+ taking_photo: {
99
+ reasonCode: 'taking_photo',
100
+ state: 'ready',
101
+ action: 'none',
102
+ text: selfOnly(exports.TAKING_PHOTO_META),
103
+ },
104
+ too_small: {
105
+ reasonCode: 'too_small',
106
+ state: 'adjust',
107
+ action: 'closer',
108
+ text: selfOnly('Bring phone closer'),
109
+ },
110
+ too_large_or_cutoff: {
111
+ reasonCode: 'too_large_or_cutoff',
112
+ state: 'adjust',
113
+ action: 'back',
114
+ text: selfOnly('Move phone back. Show all 4 corners'),
115
+ },
116
+ off_center: {
117
+ reasonCode: 'off_center',
118
+ state: 'adjust',
119
+ action: 'center',
120
+ text: (overlayVariant) => getMoveToMiddleFeedback(overlayVariant),
121
+ },
122
+ nudge_left: {
123
+ reasonCode: 'nudge_left',
124
+ state: 'adjust',
125
+ action: 'left',
126
+ text: selfOnly('Move left'),
127
+ },
128
+ nudge_right: {
129
+ reasonCode: 'nudge_right',
130
+ state: 'adjust',
131
+ action: 'right',
132
+ text: selfOnly('Move right'),
133
+ },
134
+ nudge_up: {
135
+ reasonCode: 'nudge_up',
136
+ state: 'adjust',
137
+ action: 'up',
138
+ text: selfOnly('Move up'),
139
+ },
140
+ nudge_down: {
141
+ reasonCode: 'nudge_down',
142
+ state: 'adjust',
143
+ action: 'down',
144
+ text: selfOnly('Move down'),
145
+ },
146
+ too_dark: {
147
+ reasonCode: 'too_dark',
148
+ state: 'adjust',
149
+ action: 'none',
150
+ text: selfOnly('Find better light'),
151
+ },
152
+ glare: {
153
+ reasonCode: 'glare',
154
+ state: 'adjust',
155
+ action: 'none',
156
+ text: (overlayVariant) => getTiltAwayFromLightGuidance(overlayVariant),
157
+ },
158
+ blurry: {
159
+ reasonCode: 'blurry',
160
+ state: 'adjust',
161
+ action: 'none',
162
+ text: selfOnly('Hold still. Photo is blurry'),
163
+ },
164
+ flatten_document: {
165
+ reasonCode: 'flatten_document',
166
+ state: 'adjust',
167
+ action: 'none',
168
+ text: selfOnly('Tilt to flatten the document'),
169
+ },
170
+ mrz_band_closer: {
171
+ reasonCode: 'mrz_band_closer',
172
+ state: 'adjust',
173
+ action: 'closer',
174
+ text: selfOnly('Bring phone closer so the passport code is clear'),
175
+ },
176
+ mrz_band_lines: {
177
+ reasonCode: 'mrz_band_lines',
178
+ state: 'adjust',
179
+ action: 'none',
180
+ text: selfOnly('Show the two passport code lines'),
181
+ },
182
+ readable_text_closer: {
183
+ reasonCode: 'readable_text_closer',
184
+ state: 'adjust',
185
+ action: 'closer',
186
+ text: selfOnly('Bring phone closer so the text is clear'),
187
+ },
188
+ back_text_closer: {
189
+ reasonCode: 'back_text_closer',
190
+ state: 'adjust',
191
+ action: 'closer',
192
+ text: selfOnly('Bring phone closer so the code is clear'),
193
+ },
194
+ passport_code_lines_bottom: {
195
+ reasonCode: 'passport_code_lines_bottom',
196
+ state: 'adjust',
197
+ action: 'none',
198
+ text: selfOnly('Show the two code lines at the bottom'),
199
+ },
200
+ keep_passport_page_in_frame: {
201
+ reasonCode: 'keep_passport_page_in_frame',
202
+ state: 'adjust',
203
+ action: 'none',
204
+ text: selfOnly('Keep the passport photo page in frame'),
205
+ },
206
+ keep_document_in_frame: {
207
+ reasonCode: 'keep_document_in_frame',
208
+ state: 'adjust',
209
+ action: 'none',
210
+ text: selfOnly('Keep the document in frame'),
211
+ },
212
+ show_page_and_code: {
213
+ reasonCode: 'show_page_and_code',
214
+ state: 'adjust',
215
+ action: 'none',
216
+ text: selfOnly('Show the passport photo page and code'),
217
+ },
218
+ burst_abort: {
219
+ reasonCode: 'burst_abort',
220
+ state: 'adjust',
221
+ action: 'none',
222
+ text: selfOnly(exports.AUTO_CAPTURE_BURST_ABORT_FEEDBACK),
223
+ },
224
+ selfie_searching: {
225
+ reasonCode: 'selfie_searching',
226
+ state: 'looking',
227
+ action: 'none',
228
+ text: byPersona('Show your face in the oval', "Put the customer's face in the oval"),
229
+ },
230
+ selfie_multiple_faces: {
231
+ reasonCode: 'selfie_multiple_faces',
232
+ state: 'adjust',
233
+ action: 'none',
234
+ text: byPersona('Only one face in the photo', 'One face only'),
235
+ },
236
+ selfie_too_dark: {
237
+ reasonCode: 'selfie_too_dark',
238
+ state: 'adjust',
239
+ action: 'none',
240
+ text: selfOnly('Find more light'),
241
+ },
242
+ selfie_too_bright: {
243
+ reasonCode: 'selfie_too_bright',
244
+ state: 'adjust',
245
+ action: 'none',
246
+ text: selfOnly('Move away from bright light'),
247
+ },
248
+ selfie_cropped: {
249
+ reasonCode: 'selfie_cropped',
250
+ state: 'adjust',
251
+ action: 'back',
252
+ text: byPersona('Move phone back', 'Keep the full face inside the oval'),
253
+ },
254
+ selfie_too_small: {
255
+ reasonCode: 'selfie_too_small',
256
+ state: 'adjust',
257
+ action: 'closer',
258
+ text: byPersona('Move phone closer', 'Move closer. Fill the oval.'),
259
+ },
260
+ selfie_too_large: {
261
+ reasonCode: 'selfie_too_large',
262
+ state: 'adjust',
263
+ action: 'back',
264
+ text: byPersona('Move phone back', 'Move back a little'),
265
+ },
266
+ selfie_off_center: {
267
+ reasonCode: 'selfie_off_center',
268
+ state: 'adjust',
269
+ action: 'center',
270
+ text: byPersona('Center your face', 'Center the face in the oval'),
271
+ },
272
+ selfie_blurry: {
273
+ reasonCode: 'selfie_blurry',
274
+ state: 'adjust',
275
+ action: 'none',
276
+ text: selfOnly('Hold steady — too blurry'),
277
+ },
278
+ selfie_hold_still: {
279
+ reasonCode: 'selfie_hold_still',
280
+ state: 'adjust',
281
+ action: 'none',
282
+ text: selfOnly('Hold still…'),
283
+ },
284
+ selfie_ready: {
285
+ reasonCode: 'selfie_ready',
286
+ state: 'ready',
287
+ action: 'none',
288
+ text: byPersona('Ready — tap to take selfie', 'Ready — tap to capture'),
289
+ },
290
+ };
291
+ /* -- Resolution ------------------------------------------------------------ */
292
+ function resolveCaptureGuidanceSignal(reasonCode, isReady, overlayVariant = 'card', persona = 'self') {
293
+ const entry = exports.CAPTURE_GUIDANCE_SIGNAL_TABLE[reasonCode];
294
+ return {
295
+ text: entry.text(overlayVariant, persona),
296
+ state: isReady ? 'ready' : entry.state,
297
+ action: entry.action,
298
+ reasonCode: entry.reasonCode,
299
+ };
300
+ }
301
+ /* -- Producer-side reason mapping ------------------------------------------ */
302
+ /**
303
+ * Map a document placement failure to its guidance reason code. `ok` maps to
304
+ * the hold-still family because a passing placement frame is, by definition,
305
+ * waiting on stability/sharpness rather than a correction.
306
+ */
307
+ exports.DOCUMENT_PLACEMENT_GUIDANCE_REASON = {
308
+ too_small: 'too_small',
309
+ too_large: 'too_large_or_cutoff',
310
+ off_center: 'off_center',
311
+ edge_tight: 'too_large_or_cutoff',
312
+ ok: 'hold_still',
313
+ };
314
+ /**
315
+ * Map live/static selfie assessment issue keys to guidance reason codes.
316
+ * Tolerant of both dialects in use today (web selfie-detection assessment
317
+ * reasons and the RN MLKit face-detection issue keys).
318
+ */
319
+ const SELFIE_ISSUE_GUIDANCE_REASON = {
320
+ no_face: 'selfie_searching',
321
+ multiple_faces: 'selfie_multiple_faces',
322
+ face_too_dark: 'selfie_too_dark',
323
+ face_too_bright: 'selfie_too_bright',
324
+ face_cropped: 'selfie_cropped',
325
+ face_cut_off: 'selfie_cropped',
326
+ face_too_small: 'selfie_too_small',
327
+ face_too_large: 'selfie_too_large',
328
+ face_off_center: 'selfie_off_center',
329
+ face_blurry: 'selfie_blurry',
330
+ face_ready: 'selfie_hold_still',
331
+ };
332
+ function mapSelfieIssueToGuidanceReason(issueKey) {
333
+ return SELFIE_ISSUE_GUIDANCE_REASON[issueKey] ?? null;
334
+ }
335
+ exports.CAPTURE_GUIDANCE_DAMPING_PROFILES = {
336
+ // Web kyc-mobile values, verbatim (auto-capture.ts dwell tiers).
337
+ self: {
338
+ correctiveMinDwellMs: 3000,
339
+ correctiveConfirmFrames: 6,
340
+ distanceReversalMinDwellMs: 4500,
341
+ distanceReversalConfirmFrames: 10,
342
+ postReadyMinDwellMs: 1500,
343
+ postReadyConfirmFrames: 3,
344
+ urgentMinDisplayMs: 1500,
345
+ glareConfirmFrames: 3,
346
+ },
347
+ // Trained repeat operators tolerate faster swaps; cadence is also ~10x
348
+ // slower (snapshot loop), so frame counts shrink with it.
349
+ agent: {
350
+ correctiveMinDwellMs: 1500,
351
+ correctiveConfirmFrames: 2,
352
+ distanceReversalMinDwellMs: 2500,
353
+ distanceReversalConfirmFrames: 3,
354
+ postReadyMinDwellMs: 750,
355
+ postReadyConfirmFrames: 1,
356
+ urgentMinDisplayMs: 1000,
357
+ glareConfirmFrames: 2,
358
+ },
359
+ };
360
+ /**
361
+ * Vibration patterns per signal kind. Invariant (test-locked): ready stays
362
+ * the strongest pattern — it is the one signal that must cut through when the
363
+ * user's eyes are on the document, not the screen.
364
+ */
365
+ exports.CAPTURE_SIGNAL_VIBRATION_PATTERNS = {
366
+ ready: [40, 60, 90],
367
+ review: 50,
368
+ fail: [30, 50, 30],
369
+ };
370
+ /** Cooldown for the ready haptic+chime pair; boundary thrash never spams. */
371
+ exports.READY_SIGNAL_COOLDOWN_MS = 2500;
372
+ /** How long the stored frame is held on screen as capture confirmation. */
373
+ exports.CAPTURE_CONFIRMATION_HOLD_MS = 750;
374
+ /** Two-note ready chime (web parity: 660→880 Hz, 100ms apart). */
375
+ exports.READY_CHIME_NOTES = [
376
+ { frequencyHz: 660, startOffsetMs: 0, durationMs: 120 },
377
+ { frequencyHz: 880, startOffsetMs: 100, durationMs: 160 },
378
+ ];
379
+ exports.READY_CHIME_GAIN = 0.12;
380
+ /**
381
+ * After the selfie manual-fallback timer expires onto a hard-block reason,
382
+ * the shutter holds through ONE bounded extension of this length, then
383
+ * unlocks permanently. Mirrors web selfie-detection semantics.
384
+ */
385
+ exports.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS = 8000;
386
+ //# sourceMappingURL=capture-guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-guidance.js","sourceRoot":"","sources":["../../src/capture-guidance.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,9 @@ export type { MrzDocumentFormat, MrzCheckDigitField, MrzCheckDigitResult, MrzVal
34
34
  export { getMrzCharacterValue, computeMrzCheckDigit, normalizeMrzLines, parseMrzText, validateMrzCheckDigits, } from './mrz-check-digits.js';
35
35
  export type { DocumentMrzPolicy, DocumentMrzPolicyInput, MrzExpectation, MrzPlacement, } from './mrz-policy.js';
36
36
  export { resolveDocumentMrzPolicy } from './mrz-policy.js';
37
+ export type { CaptureGuidanceState, CaptureGuidanceAction, CaptureGuidancePersona, CaptureGuidanceReasonCode, ResolvedCaptureGuidanceReasonCode, CaptureGuidanceSignalEntry, PresentedCaptureGuidanceSignal, CaptureGuidanceDampingProfile, CaptureSignalKind, } from './capture-guidance.js';
38
+ export { CAPTURE_GUIDANCE_SIGNAL_TABLE, resolveCaptureGuidanceSignal, DOCUMENT_PLACEMENT_GUIDANCE_REASON, mapSelfieIssueToGuidanceReason, CAPTURE_GUIDANCE_DAMPING_PROFILES, CAPTURE_SIGNAL_VIBRATION_PATTERNS, READY_SIGNAL_COOLDOWN_MS, CAPTURE_CONFIRMATION_HOLD_MS, READY_CHIME_NOTES, READY_CHIME_GAIN, SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS, MANUAL_CAPTURE_READY_FEEDBACK, GOOD_HOLD_STILL_FEEDBACK, TAKING_PHOTO_META, INITIAL_DOCUMENT_FEEDBACK, AUTO_CAPTURE_BURST_ABORT_FEEDBACK, getDocumentSubjectLabel, getTiltAwayFromLightGuidance, getMoveToMiddleFeedback, } from './capture-guidance.js';
39
+ export { CAPTURE_INTELLIGENCE_CORE_VERSION } from './version.js';
37
40
  export type { QualityFailureState, DocumentQualityInput, DocumentQualityResult, SelfieQualityInput, } from './quality-checks.js';
38
41
  export { getQualityBucket, getSubmitAnywayThreshold, createQualityFailureState, countFailedReview, shouldShowSubmitAnyway, hasHardBlockingQualityFailure, isRetryEscapableDocumentCornerFailure, getReviewModeFromDocumentType, runDocumentQualityChecks, runSelfieQualityChecks, checkFaceInImage, isFaceCentered, evaluateDocumentFailure, evaluateSelfieFailure, evaluateReviewFailure, getNextButtonDisabledReason, getOverrideButtonText, getOverrideBannerMessage, } from './quality-checks.js';
39
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,qCAAqC,EACrC,yBAAyB,EACzB,sCAAsC,EACtC,6BAA6B,EAC7B,mCAAmC,EACnC,sCAAsC,EACtC,uCAAuC,EACvC,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,qCAAqC,EACrC,kCAAkC,EAClC,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,6BAA6B,EAC7B,4CAA4C,EAC5C,uCAAuC,GACxC,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,mBAAmB,EACnB,+BAA+B,EAC/B,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,wCAAwC,EACxC,yBAAyB,EACzB,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,+BAA+B,EAC/B,uCAAuC,EACvC,+BAA+B,EAC/B,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,EACjC,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,8CAA8C,EAC9C,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAGjE,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -10,8 +10,8 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.analyzeImageMetadata = exports.checkDocumentLikelihood = exports.getDocumentReviewProfile = exports.getDocumentCaptureGeometryProfile = exports.getPreviousFlowStepId = exports.getNextFlowStepId = exports.resolveIssuingCountry = exports.normalizeIssuingCountry = exports.getIssuingCountryMetadata = exports.validateKycMobileWorkflowConfigContract = exports.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES = exports.KYC_MOBILE_VALID_GPS_POLICIES = exports.KYC_MOBILE_VALID_CAPTURE_MODES = exports.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES = exports.KYC_MOBILE_VALID_ADDRESS_METHODS = exports.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER = exports.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS = exports.KYC_MOBILE_KNOWN_STEP_IDS = exports.KYC_MOBILE_ADDRESS_STEP_IDS = exports.isAddressStepComplete = exports.hasStructuredAddress = exports.hasAddressProofCoordinates = exports.getEffectiveAddressMethod = exports.getAddressMethodStartBehavior = exports.getRecommendedAddressMethod = exports.sanitizeAllowedAddressMethods = exports.isAddressMethod = exports.ADDRESS_METHOD_ORDER = exports.PICO_ANALYSIS_H = exports.PICO_ANALYSIS_W = exports.ADDRESS_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.SELFIE_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_GALLERY_FAILURE_THRESHOLD = exports.CAPTURE_DOCUMENT_EDGE_READY_MULTIPLIER = exports.CAPTURE_DOCUMENT_AREA_MIN = exports.CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = exports.CAPTURE_DOCUMENT_SHARPNESS_MIN = exports.CAM_DOC_CENTER_OFFSET_MAX = exports.CAM_EDGE_COVERAGE_THRESHOLD = exports.CAM_EDGE_PIXEL_THRESHOLD = exports.CAM_FRAME_DIFF_THRESHOLD = exports.CAM_STABLE_FRAMES_NEEDED = exports.CAM_EDGE_THRESHOLD = exports.CAM_BLUR_THRESHOLD = exports.CAM_BRIGHTNESS_MAX = exports.CAM_BRIGHTNESS_MIN = exports.CAM_ANALYSIS_H = exports.CAM_ANALYSIS_W = exports.CamState = void 0;
13
- exports.runSelfieQualityChecks = exports.runDocumentQualityChecks = exports.getReviewModeFromDocumentType = exports.isRetryEscapableDocumentCornerFailure = exports.hasHardBlockingQualityFailure = exports.shouldShowSubmitAnyway = exports.countFailedReview = exports.createQualityFailureState = exports.getSubmitAnywayThreshold = exports.getQualityBucket = exports.resolveDocumentMrzPolicy = exports.validateMrzCheckDigits = exports.parseMrzText = exports.normalizeMrzLines = exports.computeMrzCheckDigit = exports.getMrzCharacterValue = exports.MRZ_DENSITY_SCORE_SATURATION = exports.MRZ_SEARCH_TOP_FRAC = exports.MRZ_MAX_BAND_ASPECT = exports.MRZ_MIN_BAND_ASPECT = exports.MRZ_MIN_BAND_WIDTH_FRAC = exports.MRZ_MAX_BAND_HEIGHT = exports.MRZ_MIN_BAND_HEIGHT = exports.MRZ_ROW_DENSITY_RATIO_THRESHOLD = exports.MRZ_HORIZONTAL_GRADIENT_THRESHOLD = exports.detectPassportMrzBand = exports.looksLikeDocument = exports.analyzeFrame = exports.computeFrameDiff = exports.detectDocumentRect = exports.computeEdgeEnergy = exports.computeLaplacianVarianceFloat = exports.computeLaplacianVariance = exports.computeBrightness = exports.rgbaToGreyInPlace = exports.detectDocumentCropFromGrey = exports.computeEdgeEnergyProfile = exports.rgbaToGreyscalePico = exports.rgbaToGreyscale = exports.evaluateDocumentPlacement = exports.CAPTURE_READY_SAFE_INSET_MIN = exports.CAPTURE_READY_CENTER_MAX_BY_SHAPE = exports.CAPTURE_READY_AREA_MAX_BY_SHAPE = exports.RELAXED_CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = exports.mapPreviewRectToImageCropWithDiagnostics = void 0;
14
- exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = exports.isFaceCentered = exports.checkFaceInImage = void 0;
13
+ exports.READY_CHIME_GAIN = exports.READY_CHIME_NOTES = exports.CAPTURE_CONFIRMATION_HOLD_MS = exports.READY_SIGNAL_COOLDOWN_MS = exports.CAPTURE_SIGNAL_VIBRATION_PATTERNS = exports.CAPTURE_GUIDANCE_DAMPING_PROFILES = exports.mapSelfieIssueToGuidanceReason = exports.DOCUMENT_PLACEMENT_GUIDANCE_REASON = exports.resolveCaptureGuidanceSignal = exports.CAPTURE_GUIDANCE_SIGNAL_TABLE = exports.resolveDocumentMrzPolicy = exports.validateMrzCheckDigits = exports.parseMrzText = exports.normalizeMrzLines = exports.computeMrzCheckDigit = exports.getMrzCharacterValue = exports.MRZ_DENSITY_SCORE_SATURATION = exports.MRZ_SEARCH_TOP_FRAC = exports.MRZ_MAX_BAND_ASPECT = exports.MRZ_MIN_BAND_ASPECT = exports.MRZ_MIN_BAND_WIDTH_FRAC = exports.MRZ_MAX_BAND_HEIGHT = exports.MRZ_MIN_BAND_HEIGHT = exports.MRZ_ROW_DENSITY_RATIO_THRESHOLD = exports.MRZ_HORIZONTAL_GRADIENT_THRESHOLD = exports.detectPassportMrzBand = exports.looksLikeDocument = exports.analyzeFrame = exports.computeFrameDiff = exports.detectDocumentRect = exports.computeEdgeEnergy = exports.computeLaplacianVarianceFloat = exports.computeLaplacianVariance = exports.computeBrightness = exports.rgbaToGreyInPlace = exports.detectDocumentCropFromGrey = exports.computeEdgeEnergyProfile = exports.rgbaToGreyscalePico = exports.rgbaToGreyscale = exports.evaluateDocumentPlacement = exports.CAPTURE_READY_SAFE_INSET_MIN = exports.CAPTURE_READY_CENTER_MAX_BY_SHAPE = exports.CAPTURE_READY_AREA_MAX_BY_SHAPE = exports.RELAXED_CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = exports.mapPreviewRectToImageCropWithDiagnostics = void 0;
14
+ exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = exports.isFaceCentered = exports.checkFaceInImage = exports.runSelfieQualityChecks = exports.runDocumentQualityChecks = exports.getReviewModeFromDocumentType = exports.isRetryEscapableDocumentCornerFailure = exports.hasHardBlockingQualityFailure = exports.shouldShowSubmitAnyway = exports.countFailedReview = exports.createQualityFailureState = exports.getSubmitAnywayThreshold = exports.getQualityBucket = exports.CAPTURE_INTELLIGENCE_CORE_VERSION = exports.getMoveToMiddleFeedback = exports.getTiltAwayFromLightGuidance = exports.getDocumentSubjectLabel = exports.AUTO_CAPTURE_BURST_ABORT_FEEDBACK = exports.INITIAL_DOCUMENT_FEEDBACK = exports.TAKING_PHOTO_META = exports.GOOD_HOLD_STILL_FEEDBACK = exports.MANUAL_CAPTURE_READY_FEEDBACK = exports.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS = void 0;
15
15
  var types_js_1 = require("./types.js");
16
16
  Object.defineProperty(exports, "CamState", { enumerable: true, get: function () { return types_js_1.CamState; } });
17
17
  Object.defineProperty(exports, "CAM_ANALYSIS_W", { enumerable: true, get: function () { return types_js_1.CAM_ANALYSIS_W; } });
@@ -117,6 +117,29 @@ Object.defineProperty(exports, "parseMrzText", { enumerable: true, get: function
117
117
  Object.defineProperty(exports, "validateMrzCheckDigits", { enumerable: true, get: function () { return mrz_check_digits_js_1.validateMrzCheckDigits; } });
118
118
  var mrz_policy_js_1 = require("./mrz-policy.js");
119
119
  Object.defineProperty(exports, "resolveDocumentMrzPolicy", { enumerable: true, get: function () { return mrz_policy_js_1.resolveDocumentMrzPolicy; } });
120
+ var capture_guidance_js_1 = require("./capture-guidance.js");
121
+ Object.defineProperty(exports, "CAPTURE_GUIDANCE_SIGNAL_TABLE", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_GUIDANCE_SIGNAL_TABLE; } });
122
+ Object.defineProperty(exports, "resolveCaptureGuidanceSignal", { enumerable: true, get: function () { return capture_guidance_js_1.resolveCaptureGuidanceSignal; } });
123
+ Object.defineProperty(exports, "DOCUMENT_PLACEMENT_GUIDANCE_REASON", { enumerable: true, get: function () { return capture_guidance_js_1.DOCUMENT_PLACEMENT_GUIDANCE_REASON; } });
124
+ Object.defineProperty(exports, "mapSelfieIssueToGuidanceReason", { enumerable: true, get: function () { return capture_guidance_js_1.mapSelfieIssueToGuidanceReason; } });
125
+ Object.defineProperty(exports, "CAPTURE_GUIDANCE_DAMPING_PROFILES", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_GUIDANCE_DAMPING_PROFILES; } });
126
+ Object.defineProperty(exports, "CAPTURE_SIGNAL_VIBRATION_PATTERNS", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_SIGNAL_VIBRATION_PATTERNS; } });
127
+ Object.defineProperty(exports, "READY_SIGNAL_COOLDOWN_MS", { enumerable: true, get: function () { return capture_guidance_js_1.READY_SIGNAL_COOLDOWN_MS; } });
128
+ Object.defineProperty(exports, "CAPTURE_CONFIRMATION_HOLD_MS", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_CONFIRMATION_HOLD_MS; } });
129
+ Object.defineProperty(exports, "READY_CHIME_NOTES", { enumerable: true, get: function () { return capture_guidance_js_1.READY_CHIME_NOTES; } });
130
+ Object.defineProperty(exports, "READY_CHIME_GAIN", { enumerable: true, get: function () { return capture_guidance_js_1.READY_CHIME_GAIN; } });
131
+ Object.defineProperty(exports, "SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS", { enumerable: true, get: function () { return capture_guidance_js_1.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS; } });
132
+ Object.defineProperty(exports, "MANUAL_CAPTURE_READY_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.MANUAL_CAPTURE_READY_FEEDBACK; } });
133
+ Object.defineProperty(exports, "GOOD_HOLD_STILL_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.GOOD_HOLD_STILL_FEEDBACK; } });
134
+ Object.defineProperty(exports, "TAKING_PHOTO_META", { enumerable: true, get: function () { return capture_guidance_js_1.TAKING_PHOTO_META; } });
135
+ Object.defineProperty(exports, "INITIAL_DOCUMENT_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.INITIAL_DOCUMENT_FEEDBACK; } });
136
+ Object.defineProperty(exports, "AUTO_CAPTURE_BURST_ABORT_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.AUTO_CAPTURE_BURST_ABORT_FEEDBACK; } });
137
+ Object.defineProperty(exports, "getDocumentSubjectLabel", { enumerable: true, get: function () { return capture_guidance_js_1.getDocumentSubjectLabel; } });
138
+ Object.defineProperty(exports, "getTiltAwayFromLightGuidance", { enumerable: true, get: function () { return capture_guidance_js_1.getTiltAwayFromLightGuidance; } });
139
+ Object.defineProperty(exports, "getMoveToMiddleFeedback", { enumerable: true, get: function () { return capture_guidance_js_1.getMoveToMiddleFeedback; } });
140
+ /* -- Version beacon -------------------------------------------------------- */
141
+ var version_js_1 = require("./version.js");
142
+ Object.defineProperty(exports, "CAPTURE_INTELLIGENCE_CORE_VERSION", { enumerable: true, get: function () { return version_js_1.CAPTURE_INTELLIGENCE_CORE_VERSION; } });
120
143
  var quality_checks_js_1 = require("./quality-checks.js");
121
144
  Object.defineProperty(exports, "getQualityBucket", { enumerable: true, get: function () { return quality_checks_js_1.getQualityBucket; } });
122
145
  Object.defineProperty(exports, "getSubmitAnywayThreshold", { enumerable: true, get: function () { return quality_checks_js_1.getSubmitAnywayThreshold; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -192,10 +192,13 @@ export declare function evaluateReviewFailure(checks: QualityCheckResults, optio
192
192
  export declare function getNextButtonDisabledReason(checks: QualityCheckResults, isSelfieOrOptions: boolean | ReviewDecisionOptions, isAddressProof?: boolean): string;
193
193
  /**
194
194
  * Get the override button text for the submit-anyway flow.
195
+ *
196
+ * The 'agent' persona strings are the agent-kyc-app's shipped copy, owned
197
+ * here so client and core cannot drift.
195
198
  */
196
- export declare function getOverrideButtonText(stepSig: string): string;
199
+ export declare function getOverrideButtonText(stepSig: string, persona?: 'self' | 'agent'): string;
197
200
  /**
198
201
  * Get the override banner message based on failure count and bucket.
199
202
  */
200
- export declare function getOverrideBannerMessage(stepSig: string, failCount: number, reviewMode?: ReviewMode): string;
203
+ export declare function getOverrideBannerMessage(stepSig: string, failCount: number, reviewMode?: ReviewMode, persona?: 'self' | 'agent'): string;
201
204
  //# sourceMappingURL=quality-checks.d.ts.map