@appilots/sdk 0.2.0 → 0.4.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.
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkKGN3DNGX_js = require('./chunk-KGN3DNGX.js');
4
- var chunkIASJ7YHC_js = require('./chunk-IASJ7YHC.js');
5
- var chunkSIBKF7AA_js = require('./chunk-SIBKF7AA.js');
3
+ var chunkCHY5D2PV_js = require('./chunk-CHY5D2PV.js');
4
+ var chunkY7EA6R2G_js = require('./chunk-Y7EA6R2G.js');
5
+ var chunkV3TUIIT2_js = require('./chunk-V3TUIIT2.js');
6
6
  var React7 = require('react');
7
7
  var reactNative = require('react-native');
8
8
  var reactNativeSafeAreaContext = require('react-native-safe-area-context');
@@ -31,409 +31,16 @@ function _interopNamespace(e) {
31
31
  var React7__namespace = /*#__PURE__*/_interopNamespace(React7);
32
32
  var Svg__default = /*#__PURE__*/_interopDefault(Svg);
33
33
 
34
- // ../shared/dist/chunk-43YQ52Q7.mjs
35
- var SENSITIVE_FIELD_NAME_RE = /(\b|_|-)(password|senha|contrase[ñn]a|mot[\s_-]*de[\s_-]*passe|passwd|pwd|secret|token|api[\s_-]*key|access[\s_-]*key|private[\s_-]*key|cvv|cvc|cvn|cvc2|cid|pin(?:[\s_-]*code)?|otp|one[\s_-]*time[\s_-]*code|2fa|mfa|security[\s_-]*code|c[óo]digo[\s_-]*seguran[çc]a|c[óo]digo[\s_-]*verifica[çc][ãa]o|verification[\s_-]*code)(\b|_|-)/i;
36
- function isSensitiveFieldName(id, label, placeholder, type) {
37
- if (type === "password") return true;
38
- for (const candidate of [id, label, placeholder]) {
39
- if (typeof candidate === "string" && SENSITIVE_FIELD_NAME_RE.test(candidate)) {
40
- return true;
41
- }
42
- }
43
- return false;
44
- }
45
-
46
- // src/components/humanizeAction.ts
47
- function describeAction(action) {
48
- const state = mapStatus(action.status);
49
- const label = labelFor(action, state);
50
- return { label, state };
51
- }
52
- function mapStatus(status) {
53
- switch (status) {
54
- case "pending":
55
- return "pending";
56
- case "executing":
57
- return "running";
58
- case "completed":
59
- return "success";
60
- case "failed":
61
- return "failed";
62
- default:
63
- return "pending";
64
- }
65
- }
66
- function labelFor(action, state) {
67
- if (state === "failed") {
68
- return failureLabel(action);
69
- }
70
- switch (action.type) {
71
- case "navigate":
72
- return navigateLabel(action, state);
73
- case "form_fill":
74
- return formFillLabel(action, state);
75
- case "ui_interaction":
76
- return uiInteractionLabel(action, state);
77
- case "scroll_list":
78
- return scrollListLabel(action, state);
79
- case "confirm":
80
- return confirmLabel(state);
81
- default:
82
- return genericLabel(action.type, state);
83
- }
84
- }
85
- function navigateLabel(action, state) {
86
- const screen = readString(action.payload, "screenName") || "a outra tela";
87
- switch (state) {
88
- case "pending":
89
- return `Vou navegar para ${screen}`;
90
- case "running":
91
- return `Navegando para ${screen}...`;
92
- case "success":
93
- return `Naveguei para ${screen}`;
94
- default:
95
- return `Navega\xE7\xE3o para ${screen}`;
96
- }
97
- }
98
- function formFillLabel(action, state) {
99
- const fields = readArray(action.payload, "fields");
100
- const summary = summariseFields(fields);
101
- switch (state) {
102
- case "pending":
103
- return summary ? `Vou preencher ${summary}` : "Vou preencher o formul\xE1rio";
104
- case "running":
105
- return summary ? `Preenchendo ${summary}...` : "Preenchendo formul\xE1rio...";
106
- case "success":
107
- return summary ? `Preenchi ${summary}` : "Preenchi o formul\xE1rio";
108
- default:
109
- return "Preenchimento do formul\xE1rio";
110
- }
111
- }
112
- function uiInteractionLabel(action, state) {
113
- const verbBase = uiVerb(readString(action.payload, "action"));
114
- const target = humanActionTarget(action.payload);
115
- const where = target ? ` em ${target}` : "";
116
- switch (state) {
117
- case "pending":
118
- return `Vou ${verbBase.infinitive}${where}`;
119
- case "running":
120
- return `${verbBase.gerund}${where}...`;
121
- case "success":
122
- return `${verbBase.past}${where}`;
123
- default:
124
- return `Intera\xE7\xE3o${where}`;
125
- }
126
- }
127
- function scrollListLabel(action, state) {
128
- const payload = action.payload;
129
- const toIndex = typeof payload?.toIndex === "number" ? payload.toIndex : void 0;
130
- const direction = payload?.direction === "up" ? "para cima" : "para baixo";
131
- const target = toIndex !== void 0 ? `at\xE9 o item ${toIndex}` : direction;
132
- switch (state) {
133
- case "pending":
134
- return `Vou rolar a lista ${target}`;
135
- case "running":
136
- return `Rolando a lista ${target}...`;
137
- case "success":
138
- return `Rolei a lista ${target}`;
139
- default:
140
- return "Rolagem da lista";
141
- }
142
- }
143
- function confirmLabel(state) {
144
- switch (state) {
145
- case "pending":
146
- case "running":
147
- return "Aguardando confirma\xE7\xE3o";
148
- case "success":
149
- return "Voc\xEA confirmou";
150
- case "failed":
151
- return "Confirma\xE7\xE3o cancelada";
152
- default:
153
- return "Confirma\xE7\xE3o";
154
- }
155
- }
156
- function genericLabel(type, state) {
157
- switch (state) {
158
- case "pending":
159
- return `Vou executar ${type}`;
160
- case "running":
161
- return `Executando ${type}...`;
162
- case "success":
163
- return `Executei ${type}`;
164
- default:
165
- return type;
166
- }
167
- }
168
- function failureLabel(action) {
169
- const cause = humanizeError(action.error);
170
- const head = failureHead(action);
171
- return cause ? `${head} (${cause})` : head;
172
- }
173
- function failureHead(action) {
174
- switch (action.type) {
175
- case "navigate": {
176
- const screen = readString(action.payload, "screenName") || "a tela";
177
- return `N\xE3o consegui navegar para ${screen}`;
178
- }
179
- case "form_fill":
180
- return "N\xE3o consegui preencher o formul\xE1rio";
181
- case "ui_interaction": {
182
- const verb = uiVerb(readString(action.payload, "action"));
183
- const target = humanComponentId(
184
- readString(action.payload, "componentId") || readString(action.payload, "targetId")
185
- );
186
- return target ? `N\xE3o consegui ${verb.infinitive} em ${target}` : `N\xE3o consegui ${verb.infinitive}`;
187
- }
188
- case "scroll_list":
189
- return "N\xE3o consegui rolar a lista";
190
- case "confirm":
191
- return "Voc\xEA cancelou";
192
- default:
193
- return `N\xE3o consegui executar ${action.type}`;
194
- }
195
- }
196
- var TECHNICAL_PATTERNS = [
197
- /\bat\s+\S+\s*\(/,
198
- // stack trace frame
199
- /TypeError|ReferenceError|SyntaxError|RangeError/i,
200
- /HTTP\s*[45]\d{2}/i,
201
- /^\s*\{[\s\S]*\}\s*$/,
202
- // JSON dump
203
- /undefined is not a function/i,
204
- /Cannot read propert/i
205
- ];
206
- var FRIENDLY_REWRITES = [
207
- [/rejected by user/i, "cancelado pelo usu\xE1rio"],
208
- [/component '([^']+)' not found/i, "componente $1 n\xE3o encontrado"],
209
- [/field '([^']+)' not found/i, "campo $1 n\xE3o encontrado"],
210
- [/screen '([^']+)' not registered/i, "tela $1 n\xE3o registrada"],
211
- [/permission denied/i, "sem permiss\xE3o"],
212
- [/timeout|timed out/i, "tempo esgotado"],
213
- [/network/i, "falha de rede"]
214
- ];
215
- var MAX_REASON_LEN = 80;
216
- function humanizeError(raw, _action) {
217
- if (!raw) return void 0;
218
- const trimmed = String(raw).trim();
219
- if (!trimmed) return void 0;
220
- for (const [pattern, replacement] of FRIENDLY_REWRITES) {
221
- if (pattern.test(trimmed)) {
222
- return finalize(trimmed.replace(pattern, replacement));
223
- }
224
- }
225
- if (TECHNICAL_PATTERNS.some((p) => p.test(trimmed))) {
226
- return "algo deu errado";
227
- }
228
- if (trimmed.length > MAX_REASON_LEN) {
229
- return "algo deu errado";
230
- }
231
- return finalize(trimmed);
232
- }
233
- function finalize(text) {
234
- let out = text.trim();
235
- if (out.length > MAX_REASON_LEN) out = out.slice(0, MAX_REASON_LEN - 1).trimEnd() + "\u2026";
236
- if (out.length > 0) out = out[0].toLowerCase() + out.slice(1);
237
- return out;
238
- }
239
- function uiVerb(raw) {
240
- switch ((raw ?? "press").toLowerCase()) {
241
- case "press":
242
- case "tap":
243
- case "click":
244
- return { infinitive: "clicar", gerund: "Clicando", past: "Cliquei" };
245
- case "longpress":
246
- case "long_press":
247
- return { infinitive: "pressionar", gerund: "Pressionando", past: "Pressionei" };
248
- case "scroll":
249
- case "scroll_to":
250
- return { infinitive: "rolar", gerund: "Rolando", past: "Rolei" };
251
- case "focus":
252
- return { infinitive: "focar", gerund: "Focando", past: "Foquei" };
253
- default:
254
- return { infinitive: "interagir", gerund: "Interagindo", past: "Interagi" };
255
- }
256
- }
257
- function summariseFields(fields) {
258
- if (!Array.isArray(fields) || fields.length === 0) return void 0;
259
- const parts = [];
260
- const visible = fields.slice(0, 3);
261
- for (const f of visible) {
262
- if (!f || typeof f !== "object") continue;
263
- const obj = f;
264
- const name = humanFieldName(obj.label, obj.fieldId);
265
- if (!name) continue;
266
- const fieldIdStr = typeof obj.fieldId === "string" ? obj.fieldId : void 0;
267
- const labelStr = typeof obj.label === "string" ? obj.label : void 0;
268
- const fieldTypeStr = typeof obj.fieldType === "string" ? obj.fieldType : void 0;
269
- const sensitive = isSensitiveFieldName(fieldIdStr, labelStr, void 0, fieldTypeStr);
270
- if (sensitive) {
271
- parts.push(`${name}=\u2022\u2022\u2022\u2022`);
272
- continue;
273
- }
274
- const value = formatFieldValue(obj.value);
275
- parts.push(value !== void 0 ? `${name}=${value}` : name);
276
- }
277
- if (parts.length === 0) return void 0;
278
- const extra = fields.length - parts.length;
279
- return extra > 0 ? `${parts.join(", ")} +${extra}` : parts.join(", ");
280
- }
281
- function formatFieldValue(value) {
282
- if (value === void 0 || value === null || value === "") return void 0;
283
- if (typeof value === "string") {
284
- const v = value.length > 18 ? `${value.slice(0, 17)}\u2026` : value;
285
- return `"${v}"`;
286
- }
287
- if (typeof value === "number" || typeof value === "boolean") return String(value);
288
- return void 0;
289
- }
290
- function humanActionTarget(payload) {
291
- if (!payload || typeof payload !== "object") return "";
292
- const record = payload;
293
- const friendly = readFriendlyString(record, "label") || readFriendlyString(record, "actionDescription") || readFriendlyString(record, "title") || readFriendlyString(record, "name");
294
- if (friendly) return friendly;
295
- return humanComponentId(
296
- readString(payload, "componentId") || readString(payload, "targetId")
297
- );
298
- }
299
- function humanFieldName(label, fieldId) {
300
- if (typeof label === "string" && label.trim()) return label.trim();
301
- if (typeof fieldId !== "string" || isTechnicalIdentifier(fieldId)) return void 0;
302
- return humanComponentId(fieldId) || void 0;
303
- }
304
- function readFriendlyString(record, key) {
305
- const value = record[key];
306
- if (typeof value !== "string") return "";
307
- const trimmed = value.trim();
308
- if (!trimmed || isTechnicalIdentifier(trimmed)) return "";
309
- return trimmed;
310
- }
311
- function humanComponentId(id) {
312
- if (!id) return "";
313
- if (isTechnicalIdentifier(id)) return "";
314
- const cleaned = id.replace(/^(btn-|btn_|button-|component-)/i, "").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[-_]+/g, " ").trim();
315
- if (!cleaned) return "";
316
- return cleaned[0].toUpperCase() + cleaned.slice(1);
317
- }
318
- function isTechnicalIdentifier(value) {
319
- const raw = value.trim();
320
- if (!raw) return false;
321
- if (/^el:/i.test(raw)) return true;
322
- if (/^list-\d+-item-\d+$/i.test(raw)) return true;
323
- if (/(testid|test-id|accessibilityid|accessibility-id|automationid|automation-id)/i.test(raw)) {
324
- return true;
325
- }
326
- if (/^[a-z]+:[^ ]+:[^ ]+/i.test(raw)) return true;
327
- if (/^[A-Za-z][\w-]*:[^\s]+$/i.test(raw)) return true;
328
- if (/^[a-z]+(?:[-_][a-z]+)*[-_][a-z0-9]{5,}$/i.test(raw)) return true;
329
- return false;
330
- }
331
- function readString(payload, key) {
332
- if (!payload || typeof payload !== "object") return "";
333
- const v = payload[key];
334
- return typeof v === "string" ? v : "";
335
- }
336
- function readArray(payload, key) {
337
- if (!payload || typeof payload !== "object") return [];
338
- const v = payload[key];
339
- return Array.isArray(v) ? v : [];
340
- }
341
-
342
- // src/theme/tokens.ts
343
- var defaultLightTheme = {
344
- colors: {
345
- primary: "#6366f1",
346
- secondary: "#8b5cf6",
347
- background: "#ffffff",
348
- surface: "#f3f4f6",
349
- text: "#1f2937",
350
- textSecondary: "#6b7280",
351
- border: "#e5e7eb",
352
- // NOTE (BACKLOG 4.2): success/warning/error used to have ZERO visual
353
- // consumers — nothing read them, so ActionBreadcrumb's tones and the
354
- // confirm card's destructive accents were hardcoded separately with
355
- // their OWN hex values (#10B981/#EF4444/#9CA3AF-ish grays). Since no
356
- // other UI in the SDK reads these three tokens, we picked these
357
- // defaults to exactly match those pre-existing hardcoded values —
358
- // wiring the tokens up to ActionBreadcrumb (see breadcrumbPresentation.ts)
359
- // is now a no-op for anyone on the bundled default theme, while a
360
- // custom theme's success/warning/error now actually do something.
361
- success: "#10b981",
362
- warning: "#9ca3af",
363
- error: "#ef4444",
364
- // Same value as `text` — split out so an app can diverge them, but
365
- // any app that doesn't set these renders pixel-identical to before.
366
- buttonText: "#1f2937",
367
- bubbleText: "#1f2937",
368
- userBubbleText: "#ffffff"
369
- },
370
- typography: {
371
- fontFamily: "System",
372
- fontSizeXs: 11,
373
- fontSizeSm: 13,
374
- fontSizeBase: 15,
375
- fontSizeLg: 18
376
- },
377
- radii: {
378
- sm: 8,
379
- md: 12,
380
- lg: 16
381
- },
382
- shadows: {
383
- appearance: "light"
384
- }
385
- };
386
- var defaultDarkTheme = {
387
- colors: {
388
- primary: "#818cf8",
389
- secondary: "#a78bfa",
390
- background: "#0f172a",
391
- surface: "#1e293b",
392
- text: "#f1f5f9",
393
- textSecondary: "#94a3b8",
394
- border: "#334155",
395
- // Kept IDENTICAL to the light theme's success/warning/error (not the
396
- // usual "lighter for dark bg" adjustment other tokens get) — the
397
- // breadcrumb's tones were a fixed, theme-agnostic hardcoded palette
398
- // before this token existed, rendering the SAME hex in light and dark
399
- // mode. Diverging them here would change dark-mode breadcrumbs even
400
- // though nothing in the token tree asked for that.
401
- success: "#10b981",
402
- warning: "#9ca3af",
403
- error: "#ef4444",
404
- buttonText: "#f1f5f9",
405
- bubbleText: "#f1f5f9",
406
- userBubbleText: "#ffffff"
407
- },
408
- typography: { ...defaultLightTheme.typography },
409
- radii: { ...defaultLightTheme.radii },
410
- shadows: { appearance: "dark" }
411
- };
412
- function mergeThemeTokens(base, partial) {
413
- if (!partial) return base;
414
- return {
415
- colors: { ...base.colors, ...partial.colors ?? {} },
416
- typography: { ...base.typography, ...partial.typography ?? {} },
417
- radii: { ...base.radii, ...partial.radii ?? {} },
418
- shadows: { ...base.shadows, ...partial.shadows ?? {} }
419
- };
420
- }
421
- function resolveBaseTheme(mode, systemScheme) {
422
- if (mode === "dark") return defaultDarkTheme;
423
- if (mode === "light") return defaultLightTheme;
424
- return systemScheme === "dark" ? defaultDarkTheme : defaultLightTheme;
425
- }
426
-
427
34
  // src/components/breadcrumbPresentation.ts
428
35
  var DEFAULT_BREADCRUMB_PALETTE = {
429
- primary: defaultLightTheme.colors.primary,
430
- text: defaultLightTheme.colors.text,
431
- textSecondary: defaultLightTheme.colors.textSecondary,
432
- surface: defaultLightTheme.colors.surface,
433
- border: defaultLightTheme.colors.border,
434
- success: defaultLightTheme.colors.success,
435
- warning: defaultLightTheme.colors.warning,
436
- error: defaultLightTheme.colors.error
36
+ primary: chunkV3TUIIT2_js.defaultLightTheme.colors.primary,
37
+ text: chunkV3TUIIT2_js.defaultLightTheme.colors.text,
38
+ textSecondary: chunkV3TUIIT2_js.defaultLightTheme.colors.textSecondary,
39
+ surface: chunkV3TUIIT2_js.defaultLightTheme.colors.surface,
40
+ border: chunkV3TUIIT2_js.defaultLightTheme.colors.border,
41
+ success: chunkV3TUIIT2_js.defaultLightTheme.colors.success,
42
+ warning: chunkV3TUIIT2_js.defaultLightTheme.colors.warning,
43
+ error: chunkV3TUIIT2_js.defaultLightTheme.colors.error
437
44
  };
438
45
  var KNOWN_TINTS = {
439
46
  [DEFAULT_BREADCRUMB_PALETTE.primary.toUpperCase()]: "#EEF2FF",
@@ -478,13 +85,13 @@ function deriveConfirmCardContent(action, palette = DEFAULT_BREADCRUMB_PALETTE)
478
85
  const isDestructive = isDestructiveAction(action);
479
86
  const message = typeof payload.message === "string" && payload.message || typeof payload.actionDescription === "string" && payload.actionDescription || "Confirme para prosseguir";
480
87
  const title = typeof payload.title === "string" && payload.title || (isDestructive ? "A\xE7\xE3o destrutiva" : "Confirma\xE7\xE3o necess\xE1ria");
481
- const confirmLabel2 = typeof payload.confirmLabel === "string" && payload.confirmLabel || (isDestructive ? "Sim, executar" : "Confirmar");
88
+ const confirmLabel = typeof payload.confirmLabel === "string" && payload.confirmLabel || (isDestructive ? "Sim, executar" : "Confirmar");
482
89
  const cancelLabel = typeof payload.cancelLabel === "string" && payload.cancelLabel || "Cancelar";
483
90
  return {
484
91
  isDestructive,
485
92
  title,
486
93
  message,
487
- confirmLabel: confirmLabel2,
94
+ confirmLabel,
488
95
  cancelLabel,
489
96
  glyph: isDestructive ? "\u26A0" : "?",
490
97
  actionColor: isDestructive ? palette.error : palette.primary,
@@ -555,7 +162,7 @@ function RegularBreadcrumbRow({
555
162
  onApprove,
556
163
  onReject
557
164
  }) {
558
- const { label, state } = describeAction(action);
165
+ const { label, state } = chunkV3TUIIT2_js.describeAction(action);
559
166
  const tone = deriveStateTone(palette)[state];
560
167
  const fade = React7.useRef(new reactNative.Animated.Value(0)).current;
561
168
  const pulse = React7.useRef(new reactNative.Animated.Value(1)).current;
@@ -617,7 +224,7 @@ function ConfirmCard({ action, palette, fontFamily, onApprove, onReject }) {
617
224
  isDestructive,
618
225
  title,
619
226
  message,
620
- confirmLabel: confirmLabel2,
227
+ confirmLabel,
621
228
  cancelLabel,
622
229
  glyph,
623
230
  actionColor,
@@ -670,7 +277,7 @@ function ConfirmCard({ action, palette, fontFamily, onApprove, onReject }) {
670
277
  accessibilityLabel: "Confirmar",
671
278
  testID: "assistant-confirm-approve"
672
279
  },
673
- /* @__PURE__ */ React7__namespace.default.createElement(reactNative.Text, { style: [confirmCardStyles.confirmText, { fontFamily }] }, confirmLabel2)
280
+ /* @__PURE__ */ React7__namespace.default.createElement(reactNative.Text, { style: [confirmCardStyles.confirmText, { fontFamily }] }, confirmLabel)
674
281
  ))
675
282
  );
676
283
  }
@@ -1255,7 +862,7 @@ var styles2 = reactNative.StyleSheet.create({
1255
862
  textDecorationLine: "underline"
1256
863
  }
1257
864
  });
1258
- var ThemeContext = React7.createContext(defaultLightTheme);
865
+ var ThemeContext = React7.createContext(chunkV3TUIIT2_js.defaultLightTheme);
1259
866
  function AppilotsThemeProvider({
1260
867
  theme,
1261
868
  mode = "auto",
@@ -1263,7 +870,7 @@ function AppilotsThemeProvider({
1263
870
  }) {
1264
871
  const systemScheme = reactNative.useColorScheme();
1265
872
  const tokens = React7.useMemo(
1266
- () => mergeThemeTokens(resolveBaseTheme(mode, systemScheme), theme ?? void 0),
873
+ () => chunkV3TUIIT2_js.mergeThemeTokens(chunkV3TUIIT2_js.resolveBaseTheme(mode, systemScheme), theme ?? void 0),
1267
874
  [mode, systemScheme, theme]
1268
875
  );
1269
876
  return /* @__PURE__ */ React7__namespace.default.createElement(ThemeContext.Provider, { value: tokens }, children);
@@ -1544,7 +1151,7 @@ var APPILOTS_SKIP_PROPS = {
1544
1151
  __appilotsInternal: true
1545
1152
  };
1546
1153
  function AppilotsChat(props) {
1547
- const { remotePersonalization } = chunkSIBKF7AA_js.useAppilotsContext();
1154
+ const { remotePersonalization } = chunkV3TUIIT2_js.useAppilotsContext();
1548
1155
  const themeProp = React7.useMemo(() => {
1549
1156
  if (!props.theme) return void 0;
1550
1157
  return isLegacyTheme(props.theme) ? translateLegacyTheme(props.theme) : props.theme;
@@ -1587,7 +1194,7 @@ function AppilotsChatInner({
1587
1194
  clearMessages,
1588
1195
  escalation,
1589
1196
  requestHuman
1590
- } = chunkIASJ7YHC_js.useAppilotsChat({
1197
+ } = chunkY7EA6R2G_js.useAppilotsChat({
1591
1198
  errorPrefix: t("somethingWentWrong"),
1592
1199
  escalationStrings: {
1593
1200
  requested: t("escalationRequested"),
@@ -1602,8 +1209,8 @@ function AppilotsChatInner({
1602
1209
  completedActions,
1603
1210
  approveAction,
1604
1211
  rejectAction
1605
- } = chunkIASJ7YHC_js.useAppilotsActions({ autoExecute });
1606
- const { emit, remotePersonalization } = chunkSIBKF7AA_js.useAppilotsContext();
1212
+ } = chunkY7EA6R2G_js.useAppilotsActions({ autoExecute });
1213
+ const { emit, remotePersonalization } = chunkV3TUIIT2_js.useAppilotsContext();
1607
1214
  const {
1608
1215
  headerTitle: resolvedTitle,
1609
1216
  assistantAvatar,
@@ -1639,12 +1246,12 @@ function AppilotsChatInner({
1639
1246
  const flatListRef = React7.useRef(null);
1640
1247
  const slideAnim = React7.useRef(new reactNative.Animated.Value(SCREEN_HEIGHT)).current;
1641
1248
  const isVisible = mode === "inline" ? true : controlledVisible !== void 0 ? controlledVisible : internalVisible;
1642
- const showSuggestedPrompts = chunkIASJ7YHC_js.shouldShowSuggestedPrompts({
1249
+ const showSuggestedPrompts = chunkY7EA6R2G_js.shouldShowSuggestedPrompts({
1643
1250
  isVisible,
1644
1251
  messageCount: messages.length,
1645
1252
  inputText
1646
1253
  });
1647
- const { prompts: suggestedPrompts } = chunkIASJ7YHC_js.useSuggestedPrompts({
1254
+ const { prompts: suggestedPrompts } = chunkY7EA6R2G_js.useSuggestedPrompts({
1648
1255
  enabled: showSuggestedPrompts,
1649
1256
  limit: 3
1650
1257
  });
@@ -2560,9 +2167,9 @@ function createAppilotsInput(WrappedComponent) {
2560
2167
  label: label ?? fieldId,
2561
2168
  screen: appilotsScreen
2562
2169
  };
2563
- chunkSIBKF7AA_js.componentRegistry.register(fieldId, entry);
2170
+ chunkV3TUIIT2_js.componentRegistry.register(fieldId, entry);
2564
2171
  return () => {
2565
- chunkSIBKF7AA_js.componentRegistry.unregister(fieldId);
2172
+ chunkV3TUIIT2_js.componentRegistry.unregister(fieldId);
2566
2173
  };
2567
2174
  }, [fieldId, appilotsEnabled, getValue, setValue, focus, appilotsFieldType, label, appilotsScreen]);
2568
2175
  const mergedRef = React7.useCallback(
@@ -2611,9 +2218,9 @@ function createAppilotsButton(WrappedComponent) {
2611
2218
  label: title ?? targetId,
2612
2219
  screen: appilotsScreen
2613
2220
  };
2614
- chunkSIBKF7AA_js.componentRegistry.register(targetId, entry);
2221
+ chunkV3TUIIT2_js.componentRegistry.register(targetId, entry);
2615
2222
  return () => {
2616
- chunkSIBKF7AA_js.componentRegistry.unregister(targetId);
2223
+ chunkV3TUIIT2_js.componentRegistry.unregister(targetId);
2617
2224
  };
2618
2225
  }, [targetId, appilotsEnabled, press, title, appilotsScreen]);
2619
2226
  return /* @__PURE__ */ React7__namespace.default.createElement(
@@ -2659,9 +2266,9 @@ function createAppilotsSwitch(WrappedComponent) {
2659
2266
  label: label ?? toggleId,
2660
2267
  screen: appilotsScreen
2661
2268
  };
2662
- chunkSIBKF7AA_js.componentRegistry.register(toggleId, entry);
2269
+ chunkV3TUIIT2_js.componentRegistry.register(toggleId, entry);
2663
2270
  return () => {
2664
- chunkSIBKF7AA_js.componentRegistry.unregister(toggleId);
2271
+ chunkV3TUIIT2_js.componentRegistry.unregister(toggleId);
2665
2272
  };
2666
2273
  }, [toggleId, appilotsEnabled, getValue, setValue, label, appilotsScreen]);
2667
2274
  return /* @__PURE__ */ React7__namespace.default.createElement(
@@ -2679,139 +2286,159 @@ function createAppilotsSwitch(WrappedComponent) {
2679
2286
 
2680
2287
  Object.defineProperty(exports, "AppilotsNavigationContainer", {
2681
2288
  enumerable: true,
2682
- get: function () { return chunkKGN3DNGX_js.AppilotsNavigationContainer; }
2289
+ get: function () { return chunkCHY5D2PV_js.AppilotsNavigationContainer; }
2683
2290
  });
2684
2291
  Object.defineProperty(exports, "captureSnapshot", {
2685
2292
  enumerable: true,
2686
- get: function () { return chunkIASJ7YHC_js.captureSnapshot; }
2293
+ get: function () { return chunkY7EA6R2G_js.captureSnapshot; }
2687
2294
  });
2688
2295
  Object.defineProperty(exports, "executeAction", {
2689
2296
  enumerable: true,
2690
- get: function () { return chunkIASJ7YHC_js.executeAction; }
2297
+ get: function () { return chunkY7EA6R2G_js.executeAction; }
2691
2298
  });
2692
2299
  Object.defineProperty(exports, "useAppilots", {
2693
2300
  enumerable: true,
2694
- get: function () { return chunkIASJ7YHC_js.useAppilots; }
2301
+ get: function () { return chunkY7EA6R2G_js.useAppilots; }
2695
2302
  });
2696
2303
  Object.defineProperty(exports, "useAppilotsActions", {
2697
2304
  enumerable: true,
2698
- get: function () { return chunkIASJ7YHC_js.useAppilotsActions; }
2305
+ get: function () { return chunkY7EA6R2G_js.useAppilotsActions; }
2699
2306
  });
2700
2307
  Object.defineProperty(exports, "useAppilotsChat", {
2701
2308
  enumerable: true,
2702
- get: function () { return chunkIASJ7YHC_js.useAppilotsChat; }
2309
+ get: function () { return chunkY7EA6R2G_js.useAppilotsChat; }
2703
2310
  });
2704
2311
  Object.defineProperty(exports, "useAppilotsField", {
2705
2312
  enumerable: true,
2706
- get: function () { return chunkIASJ7YHC_js.useAppilotsField; }
2313
+ get: function () { return chunkY7EA6R2G_js.useAppilotsField; }
2707
2314
  });
2708
2315
  Object.defineProperty(exports, "useAppilotsNavigation", {
2709
2316
  enumerable: true,
2710
- get: function () { return chunkIASJ7YHC_js.useAppilotsNavigation; }
2317
+ get: function () { return chunkY7EA6R2G_js.useAppilotsNavigation; }
2711
2318
  });
2712
2319
  Object.defineProperty(exports, "useAppilotsSlider", {
2713
2320
  enumerable: true,
2714
- get: function () { return chunkIASJ7YHC_js.useAppilotsSlider; }
2321
+ get: function () { return chunkY7EA6R2G_js.useAppilotsSlider; }
2715
2322
  });
2716
2323
  Object.defineProperty(exports, "useAppilotsTarget", {
2717
2324
  enumerable: true,
2718
- get: function () { return chunkIASJ7YHC_js.useAppilotsTarget; }
2325
+ get: function () { return chunkY7EA6R2G_js.useAppilotsTarget; }
2719
2326
  });
2720
2327
  Object.defineProperty(exports, "useAppilotsToggle", {
2721
2328
  enumerable: true,
2722
- get: function () { return chunkIASJ7YHC_js.useAppilotsToggle; }
2329
+ get: function () { return chunkY7EA6R2G_js.useAppilotsToggle; }
2723
2330
  });
2724
2331
  Object.defineProperty(exports, "useSuggestedPrompts", {
2725
2332
  enumerable: true,
2726
- get: function () { return chunkIASJ7YHC_js.useSuggestedPrompts; }
2333
+ get: function () { return chunkY7EA6R2G_js.useSuggestedPrompts; }
2727
2334
  });
2728
2335
  Object.defineProperty(exports, "AppilotsClient", {
2729
2336
  enumerable: true,
2730
- get: function () { return chunkSIBKF7AA_js.AppilotsClient; }
2337
+ get: function () { return chunkV3TUIIT2_js.AppilotsClient; }
2731
2338
  });
2732
2339
  Object.defineProperty(exports, "AppilotsProvider", {
2733
2340
  enumerable: true,
2734
- get: function () { return chunkSIBKF7AA_js.AppilotsProvider; }
2341
+ get: function () { return chunkV3TUIIT2_js.AppilotsProvider; }
2735
2342
  });
2736
2343
  Object.defineProperty(exports, "AppilotsRegistryProvider", {
2737
2344
  enumerable: true,
2738
- get: function () { return chunkSIBKF7AA_js.AppilotsRegistryProvider; }
2345
+ get: function () { return chunkV3TUIIT2_js.AppilotsRegistryProvider; }
2739
2346
  });
2740
2347
  Object.defineProperty(exports, "SDK_VERSION", {
2741
2348
  enumerable: true,
2742
- get: function () { return chunkSIBKF7AA_js.SDK_VERSION; }
2349
+ get: function () { return chunkV3TUIIT2_js.SDK_VERSION; }
2743
2350
  });
2744
2351
  Object.defineProperty(exports, "_patchJsxRuntimes", {
2745
2352
  enumerable: true,
2746
- get: function () { return chunkSIBKF7AA_js._patchJsxRuntimes; }
2353
+ get: function () { return chunkV3TUIIT2_js._patchJsxRuntimes; }
2747
2354
  });
2748
2355
  Object.defineProperty(exports, "clearAppilotsDebugTraces", {
2749
2356
  enumerable: true,
2750
- get: function () { return chunkSIBKF7AA_js.clearAppilotsDebugTraces; }
2357
+ get: function () { return chunkV3TUIIT2_js.clearAppilotsDebugTraces; }
2751
2358
  });
2752
2359
  Object.defineProperty(exports, "componentRegistry", {
2753
2360
  enumerable: true,
2754
- get: function () { return chunkSIBKF7AA_js.componentRegistry; }
2361
+ get: function () { return chunkV3TUIIT2_js.componentRegistry; }
2755
2362
  });
2756
2363
  Object.defineProperty(exports, "createComponentRegistry", {
2757
2364
  enumerable: true,
2758
- get: function () { return chunkSIBKF7AA_js.createComponentRegistry; }
2365
+ get: function () { return chunkV3TUIIT2_js.createComponentRegistry; }
2759
2366
  });
2760
2367
  Object.defineProperty(exports, "createElementRegistry", {
2761
2368
  enumerable: true,
2762
- get: function () { return chunkSIBKF7AA_js.createElementRegistry; }
2369
+ get: function () { return chunkV3TUIIT2_js.createElementRegistry; }
2763
2370
  });
2764
2371
  Object.defineProperty(exports, "createListRegistry", {
2765
2372
  enumerable: true,
2766
- get: function () { return chunkSIBKF7AA_js.createListRegistry; }
2373
+ get: function () { return chunkV3TUIIT2_js.createListRegistry; }
2374
+ });
2375
+ Object.defineProperty(exports, "defaultDarkTheme", {
2376
+ enumerable: true,
2377
+ get: function () { return chunkV3TUIIT2_js.defaultDarkTheme; }
2378
+ });
2379
+ Object.defineProperty(exports, "defaultLightTheme", {
2380
+ enumerable: true,
2381
+ get: function () { return chunkV3TUIIT2_js.defaultLightTheme; }
2382
+ });
2383
+ Object.defineProperty(exports, "describeAction", {
2384
+ enumerable: true,
2385
+ get: function () { return chunkV3TUIIT2_js.describeAction; }
2767
2386
  });
2768
2387
  Object.defineProperty(exports, "elementRegistry", {
2769
2388
  enumerable: true,
2770
- get: function () { return chunkSIBKF7AA_js.elementRegistry; }
2389
+ get: function () { return chunkV3TUIIT2_js.elementRegistry; }
2771
2390
  });
2772
2391
  Object.defineProperty(exports, "enableAppilotsAutoTracking", {
2773
2392
  enumerable: true,
2774
- get: function () { return chunkSIBKF7AA_js.enableAppilotsAutoTracking; }
2393
+ get: function () { return chunkV3TUIIT2_js.enableAppilotsAutoTracking; }
2775
2394
  });
2776
2395
  Object.defineProperty(exports, "getAppilotsDebugTraces", {
2777
2396
  enumerable: true,
2778
- get: function () { return chunkSIBKF7AA_js.getAppilotsDebugTraces; }
2397
+ get: function () { return chunkV3TUIIT2_js.getAppilotsDebugTraces; }
2779
2398
  });
2780
2399
  Object.defineProperty(exports, "getGlobalConfig", {
2781
2400
  enumerable: true,
2782
- get: function () { return chunkSIBKF7AA_js.getGlobalConfig; }
2401
+ get: function () { return chunkV3TUIIT2_js.getGlobalConfig; }
2402
+ });
2403
+ Object.defineProperty(exports, "humanizeError", {
2404
+ enumerable: true,
2405
+ get: function () { return chunkV3TUIIT2_js.humanizeError; }
2783
2406
  });
2784
2407
  Object.defineProperty(exports, "initAppilots", {
2785
2408
  enumerable: true,
2786
- get: function () { return chunkSIBKF7AA_js.initAppilots; }
2409
+ get: function () { return chunkV3TUIIT2_js.initAppilots; }
2787
2410
  });
2788
2411
  Object.defineProperty(exports, "isAutoTrackingEnabled", {
2789
2412
  enumerable: true,
2790
- get: function () { return chunkSIBKF7AA_js.isAutoTrackingEnabled; }
2413
+ get: function () { return chunkV3TUIIT2_js.isAutoTrackingEnabled; }
2791
2414
  });
2792
2415
  Object.defineProperty(exports, "listRegistry", {
2793
2416
  enumerable: true,
2794
- get: function () { return chunkSIBKF7AA_js.listRegistry; }
2417
+ get: function () { return chunkV3TUIIT2_js.listRegistry; }
2418
+ });
2419
+ Object.defineProperty(exports, "mergeThemeTokens", {
2420
+ enumerable: true,
2421
+ get: function () { return chunkV3TUIIT2_js.mergeThemeTokens; }
2795
2422
  });
2796
2423
  Object.defineProperty(exports, "recordAppilotsDebugTrace", {
2797
2424
  enumerable: true,
2798
- get: function () { return chunkSIBKF7AA_js.recordAppilotsDebugTrace; }
2425
+ get: function () { return chunkV3TUIIT2_js.recordAppilotsDebugTrace; }
2799
2426
  });
2800
2427
  Object.defineProperty(exports, "registerScreen", {
2801
2428
  enumerable: true,
2802
- get: function () { return chunkSIBKF7AA_js.registerScreen; }
2429
+ get: function () { return chunkV3TUIIT2_js.registerScreen; }
2803
2430
  });
2804
2431
  Object.defineProperty(exports, "subscribeAppilotsDebugTraces", {
2805
2432
  enumerable: true,
2806
- get: function () { return chunkSIBKF7AA_js.subscribeAppilotsDebugTraces; }
2433
+ get: function () { return chunkV3TUIIT2_js.subscribeAppilotsDebugTraces; }
2807
2434
  });
2808
2435
  Object.defineProperty(exports, "useAppilotsContext", {
2809
2436
  enumerable: true,
2810
- get: function () { return chunkSIBKF7AA_js.useAppilotsContext; }
2437
+ get: function () { return chunkV3TUIIT2_js.useAppilotsContext; }
2811
2438
  });
2812
2439
  Object.defineProperty(exports, "useResolvedRegistry", {
2813
2440
  enumerable: true,
2814
- get: function () { return chunkSIBKF7AA_js.useResolvedRegistry; }
2441
+ get: function () { return chunkV3TUIIT2_js.useResolvedRegistry; }
2815
2442
  });
2816
2443
  exports.ActionBreadcrumb = ActionBreadcrumb;
2817
2444
  exports.AppilotsChat = AppilotsChat;
@@ -2825,12 +2452,7 @@ exports.appilotsThemeFromTailwind = appilotsThemeFromTailwind;
2825
2452
  exports.createAppilotsButton = createAppilotsButton;
2826
2453
  exports.createAppilotsInput = createAppilotsInput;
2827
2454
  exports.createAppilotsSwitch = createAppilotsSwitch;
2828
- exports.defaultDarkTheme = defaultDarkTheme;
2829
- exports.defaultLightTheme = defaultLightTheme;
2830
- exports.describeAction = describeAction;
2831
2455
  exports.detectDeviceLocale = detectDeviceLocale;
2832
- exports.humanizeError = humanizeError;
2833
- exports.mergeThemeTokens = mergeThemeTokens;
2834
2456
  exports.resolveLocale = resolveLocale;
2835
2457
  exports.useAppilotsI18n = useAppilotsI18n;
2836
2458
  exports.useAppilotsTheme = useAppilotsTheme;