@syntrologie/runtime-sdk 0.2.20 → 0.2.21

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 (101) hide show
  1. package/CAPABILITIES.md +211 -0
  2. package/dist/api.js +7 -6
  3. package/dist/api.js.map +1 -1
  4. package/dist/bootstrap.d.ts +16 -2
  5. package/dist/bootstrap.js +63 -14
  6. package/dist/bootstrap.js.map +1 -1
  7. package/dist/context/ContextManager.d.ts +66 -0
  8. package/dist/context/ContextManager.js +268 -0
  9. package/dist/context/ContextManager.js.map +1 -0
  10. package/dist/context/index.d.ts +7 -0
  11. package/dist/context/index.js +7 -0
  12. package/dist/context/index.js.map +1 -0
  13. package/dist/context/schema.d.ts +360 -0
  14. package/dist/context/schema.js +50 -0
  15. package/dist/context/schema.js.map +1 -0
  16. package/dist/context/types.d.ts +101 -0
  17. package/dist/context/types.js +8 -0
  18. package/dist/context/types.js.map +1 -0
  19. package/dist/decisions/engine.d.ts +43 -0
  20. package/dist/decisions/engine.js +112 -0
  21. package/dist/decisions/engine.js.map +1 -0
  22. package/dist/decisions/index.d.ts +9 -0
  23. package/dist/decisions/index.js +10 -0
  24. package/dist/decisions/index.js.map +1 -0
  25. package/dist/decisions/schema.d.ts +2166 -0
  26. package/dist/decisions/schema.js +143 -0
  27. package/dist/decisions/schema.js.map +1 -0
  28. package/dist/decisions/strategies/rules.d.ts +24 -0
  29. package/dist/decisions/strategies/rules.js +152 -0
  30. package/dist/decisions/strategies/rules.js.map +1 -0
  31. package/dist/decisions/strategies/score.d.ts +10 -0
  32. package/dist/decisions/strategies/score.js +29 -0
  33. package/dist/decisions/strategies/score.js.map +1 -0
  34. package/dist/decisions/types.d.ts +242 -0
  35. package/dist/decisions/types.js +2 -0
  36. package/dist/decisions/types.js.map +1 -0
  37. package/dist/editorLoader.d.ts +10 -0
  38. package/dist/editorLoader.js +38 -0
  39. package/dist/editorLoader.js.map +1 -1
  40. package/dist/events/EventBus.d.ts +59 -0
  41. package/dist/events/EventBus.js +154 -0
  42. package/dist/events/EventBus.js.map +1 -0
  43. package/dist/events/index.d.ts +9 -0
  44. package/dist/events/index.js +10 -0
  45. package/dist/events/index.js.map +1 -0
  46. package/dist/events/normalizers/canvas.d.ts +67 -0
  47. package/dist/events/normalizers/canvas.js +116 -0
  48. package/dist/events/normalizers/canvas.js.map +1 -0
  49. package/dist/events/normalizers/posthog.d.ts +29 -0
  50. package/dist/events/normalizers/posthog.js +155 -0
  51. package/dist/events/normalizers/posthog.js.map +1 -0
  52. package/dist/events/schema.d.ts +70 -0
  53. package/dist/events/schema.js +30 -0
  54. package/dist/events/schema.js.map +1 -0
  55. package/dist/events/types.d.ts +73 -0
  56. package/dist/events/types.js +41 -0
  57. package/dist/events/types.js.map +1 -0
  58. package/dist/hooks/useShadowCanvasConfig.d.ts +5 -1
  59. package/dist/hooks/useShadowCanvasConfig.js +17 -3
  60. package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
  61. package/dist/index.d.ts +6 -0
  62. package/dist/index.js +15 -0
  63. package/dist/index.js.map +1 -1
  64. package/dist/overlays/schema.d.ts +48 -48
  65. package/dist/runtime.d.ts +86 -0
  66. package/dist/runtime.js +132 -0
  67. package/dist/runtime.js.map +1 -0
  68. package/dist/smart-canvas.esm.js +11 -11
  69. package/dist/smart-canvas.esm.js.map +4 -4
  70. package/dist/smart-canvas.js +1504 -17
  71. package/dist/smart-canvas.js.map +4 -4
  72. package/dist/smart-canvas.min.js +11 -11
  73. package/dist/smart-canvas.min.js.map +4 -4
  74. package/dist/state/StateStore.d.ts +41 -0
  75. package/dist/state/StateStore.js +170 -0
  76. package/dist/state/StateStore.js.map +1 -0
  77. package/dist/state/helpers/cooldowns.d.ts +7 -0
  78. package/dist/state/helpers/cooldowns.js +31 -0
  79. package/dist/state/helpers/cooldowns.js.map +1 -0
  80. package/dist/state/helpers/dismissals.d.ts +7 -0
  81. package/dist/state/helpers/dismissals.js +34 -0
  82. package/dist/state/helpers/dismissals.js.map +1 -0
  83. package/dist/state/helpers/frequency.d.ts +8 -0
  84. package/dist/state/helpers/frequency.js +43 -0
  85. package/dist/state/helpers/frequency.js.map +1 -0
  86. package/dist/state/index.d.ts +7 -0
  87. package/dist/state/index.js +7 -0
  88. package/dist/state/index.js.map +1 -0
  89. package/dist/state/schema.d.ts +49 -0
  90. package/dist/state/schema.js +25 -0
  91. package/dist/state/schema.js.map +1 -0
  92. package/dist/state/types.d.ts +137 -0
  93. package/dist/state/types.js +9 -0
  94. package/dist/state/types.js.map +1 -0
  95. package/dist/telemetry/adapters/posthog.d.ts +1 -1
  96. package/dist/telemetry/adapters/posthog.js +1 -1
  97. package/dist/telemetry/adapters/posthog.js.map +1 -1
  98. package/dist/types.d.ts +8 -0
  99. package/package.json +2 -2
  100. package/schema/canvas-config.schema.json +205 -0
  101. package/schema/runtime-context.schema.json +131 -0
@@ -0,0 +1,155 @@
1
+ import { StandardEvents, EVENT_SCHEMA_VERSION } from "../types";
2
+ /**
3
+ * Map PostHog event names to normalized event names.
4
+ */
5
+ const POSTHOG_EVENT_MAP = {
6
+ // Autocapture events
7
+ $autocapture: "ui.click", // Default autocapture is usually clicks
8
+ $click: StandardEvents.UI_CLICK,
9
+ $scroll: StandardEvents.UI_SCROLL,
10
+ $input: StandardEvents.UI_INPUT,
11
+ $change: StandardEvents.UI_CHANGE,
12
+ $submit: StandardEvents.UI_SUBMIT,
13
+ // Navigation events
14
+ $pageview: StandardEvents.NAV_PAGE_VIEW,
15
+ $pageleave: StandardEvents.NAV_PAGE_LEAVE,
16
+ // Session events
17
+ $session_start: "session.start",
18
+ // Identify events
19
+ $identify: "user.identify",
20
+ };
21
+ /**
22
+ * Extract the normalized event name from a PostHog event.
23
+ */
24
+ function getEventName(phEvent) {
25
+ var _a, _b;
26
+ const eventName = phEvent.event;
27
+ // Check mapped events
28
+ if (POSTHOG_EVENT_MAP[eventName]) {
29
+ return POSTHOG_EVENT_MAP[eventName];
30
+ }
31
+ // For autocapture, check the element type to determine the action
32
+ if (eventName === "$autocapture") {
33
+ const tagName = (_a = phEvent.properties) === null || _a === void 0 ? void 0 : _a.$tag_name;
34
+ const eventType = (_b = phEvent.properties) === null || _b === void 0 ? void 0 : _b.$event_type;
35
+ if (eventType === "submit")
36
+ return StandardEvents.UI_SUBMIT;
37
+ if (eventType === "change")
38
+ return StandardEvents.UI_CHANGE;
39
+ if (tagName === "input" || tagName === "textarea")
40
+ return StandardEvents.UI_INPUT;
41
+ return StandardEvents.UI_CLICK;
42
+ }
43
+ // For custom events, prefix with "posthog." to namespace them
44
+ if (!eventName.startsWith("$")) {
45
+ return `posthog.${eventName}`;
46
+ }
47
+ // Pass through other $ events as-is but normalized
48
+ return eventName.replace("$", "posthog.");
49
+ }
50
+ /**
51
+ * Extract relevant properties from a PostHog event.
52
+ */
53
+ function extractProps(phEvent) {
54
+ const props = {};
55
+ const phProps = phEvent.properties || {};
56
+ // Element info
57
+ if (phProps.$tag_name)
58
+ props.tagName = phProps.$tag_name;
59
+ if (phProps.$el_text)
60
+ props.elementText = phProps.$el_text;
61
+ if (phProps.$elements)
62
+ props.elements = phProps.$elements;
63
+ // URL/page info
64
+ if (phProps.$current_url)
65
+ props.url = phProps.$current_url;
66
+ if (phProps.$pathname)
67
+ props.pathname = phProps.$pathname;
68
+ if (phProps.$host)
69
+ props.host = phProps.$host;
70
+ // Device/viewport info
71
+ if (phProps.$viewport_width)
72
+ props.viewportWidth = phProps.$viewport_width;
73
+ if (phProps.$viewport_height)
74
+ props.viewportHeight = phProps.$viewport_height;
75
+ // Session info
76
+ if (phProps.$session_id)
77
+ props.sessionId = phProps.$session_id;
78
+ // Scroll-specific properties
79
+ if (phProps.$scroll_depth)
80
+ props.scrollDepth = phProps.$scroll_depth;
81
+ if (phProps.$scroll_percentage)
82
+ props.scrollPercentage = phProps.$scroll_percentage;
83
+ // Original event name
84
+ props.originalEvent = phEvent.event;
85
+ return props;
86
+ }
87
+ /**
88
+ * Normalize a PostHog event into a NormalizedEvent.
89
+ */
90
+ export function normalizePostHogEvent(phEvent) {
91
+ // Parse timestamp
92
+ let ts;
93
+ if (typeof phEvent.timestamp === "number") {
94
+ ts = phEvent.timestamp;
95
+ }
96
+ else if (typeof phEvent.timestamp === "string") {
97
+ ts = new Date(phEvent.timestamp).getTime();
98
+ }
99
+ else {
100
+ ts = Date.now();
101
+ }
102
+ return {
103
+ ts,
104
+ name: getEventName(phEvent),
105
+ source: "posthog",
106
+ props: extractProps(phEvent),
107
+ schemaVersion: EVENT_SCHEMA_VERSION,
108
+ };
109
+ }
110
+ /**
111
+ * Check if a PostHog event should be normalized.
112
+ * Filters out internal/system events that aren't useful for adaptives.
113
+ */
114
+ export function shouldNormalizeEvent(phEvent) {
115
+ const eventName = phEvent.event;
116
+ // Skip internal PostHog events
117
+ const skipEvents = [
118
+ "$feature_flag_called",
119
+ "$feature_flags",
120
+ "$groups",
121
+ "$groupidentify",
122
+ "$set",
123
+ "$set_once",
124
+ "$unset",
125
+ "$create_alias",
126
+ "$capture_metrics",
127
+ "$performance_event",
128
+ "$web_vitals",
129
+ "$exception",
130
+ "$dead_click",
131
+ "$heatmap",
132
+ ];
133
+ if (skipEvents.includes(eventName)) {
134
+ return false;
135
+ }
136
+ return true;
137
+ }
138
+ /**
139
+ * Create a function that hooks into PostHog's onCapture callback
140
+ * and normalizes events into the EventBus.
141
+ */
142
+ export function createPostHogNormalizer(publishFn) {
143
+ return (eventName, properties) => {
144
+ const phEvent = {
145
+ event: eventName,
146
+ properties,
147
+ timestamp: Date.now(),
148
+ };
149
+ if (shouldNormalizeEvent(phEvent)) {
150
+ const normalizedEvent = normalizePostHogEvent(phEvent);
151
+ publishFn(normalizedEvent);
152
+ }
153
+ };
154
+ }
155
+ //# sourceMappingURL=posthog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/events/normalizers/posthog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Zod schemas for event validation.
3
+ */
4
+ import { z } from "zod";
5
+ export declare const EventSourceZ: z.ZodEnum<["posthog", "canvas", "derived"]>;
6
+ export declare const NormalizedEventZ: z.ZodObject<{
7
+ ts: z.ZodNumber;
8
+ name: z.ZodString;
9
+ source: z.ZodEnum<["posthog", "canvas", "derived"]>;
10
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
11
+ schemaVersion: z.ZodString;
12
+ }, "strip", z.ZodTypeAny, {
13
+ source: "canvas" | "posthog" | "derived";
14
+ name: string;
15
+ ts: number;
16
+ schemaVersion: string;
17
+ props?: Record<string, unknown> | undefined;
18
+ }, {
19
+ source: "canvas" | "posthog" | "derived";
20
+ name: string;
21
+ ts: number;
22
+ schemaVersion: string;
23
+ props?: Record<string, unknown> | undefined;
24
+ }>;
25
+ export declare const EventFilterZ: z.ZodObject<{
26
+ names: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
27
+ patterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
28
+ sources: z.ZodOptional<z.ZodArray<z.ZodEnum<["posthog", "canvas", "derived"]>, "many">>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ names?: string[] | undefined;
31
+ patterns?: string[] | undefined;
32
+ sources?: ("canvas" | "posthog" | "derived")[] | undefined;
33
+ }, {
34
+ names?: string[] | undefined;
35
+ patterns?: string[] | undefined;
36
+ sources?: ("canvas" | "posthog" | "derived")[] | undefined;
37
+ }>;
38
+ /**
39
+ * Validate a NormalizedEvent object.
40
+ */
41
+ export declare function validateNormalizedEvent(data: unknown): z.SafeParseReturnType<{
42
+ source: "canvas" | "posthog" | "derived";
43
+ name: string;
44
+ ts: number;
45
+ schemaVersion: string;
46
+ props?: Record<string, unknown> | undefined;
47
+ }, {
48
+ source: "canvas" | "posthog" | "derived";
49
+ name: string;
50
+ ts: number;
51
+ schemaVersion: string;
52
+ props?: Record<string, unknown> | undefined;
53
+ }>;
54
+ /**
55
+ * Validate an EventFilter object.
56
+ */
57
+ export declare function validateEventFilter(data: unknown): z.SafeParseReturnType<{
58
+ names?: string[] | undefined;
59
+ patterns?: string[] | undefined;
60
+ sources?: ("canvas" | "posthog" | "derived")[] | undefined;
61
+ }, {
62
+ names?: string[] | undefined;
63
+ patterns?: string[] | undefined;
64
+ sources?: ("canvas" | "posthog" | "derived")[] | undefined;
65
+ }>;
66
+ /**
67
+ * Type inference from Zod schema.
68
+ */
69
+ export type NormalizedEventSchema = z.infer<typeof NormalizedEventZ>;
70
+ export type EventFilterSchema = z.infer<typeof EventFilterZ>;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Zod schemas for event validation.
3
+ */
4
+ import { z } from "zod";
5
+ export const EventSourceZ = z.enum(["posthog", "canvas", "derived"]);
6
+ export const NormalizedEventZ = z.object({
7
+ ts: z.number(),
8
+ name: z.string(),
9
+ source: EventSourceZ,
10
+ props: z.record(z.unknown()).optional(),
11
+ schemaVersion: z.string(),
12
+ });
13
+ export const EventFilterZ = z.object({
14
+ names: z.array(z.string()).optional(),
15
+ patterns: z.array(z.string()).optional(),
16
+ sources: z.array(EventSourceZ).optional(),
17
+ });
18
+ /**
19
+ * Validate a NormalizedEvent object.
20
+ */
21
+ export function validateNormalizedEvent(data) {
22
+ return NormalizedEventZ.safeParse(data);
23
+ }
24
+ /**
25
+ * Validate an EventFilter object.
26
+ */
27
+ export function validateEventFilter(data) {
28
+ return EventFilterZ.safeParse(data);
29
+ }
30
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/events/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Event Bus Types
3
+ *
4
+ * The EventBus provides a normalized event stream that unifies events from
5
+ * PostHog autocapture, Canvas events, and derived behavioral signals.
6
+ */
7
+ /**
8
+ * Event sources in the runtime.
9
+ */
10
+ export type EventSource = "posthog" | "canvas" | "derived";
11
+ /**
12
+ * Normalized event structure for the event bus.
13
+ */
14
+ export interface NormalizedEvent {
15
+ /** Event timestamp (milliseconds since epoch) */
16
+ ts: number;
17
+ /** Normalized event name (e.g., "ui.click", "canvas.opened") */
18
+ name: string;
19
+ /** Event source */
20
+ source: EventSource;
21
+ /** Event properties/payload */
22
+ props?: Record<string, unknown>;
23
+ /** Schema version for forward compatibility */
24
+ schemaVersion: string;
25
+ }
26
+ /**
27
+ * Event filter for subscriptions.
28
+ */
29
+ export interface EventFilter {
30
+ /** Filter by event names (exact match) */
31
+ names?: string[];
32
+ /** Filter by event name patterns (regex) */
33
+ patterns?: string[];
34
+ /** Filter by sources */
35
+ sources?: EventSource[];
36
+ }
37
+ /**
38
+ * Callback for event subscriptions.
39
+ */
40
+ export type EventCallback = (event: NormalizedEvent) => void;
41
+ /**
42
+ * Unsubscribe function returned by subscribe().
43
+ */
44
+ export type EventUnsubscribe = () => void;
45
+ /**
46
+ * Standard event names used by the runtime.
47
+ */
48
+ export declare const StandardEvents: {
49
+ readonly UI_CLICK: "ui.click";
50
+ readonly UI_SCROLL: "ui.scroll";
51
+ readonly UI_INPUT: "ui.input";
52
+ readonly UI_CHANGE: "ui.change";
53
+ readonly UI_SUBMIT: "ui.submit";
54
+ readonly NAV_PAGE_VIEW: "nav.page_view";
55
+ readonly NAV_PAGE_LEAVE: "nav.page_leave";
56
+ readonly CANVAS_OPENED: "canvas.opened";
57
+ readonly CANVAS_CLOSED: "canvas.closed";
58
+ readonly TILE_VIEWED: "tile.viewed";
59
+ readonly TILE_EXPANDED: "tile.expanded";
60
+ readonly TILE_COLLAPSED: "tile.collapsed";
61
+ readonly TILE_ACTION: "tile.action";
62
+ readonly OVERLAY_STARTED: "overlay.started";
63
+ readonly OVERLAY_COMPLETED: "overlay.completed";
64
+ readonly OVERLAY_DISMISSED: "overlay.dismissed";
65
+ readonly OVERLAY_STEP_VIEWED: "overlay.step_viewed";
66
+ readonly BEHAVIOR_RAGE_CLICK: "behavior.rage_click";
67
+ readonly BEHAVIOR_HESITATION: "behavior.hesitation";
68
+ readonly BEHAVIOR_CONFUSION: "behavior.confusion";
69
+ };
70
+ /**
71
+ * Current schema version for normalized events.
72
+ */
73
+ export declare const EVENT_SCHEMA_VERSION = "1.0.0";
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Event Bus Types
3
+ *
4
+ * The EventBus provides a normalized event stream that unifies events from
5
+ * PostHog autocapture, Canvas events, and derived behavioral signals.
6
+ */
7
+ /**
8
+ * Standard event names used by the runtime.
9
+ */
10
+ export const StandardEvents = {
11
+ // UI events (from PostHog autocapture)
12
+ UI_CLICK: "ui.click",
13
+ UI_SCROLL: "ui.scroll",
14
+ UI_INPUT: "ui.input",
15
+ UI_CHANGE: "ui.change",
16
+ UI_SUBMIT: "ui.submit",
17
+ // Navigation events
18
+ NAV_PAGE_VIEW: "nav.page_view",
19
+ NAV_PAGE_LEAVE: "nav.page_leave",
20
+ // Canvas events
21
+ CANVAS_OPENED: "canvas.opened",
22
+ CANVAS_CLOSED: "canvas.closed",
23
+ TILE_VIEWED: "tile.viewed",
24
+ TILE_EXPANDED: "tile.expanded",
25
+ TILE_COLLAPSED: "tile.collapsed",
26
+ TILE_ACTION: "tile.action",
27
+ // Overlay/tour events
28
+ OVERLAY_STARTED: "overlay.started",
29
+ OVERLAY_COMPLETED: "overlay.completed",
30
+ OVERLAY_DISMISSED: "overlay.dismissed",
31
+ OVERLAY_STEP_VIEWED: "overlay.step_viewed",
32
+ // Derived behavioral signals (Phase 3)
33
+ BEHAVIOR_RAGE_CLICK: "behavior.rage_click",
34
+ BEHAVIOR_HESITATION: "behavior.hesitation",
35
+ BEHAVIOR_CONFUSION: "behavior.confusion",
36
+ };
37
+ /**
38
+ * Current schema version for normalized events.
39
+ */
40
+ export const EVENT_SCHEMA_VERSION = "1.0.0";
41
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IAEtB,oBAAoB;IACpB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAEhC,gBAAgB;IAChB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAE1B,sBAAsB;IACtB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAE1C,uCAAuC;IACvC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
@@ -1,10 +1,14 @@
1
1
  import type { CanvasConfigFetcher, TileConfig, CanvasThemeConfig, LauncherConfig, RoutesConfig } from "../types";
2
2
  import type { Patch } from "../hostPatcher/core/types";
3
3
  import type { ExperimentClient } from "../experiments/types";
4
+ import type { SmartCanvasRuntime } from "../runtime";
4
5
  export interface UseShadowCanvasConfigOptions {
5
6
  fetcher: CanvasConfigFetcher;
6
7
  pollIntervalMs?: number;
8
+ /** @deprecated Use runtime instead */
7
9
  experiments?: ExperimentClient;
10
+ /** v2 Runtime for activation-based filtering */
11
+ runtime?: SmartCanvasRuntime;
8
12
  }
9
13
  export interface ShadowCanvasConfigState {
10
14
  tiles: TileConfig[];
@@ -26,4 +30,4 @@ export interface ShadowCanvasConfigState {
26
30
  /** Route filtering configuration */
27
31
  routes?: RoutesConfig;
28
32
  }
29
- export declare function useShadowCanvasConfig({ fetcher, pollIntervalMs, experiments, }: UseShadowCanvasConfigOptions): ShadowCanvasConfigState;
33
+ export declare function useShadowCanvasConfig({ fetcher, pollIntervalMs, experiments, runtime, }: UseShadowCanvasConfigOptions): ShadowCanvasConfigState;
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useEffect, useMemo, useState } from "react";
2
2
  const sortTiles = (tiles) => [...tiles].sort((a, b) => { var _a, _b; return ((_a = a.order) !== null && _a !== void 0 ? _a : 0) - ((_b = b.order) !== null && _b !== void 0 ? _b : 0); });
3
- export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experiments, }) {
3
+ export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experiments, runtime, }) {
4
4
  const [state, setState] = useState({
5
5
  tiles: [],
6
6
  isLoading: true,
@@ -10,7 +10,21 @@ export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experim
10
10
  setState((prev) => ({ ...prev, isLoading: true, error: undefined }));
11
11
  const response = await fetcher();
12
12
  let tiles = response.tiles || [];
13
- if (experiments) {
13
+ // Update runtime routes config if provided
14
+ if (runtime && response.routes) {
15
+ runtime.setRoutes(response.routes);
16
+ }
17
+ // Filter tiles based on activation config (v2) or experiments (v1)
18
+ if (runtime) {
19
+ // v2: Use runtime's filterTiles which handles both activation.strategy and legacy experiment
20
+ tiles = await runtime.filterTiles(tiles);
21
+ // Also apply legacy experiment filter for backward compatibility
22
+ if (experiments) {
23
+ tiles = tiles.filter((tile) => experiments.shouldRenderRectangle(tile));
24
+ }
25
+ }
26
+ else if (experiments) {
27
+ // v1: Use legacy experiment filtering only
14
28
  tiles = tiles.filter((tile) => experiments.shouldRenderRectangle(tile));
15
29
  }
16
30
  setState({
@@ -34,7 +48,7 @@ export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experim
34
48
  error: err instanceof Error ? err.message : "Unknown error",
35
49
  }));
36
50
  }
37
- }, [experiments, fetcher]);
51
+ }, [experiments, fetcher, runtime]);
38
52
  useEffect(() => {
39
53
  load();
40
54
  if (!pollIntervalMs)
@@ -1 +1 @@
1
- {"version":3,"file":"useShadowCanvasConfig.js","sourceRoot":"","sources":["../../src/hooks/useShadowCanvasConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAgClE,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE,CACxC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AAE7D,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,cAAc,GAAG,KAAK,EACtB,WAAW,GACkB;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA0B;QAC1D,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC;YACH,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,GAAiB,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,QAAQ,CAAC;gBACP,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;gBACvB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClB,GAAG,IAAI;gBACP,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC5D,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"useShadowCanvasConfig.js","sourceRoot":"","sources":["../../src/hooks/useShadowCanvasConfig.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,12 @@ export * from "./overlays/types";
15
15
  export * from "./overlays/schema";
16
16
  export * from "./overlays/fetcher";
17
17
  export * from "./metrics";
18
+ export * from "./context";
19
+ export * from "./events";
20
+ export * from "./state";
21
+ export * from "./decisions";
22
+ export { createSmartCanvasRuntime, RUNTIME_VERSION, } from "./runtime";
23
+ export type { SmartCanvasRuntime, SmartCanvasRuntimeOptions, RuntimeMode, } from "./runtime";
18
24
  export { Syntro } from "./bootstrap";
19
25
  export type { SyntroInitOptions, SyntroInitResult } from "./bootstrap";
20
26
  export { encodeToken, decodeToken } from "./token";
package/dist/index.js CHANGED
@@ -16,7 +16,22 @@ export * from "./overlays/schema";
16
16
  export * from "./overlays/fetcher";
17
17
  // Metrics for session-based targeting
18
18
  export * from "./metrics";
19
+ // ============================================================================
20
+ // v2 Runtime Modules
21
+ // ============================================================================
22
+ // Context - Page/session/viewport state management
23
+ export * from "./context";
24
+ // Events - Normalized event stream
25
+ export * from "./events";
26
+ // State - Persistent state storage with helpers
27
+ export * from "./state";
28
+ // Decisions - Strategy-based conditional rendering
29
+ export * from "./decisions";
30
+ // Unified runtime
31
+ export { createSmartCanvasRuntime, RUNTIME_VERSION, } from "./runtime";
32
+ // ============================================================================
19
33
  // Single-token initialization
34
+ // ============================================================================
20
35
  export { Syntro } from "./bootstrap";
21
36
  export { encodeToken, decodeToken } from "./token";
22
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,sCAAsC;AACtC,cAAc,WAAW,CAAC;AAE1B,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,sCAAsC;AACtC,cAAc,WAAW,CAAC;AAE1B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,mDAAmD;AACnD,cAAc,WAAW,CAAC;AAE1B,mCAAmC;AACnC,cAAc,UAAU,CAAC;AAEzB,gDAAgD;AAChD,cAAc,SAAS,CAAC;AAExB,mDAAmD;AACnD,cAAc,aAAa,CAAC;AAE5B,kBAAkB;AAClB,OAAO,EACL,wBAAwB,EACxB,eAAe,GAChB,MAAM,WAAW,CAAC;AAOnB,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}