@syntrologie/runtime-sdk 1.0.1 → 2.0.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/CAPABILITIES.md +630 -463
- package/README.md +285 -62
- package/dist/RuntimeProvider.d.ts +51 -0
- package/dist/RuntimeProvider.js +114 -0
- package/dist/RuntimeProvider.js.map +1 -0
- package/dist/SmartCanvasApp.d.ts +9 -3
- package/dist/SmartCanvasApp.js +36 -38
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/actions/ActionEngine.d.ts +11 -0
- package/dist/actions/ActionEngine.js +274 -0
- package/dist/actions/ActionEngine.js.map +1 -0
- package/dist/actions/executors/index.d.ts +117 -0
- package/dist/actions/executors/index.js +242 -0
- package/dist/actions/executors/index.js.map +1 -0
- package/dist/actions/executors/tour.d.ts +18 -0
- package/dist/actions/executors/tour.js +332 -0
- package/dist/actions/executors/tour.js.map +1 -0
- package/dist/actions/index.d.ts +10 -0
- package/dist/actions/index.js +12 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/types.d.ts +399 -0
- package/dist/actions/types.js +8 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/validation.d.ts +14 -0
- package/dist/actions/validation.js +603 -0
- package/dist/actions/validation.js.map +1 -0
- package/dist/api.d.ts +32 -18
- package/dist/api.js +56 -39
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +31 -0
- package/dist/apps/AppContext.js +93 -0
- package/dist/apps/AppContext.js.map +1 -0
- package/dist/apps/AppLoader.d.ts +84 -0
- package/dist/apps/AppLoader.js +256 -0
- package/dist/apps/AppLoader.js.map +1 -0
- package/dist/apps/AppRegistry.d.ts +102 -0
- package/dist/apps/AppRegistry.js +317 -0
- package/dist/apps/AppRegistry.js.map +1 -0
- package/dist/apps/examples/gamification-app.example.d.ts +305 -0
- package/dist/apps/examples/gamification-app.example.js +329 -0
- package/dist/apps/examples/gamification-app.example.js.map +1 -0
- package/dist/apps/faq/index.js +11 -0
- package/dist/apps/faq/index.js.map +7 -0
- package/dist/apps/gamification/index.js +2 -0
- package/dist/apps/gamification/index.js.map +7 -0
- package/dist/apps/index.d.ts +15 -0
- package/dist/apps/index.js +17 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/nav/index.js +11 -0
- package/dist/apps/nav/index.js.map +7 -0
- package/dist/apps/types.d.ts +231 -0
- package/dist/apps/types.js +8 -0
- package/dist/apps/types.js.map +1 -0
- package/dist/bootstrap.d.ts +24 -0
- package/dist/bootstrap.js +133 -33
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.js +36 -9
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.js +37 -18
- package/dist/components/TileCard.js.map +1 -1
- package/dist/context/schema.d.ts +16 -16
- package/dist/decisions/schema.d.ts +96 -96
- package/dist/earlyPatcher.d.ts +8 -20
- package/dist/earlyPatcher.js +13 -62
- package/dist/earlyPatcher.js.map +1 -1
- package/dist/editorLoader.d.ts +2 -0
- package/dist/editorLoader.js +52 -7
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/normalizers/posthog.d.ts +24 -0
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +8 -8
- package/dist/events/types.d.ts +6 -0
- package/dist/events/types.js +8 -0
- package/dist/events/types.js.map +1 -1
- package/dist/hooks/useCanvasOverlays.d.ts +4 -1
- package/dist/hooks/useCanvasOverlays.js +53 -6
- package/dist/hooks/useCanvasOverlays.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +3 -7
- package/dist/hooks/useShadowCanvasConfig.js +2 -3
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/overlays/schema.d.ts +153 -153
- package/dist/runtime.d.ts +24 -0
- package/dist/runtime.js +75 -1
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +155 -78
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +41155 -35362
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +155 -78
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/store/example.d.ts +1 -0
- package/dist/store/example.js +43 -0
- package/dist/store/example.js.map +1 -0
- package/dist/store/mini-effector.d.ts +46 -0
- package/dist/store/mini-effector.js +90 -0
- package/dist/store/mini-effector.js.map +1 -0
- package/dist/surfaces/Surfaces.d.ts +11 -0
- package/dist/surfaces/Surfaces.js +361 -0
- package/dist/surfaces/Surfaces.js.map +1 -0
- package/dist/surfaces/index.d.ts +9 -0
- package/dist/surfaces/index.js +12 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/positioning.d.ts +50 -0
- package/dist/surfaces/positioning.js +231 -0
- package/dist/surfaces/positioning.js.map +1 -0
- package/dist/surfaces/types.d.ts +167 -0
- package/dist/surfaces/types.js +23 -0
- package/dist/surfaces/types.js.map +1 -0
- package/dist/telemetry/adapters/posthog.d.ts +6 -0
- package/dist/telemetry/adapters/posthog.js +9 -0
- package/dist/telemetry/adapters/posthog.js.map +1 -1
- package/dist/types-only.d.ts +32 -0
- package/dist/types-only.js +11 -0
- package/dist/types-only.js.map +1 -0
- package/dist/types.d.ts +26 -14
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/widgets/WidgetRegistry.d.ts +139 -0
- package/dist/widgets/WidgetRegistry.js +182 -0
- package/dist/widgets/WidgetRegistry.js.map +1 -0
- package/dist/widgets/index.d.ts +7 -0
- package/dist/widgets/index.js +7 -0
- package/dist/widgets/index.js.map +1 -0
- package/package.json +14 -7
- package/schema/canvas-config.schema.json +444 -254
package/dist/earlyPatcher.d.ts
CHANGED
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Early
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
onComplete?: () => void;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Revert all currently active patches
|
|
2
|
+
* Early Patcher - DEPRECATED
|
|
3
|
+
*
|
|
4
|
+
* This module is kept for backward compatibility but all functionality
|
|
5
|
+
* has moved to ActionEngine. Actions are now applied through the runtime.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Use ActionEngine through SmartCanvasRuntime instead.
|
|
12
8
|
*/
|
|
13
9
|
export declare function revertAllPatches(): void;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* This runs before React components are mounted
|
|
17
|
-
*/
|
|
18
|
-
export declare function applyPatchesEarly(config: EarlyPatchConfig): void;
|
|
19
|
-
/**
|
|
20
|
-
* Extract patches from SDK config
|
|
21
|
-
*/
|
|
22
|
-
export declare function extractPatchesFromConfig(config: any): Patch[];
|
|
23
|
-
export {};
|
|
10
|
+
export declare function applyPatchesEarly(): void;
|
|
11
|
+
export declare function extractPatchesFromConfig(): [];
|
package/dist/earlyPatcher.js
CHANGED
|
@@ -1,69 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Early
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Revert all currently active patches
|
|
2
|
+
* Early Patcher - DEPRECATED
|
|
3
|
+
*
|
|
4
|
+
* This module is kept for backward compatibility but all functionality
|
|
5
|
+
* has moved to ActionEngine. Actions are now applied through the runtime.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Use ActionEngine through SmartCanvasRuntime instead.
|
|
10
8
|
*/
|
|
9
|
+
// Re-export empty functions for any code still importing from here
|
|
11
10
|
export function revertAllPatches() {
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
revertPatch(id);
|
|
15
|
-
}
|
|
16
|
-
catch (e) {
|
|
17
|
-
console.warn(`[SmartCanvas] Failed to revert patch ${id}`, e);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
activePatchIds.clear();
|
|
21
|
-
console.log('[SmartCanvas] Reverted all patches');
|
|
11
|
+
console.warn('[SmartCanvas] revertAllPatches is deprecated. Use ActionEngine instead.');
|
|
22
12
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* This runs before React components are mounted
|
|
26
|
-
*/
|
|
27
|
-
export function applyPatchesEarly(config) {
|
|
28
|
-
const { patches = [], onComplete } = config;
|
|
29
|
-
// Apply each patch synchronously
|
|
30
|
-
let appliedCount = 0;
|
|
31
|
-
patches.forEach(patch => {
|
|
32
|
-
try {
|
|
33
|
-
const result = applyPatch(patch, {
|
|
34
|
-
policy: defaultPolicy,
|
|
35
|
-
shadowHost: null // No shadow DOM yet, apply to main document
|
|
36
|
-
});
|
|
37
|
-
if (result.ok) {
|
|
38
|
-
appliedCount++;
|
|
39
|
-
activePatchIds.add(patch.id);
|
|
40
|
-
console.log(`[SmartCanvas] Early patch applied: ${patch.id}`);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.warn(`[SmartCanvas] Early patch failed: ${patch.id}`, result.reason);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
console.error(`[SmartCanvas] Error applying early patch: ${patch.id}`, error);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
console.log(`[SmartCanvas] Applied ${appliedCount}/${patches.length} patches early`);
|
|
51
|
-
// Callback when done
|
|
52
|
-
if (onComplete) {
|
|
53
|
-
onComplete();
|
|
54
|
-
}
|
|
13
|
+
export function applyPatchesEarly() {
|
|
14
|
+
console.warn('[SmartCanvas] applyPatchesEarly is deprecated. Use ActionEngine instead.');
|
|
55
15
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
export function extractPatchesFromConfig(config) {
|
|
60
|
-
if (!config || !config.patches)
|
|
61
|
-
return [];
|
|
62
|
-
return config.patches.map((patch, index) => ({
|
|
63
|
-
id: patch.id || `patch_${index}`,
|
|
64
|
-
anchor: patch.anchor,
|
|
65
|
-
operations: patch.operations || [],
|
|
66
|
-
invariants: patch.invariants
|
|
67
|
-
}));
|
|
16
|
+
export function extractPatchesFromConfig() {
|
|
17
|
+
console.warn('[SmartCanvas] extractPatchesFromConfig is deprecated. Config now uses actions[].');
|
|
18
|
+
return [];
|
|
68
19
|
}
|
|
69
20
|
//# sourceMappingURL=earlyPatcher.js.map
|
package/dist/earlyPatcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earlyPatcher.js","sourceRoot":"","sources":["../src/earlyPatcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"earlyPatcher.js","sourceRoot":"","sources":["../src/earlyPatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACjG,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/editorLoader.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare const shouldLoadEditor: () => boolean;
|
|
|
7
7
|
/**
|
|
8
8
|
* Checks if audit mode should be activated based on URL query parameters.
|
|
9
9
|
* Audit mode enables element marking for product touring.
|
|
10
|
+
* Requires audit_token parameter for security.
|
|
10
11
|
*/
|
|
11
12
|
export declare const isAuditMode: () => boolean;
|
|
12
13
|
/**
|
|
@@ -23,5 +24,6 @@ export interface EditorLoadOptions {
|
|
|
23
24
|
/**
|
|
24
25
|
* Dynamically loads the Editor SDK script.
|
|
25
26
|
* Validates URL against allowlist and supports SRI integrity checking.
|
|
27
|
+
* Requires a valid token (editor_token or audit_token) in URL params.
|
|
26
28
|
*/
|
|
27
29
|
export declare const loadEditorSdk: (editorUrlOrOptions?: string | EditorLoadOptions) => Promise<void>;
|
package/dist/editorLoader.js
CHANGED
|
@@ -16,10 +16,16 @@ const ALLOWED_EDITOR_HOSTS = [
|
|
|
16
16
|
/**
|
|
17
17
|
* Validates that an editor URL is from an allowed host.
|
|
18
18
|
* Requires HTTPS for non-localhost URLs.
|
|
19
|
+
* Relative URLs (starting with /) are allowed and assumed to be same-origin.
|
|
19
20
|
*/
|
|
20
21
|
function validateEditorUrl(url) {
|
|
21
22
|
debug('Syntro Runtime', 'Validating editor URL:', url);
|
|
22
23
|
try {
|
|
24
|
+
// Allow relative URLs (same-origin) - they start with /
|
|
25
|
+
if (url.startsWith('/')) {
|
|
26
|
+
debug('Syntro Runtime', '✓ Relative URL allowed (same-origin):', url);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
23
29
|
const parsed = new URL(url);
|
|
24
30
|
const isLocalhost = /^(localhost|127\.0\.0\.1)$/.test(parsed.hostname);
|
|
25
31
|
debug('Syntro Runtime', 'Parsed URL:', {
|
|
@@ -94,8 +100,10 @@ export const shouldLoadEditor = () => {
|
|
|
94
100
|
/**
|
|
95
101
|
* Checks if audit mode should be activated based on URL query parameters.
|
|
96
102
|
* Audit mode enables element marking for product touring.
|
|
103
|
+
* Requires audit_token parameter for security.
|
|
97
104
|
*/
|
|
98
105
|
export const isAuditMode = () => {
|
|
106
|
+
var _a;
|
|
99
107
|
debug('Syntro Runtime', '====== AUDIT MODE CHECK ======');
|
|
100
108
|
if (typeof window === "undefined") {
|
|
101
109
|
debug('Syntro Runtime', 'Not in browser - skipping audit');
|
|
@@ -103,10 +111,13 @@ export const isAuditMode = () => {
|
|
|
103
111
|
}
|
|
104
112
|
const params = new URLSearchParams(window.location.search);
|
|
105
113
|
const hasAuditFlag = params.has("syntro_audit");
|
|
114
|
+
const hasAuditToken = params.has("audit_token");
|
|
106
115
|
const auditSessionId = params.get("audit_session_id");
|
|
107
116
|
debug('Syntro Runtime', 'Audit flags:', {
|
|
108
117
|
hasAuditFlag,
|
|
118
|
+
hasAuditToken,
|
|
109
119
|
auditSessionId: auditSessionId ? `${auditSessionId.slice(0, 8)}...` : 'none',
|
|
120
|
+
audit_token: hasAuditToken ? `${(_a = params.get("audit_token")) === null || _a === void 0 ? void 0 : _a.slice(0, 10)}...` : 'none',
|
|
110
121
|
});
|
|
111
122
|
// Require syntro_audit flag to activate audit mode
|
|
112
123
|
if (!hasAuditFlag) {
|
|
@@ -114,6 +125,12 @@ export const isAuditMode = () => {
|
|
|
114
125
|
debug('Syntro Runtime', '================================');
|
|
115
126
|
return false;
|
|
116
127
|
}
|
|
128
|
+
// Require audit_token for security - prevents arbitrary audit activation
|
|
129
|
+
if (!hasAuditToken) {
|
|
130
|
+
warn('Syntro Runtime', '❌ Audit activation requires audit_token parameter');
|
|
131
|
+
debug('Syntro Runtime', '================================');
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
117
134
|
debug('Syntro Runtime', '✓ Audit mode active');
|
|
118
135
|
debug('Syntro Runtime', '================================');
|
|
119
136
|
return true;
|
|
@@ -129,12 +146,22 @@ export const getActiveSdkMode = () => {
|
|
|
129
146
|
return 'audit';
|
|
130
147
|
return null;
|
|
131
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* Gets the token from URL params (editor_token or audit_token).
|
|
151
|
+
* Returns the token value or null if not found.
|
|
152
|
+
*/
|
|
153
|
+
function getTokenFromUrl() {
|
|
154
|
+
if (typeof window === "undefined")
|
|
155
|
+
return null;
|
|
156
|
+
const params = new URLSearchParams(window.location.search);
|
|
157
|
+
return params.get("editor_token") || params.get("audit_token");
|
|
158
|
+
}
|
|
132
159
|
/**
|
|
133
160
|
* Dynamically loads the Editor SDK script.
|
|
134
161
|
* Validates URL against allowlist and supports SRI integrity checking.
|
|
162
|
+
* Requires a valid token (editor_token or audit_token) in URL params.
|
|
135
163
|
*/
|
|
136
164
|
export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
137
|
-
var _a;
|
|
138
165
|
debug('Syntro Runtime', '====== LOAD EDITOR SDK ======');
|
|
139
166
|
if (typeof window === "undefined") {
|
|
140
167
|
debug('Syntro Runtime', 'Not in browser - skipping editor SDK load');
|
|
@@ -148,15 +175,33 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
|
148
175
|
const options = typeof editorUrlOrOptions === 'string'
|
|
149
176
|
? { editorUrl: editorUrlOrOptions }
|
|
150
177
|
: editorUrlOrOptions !== null && editorUrlOrOptions !== void 0 ? editorUrlOrOptions : {};
|
|
151
|
-
|
|
178
|
+
// Check for editor SDK URL override in query params
|
|
179
|
+
const params = new URLSearchParams(window.location.search);
|
|
180
|
+
const urlParamEditorSdk = params.get('syntro_editor_sdk_url');
|
|
181
|
+
// If api_base is provided, derive editor SDK URL from it
|
|
182
|
+
const apiBase = params.get('api_base');
|
|
183
|
+
const derivedEditorSdk = apiBase ? `${apiBase}/api/editor/sdk/editor-sdk.js` : null;
|
|
184
|
+
// Priority: URL param > api_base derived > options > CDN default
|
|
185
|
+
const baseEditorUrl = urlParamEditorSdk || derivedEditorSdk || options.editorUrl || DEFAULT_EDITOR_URL;
|
|
186
|
+
// Get token from URL params (required for SDK access)
|
|
187
|
+
const token = getTokenFromUrl();
|
|
188
|
+
if (!token) {
|
|
189
|
+
warn('Syntro Runtime', '❌ No token found in URL params. SDK requires editor_token or audit_token.');
|
|
190
|
+
debug('Syntro Runtime', '================================');
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// Append token as query param to the SDK URL
|
|
194
|
+
const editorUrl = `${baseEditorUrl}?token=${encodeURIComponent(token)}`;
|
|
152
195
|
debug('Syntro Runtime', 'Editor URL:', editorUrl);
|
|
153
196
|
debug('Syntro Runtime', 'Options:', {
|
|
154
197
|
hasIntegrity: !!options.integrity,
|
|
155
|
-
isDefault:
|
|
198
|
+
isDefault: baseEditorUrl === DEFAULT_EDITOR_URL,
|
|
199
|
+
hasApiBase: !!apiBase,
|
|
200
|
+
tokenPrefix: token.slice(0, 10) + '...',
|
|
156
201
|
});
|
|
157
|
-
// Security: Validate URL against allowlist
|
|
158
|
-
if (!validateEditorUrl(
|
|
159
|
-
console.error('[Syntro Runtime] ❌ BLOCKED: Editor from untrusted URL:',
|
|
202
|
+
// Security: Validate URL against allowlist (check base URL without token)
|
|
203
|
+
if (!validateEditorUrl(baseEditorUrl)) {
|
|
204
|
+
console.error('[Syntro Runtime] ❌ BLOCKED: Editor from untrusted URL:', baseEditorUrl);
|
|
160
205
|
debug('Syntro Runtime', '================================');
|
|
161
206
|
return;
|
|
162
207
|
}
|
|
@@ -180,7 +225,7 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
|
180
225
|
script.onerror = (err) => {
|
|
181
226
|
console.error('[Syntro Runtime] ❌ Failed to load Editor SDK:', err);
|
|
182
227
|
console.error('[Syntro Runtime] URL attempted:', editorUrl);
|
|
183
|
-
console.error('[Syntro Runtime] Check: Is the URL accessible? CORS? Network?');
|
|
228
|
+
console.error('[Syntro Runtime] Check: Is the URL accessible? CORS? Network? Token valid?');
|
|
184
229
|
debug('Syntro Runtime', '================================');
|
|
185
230
|
reject(err);
|
|
186
231
|
};
|
package/dist/editorLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEhG;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,WAAW;IACX,WAAW;IACX,uDAAuD;IACvD,kBAAkB;CACnB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
* PostHog Event Normalizer
|
|
3
3
|
*
|
|
4
4
|
* Transforms PostHog autocapture events into normalized events for the EventBus.
|
|
5
|
+
*
|
|
6
|
+
* This module is automatically wired up during `Syntro.init()` when PostHog
|
|
7
|
+
* credentials are provided in the token. The flow is:
|
|
8
|
+
*
|
|
9
|
+
* 1. PostHog captures user interactions (clicks, scrolls, navigation, etc.)
|
|
10
|
+
* 2. PostHog's `eventCaptured` callback fires
|
|
11
|
+
* 3. `createPostHogNormalizer()` transforms the event to a NormalizedEvent
|
|
12
|
+
* 4. The normalized event is published to the EventBus
|
|
13
|
+
*
|
|
14
|
+
* This allows canvas components and decision strategies to react to user
|
|
15
|
+
* interactions with the main webapp, not just canvas-specific events.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // In bootstrap.ts (already wired up automatically)
|
|
20
|
+
* const normalizer = createPostHogNormalizer((event) => {
|
|
21
|
+
* eventBus.publishEvent(event);
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // PostHog adapter calls normalizer on each capture
|
|
25
|
+
* posthog.on('eventCaptured', normalizer);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @see RUNTIME_V2_REFERENCE.md for the full event mapping table
|
|
5
29
|
*/
|
|
6
30
|
import type { NormalizedEvent } from "../types";
|
|
7
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/events/normalizers/posthog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/events/normalizers/posthog.ts"],"names":[],"mappings":"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"}
|
package/dist/events/schema.d.ts
CHANGED
|
@@ -10,14 +10,14 @@ export declare const NormalizedEventZ: z.ZodObject<{
|
|
|
10
10
|
props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
11
11
|
schemaVersion: z.ZodString;
|
|
12
12
|
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
source: "canvas" | "posthog" | "derived";
|
|
14
13
|
name: string;
|
|
14
|
+
source: "posthog" | "canvas" | "derived";
|
|
15
15
|
ts: number;
|
|
16
16
|
schemaVersion: string;
|
|
17
17
|
props?: Record<string, unknown> | undefined;
|
|
18
18
|
}, {
|
|
19
|
-
source: "canvas" | "posthog" | "derived";
|
|
20
19
|
name: string;
|
|
20
|
+
source: "posthog" | "canvas" | "derived";
|
|
21
21
|
ts: number;
|
|
22
22
|
schemaVersion: string;
|
|
23
23
|
props?: Record<string, unknown> | undefined;
|
|
@@ -29,24 +29,24 @@ export declare const EventFilterZ: z.ZodObject<{
|
|
|
29
29
|
}, "strip", z.ZodTypeAny, {
|
|
30
30
|
names?: string[] | undefined;
|
|
31
31
|
patterns?: string[] | undefined;
|
|
32
|
-
sources?: ("
|
|
32
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
33
33
|
}, {
|
|
34
34
|
names?: string[] | undefined;
|
|
35
35
|
patterns?: string[] | undefined;
|
|
36
|
-
sources?: ("
|
|
36
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
37
37
|
}>;
|
|
38
38
|
/**
|
|
39
39
|
* Validate a NormalizedEvent object.
|
|
40
40
|
*/
|
|
41
41
|
export declare function validateNormalizedEvent(data: unknown): z.SafeParseReturnType<{
|
|
42
|
-
source: "canvas" | "posthog" | "derived";
|
|
43
42
|
name: string;
|
|
43
|
+
source: "posthog" | "canvas" | "derived";
|
|
44
44
|
ts: number;
|
|
45
45
|
schemaVersion: string;
|
|
46
46
|
props?: Record<string, unknown> | undefined;
|
|
47
47
|
}, {
|
|
48
|
-
source: "canvas" | "posthog" | "derived";
|
|
49
48
|
name: string;
|
|
49
|
+
source: "posthog" | "canvas" | "derived";
|
|
50
50
|
ts: number;
|
|
51
51
|
schemaVersion: string;
|
|
52
52
|
props?: Record<string, unknown> | undefined;
|
|
@@ -57,11 +57,11 @@ export declare function validateNormalizedEvent(data: unknown): z.SafeParseRetur
|
|
|
57
57
|
export declare function validateEventFilter(data: unknown): z.SafeParseReturnType<{
|
|
58
58
|
names?: string[] | undefined;
|
|
59
59
|
patterns?: string[] | undefined;
|
|
60
|
-
sources?: ("
|
|
60
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
61
61
|
}, {
|
|
62
62
|
names?: string[] | undefined;
|
|
63
63
|
patterns?: string[] | undefined;
|
|
64
|
-
sources?: ("
|
|
64
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
65
65
|
}>;
|
|
66
66
|
/**
|
|
67
67
|
* Type inference from Zod schema.
|
package/dist/events/types.d.ts
CHANGED
|
@@ -66,6 +66,12 @@ export declare const StandardEvents: {
|
|
|
66
66
|
readonly BEHAVIOR_RAGE_CLICK: "behavior.rage_click";
|
|
67
67
|
readonly BEHAVIOR_HESITATION: "behavior.hesitation";
|
|
68
68
|
readonly BEHAVIOR_CONFUSION: "behavior.confusion";
|
|
69
|
+
readonly ACTION_APPLIED: "action.applied";
|
|
70
|
+
readonly ACTION_REVERTED: "action.reverted";
|
|
71
|
+
readonly ACTION_FAILED: "action.failed";
|
|
72
|
+
readonly ACTION_CTA_CLICKED: "action.cta_clicked";
|
|
73
|
+
readonly SURFACE_MOUNTED: "surface.mounted";
|
|
74
|
+
readonly SURFACE_UNMOUNTED: "surface.unmounted";
|
|
69
75
|
};
|
|
70
76
|
/**
|
|
71
77
|
* Current schema version for normalized events.
|
package/dist/events/types.js
CHANGED
|
@@ -33,6 +33,14 @@ export const StandardEvents = {
|
|
|
33
33
|
BEHAVIOR_RAGE_CLICK: "behavior.rage_click",
|
|
34
34
|
BEHAVIOR_HESITATION: "behavior.hesitation",
|
|
35
35
|
BEHAVIOR_CONFUSION: "behavior.confusion",
|
|
36
|
+
// Action events
|
|
37
|
+
ACTION_APPLIED: "action.applied",
|
|
38
|
+
ACTION_REVERTED: "action.reverted",
|
|
39
|
+
ACTION_FAILED: "action.failed",
|
|
40
|
+
ACTION_CTA_CLICKED: "action.cta_clicked",
|
|
41
|
+
// Surface events
|
|
42
|
+
SURFACE_MOUNTED: "surface.mounted",
|
|
43
|
+
SURFACE_UNMOUNTED: "surface.unmounted",
|
|
36
44
|
};
|
|
37
45
|
/**
|
|
38
46
|
* Current schema version for normalized events.
|
package/dist/events/types.js.map
CHANGED
|
@@ -1 +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;
|
|
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;IAExC,gBAAgB;IAChB,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IAExC,iBAAiB;IACjB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;CAC9B,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { ExperimentClient } from "../experiments/types";
|
|
|
2
2
|
import type { TelemetryClient } from "../telemetry/types";
|
|
3
3
|
import { type OverlayRecipeFetcher } from "../overlays/fetcher";
|
|
4
4
|
import type { CanvasRecipe } from "../overlays/types";
|
|
5
|
+
import type { SmartCanvasRuntime } from "../runtime";
|
|
5
6
|
export type OverlayRecipesFetcher = () => Promise<CanvasRecipe[] | CanvasRecipe | undefined>;
|
|
6
7
|
export interface UseCanvasOverlaysOptions {
|
|
7
8
|
fetcher?: OverlayRecipeFetcher;
|
|
@@ -12,6 +13,8 @@ export interface UseCanvasOverlaysOptions {
|
|
|
12
13
|
credentials?: RequestCredentials;
|
|
13
14
|
experiments?: ExperimentClient;
|
|
14
15
|
telemetry?: TelemetryClient;
|
|
16
|
+
/** v2 Runtime for EventBus publishing */
|
|
17
|
+
runtime?: SmartCanvasRuntime;
|
|
15
18
|
canvasHost?: HTMLElement | null;
|
|
16
19
|
}
|
|
17
|
-
export declare function useCanvasOverlays({ fetcher, recipesFetcher, configUri, featureKey, credentials, experiments, telemetry, canvasHost, }: UseCanvasOverlaysOptions): void;
|
|
20
|
+
export declare function useCanvasOverlays({ fetcher, recipesFetcher, configUri, featureKey, credentials, experiments, telemetry, runtime, canvasHost, }: UseCanvasOverlaysOptions): void;
|
|
@@ -2,7 +2,8 @@ import { useEffect, useMemo } from "react";
|
|
|
2
2
|
import { createOverlayRecipeFetcher } from "../overlays/fetcher";
|
|
3
3
|
import { CanvasRecipeZ } from "../overlays/schema";
|
|
4
4
|
import { registerRecipes, clearRecipes } from "../overlays/recipeRegistry";
|
|
5
|
-
|
|
5
|
+
import { CanvasEvents } from "../events/normalizers/canvas";
|
|
6
|
+
export function useCanvasOverlays({ fetcher, recipesFetcher, configUri, featureKey, credentials, experiments, telemetry, runtime, canvasHost, }) {
|
|
6
7
|
const derivedFetcher = useMemo(() => {
|
|
7
8
|
// Priority 1: Use explicit recipes fetcher if provided (for multiple recipes)
|
|
8
9
|
if (recipesFetcher)
|
|
@@ -51,16 +52,62 @@ export function useCanvasOverlays({ fetcher, recipesFetcher, configUri, featureK
|
|
|
51
52
|
setPersonPropertiesOnce: (_a = telemetry.setPersonPropertiesOnce) === null || _a === void 0 ? void 0 : _a.bind(telemetry),
|
|
52
53
|
} : undefined,
|
|
53
54
|
onEvent: (name, payload) => {
|
|
54
|
-
var _a, _b;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
var _a, _b, _c, _d;
|
|
56
|
+
// Telemetry tracking (PostHog)
|
|
57
|
+
(_a = telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackAction) === null || _a === void 0 ? void 0 : _a.call(telemetry, name, (_b = payload === null || payload === void 0 ? void 0 : payload.stepId) !== null && _b !== void 0 ? _b : "", "overlay");
|
|
58
|
+
// EventBus publishing (v2 runtime)
|
|
59
|
+
if (runtime) {
|
|
60
|
+
const recipeId = payload === null || payload === void 0 ? void 0 : payload.recipeId;
|
|
61
|
+
const stepId = payload === null || payload === void 0 ? void 0 : payload.stepId;
|
|
62
|
+
// Map overlay event names to normalized events
|
|
63
|
+
let event;
|
|
64
|
+
switch (name) {
|
|
65
|
+
case 'syntro_overlay_exposed':
|
|
66
|
+
event = CanvasEvents.overlayStepViewed(recipeId, 0, stepId);
|
|
67
|
+
break;
|
|
68
|
+
case 'syntro_overlay_dismissed':
|
|
69
|
+
event = CanvasEvents.overlayDismissed(recipeId, undefined, undefined);
|
|
70
|
+
break;
|
|
71
|
+
case 'syntro_overlay_action':
|
|
72
|
+
event = CanvasEvents.tileAction(stepId, (_c = payload === null || payload === void 0 ? void 0 : payload.actionId) !== null && _c !== void 0 ? _c : '', 'overlay');
|
|
73
|
+
break;
|
|
74
|
+
case 'syntro_tour_step':
|
|
75
|
+
event = CanvasEvents.overlayStepViewed(recipeId, 0, stepId);
|
|
76
|
+
break;
|
|
77
|
+
case 'syntro_tour_action':
|
|
78
|
+
event = CanvasEvents.tileAction(stepId, (_d = payload === null || payload === void 0 ? void 0 : payload.actionId) !== null && _d !== void 0 ? _d : '', 'overlay');
|
|
79
|
+
break;
|
|
80
|
+
case 'syntro_tour_end':
|
|
81
|
+
if ((payload === null || payload === void 0 ? void 0 : payload.reason) === 'completed') {
|
|
82
|
+
event = CanvasEvents.overlayCompleted(recipeId);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
event = CanvasEvents.overlayDismissed(recipeId, undefined, undefined);
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
case 'syntro_anchor_missing':
|
|
89
|
+
// Custom event for anchor missing
|
|
90
|
+
event = CanvasEvents.custom('anchor_missing', payload);
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
// Pass through as custom canvas event
|
|
94
|
+
event = CanvasEvents.custom(name, payload);
|
|
95
|
+
}
|
|
96
|
+
if (event) {
|
|
97
|
+
runtime.events.publish(event.name, event.props, event.source);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
58
100
|
},
|
|
59
101
|
};
|
|
60
102
|
// Run all recipes
|
|
61
103
|
for (const recipe of recipes) {
|
|
62
104
|
if (!((_b = recipe === null || recipe === void 0 ? void 0 : recipe.steps) === null || _b === void 0 ? void 0 : _b.length) || cancelled)
|
|
63
105
|
continue;
|
|
106
|
+
// Publish overlay started event
|
|
107
|
+
if (runtime) {
|
|
108
|
+
const event = CanvasEvents.overlayStarted(recipe.id, recipe.title);
|
|
109
|
+
runtime.events.publish(event.name, event.props, event.source);
|
|
110
|
+
}
|
|
64
111
|
const cleanup = await mod.runOverlays(recipe, ctx);
|
|
65
112
|
cleanups.push(cleanup);
|
|
66
113
|
}
|
|
@@ -74,6 +121,6 @@ export function useCanvasOverlays({ fetcher, recipesFetcher, configUri, featureK
|
|
|
74
121
|
cleanups.forEach(fn => fn === null || fn === void 0 ? void 0 : fn());
|
|
75
122
|
clearRecipes();
|
|
76
123
|
};
|
|
77
|
-
}, [derivedFetcher, telemetry, canvasHost]);
|
|
124
|
+
}, [derivedFetcher, telemetry, runtime, canvasHost]);
|
|
78
125
|
}
|
|
79
126
|
//# sourceMappingURL=useCanvasOverlays.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCanvasOverlays.js","sourceRoot":"","sources":["../../src/hooks/useCanvasOverlays.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,0BAA0B,EAA6B,MAAM,qBAAqB,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"useCanvasOverlays.js","sourceRoot":"","sources":["../../src/hooks/useCanvasOverlays.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { CanvasConfigFetcher, TileConfig, CanvasThemeConfig, LauncherConfig, RoutesConfig } from "../types";
|
|
2
|
-
import type { Patch } from "../hostPatcher/core/types";
|
|
1
|
+
import type { CanvasConfigFetcher, TileConfig, CanvasThemeConfig, LauncherConfig, RoutesConfig, ActionStep } from "../types";
|
|
3
2
|
import type { ExperimentClient } from "../experiments/types";
|
|
4
3
|
import type { SmartCanvasRuntime } from "../runtime";
|
|
5
4
|
export interface UseShadowCanvasConfigOptions {
|
|
@@ -17,11 +16,8 @@ export interface ShadowCanvasConfigState {
|
|
|
17
16
|
fetchedAt?: string;
|
|
18
17
|
canvasTitle?: string;
|
|
19
18
|
configVersion?: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
overlayRecipe?: import('../overlays/types').CanvasRecipe;
|
|
23
|
-
/** Multiple overlay recipes (tours) */
|
|
24
|
-
overlayRecipes?: import('../overlays/types').CanvasRecipe[];
|
|
19
|
+
/** Actions to execute (tooltips, highlights, DOM changes, etc.) */
|
|
20
|
+
actions: ActionStep[];
|
|
25
21
|
displayMode?: 'standard' | 'focused';
|
|
26
22
|
/** Theme configuration from the canvas config (workspace settings) */
|
|
27
23
|
theme?: CanvasThemeConfig;
|
|
@@ -3,6 +3,7 @@ const sortTiles = (tiles) => [...tiles].sort((a, b) => { var _a, _b; return ((_a
|
|
|
3
3
|
export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experiments, runtime, }) {
|
|
4
4
|
const [state, setState] = useState({
|
|
5
5
|
tiles: [],
|
|
6
|
+
actions: [],
|
|
6
7
|
isLoading: true,
|
|
7
8
|
});
|
|
8
9
|
const load = useCallback(async () => {
|
|
@@ -29,13 +30,11 @@ export function useShadowCanvasConfig({ fetcher, pollIntervalMs = 30000, experim
|
|
|
29
30
|
}
|
|
30
31
|
setState({
|
|
31
32
|
tiles: sortTiles(tiles),
|
|
33
|
+
actions: response.actions || [],
|
|
32
34
|
isLoading: false,
|
|
33
35
|
fetchedAt: response.fetchedAt,
|
|
34
36
|
canvasTitle: response.canvasTitle,
|
|
35
37
|
configVersion: response.configVersion,
|
|
36
|
-
patches: response.patches,
|
|
37
|
-
overlayRecipe: response.overlayRecipe,
|
|
38
|
-
overlayRecipes: response.overlayRecipes,
|
|
39
38
|
theme: response.theme,
|
|
40
39
|
launcher: response.launcher,
|
|
41
40
|
routes: response.routes,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"useShadowCanvasConfig.js","sourceRoot":"","sources":["../../src/hooks/useShadowCanvasConfig.ts"],"names":[],"mappings":"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"}
|