@guidelytech/shared 0.10.0 → 0.11.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,14 +1,31 @@
1
1
  import {
2
+ AGENT_METADATA_MAX_BYTES,
3
+ AGENT_METADATA_MAX_KEYS,
4
+ AGENT_OUTCOMES,
5
+ AGENT_TOOL_CALLS_PER_TURN,
6
+ AGENT_TOOL_STATUSES,
7
+ AGENT_TURNS_PER_BATCH,
8
+ AGENT_TURN_MAX_TEXT,
9
+ AGENT_TURN_ROLES,
2
10
  ARTICLE_VISIBILITIES,
3
11
  CAPTURE_PARAM,
4
12
  CAPTURE_SCREENSHOT_MAX_BYTES,
13
+ COMMON_LOCALES,
5
14
  COMPLAINT_EVENTS,
6
15
  COMPLAINT_FIELD_TYPES,
7
16
  COMPLAINT_STATUSES,
17
+ CONTROL_VARIANT_ID,
18
+ DEFAULT_FEATURE_ATTRIBUTE,
19
+ DEFAULT_LOCALE,
8
20
  DEFAULT_PLATFORMS,
9
21
  EMBED_IFRAME_ATTRS,
22
+ FEATURE_ATTRIBUTE_PATTERN,
23
+ FEATURE_RULE_LIMITS,
10
24
  FILE_LINK_CLASS,
11
25
  GUIDELY_ID_ATTRIBUTE,
26
+ GUIDE_EXPERIMENT_GOALS,
27
+ GUIDE_EXPERIMENT_GOAL_LABELS,
28
+ GUIDE_EXPERIMENT_STATUSES,
12
29
  GUIDE_VISIBILITIES,
13
30
  LOGGED_IN_AUDIENCE,
14
31
  MAX_COLLECTION_DEPTH,
@@ -17,6 +34,7 @@ import {
17
34
  MAX_COMPLAINT_CHOICES,
18
35
  MAX_COMPLAINT_FIELDS,
19
36
  MAX_COMPLAINT_LENGTH,
37
+ MAX_CUSTOM_CSS,
20
38
  MAX_PROPERTY_BYTES,
21
39
  MAX_STACK_FRAMES,
22
40
  MEDIA_FILE_MAX_BYTES,
@@ -27,38 +45,65 @@ import {
27
45
  MEDIA_VIDEO_MAX_BYTES,
28
46
  MEDIA_VIDEO_TYPES,
29
47
  NETWORK_PLUGIN,
48
+ NOISY_DATA_ATTR,
49
+ PAGE_RULE_LIMITS,
30
50
  PATH_ID_PATTERN,
31
51
  PDF_BLOCK_CLASS,
32
52
  PDF_MAX_PAGES,
33
53
  PDF_PAGES_CLASS,
34
54
  PLATFORMS,
55
+ RC_MODULE_IDS,
56
+ RC_MODULE_LABELS,
35
57
  RULE_FIELDS,
36
58
  RULE_OPERATORS,
59
+ SCOUT_AGENT_ID,
37
60
  SENSITIVE_HEADER_PATTERN,
38
61
  SENSITIVE_PARAM_PATTERN,
39
62
  SENSITIVE_PROPERTY_PATTERN,
40
63
  SERVER_ASSISTED_FIELDS,
41
64
  SHOW_ME_CLASS,
42
65
  SHOW_ME_HREF_PREFIX,
66
+ SNAPSHOT_ATTRS,
67
+ SNAPSHOT_LIMITS,
43
68
  SOURCEMAP_MAX_FILES_PER_UPLOAD,
44
69
  SOURCEMAP_MAX_FILE_BYTES,
70
+ SelectorSyntaxError,
71
+ TAG_PROPERTY_LIMITS,
45
72
  VIDEO_ATTRS,
73
+ WCAG_AA_LARGE,
74
+ WCAG_AA_TEXT,
46
75
  WS_MAX_MESSAGES_PER_SOCKET,
47
76
  WS_MAX_MESSAGE_BYTES,
77
+ applyGuideTranslations,
78
+ articleTextEntries,
79
+ assignGuideVariant,
80
+ baseLanguage,
48
81
  clamp,
49
82
  compare,
50
83
  compareVersions,
51
84
  complaintReference,
85
+ compoundMatches,
86
+ contrastIssues,
87
+ contrastRatio,
88
+ cssSelectorError,
52
89
  describeRule,
53
90
  emptyRuleGroup,
54
91
  evaluateRule,
55
92
  evaluateRules,
93
+ evenWeights,
94
+ experimentBucketRules,
95
+ experimentSalt,
96
+ featureCssSelectors,
97
+ featureRuleError,
98
+ featureRuleMatchesClick,
56
99
  fingerprintError,
57
100
  firstNameFromTraits,
58
101
  fnv1a,
59
102
  foldPathIds,
60
103
  getPath,
104
+ guideLocales,
61
105
  guidePlatforms,
106
+ guideTextEntries,
62
107
  guidelyIdFromSelector,
63
108
  hasVideoMedia,
64
109
  isAllowedEmbedSrc,
@@ -71,6 +116,12 @@ import {
71
116
  isRuleGroup,
72
117
  isSafeMediaUrl,
73
118
  isVideoContentType,
119
+ localeName,
120
+ localizeAnnouncement,
121
+ localizeArticle,
122
+ localizeGuide,
123
+ localizeResourceCenter,
124
+ matchCssSelector,
74
125
  matchUrlPattern,
75
126
  matchesAudiences,
76
127
  matchesHelpQuery,
@@ -78,27 +129,54 @@ import {
78
129
  mediaMaxBytes,
79
130
  normalizeErrorMessage,
80
131
  normalizeFrameFile,
132
+ normalizeLocale,
133
+ normalizeSnapshot,
134
+ orderedModules,
81
135
  pageLabel,
136
+ pagePattern,
137
+ pageRuleError,
138
+ pageRuleMatches,
139
+ pageRulesMatch,
82
140
  pageTerms,
141
+ parseCssSelector,
142
+ parseHexColor,
83
143
  parseStack,
144
+ propertyAttributeAllowed,
145
+ queryConditionRegex,
84
146
  randomId,
147
+ readableTextOn,
148
+ relativeLuminance,
149
+ resolveLocale,
150
+ resourceCenterLocales,
85
151
  resourceCenterSections,
152
+ resourceCenterTextEntries,
86
153
  rolloutBucket,
87
154
  safeRegExp,
155
+ sanitizeCustomCss,
88
156
  sanitizeProperties,
157
+ scopeCustomCss,
89
158
  screenPath,
90
159
  servedArticleAudiences,
91
160
  showMeHref,
92
161
  showMeKeyFromHref,
93
162
  showMeKeys,
94
163
  slugify,
164
+ snapshotFromSelector,
165
+ stableStringify,
95
166
  stripOrigin,
96
167
  supportsPlatform,
97
168
  toEmbedUrl,
169
+ translationCoverage,
170
+ unreadAnnouncements,
171
+ variantProblems,
172
+ variantRanges,
173
+ visibleAnnouncements,
98
174
  visibleArticleIds,
99
175
  visitorAudiences,
176
+ visitorLocales,
177
+ withExperimentBucket,
100
178
  withVisibility
101
- } from "./chunk-UW6NRYRY.js";
179
+ } from "./chunk-TGIUEYXM.js";
102
180
 
103
181
  // src/targeting.ts
104
182
  import { z } from "zod";
@@ -169,6 +247,8 @@ var StepSchema = z2.object({
169
247
  /** Sanitized HTML body (links, images, lists, formatting). */
170
248
  body: z2.string().max(2e4).default(""),
171
249
  imageUrl: z2.string().url().max(2e3).optional().or(z2.literal("")),
250
+ /** Alternative text for `imageUrl` (screen readers); empty = decorative. */
251
+ imageAlt: z2.string().max(300).optional(),
172
252
  buttons: z2.array(ButtonSchema).max(6).default([]),
173
253
  target: TargetSchema.optional(),
174
254
  placement: z2.enum(PLACEMENTS).default("auto"),
@@ -195,7 +275,12 @@ var StepSchema = z2.object({
195
275
  /** Hotspot pulse dot settings. */
196
276
  hotspot: z2.object({ size: z2.number().int().min(8).max(40).default(14), pulse: z2.boolean().default(true), openOn: z2.enum(["click", "hover"]).default("click") }).optional(),
197
277
  /** Custom step: arbitrary sanitized HTML with no chrome. */
198
- customHtml: z2.string().max(5e4).optional()
278
+ customHtml: z2.string().max(5e4).optional(),
279
+ /**
280
+ * Code block (custom steps only): JavaScript run on the web when the step shows, only while the
281
+ * workspace allows code blocks (an admin setting, off by default). Mobile SDKs never receive it.
282
+ */
283
+ code: z2.string().max(2e4).optional()
199
284
  });
200
285
  var TRIGGER_TYPES = ["page_load", "url_match", "event", "element_click", "element_visible", "manual", "delay", "after_guide", "segment_enter"];
201
286
  var TriggerSchema = z2.object({
@@ -217,7 +302,9 @@ var FrequencySchema = z2.object({
217
302
  /** Guide ids that must not be active at the same time. */
218
303
  mutuallyExclusiveWith: z2.array(z2.string()).max(50).default([]),
219
304
  /** Re-show if dismissed (otherwise dismissal counts as completion for frequency). */
220
- reshowAfterDismiss: z2.boolean().default(false)
305
+ reshowAfterDismiss: z2.boolean().default(false),
306
+ /** Bypass the project's guide throttling (always eligible as far as throttling goes). */
307
+ ignoreThrottling: z2.boolean().optional()
221
308
  });
222
309
  var AppearanceSchema = z2.object({
223
310
  theme: z2.enum(["light", "dark", "auto"]).default("auto"),
@@ -229,7 +316,9 @@ var AppearanceSchema = z2.object({
229
316
  overlayOpacity: z2.number().min(0).max(1).optional(),
230
317
  zIndex: z2.number().int().min(1).max(2147483647).optional(),
231
318
  preset: z2.string().max(50).optional(),
232
- animation: z2.enum(["fade", "slide", "none"]).default("fade")
319
+ animation: z2.enum(["fade", "slide", "none"]).default("fade"),
320
+ /** Custom CSS scoped to this guide's container (sanitized; see custom-css.ts). Web only. */
321
+ customCss: z2.string().max(2e4).optional()
233
322
  });
234
323
  var ChecklistTaskSchema = z2.object({
235
324
  id: z2.string().min(1),
@@ -276,6 +365,26 @@ var SurveyConfigSchema = z2.object({
276
365
  startAt: z2.string().datetime().optional(),
277
366
  endAt: z2.string().datetime().optional()
278
367
  });
368
+ var GuideScheduleSchema = z2.object({
369
+ startAt: z2.string().datetime().optional(),
370
+ endAt: z2.string().datetime().optional(),
371
+ timezone: z2.string().max(64).optional()
372
+ });
373
+ var LOCALE_PATTERN = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8}){0,2}$/;
374
+ var LocaleSchema = z2.string().regex(LOCALE_PATTERN, "Use a language code such as fr or pt-BR").max(20);
375
+ var GuideLocalizationSchema = z2.object({
376
+ translations: z2.record(LocaleSchema, z2.record(z2.string().max(200), z2.string().max(5e4))).default({})
377
+ });
378
+ var LocalizationSettingsSchema = z2.object({
379
+ defaultLocale: LocaleSchema.default("en"),
380
+ locales: z2.array(LocaleSchema).max(50).default([])
381
+ });
382
+ var GuideThrottlingSchema = z2.object({
383
+ enabled: z2.boolean().default(false),
384
+ maxGuides: z2.number().int().min(1).max(50).default(1),
385
+ windowHours: z2.number().int().min(1).max(720).default(24),
386
+ minGapMinutes: z2.number().int().min(0).max(10080).default(0)
387
+ });
279
388
  var GuideConfigSchema = z2.object({
280
389
  steps: z2.array(StepSchema).max(50).default([]),
281
390
  /** Everyone, only identified (logged-in) users, or only anonymous visitors; applied on top of `targeting`. */
@@ -289,7 +398,11 @@ var GuideConfigSchema = z2.object({
289
398
  /** Restrict guide to url pattern(s) (applied before trigger). On mobile these match the screen path `/<Screen>`. */
290
399
  urlPatterns: z2.array(z2.string().max(500)).max(20).default([]),
291
400
  /** Platforms that receive this guide. Guides created before mobile support are web-only. */
292
- platforms: z2.array(z2.enum(PLATFORMS)).max(PLATFORMS.length).default(["web"])
401
+ platforms: z2.array(z2.enum(PLATFORMS)).max(PLATFORMS.length).default(["web"]),
402
+ /** Start / end window for any guide kind (surveys also honour `survey.startAt` / `endAt`). */
403
+ schedule: GuideScheduleSchema.optional(),
404
+ /** Translations (see localization.ts). */
405
+ localization: GuideLocalizationSchema.optional()
293
406
  });
294
407
  function defaultGuideConfig(kind) {
295
408
  return GuideConfigSchema.parse({
@@ -323,7 +436,7 @@ function defaultStep(type, overrides = {}) {
323
436
  function visibleButtons(step, canGoBack) {
324
437
  return canGoBack ? step.buttons : step.buttons.filter((b) => b.action !== "back");
325
438
  }
326
- function validateGuideConfig(kind, config) {
439
+ function validateGuideConfig(kind, config, theme) {
327
440
  const issues = [];
328
441
  if (kind === "checklist") {
329
442
  if (!config.checklist || config.checklist.tasks.length === 0) issues.push({ level: "error", message: "Checklist needs at least one task." });
@@ -360,6 +473,15 @@ function validateGuideConfig(kind, config) {
360
473
  if (config.trigger.type === "element_click" && !config.trigger.value) issues.push({ level: "error", message: "Element click trigger needs a selector." });
361
474
  if (config.trigger.type === "url_match" && !config.trigger.value) issues.push({ level: "error", message: "URL trigger needs a pattern." });
362
475
  if (config.frequency.mode === "interval" && !config.frequency.intervalHours) issues.push({ level: "error", message: "Interval frequency needs an interval in hours." });
476
+ const sched = config.schedule;
477
+ if (sched?.startAt && sched.endAt && Date.parse(sched.endAt) <= Date.parse(sched.startAt)) issues.push({ level: "error", message: "The schedule ends before it starts." });
478
+ if (sched?.endAt && Date.parse(sched.endAt) < Date.now()) issues.push({ level: "warning", message: "The schedule has already ended, so nobody will see this guide." });
479
+ config.steps.forEach((step, i) => {
480
+ if (step.code && step.type !== "custom") issues.push({ level: "error", stepId: step.id, message: `Step ${i + 1}: code blocks can only run in custom steps.` });
481
+ if (step.code && mobile) issues.push({ level: "warning", stepId: step.id, message: `Step ${i + 1} runs a code block; mobile apps skip it.` });
482
+ });
483
+ const colors = { primaryColor: config.appearance.primaryColor ?? theme?.primaryColor, backgroundColor: config.appearance.backgroundColor ?? theme?.backgroundColor, textColor: config.appearance.textColor ?? theme?.textColor };
484
+ for (const c of contrastIssues(colors)) issues.push({ level: "warning", message: `Low contrast: ${c.message}` });
363
485
  return issues;
364
486
  }
365
487
  var ProjectThemeSchema = z2.object({
@@ -369,7 +491,9 @@ var ProjectThemeSchema = z2.object({
369
491
  borderRadius: z2.number().int().min(0).max(32).default(12),
370
492
  fontFamily: z2.string().max(200).default("Inter, system-ui, -apple-system, sans-serif"),
371
493
  logoUrl: z2.string().max(2e3).optional(),
372
- brandName: z2.string().max(100).optional()
494
+ brandName: z2.string().max(100).optional(),
495
+ /** Custom CSS applied to every guide's container (sanitized and scoped like guide CSS). Web only. */
496
+ customCss: z2.string().max(2e4).optional()
373
497
  });
374
498
 
375
499
  // src/events.ts
@@ -405,9 +529,15 @@ var EVENT_NAMES = [
405
529
  "exception",
406
530
  "heatmap",
407
531
  // Feature flags: a user was bucketed into an experiment variation (properties: experimentKey, variationId, flagKey).
408
- "experiment_viewed"
532
+ "experiment_viewed",
533
+ // Mobile app lifecycle (mobile/SPEC.md "Product analytics"): installs, updates, opens and backgrounding.
534
+ "app_install",
535
+ "app_update",
536
+ "app_open",
537
+ "app_background"
409
538
  ];
410
- var AUTOCAPTURE_EVENTS = ["page_view", "page_leave", "click", "rage_click", "exception", "heatmap"];
539
+ var AUTOCAPTURE_EVENTS = ["page_view", "page_leave", "click", "rage_click", "exception", "heatmap", "app_install", "app_update", "app_open", "app_background"];
540
+ var APP_LIFECYCLE_EVENTS = ["app_install", "app_update", "app_open", "app_background"];
411
541
  var GUIDE_LIFECYCLE_EVENTS = ["guide_viewed", "guide_started", "step_viewed", "step_completed", "guide_completed", "guide_skipped", "guide_dismissed", "guide_abandoned"];
412
542
  var SdkEventSchema = z3.object({
413
543
  eventId: z3.string().min(8).max(64),
@@ -475,7 +605,9 @@ var AuthoringPickSchema = z4.object({
475
605
  selectors: z4.array(z4.object({ kind: z4.string(), value: z4.string().max(1e3), label: z4.string().max(200).optional() })).max(10),
476
606
  textSnapshot: z4.string().max(200).optional(),
477
607
  url: z4.string().max(2e3).optional(),
478
- rect: z4.object({ x: z4.number(), y: z4.number(), width: z4.number(), height: z4.number() }).optional()
608
+ rect: z4.object({ x: z4.number(), y: z4.number(), width: z4.number(), height: z4.number() }).optional(),
609
+ /** Compact snapshot of the picked element (tag mode: feature rules are proposed from it). */
610
+ elementSnapshot: z4.record(z4.unknown()).optional()
479
611
  });
480
612
  var PublishedGuideSchema = z4.object({
481
613
  id: z4.string(),
@@ -540,22 +672,140 @@ var FileComplaintSchema = z6.object({
540
672
  }).optional().nullable()
541
673
  });
542
674
 
543
- // src/capture.ts
675
+ // src/agents.ts
544
676
  import { z as z7 } from "zod";
545
- var AutocaptureSettingsSchema = z7.object({ pageviews: z7.boolean(), pageLeave: z7.boolean(), clicks: z7.boolean(), rageClicks: z7.boolean(), heatmaps: z7.boolean(), mouseMovement: z7.boolean() }).partial();
546
- var ErrorTrackingSettingsSchema = z7.object({ enabled: z7.boolean() }).partial();
547
- var ReplaySettingsSchema = z7.object({
548
- enabled: z7.boolean(),
549
- sampleRate: z7.number().int().min(0).max(100),
550
- recordConsole: z7.boolean(),
551
- recordNetwork: z7.boolean(),
552
- recordNetworkPayloads: z7.boolean(),
553
- maskAllText: z7.boolean(),
554
- blockSelectors: z7.array(z7.string().min(1).max(200)).max(50),
555
- retentionDays: z7.number().int().min(1).max(365)
677
+ var ENVIRONMENTS = ["development", "staging", "production"];
678
+ var AgentToolCallSchema = z7.object({
679
+ name: z7.string().trim().min(1).max(100),
680
+ status: z7.enum(AGENT_TOOL_STATUSES).optional(),
681
+ latencyMs: z7.number().int().min(0).max(36e5).optional()
682
+ }).strip();
683
+ var AgentMetadataSchema = z7.record(z7.string().max(100), z7.unknown()).transform((m) => {
684
+ const out = {};
685
+ let size = 0;
686
+ for (const [k, v] of Object.entries(m)) {
687
+ const key = k.trim();
688
+ if (!key || key.startsWith("$") || SENSITIVE_PROPERTY_PATTERN.test(key)) continue;
689
+ if (!(typeof v === "string" || typeof v === "boolean" || v === null || typeof v === "number" && Number.isFinite(v))) continue;
690
+ const value = typeof v === "string" ? v.slice(0, 500) : v;
691
+ size += key.length + String(value).length;
692
+ if (size > AGENT_METADATA_MAX_BYTES || Object.keys(out).length >= AGENT_METADATA_MAX_KEYS) break;
693
+ out[key] = value;
694
+ }
695
+ return out;
696
+ });
697
+ var id = (max) => z7.string().trim().min(1).max(max);
698
+ var optionalId = (max) => z7.string().trim().max(max).optional().nullable().transform((v) => v || null);
699
+ var AgentTurnInputSchema = z7.object({
700
+ type: z7.literal("agent.conversation").optional(),
701
+ conversationId: id(128),
702
+ agentId: id(64).refine((v) => v.toLowerCase() !== SCOUT_AGENT_ID, { message: `"${SCOUT_AGENT_ID}" is reserved for Guidely's built-in Scout agent` }),
703
+ agentName: z7.string().trim().max(100).optional(),
704
+ turnId: z7.string().trim().min(1).max(128).optional(),
705
+ role: z7.enum(AGENT_TURN_ROLES),
706
+ text: z7.string().max(AGENT_TURN_MAX_TEXT).default(""),
707
+ toolCalls: z7.array(AgentToolCallSchema).max(AGENT_TOOL_CALLS_PER_TURN).default([]),
708
+ latencyMs: z7.number().int().min(0).max(36e5).optional(),
709
+ outcome: z7.enum(AGENT_OUTCOMES).optional(),
710
+ taskSuccess: z7.boolean().optional(),
711
+ occurredAt: z7.string().datetime({ offset: true }).optional(),
712
+ userId: optionalId(256),
713
+ anonymousId: optionalId(128),
714
+ accountId: optionalId(256),
715
+ sessionId: optionalId(128),
716
+ metadata: AgentMetadataSchema.default({})
717
+ });
718
+ var turns = z7.array(AgentTurnInputSchema).min(1).max(AGENT_TURNS_PER_BATCH);
719
+ var sdkInfo = z7.object({ name: z7.string().max(60), version: z7.string().max(30) }).optional();
720
+ var SdkAgentEventsSchema = z7.object({ turns, sdk: sdkInfo });
721
+ var AgentEventsRequestSchema = z7.preprocess(
722
+ (v) => {
723
+ if (Array.isArray(v)) return { turns: v };
724
+ if (v && typeof v === "object" && !("turns" in v)) {
725
+ const { environment, ...turn } = v;
726
+ return { turns: [turn], environment };
727
+ }
728
+ return v;
729
+ },
730
+ z7.object({ turns, environment: z7.enum(ENVIRONMENTS).default("production"), sdk: sdkInfo })
731
+ );
732
+
733
+ // src/feedback.ts
734
+ import { z as z8 } from "zod";
735
+
736
+ // src/feedback-limits.ts
737
+ var FEEDBACK_STATUSES = ["new", "under_review", "planned", "in_progress", "released", "declined"];
738
+ var FEEDBACK_STATUS_LABEL = {
739
+ new: "New",
740
+ under_review: "Under review",
741
+ planned: "Planned",
742
+ in_progress: "In progress",
743
+ released: "Released",
744
+ declined: "Declined"
745
+ };
746
+ var FEEDBACK_PRIORITIES = ["nice_to_have", "important", "critical"];
747
+ var FEEDBACK_PRIORITY_LABEL = { nice_to_have: "Nice to have", important: "Important", critical: "Critical" };
748
+ var FEEDBACK_PRIORITY_WEIGHT = { nice_to_have: 1, important: 2, critical: 3 };
749
+ var FEEDBACK_EVENTS = ["request.created", "request.status_changed", "request.voted"];
750
+ var MAX_FEEDBACK_TITLE = 140;
751
+ var MAX_FEEDBACK_DESCRIPTION = 4e3;
752
+ var MAX_FEEDBACK_COMMENT = 2e3;
753
+ var MAX_FEEDBACK_NOTE = 500;
754
+ var feedbackReference = (number) => `#${number}`;
755
+
756
+ // src/feedback.ts
757
+ var visitor = {
758
+ anonymousId: z8.string().min(1).max(128),
759
+ userId: z8.string().max(256).optional().nullable()
760
+ };
761
+ var FeedbackListRequestSchema = z8.object({
762
+ ...visitor,
763
+ q: z8.string().trim().max(200).optional(),
764
+ sort: z8.enum(["top", "new", "trending"]).default("top"),
765
+ status: z8.enum(FEEDBACK_STATUSES).optional(),
766
+ /** "open" = not released or declined. */
767
+ filter: z8.enum(["open", "all", "mine", "following"]).default("open"),
768
+ productArea: z8.string().trim().max(60).optional(),
769
+ page: z8.number().int().min(1).max(100).default(1)
770
+ });
771
+ var FeedbackVisitorSchema = z8.object(visitor);
772
+ var SubmitFeedbackSchema = z8.object({
773
+ ...visitor,
774
+ title: z8.string().trim().min(3, "Give your idea a short title").max(MAX_FEEDBACK_TITLE),
775
+ description: z8.string().trim().max(MAX_FEEDBACK_DESCRIPTION).default(""),
776
+ productArea: z8.string().trim().max(60).optional().nullable(),
777
+ priority: z8.enum(FEEDBACK_PRIORITIES).default("nice_to_have"),
778
+ /** Filed from this Scout conversation (Scout offered it). */
779
+ conversationId: z8.string().min(1).max(64).optional().nullable(),
780
+ pageUrl: z8.string().max(2e3).optional()
781
+ });
782
+ var FeedbackVoteSchema = z8.object({
783
+ ...visitor,
784
+ priority: z8.enum(FEEDBACK_PRIORITIES).default("nice_to_have"),
785
+ note: z8.string().trim().max(MAX_FEEDBACK_NOTE).optional(),
786
+ conversationId: z8.string().min(1).max(64).optional().nullable()
787
+ });
788
+ var FeedbackFollowSchema = z8.object({ ...visitor, follow: z8.boolean() });
789
+ var FeedbackCommentSchema = z8.object({ ...visitor, body: z8.string().trim().min(1).max(MAX_FEEDBACK_COMMENT) });
790
+ var FeedbackSimilarSchema = z8.object({ ...visitor, title: z8.string().trim().min(3).max(MAX_FEEDBACK_TITLE) });
791
+ var FeedbackUpdatesReadSchema = z8.object({ ...visitor, ids: z8.array(z8.string().min(1).max(64)).max(100).optional() });
792
+
793
+ // src/capture.ts
794
+ import { z as z9 } from "zod";
795
+ var AutocaptureSettingsSchema = z9.object({ pageviews: z9.boolean(), pageLeave: z9.boolean(), clicks: z9.boolean(), rageClicks: z9.boolean(), heatmaps: z9.boolean(), mouseMovement: z9.boolean(), appLifecycle: z9.boolean() }).partial();
796
+ var ErrorTrackingSettingsSchema = z9.object({ enabled: z9.boolean() }).partial();
797
+ var ReplaySettingsSchema = z9.object({
798
+ enabled: z9.boolean(),
799
+ sampleRate: z9.number().int().min(0).max(100),
800
+ recordConsole: z9.boolean(),
801
+ recordNetwork: z9.boolean(),
802
+ recordNetworkPayloads: z9.boolean(),
803
+ maskAllText: z9.boolean(),
804
+ blockSelectors: z9.array(z9.string().min(1).max(200)).max(50),
805
+ retentionDays: z9.number().int().min(1).max(365)
556
806
  }).partial();
557
807
  var DEFAULT_CAPTURE_SETTINGS = {
558
- autocapture: { pageviews: true, pageLeave: true, clicks: true, rageClicks: true, heatmaps: true, mouseMovement: true },
808
+ autocapture: { pageviews: true, pageLeave: true, clicks: true, rageClicks: true, heatmaps: true, mouseMovement: true, appLifecycle: true },
559
809
  errorTracking: { enabled: true },
560
810
  replay: { enabled: false, sampleRate: 100, recordConsole: true, recordNetwork: true, recordNetworkPayloads: false, maskAllText: false, blockSelectors: [], retentionDays: 30 }
561
811
  };
@@ -573,18 +823,18 @@ function resolveCaptureSettings(settings) {
573
823
  };
574
824
  }
575
825
  var HEATMAP_VIEWPORTS = { mobile: [0, 767], tablet: [768, 1279], desktop: [1280, 1e5] };
576
- var ReplayChunkSchema = z7.object({
577
- sessionId: z7.string().min(1).max(128),
578
- windowId: z7.string().min(1).max(64),
579
- seq: z7.number().int().min(0).max(1e6),
580
- anonymousId: z7.string().min(1).max(128),
581
- userId: z7.string().max(256).optional().nullable(),
826
+ var ReplayChunkSchema = z9.object({
827
+ sessionId: z9.string().min(1).max(128),
828
+ windowId: z9.string().min(1).max(64),
829
+ seq: z9.number().int().min(0).max(1e6),
830
+ anonymousId: z9.string().min(1).max(128),
831
+ userId: z9.string().max(256).optional().nullable(),
582
832
  /** rrweb `eventWithTime` objects, in order. */
583
- events: z7.array(z7.object({ type: z7.number().int(), timestamp: z7.number() }).passthrough()).min(1).max(5e4),
584
- url: z7.string().max(2e3).optional(),
585
- device: z7.object({ type: z7.string().max(20), browser: z7.string().max(40).optional(), os: z7.string().max(40).optional() }).optional(),
586
- viewport: z7.object({ width: z7.number().int().min(0).max(1e5), height: z7.number().int().min(0).max(1e5) }).optional(),
587
- sdk: z7.object({ name: z7.string().max(60), version: z7.string().max(30) }).optional()
833
+ events: z9.array(z9.object({ type: z9.number().int(), timestamp: z9.number() }).passthrough()).min(1).max(5e4),
834
+ url: z9.string().max(2e3).optional(),
835
+ device: z9.object({ type: z9.string().max(20), browser: z9.string().max(40).optional(), os: z9.string().max(40).optional() }).optional(),
836
+ viewport: z9.object({ width: z9.number().int().min(0).max(1e5), height: z9.number().int().min(0).max(1e5) }).optional(),
837
+ sdk: z9.object({ name: z9.string().max(60), version: z9.string().max(30) }).optional()
588
838
  });
589
839
  var REPLAY_MAX_COMPRESSED_BYTES = 2 * 1024 * 1024;
590
840
  var REPLAY_MAX_RAW_BYTES = 16 * 1024 * 1024;
@@ -761,46 +1011,46 @@ var GUIDE_TEMPLATES = [
761
1011
  }
762
1012
  }
763
1013
  ];
764
- function templateConfig(id) {
765
- const t = GUIDE_TEMPLATES.find((x) => x.id === id);
1014
+ function templateConfig(id2) {
1015
+ const t = GUIDE_TEMPLATES.find((x) => x.id === id2);
766
1016
  if (!t) return null;
767
1017
  return { template: t, config: GuideConfigSchema.parse(t.config) };
768
1018
  }
769
1019
 
770
1020
  // src/howto.ts
771
- import { z as z8 } from "zod";
1021
+ import { z as z10 } from "zod";
772
1022
  var HOWTO_STEP_KINDS = ["action", "text", "heading", "tip", "alert"];
773
1023
  var HOWTO_ACTIONS = ["click", "type", "select", "navigate"];
774
- var NormalizedRectSchema = z8.object({
775
- x: z8.number().min(0).max(1),
776
- y: z8.number().min(0).max(1),
777
- width: z8.number().min(0).max(1),
778
- height: z8.number().min(0).max(1)
1024
+ var NormalizedRectSchema = z10.object({
1025
+ x: z10.number().min(0).max(1),
1026
+ y: z10.number().min(0).max(1),
1027
+ width: z10.number().min(0).max(1),
1028
+ height: z10.number().min(0).max(1)
779
1029
  });
780
- var CapturedElementSchema = z8.object({
1030
+ var CapturedElementSchema = z10.object({
781
1031
  /** Visible name: aria-label, associated label, text, placeholder, alt or title. */
782
- label: z8.string().max(200).default(""),
1032
+ label: z10.string().max(200).default(""),
783
1033
  /** button, link, tab, menuitem, checkbox, radio, field, dropdown, option, element… */
784
- role: z8.string().max(40).default("element"),
785
- tag: z8.string().max(40).default("")
1034
+ role: z10.string().max(40).default("element"),
1035
+ tag: z10.string().max(40).default("")
786
1036
  });
787
- var CaptureStepSchema = z8.object({
1037
+ var CaptureStepSchema = z10.object({
788
1038
  /** Random id from the SDK; a retried upload with the same id is stored once. */
789
- clientId: z8.string().min(1).max(64),
790
- action: z8.enum(HOWTO_ACTIONS),
791
- url: z8.string().max(2e3),
792
- pageTitle: z8.string().max(300).default(""),
1039
+ clientId: z10.string().min(1).max(64),
1040
+ action: z10.enum(HOWTO_ACTIONS),
1041
+ url: z10.string().max(2e3),
1042
+ pageTitle: z10.string().max(300).default(""),
793
1043
  element: CapturedElementSchema.optional(),
794
1044
  /** Typed text or chosen option; absent when it was sensitive (`valueRedacted`). */
795
- value: z8.string().max(200).optional(),
796
- valueRedacted: z8.boolean().default(false),
1045
+ value: z10.string().max(200).optional(),
1046
+ valueRedacted: z10.boolean().default(false),
797
1047
  /** Selectors for the element, so the step can later become an interactive tour step. */
798
- selectors: z8.array(SelectorStrategySchema).max(10).default([]),
1048
+ selectors: z10.array(SelectorStrategySchema).max(10).default([]),
799
1049
  /** Where the element sits in the screenshot. */
800
1050
  highlight: NormalizedRectSchema.optional(),
801
1051
  /** Number of regions the SDK blurred in the screenshot before upload. */
802
- redactions: z8.number().int().min(0).max(1e3).default(0),
803
- occurredAt: z8.string().datetime().optional()
1052
+ redactions: z10.number().int().min(0).max(1e3).default(0),
1053
+ occurredAt: z10.string().datetime().optional()
804
1054
  });
805
1055
  function quoted(s) {
806
1056
  const t = (s ?? "").replace(/\s+/g, " ").trim();
@@ -871,12 +1121,12 @@ function hostAndPath(url) {
871
1121
  return url.slice(0, 80);
872
1122
  }
873
1123
  }
874
- var NormalizedPointSchema = z8.object({ x: z8.number().min(0).max(1), y: z8.number().min(0).max(1) });
1124
+ var NormalizedPointSchema = z10.object({ x: z10.number().min(0).max(1), y: z10.number().min(0).max(1) });
875
1125
  var ANNOTATION_COLORS = ["brand", "red", "amber", "green", "black", "white"];
876
- var HowToAnnotationSchema = z8.discriminatedUnion("type", [
877
- z8.object({ id: z8.string().min(1).max(32), type: z8.literal("arrow"), from: NormalizedPointSchema, to: NormalizedPointSchema, color: z8.enum(ANNOTATION_COLORS).default("brand") }),
878
- z8.object({ id: z8.string().min(1).max(32), type: z8.literal("text"), at: NormalizedPointSchema, text: z8.string().trim().min(1).max(120), color: z8.enum(ANNOTATION_COLORS).default("brand") }),
879
- z8.object({ id: z8.string().min(1).max(32), type: z8.literal("box"), rect: NormalizedRectSchema, color: z8.enum(ANNOTATION_COLORS).default("brand") })
1126
+ var HowToAnnotationSchema = z10.discriminatedUnion("type", [
1127
+ z10.object({ id: z10.string().min(1).max(32), type: z10.literal("arrow"), from: NormalizedPointSchema, to: NormalizedPointSchema, color: z10.enum(ANNOTATION_COLORS).default("brand") }),
1128
+ z10.object({ id: z10.string().min(1).max(32), type: z10.literal("text"), at: NormalizedPointSchema, text: z10.string().trim().min(1).max(120), color: z10.enum(ANNOTATION_COLORS).default("brand") }),
1129
+ z10.object({ id: z10.string().min(1).max(32), type: z10.literal("box"), rect: NormalizedRectSchema, color: z10.enum(ANNOTATION_COLORS).default("brand") })
880
1130
  ]);
881
1131
  var MAX_ANNOTATIONS = 30;
882
1132
 
@@ -889,6 +1139,7 @@ var SCRIPT_STUB_METHODS = [
889
1139
  "setAccount",
890
1140
  "updateTraits",
891
1141
  "setConsent",
1142
+ "setLocale",
892
1143
  "startGuide",
893
1144
  "stopGuide",
894
1145
  "dismissGuide",
@@ -901,7 +1152,10 @@ var SCRIPT_STUB_METHODS = [
901
1152
  "closeChecklist",
902
1153
  "completeChecklistTask",
903
1154
  "openComplaint",
1155
+ "openIdeas",
904
1156
  "captureException",
1157
+ "agentConversation",
1158
+ "trackAgentTurn",
905
1159
  "on"
906
1160
  ];
907
1161
  var SCRIPT_STUB = `!function(w){if(w.Guidely)return;var g=w.Guidely={_q:[]},c=g._c={};function q(o,k){o[k]=function(){g._q.push([o===c?1:0,k,[].slice.call(arguments)])}}q(g,"init");"${SCRIPT_STUB_METHODS.join(" ")}".split(" ").forEach(function(k){q(c,k)});c.isFeatureEnabled=function(k,f){return!!f};c.getFeatureValue=function(k,f){return f};g.get=function(){return c}}(window);`;
@@ -913,14 +1167,129 @@ function scriptSnippet(scriptUrl, initOptions) {
913
1167
  <script src="${scriptUrl}" async></script>`;
914
1168
  }
915
1169
 
1170
+ // src/translation-files.ts
1171
+ function xmlEscape(s) {
1172
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
1173
+ }
1174
+ function xmlUnescape(s) {
1175
+ return s.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g, (_, c) => c.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&#(\d+);/g, (_, d) => String.fromCodePoint(Number(d))).replace(/&#x([0-9a-f]+);/gi, (_, h) => String.fromCodePoint(parseInt(h, 16))).replace(/&amp;/g, "&");
1176
+ }
1177
+ function toXliff(units, opts) {
1178
+ const body = units.map(
1179
+ (u) => ` <trans-unit id="${xmlEscape(u.key)}">
1180
+ <source>${xmlEscape(u.source)}</source>
1181
+ <target${u.target ? "" : ' state="needs-translation"'}>${xmlEscape(u.target)}</target>${u.note ? `
1182
+ <note>${xmlEscape(u.note)}</note>` : ""}
1183
+ </trans-unit>`
1184
+ ).join("\n");
1185
+ return `<?xml version="1.0" encoding="UTF-8"?>
1186
+ <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
1187
+ <file original="${xmlEscape(opts.original)}" source-language="${xmlEscape(opts.sourceLocale)}" target-language="${xmlEscape(opts.targetLocale)}" datatype="html">
1188
+ <body>
1189
+ ${body}
1190
+ </body>
1191
+ </file>
1192
+ </xliff>
1193
+ `;
1194
+ }
1195
+ function parseXliff(xml) {
1196
+ const target = xml.match(/target-language="([^"]+)"/)?.[1] ?? xml.match(/\btrgLang="([^"]+)"/)?.[1];
1197
+ const entries = {};
1198
+ for (const m of xml.matchAll(/<(trans-unit|unit)\b[^>]*\bid="([^"]*)"[^>]*>([\s\S]*?)<\/\1>/g)) {
1199
+ const key = xmlUnescape(m[2]);
1200
+ const t = m[3].match(/<target\b[^>]*>([\s\S]*?)<\/target>/);
1201
+ const text = t ? xmlUnescape(t[1]) : "";
1202
+ if (key && text.trim()) entries[key] = text;
1203
+ }
1204
+ return { targetLocale: target ? xmlUnescape(target) : void 0, entries };
1205
+ }
1206
+ function csvCell(s) {
1207
+ return /[",\n\r]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
1208
+ }
1209
+ function toTranslationCsv(units, targetLocale) {
1210
+ const rows = [["key", "context", "source", targetLocale], ...units.map((u) => [u.key, u.note ?? "", u.source, u.target])];
1211
+ return rows.map((r) => r.map(csvCell).join(",")).join("\r\n") + "\r\n";
1212
+ }
1213
+ function parseCsvRows(text) {
1214
+ const rows = [];
1215
+ let row = [];
1216
+ let cell = "";
1217
+ let quoted2 = false;
1218
+ const src = text.replace(/^\uFEFF/, "");
1219
+ for (let i = 0; i < src.length; i++) {
1220
+ const ch = src[i];
1221
+ if (quoted2) {
1222
+ if (ch === '"') {
1223
+ if (src[i + 1] === '"') {
1224
+ cell += '"';
1225
+ i++;
1226
+ } else quoted2 = false;
1227
+ } else cell += ch;
1228
+ } else if (ch === '"') quoted2 = true;
1229
+ else if (ch === ",") {
1230
+ row.push(cell);
1231
+ cell = "";
1232
+ } else if (ch === "\n" || ch === "\r") {
1233
+ if (ch === "\r" && src[i + 1] === "\n") i++;
1234
+ row.push(cell);
1235
+ rows.push(row);
1236
+ row = [];
1237
+ cell = "";
1238
+ } else cell += ch;
1239
+ }
1240
+ if (cell !== "" || row.length) {
1241
+ row.push(cell);
1242
+ rows.push(row);
1243
+ }
1244
+ return rows.filter((r) => r.some((c) => c.trim() !== ""));
1245
+ }
1246
+ function parseTranslationCsv(text) {
1247
+ const [header, ...rows] = parseCsvRows(text);
1248
+ if (!header) return { entries: {} };
1249
+ const names = header.map((h) => h.trim());
1250
+ const lower = names.map((h) => h.toLowerCase());
1251
+ const keyCol = lower.indexOf("key");
1252
+ if (keyCol < 0) return { entries: {} };
1253
+ let targetCol = lower.indexOf("target");
1254
+ if (targetCol < 0) {
1255
+ for (let i = names.length - 1; i >= 0; i--) {
1256
+ if (!["key", "context", "source", "label", "note"].includes(lower[i])) {
1257
+ targetCol = i;
1258
+ break;
1259
+ }
1260
+ }
1261
+ }
1262
+ if (targetCol < 0) return { entries: {} };
1263
+ const entries = {};
1264
+ for (const r of rows) {
1265
+ const key = (r[keyCol] ?? "").trim();
1266
+ const value = r[targetCol] ?? "";
1267
+ if (key && value.trim()) entries[key] = value;
1268
+ }
1269
+ return { targetLocale: lower[targetCol] === "target" ? void 0 : names[targetCol], entries };
1270
+ }
1271
+
916
1272
  // src/index.ts
917
1273
  var SDK_API_VERSION = "v1";
918
- var SHARED_VERSION = "0.10.0";
1274
+ var SHARED_VERSION = "0.11.0";
919
1275
  export {
920
1276
  ADVANCE_ON,
1277
+ AGENT_METADATA_MAX_BYTES,
1278
+ AGENT_METADATA_MAX_KEYS,
1279
+ AGENT_OUTCOMES,
1280
+ AGENT_TOOL_CALLS_PER_TURN,
1281
+ AGENT_TOOL_STATUSES,
1282
+ AGENT_TURNS_PER_BATCH,
1283
+ AGENT_TURN_MAX_TEXT,
1284
+ AGENT_TURN_ROLES,
921
1285
  ANNOTATION_COLORS,
1286
+ APP_LIFECYCLE_EVENTS,
922
1287
  ARTICLE_VISIBILITIES,
923
1288
  AUTOCAPTURE_EVENTS,
1289
+ AgentEventsRequestSchema,
1290
+ AgentMetadataSchema,
1291
+ AgentToolCallSchema,
1292
+ AgentTurnInputSchema,
924
1293
  AppearanceSchema,
925
1294
  AuthoringPickSchema,
926
1295
  AutocaptureSettingsSchema,
@@ -928,9 +1297,11 @@ export {
928
1297
  ButtonSchema,
929
1298
  CAPTURE_PARAM,
930
1299
  CAPTURE_SCREENSHOT_MAX_BYTES,
1300
+ COMMON_LOCALES,
931
1301
  COMPLAINT_EVENTS,
932
1302
  COMPLAINT_FIELD_TYPES,
933
1303
  COMPLAINT_STATUSES,
1304
+ CONTROL_VARIANT_ID,
934
1305
  CaptureStepSchema,
935
1306
  CapturedElementSchema,
936
1307
  ChecklistConfigSchema,
@@ -939,28 +1310,54 @@ export {
939
1310
  ConversationLookupSchema,
940
1311
  ConversationRatingSchema,
941
1312
  DEFAULT_CAPTURE_SETTINGS,
1313
+ DEFAULT_FEATURE_ATTRIBUTE,
1314
+ DEFAULT_LOCALE,
942
1315
  DEFAULT_PLATFORMS,
943
1316
  EMBED_IFRAME_ATTRS,
944
1317
  EVENT_NAMES,
945
1318
  ErrorTrackingSettingsSchema,
946
1319
  EventBatchSchema,
1320
+ FEATURE_ATTRIBUTE_PATTERN,
1321
+ FEATURE_RULE_LIMITS,
1322
+ FEEDBACK_EVENTS,
1323
+ FEEDBACK_PRIORITIES,
1324
+ FEEDBACK_PRIORITY_LABEL,
1325
+ FEEDBACK_PRIORITY_WEIGHT,
1326
+ FEEDBACK_STATUSES,
1327
+ FEEDBACK_STATUS_LABEL,
947
1328
  FILE_LINK_CLASS,
1329
+ FeedbackCommentSchema,
1330
+ FeedbackFollowSchema,
1331
+ FeedbackListRequestSchema,
1332
+ FeedbackSimilarSchema,
1333
+ FeedbackUpdatesReadSchema,
1334
+ FeedbackVisitorSchema,
1335
+ FeedbackVoteSchema,
948
1336
  FileComplaintSchema,
949
1337
  FrequencySchema,
950
1338
  GUIDELY_ID_ATTRIBUTE,
1339
+ GUIDE_EXPERIMENT_GOALS,
1340
+ GUIDE_EXPERIMENT_GOAL_LABELS,
1341
+ GUIDE_EXPERIMENT_STATUSES,
951
1342
  GUIDE_KINDS,
952
1343
  GUIDE_LIFECYCLE_EVENTS,
953
1344
  GUIDE_STATUSES,
954
1345
  GUIDE_TEMPLATES,
955
1346
  GUIDE_VISIBILITIES,
956
1347
  GuideConfigSchema,
1348
+ GuideLocalizationSchema,
1349
+ GuideScheduleSchema,
957
1350
  GuideStateUpdateSchema,
1351
+ GuideThrottlingSchema,
958
1352
  HEATMAP_VIEWPORTS,
959
1353
  HOWTO_ACTIONS,
960
1354
  HOWTO_STEP_KINDS,
961
1355
  HowToAnnotationSchema,
962
1356
  IdentifyRequestSchema,
1357
+ LOCALE_PATTERN,
963
1358
  LOGGED_IN_AUDIENCE,
1359
+ LocaleSchema,
1360
+ LocalizationSettingsSchema,
964
1361
  MAX_ANNOTATIONS,
965
1362
  MAX_COLLECTION_DEPTH,
966
1363
  MAX_COMPLAINT_ANSWER_LENGTH,
@@ -968,6 +1365,11 @@ export {
968
1365
  MAX_COMPLAINT_CHOICES,
969
1366
  MAX_COMPLAINT_FIELDS,
970
1367
  MAX_COMPLAINT_LENGTH,
1368
+ MAX_CUSTOM_CSS,
1369
+ MAX_FEEDBACK_COMMENT,
1370
+ MAX_FEEDBACK_DESCRIPTION,
1371
+ MAX_FEEDBACK_NOTE,
1372
+ MAX_FEEDBACK_TITLE,
971
1373
  MAX_MESSAGE_LENGTH,
972
1374
  MAX_PROPERTY_BYTES,
973
1375
  MAX_STACK_FRAMES,
@@ -981,8 +1383,10 @@ export {
981
1383
  MESSAGE_AUTHORS,
982
1384
  MessengerPageRequestSchema,
983
1385
  NETWORK_PLUGIN,
1386
+ NOISY_DATA_ATTR,
984
1387
  NormalizedPointSchema,
985
1388
  NormalizedRectSchema,
1389
+ PAGE_RULE_LIMITS,
986
1390
  PATH_ID_PATTERN,
987
1391
  PDF_BLOCK_CLASS,
988
1392
  PDF_MAX_PAGES,
@@ -992,6 +1396,8 @@ export {
992
1396
  PostMessageSchema,
993
1397
  ProjectThemeSchema,
994
1398
  PublishedGuideSchema,
1399
+ RC_MODULE_IDS,
1400
+ RC_MODULE_LABELS,
995
1401
  REPLAY_MAX_COMPRESSED_BYTES,
996
1402
  REPLAY_MAX_RAW_BYTES,
997
1403
  REPLY_TIMES,
@@ -1001,6 +1407,7 @@ export {
1001
1407
  ReplaySettingsSchema,
1002
1408
  RuleGroupSchema,
1003
1409
  RuleSchema,
1410
+ SCOUT_AGENT_ID,
1004
1411
  SCRIPT_STUB,
1005
1412
  SCRIPT_STUB_METHODS,
1006
1413
  SDK_API_VERSION,
@@ -1012,30 +1419,46 @@ export {
1012
1419
  SHARED_VERSION,
1013
1420
  SHOW_ME_CLASS,
1014
1421
  SHOW_ME_HREF_PREFIX,
1422
+ SNAPSHOT_ATTRS,
1423
+ SNAPSHOT_LIMITS,
1015
1424
  SOURCEMAP_MAX_FILES_PER_UPLOAD,
1016
1425
  SOURCEMAP_MAX_FILE_BYTES,
1017
1426
  STATUS_LEVELS,
1018
1427
  STEP_TYPES,
1019
1428
  SURVEY_QUESTION_TYPES,
1429
+ SdkAgentEventsSchema,
1020
1430
  SdkEventSchema,
1021
1431
  SelectorStrategySchema,
1432
+ SelectorSyntaxError,
1022
1433
  StartConversationSchema,
1023
1434
  StepBranchSchema,
1024
1435
  StepSchema,
1436
+ SubmitFeedbackSchema,
1025
1437
  SurveyConfigSchema,
1026
1438
  SurveyQuestionSchema,
1027
1439
  SurveyResponseRequestSchema,
1440
+ TAG_PROPERTY_LIMITS,
1028
1441
  TRIGGER_TYPES,
1029
1442
  TargetSchema,
1030
1443
  TriggerSchema,
1031
1444
  VIDEO_ATTRS,
1445
+ WCAG_AA_LARGE,
1446
+ WCAG_AA_TEXT,
1032
1447
  WS_MAX_MESSAGES_PER_SOCKET,
1033
1448
  WS_MAX_MESSAGE_BYTES,
1449
+ applyGuideTranslations,
1450
+ articleTextEntries,
1451
+ assignGuideVariant,
1452
+ baseLanguage,
1034
1453
  clamp,
1035
1454
  cleanLabel,
1036
1455
  compare,
1037
1456
  compareVersions,
1038
1457
  complaintReference,
1458
+ compoundMatches,
1459
+ contrastIssues,
1460
+ contrastRatio,
1461
+ cssSelectorError,
1039
1462
  defaultGuideConfig,
1040
1463
  defaultStep,
1041
1464
  describeCaptureStep,
@@ -1043,12 +1466,21 @@ export {
1043
1466
  emptyRuleGroup,
1044
1467
  evaluateRule,
1045
1468
  evaluateRules,
1469
+ evenWeights,
1470
+ experimentBucketRules,
1471
+ experimentSalt,
1472
+ featureCssSelectors,
1473
+ featureRuleError,
1474
+ featureRuleMatchesClick,
1475
+ feedbackReference,
1046
1476
  fingerprintError,
1047
1477
  firstNameFromTraits,
1048
1478
  fnv1a,
1049
1479
  foldPathIds,
1050
1480
  getPath,
1481
+ guideLocales,
1051
1482
  guidePlatforms,
1483
+ guideTextEntries,
1052
1484
  guidelyIdFromSelector,
1053
1485
  hasVideoMedia,
1054
1486
  isAllowedEmbedSrc,
@@ -1061,6 +1493,12 @@ export {
1061
1493
  isRuleGroup,
1062
1494
  isSafeMediaUrl,
1063
1495
  isVideoContentType,
1496
+ localeName,
1497
+ localizeAnnouncement,
1498
+ localizeArticle,
1499
+ localizeGuide,
1500
+ localizeResourceCenter,
1501
+ matchCssSelector,
1064
1502
  matchUrlPattern,
1065
1503
  matchesAudiences,
1066
1504
  matchesHelpQuery,
@@ -1068,16 +1506,37 @@ export {
1068
1506
  mediaMaxBytes,
1069
1507
  normalizeErrorMessage,
1070
1508
  normalizeFrameFile,
1509
+ normalizeLocale,
1510
+ normalizeSnapshot,
1511
+ orderedModules,
1071
1512
  pageLabel,
1072
1513
  pageName,
1514
+ pagePattern,
1515
+ pageRuleError,
1516
+ pageRuleMatches,
1517
+ pageRulesMatch,
1073
1518
  pageTerms,
1519
+ parseCssSelector,
1520
+ parseCsvRows,
1521
+ parseHexColor,
1074
1522
  parseStack,
1523
+ parseTranslationCsv,
1524
+ parseXliff,
1525
+ propertyAttributeAllowed,
1526
+ queryConditionRegex,
1075
1527
  randomId,
1528
+ readableTextOn,
1529
+ relativeLuminance,
1076
1530
  resolveCaptureSettings,
1531
+ resolveLocale,
1532
+ resourceCenterLocales,
1077
1533
  resourceCenterSections,
1534
+ resourceCenterTextEntries,
1078
1535
  rolloutBucket,
1079
1536
  safeRegExp,
1537
+ sanitizeCustomCss,
1080
1538
  sanitizeProperties,
1539
+ scopeCustomCss,
1081
1540
  screenPath,
1082
1541
  scriptSnippet,
1083
1542
  servedArticleAudiences,
@@ -1085,14 +1544,25 @@ export {
1085
1544
  showMeKeyFromHref,
1086
1545
  showMeKeys,
1087
1546
  slugify,
1547
+ snapshotFromSelector,
1548
+ stableStringify,
1088
1549
  stripOrigin,
1089
1550
  supportsPlatform,
1090
1551
  templateConfig,
1091
1552
  toEmbedUrl,
1553
+ toTranslationCsv,
1554
+ toXliff,
1555
+ translationCoverage,
1556
+ unreadAnnouncements,
1092
1557
  validateGuideConfig,
1558
+ variantProblems,
1559
+ variantRanges,
1560
+ visibleAnnouncements,
1093
1561
  visibleArticleIds,
1094
1562
  visibleButtons,
1095
1563
  visitorAudiences,
1564
+ visitorLocales,
1565
+ withExperimentBucket,
1096
1566
  withVisibility
1097
1567
  };
1098
1568
  //# sourceMappingURL=index.js.map