@syntrologie/adapt-faq 2.8.0-canary.31 → 2.8.0-canary.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/FAQWidgetLit.d.ts +85 -0
  2. package/dist/FAQWidgetLit.d.ts.map +1 -0
  3. package/dist/FAQWidgetLit.editable.d.ts +154 -0
  4. package/dist/FAQWidgetLit.editable.d.ts.map +1 -0
  5. package/dist/answerRendering.d.ts +4 -0
  6. package/dist/answerRendering.d.ts.map +1 -0
  7. package/dist/chunk-5WRI5ZAA.js +31 -0
  8. package/dist/chunk-5WRI5ZAA.js.map +7 -0
  9. package/dist/chunk-IGCYULL7.js +223 -0
  10. package/dist/chunk-IGCYULL7.js.map +7 -0
  11. package/dist/chunk-KRKRB4OL.js +598 -0
  12. package/dist/chunk-KRKRB4OL.js.map +7 -0
  13. package/dist/editor.d.ts +60 -33
  14. package/dist/editor.d.ts.map +1 -1
  15. package/dist/editor.js +5054 -313
  16. package/dist/editor.js.map +7 -0
  17. package/dist/faq-item-editor.d.ts +33 -0
  18. package/dist/faq-item-editor.d.ts.map +1 -0
  19. package/dist/faq-styles.d.ts +3 -1
  20. package/dist/faq-styles.d.ts.map +1 -1
  21. package/dist/faq-types.d.ts +4 -0
  22. package/dist/faq-types.d.ts.map +1 -1
  23. package/dist/runtime.d.ts +17 -5
  24. package/dist/runtime.d.ts.map +1 -1
  25. package/dist/runtime.js +841 -64
  26. package/dist/runtime.js.map +7 -0
  27. package/dist/schema.d.ts +1174 -555
  28. package/dist/schema.d.ts.map +1 -1
  29. package/dist/schema.js +290 -207
  30. package/dist/schema.js.map +7 -0
  31. package/dist/types.d.ts +19 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/node_modules/marked/LICENSE.md +44 -0
  34. package/node_modules/marked/README.md +107 -0
  35. package/node_modules/marked/bin/main.js +283 -0
  36. package/node_modules/marked/bin/marked.js +16 -0
  37. package/node_modules/marked/lib/marked.d.ts +759 -0
  38. package/node_modules/marked/lib/marked.esm.js +72 -0
  39. package/node_modules/marked/lib/marked.esm.js.map +7 -0
  40. package/node_modules/marked/lib/marked.umd.js +74 -0
  41. package/node_modules/marked/lib/marked.umd.js.map +7 -0
  42. package/node_modules/marked/man/marked.1 +113 -0
  43. package/node_modules/marked/man/marked.1.md +93 -0
  44. package/node_modules/marked/package.json +103 -0
  45. package/package.json +13 -18
  46. package/dist/FAQWidget.d.ts +0 -33
  47. package/dist/FAQWidget.d.ts.map +0 -1
  48. package/dist/FAQWidget.js +0 -388
  49. package/dist/cdn.d.ts +0 -70
  50. package/dist/cdn.d.ts.map +0 -1
  51. package/dist/cdn.js +0 -46
  52. package/dist/executors.js +0 -150
  53. package/dist/faq-styles.js +0 -204
  54. package/dist/faq-types.js +0 -7
  55. package/dist/state.js +0 -132
  56. package/dist/summarize.js +0 -62
  57. package/dist/types.js +0 -17
  58. package/node_modules/@syntrologie/sdk-contracts/dist/index.d.ts +0 -129
  59. package/node_modules/@syntrologie/sdk-contracts/dist/index.js +0 -15
  60. package/node_modules/@syntrologie/sdk-contracts/dist/schemas.d.ts +0 -2225
  61. package/node_modules/@syntrologie/sdk-contracts/dist/schemas.js +0 -162
  62. package/node_modules/@syntrologie/sdk-contracts/package.json +0 -33
@@ -1,204 +0,0 @@
1
- /**
2
- * Adaptive FAQ - Styles
3
- *
4
- * BaseStyles object (font, layout, colors, animations) and theme integration
5
- * for the FAQWidget component.
6
- */
7
- import { purple, slateGrey } from '@syntro/design-system/tokens';
8
- // ============================================================================
9
- // Base Styles
10
- // ============================================================================
11
- export const baseStyles = {
12
- container: {
13
- fontFamily: 'var(--sc-font-family, system-ui, -apple-system, sans-serif)',
14
- maxWidth: '800px',
15
- margin: '0 auto',
16
- },
17
- searchWrapper: {
18
- marginBottom: '8px',
19
- },
20
- searchInput: {
21
- width: '100%',
22
- padding: '12px 16px',
23
- borderRadius: '8px',
24
- fontSize: '14px',
25
- outline: 'none',
26
- transition: 'border-color 0.15s ease',
27
- backgroundColor: 'var(--sc-content-search-background)',
28
- color: 'var(--sc-content-search-color)',
29
- },
30
- accordion: {
31
- display: 'flex',
32
- flexDirection: 'column',
33
- gap: 'var(--sc-content-item-gap, 6px)',
34
- },
35
- item: {
36
- borderRadius: 'var(--sc-content-border-radius, 8px)',
37
- overflow: 'hidden',
38
- transition: 'box-shadow 0.15s ease',
39
- },
40
- question: {
41
- width: '100%',
42
- padding: 'var(--sc-content-item-padding, 12px 16px)',
43
- display: 'flex',
44
- alignItems: 'center',
45
- justifyContent: 'space-between',
46
- border: 'none',
47
- cursor: 'pointer',
48
- fontSize: 'var(--sc-content-item-font-size, 15px)',
49
- fontWeight: 500,
50
- textAlign: 'left',
51
- transition: 'background-color 0.15s ease',
52
- },
53
- chevron: {
54
- fontSize: '20px',
55
- transition: 'transform 0.2s ease',
56
- color: 'var(--sc-content-chevron-color, currentColor)',
57
- },
58
- answer: {
59
- padding: 'var(--sc-content-body-padding, 0 16px 12px 16px)',
60
- fontSize: 'var(--sc-content-body-font-size, 14px)',
61
- lineHeight: 1.6,
62
- overflow: 'hidden',
63
- transition: 'max-height 0.2s ease, padding 0.2s ease',
64
- },
65
- category: {
66
- display: 'inline-block',
67
- fontSize: '11px',
68
- fontWeight: 600,
69
- textTransform: 'uppercase',
70
- letterSpacing: '0.05em',
71
- padding: '4px 8px',
72
- borderRadius: '4px',
73
- marginBottom: '8px',
74
- },
75
- categoryHeader: {
76
- fontSize: 'var(--sc-content-category-font-size, 12px)',
77
- fontWeight: 700,
78
- textTransform: 'uppercase',
79
- letterSpacing: '0.05em',
80
- padding: 'var(--sc-content-category-padding, 8px 4px 4px 4px)',
81
- marginTop: 'var(--sc-content-category-gap, 4px)',
82
- },
83
- feedback: {
84
- display: 'flex',
85
- alignItems: 'center',
86
- gap: '8px',
87
- marginTop: '12px',
88
- paddingTop: '10px',
89
- borderTop: '1px solid rgba(0, 0, 0, 0.08)',
90
- fontSize: '13px',
91
- },
92
- feedbackButton: {
93
- background: 'none',
94
- border: '1px solid transparent',
95
- cursor: 'pointer',
96
- fontSize: '16px',
97
- padding: '4px 8px',
98
- borderRadius: '4px',
99
- transition: 'background-color 0.15s ease, border-color 0.15s ease',
100
- },
101
- feedbackButtonSelected: {
102
- borderColor: 'rgba(0, 0, 0, 0.2)',
103
- backgroundColor: 'rgba(0, 0, 0, 0.04)',
104
- },
105
- emptyState: {
106
- textAlign: 'center',
107
- padding: '48px 24px',
108
- fontSize: '14px',
109
- },
110
- noResults: {
111
- textAlign: 'center',
112
- padding: '32px 16px',
113
- fontSize: '14px',
114
- },
115
- };
116
- // ============================================================================
117
- // Theme Styles
118
- // ============================================================================
119
- export const themeStyles = {
120
- light: {
121
- container: {
122
- backgroundColor: 'transparent',
123
- color: 'inherit',
124
- },
125
- searchInput: {
126
- border: `1px solid ${slateGrey[11]}`,
127
- },
128
- item: {
129
- backgroundColor: 'var(--sc-content-background)',
130
- borderTop: 'var(--sc-content-border)',
131
- borderRight: 'var(--sc-content-border)',
132
- borderBottom: 'var(--sc-content-border)',
133
- borderLeft: 'var(--sc-content-border)',
134
- },
135
- itemExpanded: {
136
- boxShadow: '0 4px 12px rgba(0, 0, 0, 0.08)',
137
- },
138
- question: {
139
- backgroundColor: 'transparent',
140
- color: 'var(--sc-content-text-color)',
141
- },
142
- questionHover: {
143
- backgroundColor: 'var(--sc-content-background-hover)',
144
- },
145
- answer: {
146
- color: 'var(--sc-content-text-secondary-color)',
147
- },
148
- category: {
149
- backgroundColor: purple[8],
150
- color: purple[2],
151
- },
152
- categoryHeader: {
153
- color: slateGrey[7],
154
- },
155
- emptyState: {
156
- color: slateGrey[8],
157
- },
158
- feedbackPrompt: {
159
- color: slateGrey[7],
160
- },
161
- },
162
- dark: {
163
- container: {
164
- backgroundColor: 'transparent',
165
- color: 'inherit',
166
- },
167
- searchInput: {
168
- border: `1px solid ${slateGrey[5]}`,
169
- },
170
- item: {
171
- backgroundColor: 'var(--sc-content-background)',
172
- borderTop: 'var(--sc-content-border)',
173
- borderRight: 'var(--sc-content-border)',
174
- borderBottom: 'var(--sc-content-border)',
175
- borderLeft: 'var(--sc-content-border)',
176
- },
177
- itemExpanded: {
178
- boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',
179
- },
180
- question: {
181
- backgroundColor: 'transparent',
182
- color: 'var(--sc-content-text-color)',
183
- },
184
- questionHover: {
185
- backgroundColor: 'var(--sc-content-background-hover)',
186
- },
187
- answer: {
188
- color: 'var(--sc-content-text-secondary-color)',
189
- },
190
- category: {
191
- backgroundColor: purple[0],
192
- color: purple[6],
193
- },
194
- categoryHeader: {
195
- color: slateGrey[8],
196
- },
197
- emptyState: {
198
- color: slateGrey[7],
199
- },
200
- feedbackPrompt: {
201
- color: slateGrey[8],
202
- },
203
- },
204
- };
package/dist/faq-types.js DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * Adaptive FAQ - Widget Runtime & Props Types
3
- *
4
- * Runtime interface, component props, and helper type definitions
5
- * used by the FAQWidget component.
6
- */
7
- export {};
package/dist/state.js DELETED
@@ -1,132 +0,0 @@
1
- /**
2
- * Adaptive FAQ - Shared Widget State Store
3
- *
4
- * Lightweight reactive store that executors and the widget both read/write.
5
- * Implements an observer pattern so UI components can subscribe to changes.
6
- */
7
- // ============================================================================
8
- // Factory
9
- // ============================================================================
10
- export function createFAQStore(initialItems) {
11
- // Internal mutable state ---------------------------------------------------
12
- let state = {
13
- expandedItems: new Set(),
14
- items: [...initialItems],
15
- searchQuery: '',
16
- collapsedCategories: new Set(),
17
- feedbackState: new Map(),
18
- };
19
- const listeners = new Set();
20
- // Notify all subscribers with the current state snapshot -------------------
21
- function notify() {
22
- for (const listener of listeners) {
23
- listener(state);
24
- }
25
- }
26
- // Helpers to produce new state objects (immutable from the outside) --------
27
- function setState(patch) {
28
- state = { ...state, ...patch };
29
- notify();
30
- }
31
- // --- Public API -----------------------------------------------------------
32
- function getState() {
33
- return state;
34
- }
35
- function expand(itemId) {
36
- const next = new Set(state.expandedItems);
37
- next.add(itemId);
38
- setState({ expandedItems: next });
39
- }
40
- function collapse(itemId) {
41
- const next = new Set(state.expandedItems);
42
- next.delete(itemId);
43
- setState({ expandedItems: next });
44
- }
45
- function toggle(itemId) {
46
- if (state.expandedItems.has(itemId)) {
47
- collapse(itemId);
48
- }
49
- else {
50
- expand(itemId);
51
- }
52
- }
53
- function addItems(items, position) {
54
- const next = position === 'prepend' ? [...items, ...state.items] : [...state.items, ...items];
55
- setState({ items: next });
56
- }
57
- function removeItem(itemId) {
58
- setState({
59
- items: state.items.filter((i) => i.config.id !== itemId),
60
- });
61
- }
62
- function reorderItems(order) {
63
- const orderSet = new Set(order);
64
- const itemMap = new Map(state.items.map((i) => [i.config.id, i]));
65
- // Place items in the specified order first
66
- const ordered = [];
67
- for (const id of order) {
68
- const item = itemMap.get(id);
69
- if (item) {
70
- ordered.push(item);
71
- }
72
- }
73
- // Append any items that were not listed in the order array
74
- for (const item of state.items) {
75
- if (!orderSet.has(item.config.id)) {
76
- ordered.push(item);
77
- }
78
- }
79
- setState({ items: ordered });
80
- }
81
- function replaceItems(items) {
82
- setState({ items: [...items] });
83
- }
84
- function setFeedback(itemId, value) {
85
- const next = new Map(state.feedbackState);
86
- next.set(itemId, value);
87
- setState({ feedbackState: next });
88
- }
89
- function setSearchQuery(query) {
90
- setState({ searchQuery: query });
91
- }
92
- function toggleCategory(category) {
93
- const next = new Set(state.collapsedCategories);
94
- if (next.has(category)) {
95
- next.delete(category);
96
- }
97
- else {
98
- next.add(category);
99
- }
100
- setState({ collapsedCategories: next });
101
- }
102
- function findByQuestion(text) {
103
- const needle = text.toLowerCase();
104
- for (const item of state.items) {
105
- if (item.config.question.toLowerCase().includes(needle)) {
106
- return item;
107
- }
108
- }
109
- return null;
110
- }
111
- function subscribe(listener) {
112
- listeners.add(listener);
113
- return () => {
114
- listeners.delete(listener);
115
- };
116
- }
117
- return {
118
- getState,
119
- expand,
120
- collapse,
121
- toggle,
122
- addItems,
123
- removeItem,
124
- reorderItems,
125
- replaceItems,
126
- setFeedback,
127
- setSearchQuery,
128
- toggleCategory,
129
- findByQuestion,
130
- subscribe,
131
- };
132
- }
package/dist/summarize.js DELETED
@@ -1,62 +0,0 @@
1
- /**
2
- * Human-readable summary generation for FAQ items.
3
- * Pure functions — no DOM access, just string formatting.
4
- */
5
- const MAX_Q_LEN = 50;
6
- const MAX_A_LEN = 40;
7
- function truncate(text, max) {
8
- if (text.length <= max)
9
- return text;
10
- return `${text.slice(0, max).trimEnd()}...`;
11
- }
12
- function stripHtml(html) {
13
- return html.replace(/<[^>]*>/g, '').trim();
14
- }
15
- function getAnswerPreview(answer) {
16
- if (typeof answer === 'string')
17
- return answer;
18
- if (answer.type === 'rich')
19
- return stripHtml(answer.html);
20
- return answer.content.replace(/[*_#`]/g, '').trim();
21
- }
22
- function isRuleStrategy(s) {
23
- return (typeof s === 'object' &&
24
- s !== null &&
25
- s.type === 'rules' &&
26
- Array.isArray(s.rules));
27
- }
28
- /**
29
- * Parse a triggerWhen strategy into a human-readable trigger description.
30
- */
31
- export function describeTrigger(triggerWhen) {
32
- if (!triggerWhen)
33
- return 'All pages';
34
- if (!isRuleStrategy(triggerWhen))
35
- return 'All pages';
36
- const pages = [];
37
- const anchors = [];
38
- for (const rule of triggerWhen.rules) {
39
- for (const condition of rule.conditions) {
40
- if (condition.type === 'page_url' && typeof condition.url === 'string') {
41
- pages.push(condition.url);
42
- }
43
- if (condition.type === 'anchor_visible' && typeof condition.anchorId === 'string') {
44
- anchors.push(condition.anchorId);
45
- }
46
- }
47
- }
48
- const parts = [];
49
- if (pages.length > 0)
50
- parts.push(pages[0]);
51
- if (anchors.length > 0)
52
- parts.push(anchors[0]);
53
- return parts.length > 0 ? parts.join(' \u00b7 ') : 'All pages';
54
- }
55
- /**
56
- * Generate a one-liner summary for an FAQ item.
57
- */
58
- export function summarizeFAQItem(item) {
59
- const q = truncate(item.config.question, MAX_Q_LEN);
60
- const a = truncate(getAnswerPreview(item.config.answer), MAX_A_LEN);
61
- return `Q: "${q}" \u2014 ${a}`;
62
- }
package/dist/types.js DELETED
@@ -1,17 +0,0 @@
1
- /**
2
- * Adaptive FAQ - Types
3
- *
4
- * Type definitions for the FAQ accordion adaptive.
5
- * Demonstrates compositional action pattern with per-item triggerWhen.
6
- */
7
- // ============================================================================
8
- // Action Namespace
9
- // ============================================================================
10
- export const ACTION_NAMESPACE = 'faq';
11
- /**
12
- * Returns true if the action belongs to this adaptive package.
13
- * Uses prefix matching so new kinds (e.g. faq:category) are automatically included.
14
- */
15
- export function isOwnAction(action) {
16
- return action.kind.startsWith(`${ACTION_NAMESPACE}:`);
17
- }
@@ -1,129 +0,0 @@
1
- /**
2
- * @syntrologie/sdk-contracts
3
- *
4
- * Shared TypeScript contracts between runtime-sdk and adaptive packages.
5
- * Executor types + shared Zod schemas for decision strategies and conditions.
6
- */
7
- export { AnchorIdZ, AnchorVisibleConditionZ, type ConditionSchema, ConditionZ, CooldownActiveConditionZ, CounterDefZ, type DecisionStrategySchema, DecisionStrategyZ, DismissedConditionZ, EventCountConditionZ, EventOccurredConditionZ, type EventScopeSchema, EventScopeZ, ExternalStrategyZ, FrequencyLimitConditionZ, MatchOpZ, ModelStrategyZ, NotifyZ, PageUrlConditionZ, RouteConditionZ, type RuleSchema, RuleStrategyZ, RuleZ, ScoreStrategyZ, SessionMetricConditionZ, StateEqualsConditionZ, type TriggerWhenSchema, TriggerWhenZ, ViewportConditionZ, } from './schemas.js';
8
- /** Route-scoped anchor identifier */
9
- export interface AnchorId {
10
- /** CSS selector for the anchor element */
11
- selector: string;
12
- /** Route pattern(s) where this anchor applies */
13
- route: string | string[];
14
- }
15
- /** Highlight style configuration */
16
- export interface HighlightStyle {
17
- /** Ring color (default: "#5b8cff") */
18
- color?: string;
19
- /** Backdrop scrim opacity 0-1 (default: 0.55) */
20
- scrimOpacity?: number;
21
- /** Padding between element and ring (default: 12px) */
22
- paddingPx?: number;
23
- /** Ring corner radius (default: 12px) */
24
- radiusPx?: number;
25
- }
26
- /** Badge position relative to anchor */
27
- export type BadgePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
28
- /** CTA button configuration for tooltips/modals */
29
- export interface CtaButton {
30
- label: string;
31
- actionId: string;
32
- primary?: boolean;
33
- }
34
- /** Modal content configuration */
35
- export interface ModalContent {
36
- title?: string;
37
- body: string;
38
- }
39
- /** Tooltip content configuration (action typed as unknown — packages with ActionStep keep local narrowing) */
40
- export interface TooltipContent {
41
- title?: string;
42
- body: string;
43
- cta?: {
44
- label: string;
45
- action: unknown;
46
- };
47
- ctaButtons?: CtaButton[];
48
- }
49
- /** Tooltip trigger mode */
50
- export type TooltipTrigger = 'immediate' | 'hover' | 'click';
51
- /** Tooltip lifecycle — when the action completes (for sequences) */
52
- export type TooltipWaitFor = 'dismissed' | 'cta-click' | `timeout:${number}`;
53
- /** Modal lifecycle — when the action completes (for sequences) */
54
- export type ModalWaitFor = 'dismissed' | 'cta-click' | `timeout:${number}`;
55
- /** Position where HTML/content should be inserted */
56
- export type InsertPosition = 'before' | 'after' | 'prepend' | 'append' | 'replace';
57
- /** Deep-link target for opening a specific tile/item in the canvas sidebar */
58
- export interface DeepLink {
59
- tileId: string;
60
- itemId?: string;
61
- }
62
- /**
63
- * Scoped event filtering for event_count conditions.
64
- * The adaptive registers a predicate built from this scope.
65
- */
66
- export interface EventScope {
67
- /** Event names to count */
68
- events: string[];
69
- /** URL path substring filter */
70
- urlContains?: string;
71
- /** Exact prop matching (e.g. { tagName: "a" }) */
72
- props?: Record<string, string | number | boolean>;
73
- }
74
- /** Props passed to editor panel components by the ModularEditorPanel host. */
75
- export interface EditorPanelProps {
76
- config: Record<string, unknown>;
77
- onChange: (config: Record<string, unknown>) => void;
78
- editor: {
79
- setDirty: (dirty: boolean) => void;
80
- navigateHome: () => Promise<boolean>;
81
- save: () => Promise<void>;
82
- publish: (captureScreenshot?: boolean) => Promise<void>;
83
- /** Navigate the target page to a different route (preserves editor params). */
84
- navigateTo: (route: string) => Promise<void>;
85
- /** Show a persistent blue highlight on the element matching this selector. */
86
- highlightElement: (selector: string) => void;
87
- /** Remove the persistent element highlight. */
88
- clearHighlight: () => void;
89
- /** Get the current page route (pathname). */
90
- getCurrentRoute: () => string;
91
- /** Push a temporary config to the live page preview without saving to state. */
92
- previewConfig: (config: Record<string, unknown>) => void;
93
- /** Global before/after preview mode set by the panel's toggle. */
94
- previewMode?: 'before' | 'after';
95
- /** Flat action index to open in edit mode (from accordion navigation). */
96
- initialEditKey?: string;
97
- /** Open the editor in create mode. */
98
- initialCreate?: boolean;
99
- /** Clear the initial navigation state (call after consuming). */
100
- clearInitialState?: () => void;
101
- /** Get dismissed keys persisted in navigation context. */
102
- getDismissedKeys?: () => Set<string>;
103
- /** Sync dismissed keys back to navigation context. */
104
- setDismissedKeys?: (keys: Set<string>) => void;
105
- /** Register a back handler shown in the panel header. Pass null to clear. */
106
- setBackHandler?: (handler: (() => void) | null) => void;
107
- };
108
- platformClient?: unknown;
109
- }
110
- /** Cleanup function returned by executors */
111
- export type ExecutorCleanup = () => void | Promise<void>;
112
- /** Update function for actions that support in-place updates */
113
- export type ExecutorUpdate = (changes: Record<string, unknown>) => void | Promise<void>;
114
- /** Result returned by action executors */
115
- export interface ExecutorResult {
116
- cleanup: ExecutorCleanup;
117
- updateFn?: ExecutorUpdate;
118
- }
119
- /** Context passed to action executors by the runtime */
120
- export interface ExecutorContext {
121
- overlayRoot: HTMLElement;
122
- resolveAnchor: (anchorId: AnchorId) => HTMLElement | null;
123
- waitForAnchor?: (anchorId: AnchorId, timeoutMs?: number) => Promise<HTMLElement | null>;
124
- generateId: () => string;
125
- publishEvent: (name: string, props?: Record<string, unknown>) => void;
126
- adaptiveId?: string;
127
- }
128
- /** Executor function signature */
129
- export type ActionExecutor<T = unknown> = (action: T, context: ExecutorContext) => Promise<ExecutorResult>;
@@ -1,15 +0,0 @@
1
- /**
2
- * @syntrologie/sdk-contracts
3
- *
4
- * Shared TypeScript contracts between runtime-sdk and adaptive packages.
5
- * Executor types + shared Zod schemas for decision strategies and conditions.
6
- */
7
- export {
8
- // Anchor ID schema
9
- AnchorIdZ, AnchorVisibleConditionZ, ConditionZ, CooldownActiveConditionZ, CounterDefZ, DecisionStrategyZ, DismissedConditionZ, EventCountConditionZ, EventOccurredConditionZ,
10
- // Shared schemas
11
- EventScopeZ, ExternalStrategyZ, FrequencyLimitConditionZ, MatchOpZ, ModelStrategyZ, NotifyZ,
12
- // Condition schemas
13
- PageUrlConditionZ, RouteConditionZ, RuleStrategyZ,
14
- // Strategy schemas
15
- RuleZ, ScoreStrategyZ, SessionMetricConditionZ, StateEqualsConditionZ, TriggerWhenZ, ViewportConditionZ, } from './schemas.js';