@syntrologie/runtime-sdk 2.0.1-canary.3 → 2.0.1
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 +286 -43
- package/README.md +87 -0
- package/dist/RuntimeProvider.d.ts +1 -1
- package/dist/RuntimeProvider.js.map +1 -1
- package/dist/SmartCanvasApp.d.ts +4 -4
- package/dist/SmartCanvasApp.js +4 -4
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +2 -2
- package/dist/SmartCanvasElement.js +1 -1
- package/dist/SmartCanvasElement.js.map +1 -1
- package/dist/SmartCanvasPortal.js.map +1 -1
- package/dist/actions/ActionEngine.js +2 -4
- package/dist/actions/ActionEngine.js.map +1 -1
- package/dist/actions/executors/index.d.ts +3 -4
- package/dist/actions/executors/index.js +9 -11
- package/dist/actions/executors/index.js.map +1 -1
- package/dist/actions/executors/tour.js +3 -3
- package/dist/actions/executors/tour.js.map +1 -1
- package/dist/actions/validation.js +6 -31
- package/dist/actions/validation.js.map +1 -1
- package/dist/adaptives/adaptive-chatbot/index.js +9 -0
- package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
- package/dist/adaptives/adaptive-content/index.js +2 -0
- package/dist/adaptives/adaptive-content/index.js.map +7 -0
- package/dist/adaptives/adaptive-faq/index.js +11 -0
- package/dist/adaptives/adaptive-faq/index.js.map +7 -0
- package/dist/adaptives/adaptive-gamification/index.js +2 -0
- package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
- package/dist/adaptives/adaptive-nav/index.js +11 -0
- package/dist/adaptives/adaptive-nav/index.js.map +7 -0
- package/dist/adaptives/adaptive-overlays/index.js +91 -0
- package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
- package/dist/api.d.ts +5 -5
- package/dist/api.js +4 -7
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.js +3 -5
- package/dist/apps/AppContext.js.map +1 -1
- package/dist/apps/AppLoader.d.ts +2 -1
- package/dist/apps/AppLoader.js +37 -11
- package/dist/apps/AppLoader.js.map +1 -1
- package/dist/apps/AppRegistry.js.map +1 -1
- package/dist/apps/examples/gamification-app.example.d.ts +8 -8
- package/dist/apps/examples/gamification-app.example.js.map +1 -1
- package/dist/apps/index.d.ts +2 -3
- package/dist/apps/index.js +2 -3
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/types.d.ts +1 -1
- package/dist/blocks/data/ComparisonBlock.js +9 -9
- package/dist/blocks/data/ComparisonBlock.js.map +1 -1
- package/dist/blocks/data/StatsBlock.js +12 -14
- package/dist/blocks/data/StatsBlock.js.map +1 -1
- package/dist/blocks/index.d.ts +2 -2
- package/dist/blocks/index.js +3 -4
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/interactive/ChecklistBlock.js +12 -12
- package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
- package/dist/blocks/interactive/RatingBlock.js +12 -14
- package/dist/blocks/interactive/RatingBlock.js.map +1 -1
- package/dist/blocks/notification/NotificationBlock.js +24 -24
- package/dist/blocks/notification/NotificationBlock.js.map +1 -1
- package/dist/bootstrap.d.ts +6 -6
- package/dist/bootstrap.js +31 -34
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +2 -2
- package/dist/components/ShadowCanvasOverlay.js +25 -24
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +2 -2
- package/dist/components/TileCard.js +24 -23
- package/dist/components/TileCard.js.map +1 -1
- package/dist/components/TileWheel.d.ts +1 -1
- package/dist/components/TileWheel.js +23 -1
- package/dist/components/TileWheel.js.map +1 -1
- package/dist/config-validator.d.ts +49 -0
- package/dist/config-validator.js +173 -0
- package/dist/config-validator.js.map +1 -0
- package/dist/configFetcher.d.ts +6 -2
- package/dist/configFetcher.js +66 -29
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +1 -1
- package/dist/context/ContextManager.js +4 -3
- package/dist/context/ContextManager.js.map +1 -1
- package/dist/context/schema.d.ts +8 -8
- package/dist/context/schema.js +1 -1
- package/dist/context/schema.js.map +1 -1
- package/dist/decisions/engine.d.ts +2 -2
- package/dist/decisions/engine.js.map +1 -1
- package/dist/decisions/schema.d.ts +34 -34
- package/dist/decisions/schema.js +1 -1
- package/dist/decisions/schema.js.map +1 -1
- package/dist/editorLoader.d.ts +19 -9
- package/dist/editorLoader.js +107 -96
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/normalizers/canvas.d.ts +1 -1
- package/dist/events/normalizers/canvas.js.map +1 -1
- package/dist/events/schema.d.ts +8 -8
- package/dist/events/schema.js +1 -1
- package/dist/events/schema.js.map +1 -1
- package/dist/experiments/adapters/growthbook.d.ts +2 -1
- package/dist/experiments/adapters/growthbook.js +9 -1
- package/dist/experiments/adapters/growthbook.js.map +1 -1
- package/dist/experiments/types.d.ts +5 -0
- package/dist/fetchers/cdnFetcher.js.map +1 -1
- package/dist/fetchers/experimentsFetcher.d.ts +24 -2
- package/dist/fetchers/experimentsFetcher.js +48 -1
- package/dist/fetchers/experimentsFetcher.js.map +1 -1
- package/dist/fetchers/mergeConfigs.d.ts +29 -0
- package/dist/fetchers/mergeConfigs.js +38 -0
- package/dist/fetchers/mergeConfigs.js.map +1 -0
- package/dist/hooks/useCanvasOverlays.d.ts +1 -1
- package/dist/hooks/useCanvasOverlays.js +2 -2
- package/dist/hooks/useCanvasOverlays.js.map +1 -1
- package/dist/hooks/useHostPatches.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +1 -1
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/hostPatcher/core/patcher.js.map +1 -1
- package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/overlays/fetcher.d.ts +1 -1
- package/dist/overlays/fetcher.js +12 -14
- package/dist/overlays/fetcher.js.map +1 -1
- package/dist/overlays/runtime/overlay/runner.js +18 -5
- package/dist/overlays/runtime/overlay/runner.js.map +1 -1
- package/dist/overlays/runtime/overlay/tooltip.js +3 -5
- package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js.map +1 -1
- package/dist/render/RenderContext.js.map +1 -1
- package/dist/runtime.d.ts +6 -6
- package/dist/runtime.js +38 -16
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +97 -85
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +41603 -44405
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +97 -85
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +0 -6
- package/dist/state/StateStore.js +7 -1
- package/dist/state/StateStore.js.map +1 -1
- package/dist/surfaces/Surfaces.js +1 -1
- package/dist/surfaces/Surfaces.js.map +1 -1
- package/dist/surfaces/positioning.js.map +1 -1
- package/dist/telemetry/adapters/noop.d.ts +1 -18
- package/dist/telemetry/adapters/noop.js +5 -38
- package/dist/telemetry/adapters/noop.js.map +1 -1
- package/dist/telemetry/adapters/posthog.js +1 -1
- package/dist/telemetry/adapters/posthog.js.map +1 -1
- package/dist/telemetry/index.d.ts +0 -1
- package/dist/telemetry/registry.d.ts +0 -7
- package/dist/telemetry/registry.js +2 -2
- package/dist/telemetry/registry.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/defaultTheme.d.ts +2 -3
- package/dist/theme/defaultTheme.js +60 -51
- package/dist/theme/defaultTheme.js.map +1 -1
- package/dist/theme/extractHostTheme.js +1 -1
- package/dist/theme/extractHostTheme.js.map +1 -1
- package/dist/types.d.ts +22 -1
- package/dist/types.js +14 -2
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/dist/widgets/WidgetRegistry.d.ts +6 -0
- package/dist/widgets/WidgetRegistry.js +12 -3
- package/dist/widgets/WidgetRegistry.js.map +1 -1
- package/package.json +19 -11
- package/dist/apps/adaptive-chatbot/index.js +0 -7
- package/dist/apps/adaptive-chatbot/index.js.map +0 -7
- package/dist/apps/faq/index.js +0 -11
- package/dist/apps/faq/index.js.map +0 -7
- package/dist/apps/gamification/index.js +0 -2
- package/dist/apps/gamification/index.js.map +0 -7
- package/dist/apps/nav/index.js +0 -11
- package/dist/apps/nav/index.js.map +0 -7
package/CAPABILITIES.md
CHANGED
|
@@ -67,17 +67,16 @@ Change a page header when the element is visible:
|
|
|
67
67
|
|
|
68
68
|
The SDK includes the following adaptive packages, each providing specific capabilities:
|
|
69
69
|
|
|
70
|
-
- [@syntrologie/
|
|
71
|
-
- [@syntrologie/
|
|
72
|
-
- [@syntrologie/
|
|
73
|
-
- [@syntrologie/
|
|
74
|
-
- [@syntrologie/
|
|
75
|
-
- [@syntrologie/
|
|
76
|
-
- [@syntrologie/app-overlays](#syntrologieapp-overlays)
|
|
70
|
+
- [@syntrologie/adapt-chatbot](#syntrologieadapt-chatbot)
|
|
71
|
+
- [@syntrologie/adapt-content](#syntrologieadapt-content)
|
|
72
|
+
- [@syntrologie/adapt-faq](#syntrologieadapt-faq)
|
|
73
|
+
- [@syntrologie/adapt-gamification](#syntrologieadapt-gamification)
|
|
74
|
+
- [@syntrologie/adapt-nav](#syntrologieadapt-nav)
|
|
75
|
+
- [@syntrologie/adapt-overlays](#syntrologieadapt-overlays)
|
|
77
76
|
|
|
78
77
|
---
|
|
79
78
|
|
|
80
|
-
# @syntrologie/
|
|
79
|
+
# @syntrologie/adapt-chatbot
|
|
81
80
|
|
|
82
81
|
AI chat assistant widget with action execution capabilities.
|
|
83
82
|
|
|
@@ -156,7 +155,7 @@ The widget reads auth credentials from the browser:
|
|
|
156
155
|
|
|
157
156
|
---
|
|
158
157
|
|
|
159
|
-
# @syntrologie/
|
|
158
|
+
# @syntrologie/adapt-content
|
|
160
159
|
|
|
161
160
|
DOM content modification capabilities for text, attributes, styles, HTML, and classes.
|
|
162
161
|
|
|
@@ -290,9 +289,9 @@ Removes a CSS class from an element.
|
|
|
290
289
|
|
|
291
290
|
---
|
|
292
291
|
|
|
293
|
-
# @syntrologie/
|
|
292
|
+
# @syntrologie/adapt-faq
|
|
294
293
|
|
|
295
|
-
|
|
294
|
+
Collapsible Q&A accordion with actions, rich content, feedback, and personalization. Supports mounting a full FAQ widget, scrolling to specific items, toggling item state, and dynamically updating the item list at runtime.
|
|
296
295
|
|
|
297
296
|
## Actions
|
|
298
297
|
|
|
@@ -300,22 +299,33 @@ FAQ accordion widget with conditional item visibility.
|
|
|
300
299
|
|
|
301
300
|
Mounts an FAQ accordion widget to a surface slot.
|
|
302
301
|
|
|
303
|
-
| Property
|
|
304
|
-
|
|
|
305
|
-
| `kind`
|
|
306
|
-
| `slot`
|
|
307
|
-
| `config.title`
|
|
308
|
-
| `config.
|
|
302
|
+
| Property | Type | Required | Description |
|
|
303
|
+
| ----------------------- | --------------------------------- | -------- | ------------------------------------------------------------------- |
|
|
304
|
+
| `kind` | `"mount_faq"` | Yes | Action type |
|
|
305
|
+
| `slot` | string | Yes | Target slot (e.g., `"drawer_right"`, `"overlay_center"`) |
|
|
306
|
+
| `config.title` | string | No | Widget title |
|
|
307
|
+
| `config.expandBehavior` | `"single"` \| `"multiple"` | No | Whether one or many items can be open at once (default: `"single"`) |
|
|
308
|
+
| `config.searchable` | boolean | No | Show a search/filter input (default: `false`) |
|
|
309
|
+
| `config.theme` | `"light"` \| `"dark"` \| `"auto"` | No | Color theme (default: `"auto"`) |
|
|
310
|
+
| `config.items` | array | Yes | FAQ items (see below) |
|
|
311
|
+
| `config.feedback` | boolean \| FeedbackConfig | No | Enable per-item feedback widget |
|
|
312
|
+
| `config.ordering` | OrderingStrategy | No | Item ordering strategy (default: `"static"`) |
|
|
313
|
+
| `config.injections` | InjectionRule[] | No | Dynamic item injection rules |
|
|
309
314
|
|
|
310
315
|
### FAQ Item Schema
|
|
311
316
|
|
|
312
317
|
Each item in the `items` array:
|
|
313
318
|
|
|
314
|
-
| Property
|
|
315
|
-
|
|
|
316
|
-
| `
|
|
317
|
-
| `
|
|
318
|
-
| `
|
|
319
|
+
| Property | Type | Required | Description |
|
|
320
|
+
| ----------------------- | ------------------------ | -------- | ----------------------------------------------- |
|
|
321
|
+
| `kind` | `"faq:question"` | Yes | Compositional action type |
|
|
322
|
+
| `config.id` | string | Yes | Unique identifier for this question |
|
|
323
|
+
| `config.question` | string | Yes | The question text |
|
|
324
|
+
| `config.answer` | FAQAnswer | Yes | Answer content (string, rich HTML, or markdown) |
|
|
325
|
+
| `config.category` | string | No | Category for grouping items |
|
|
326
|
+
| `config.priority` | number | No | Priority weight for ordering |
|
|
327
|
+
| `config.answerStrategy` | AnswerStrategy | No | AI-generated answer configuration |
|
|
328
|
+
| `showWhen` | DecisionStrategy \| null | No | Conditional visibility strategy |
|
|
319
329
|
|
|
320
330
|
```json
|
|
321
331
|
{
|
|
@@ -323,14 +333,34 @@ Each item in the `items` array:
|
|
|
323
333
|
"slot": "drawer_right",
|
|
324
334
|
"config": {
|
|
325
335
|
"title": "Frequently Asked Questions",
|
|
336
|
+
"expandBehavior": "single",
|
|
337
|
+
"searchable": true,
|
|
338
|
+
"theme": "auto",
|
|
339
|
+
"feedback": {
|
|
340
|
+
"style": "thumbs",
|
|
341
|
+
"prompt": "Was this helpful?"
|
|
342
|
+
},
|
|
343
|
+
"ordering": "priority",
|
|
326
344
|
"items": [
|
|
327
345
|
{
|
|
328
|
-
"
|
|
329
|
-
"
|
|
346
|
+
"kind": "faq:question",
|
|
347
|
+
"config": {
|
|
348
|
+
"id": "getting-started",
|
|
349
|
+
"question": "How do I get started?",
|
|
350
|
+
"answer": "Sign up for a free account and follow our quickstart guide.",
|
|
351
|
+
"category": "General",
|
|
352
|
+
"priority": 10
|
|
353
|
+
}
|
|
330
354
|
},
|
|
331
355
|
{
|
|
332
|
-
"
|
|
333
|
-
"
|
|
356
|
+
"kind": "faq:question",
|
|
357
|
+
"config": {
|
|
358
|
+
"id": "payment-methods",
|
|
359
|
+
"question": "What payment methods do you accept?",
|
|
360
|
+
"answer": "We accept all major credit cards and PayPal.",
|
|
361
|
+
"category": "Billing",
|
|
362
|
+
"priority": 5
|
|
363
|
+
},
|
|
334
364
|
"showWhen": {
|
|
335
365
|
"type": "rules",
|
|
336
366
|
"rules": [
|
|
@@ -347,21 +377,241 @@ Each item in the `items` array:
|
|
|
347
377
|
}
|
|
348
378
|
```
|
|
349
379
|
|
|
380
|
+
### scroll_to_faq
|
|
381
|
+
|
|
382
|
+
Scrolls the viewport to a specific FAQ item and optionally expands it.
|
|
383
|
+
|
|
384
|
+
| Property | Type | Required | Default | Description |
|
|
385
|
+
| -------------- | ----------------- | -------- | ---------- | ------------------------------------------ |
|
|
386
|
+
| `kind` | `"scroll_to_faq"` | Yes | | Action type |
|
|
387
|
+
| `itemId` | string | No\* | | Target item ID |
|
|
388
|
+
| `itemQuestion` | string | No\* | | Target item question text (fuzzy match) |
|
|
389
|
+
| `expand` | boolean | No | `true` | Whether to expand the item after scrolling |
|
|
390
|
+
| `behavior` | string | No | `"smooth"` | `"smooth"`, `"instant"`, `"auto"` |
|
|
391
|
+
|
|
392
|
+
\* Either `itemId` or `itemQuestion` is required.
|
|
393
|
+
|
|
394
|
+
```json
|
|
395
|
+
{
|
|
396
|
+
"kind": "scroll_to_faq",
|
|
397
|
+
"itemId": "payment-methods",
|
|
398
|
+
"expand": true,
|
|
399
|
+
"behavior": "smooth"
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### toggle_faq_item
|
|
404
|
+
|
|
405
|
+
Opens, closes, or toggles a FAQ item's expanded state.
|
|
406
|
+
|
|
407
|
+
| Property | Type | Required | Default | Description |
|
|
408
|
+
| -------------- | ------------------- | -------- | ---------- | --------------------------------------- |
|
|
409
|
+
| `kind` | `"toggle_faq_item"` | Yes | | Action type |
|
|
410
|
+
| `itemId` | string | No\* | | Target item ID |
|
|
411
|
+
| `itemQuestion` | string | No\* | | Target item question text (fuzzy match) |
|
|
412
|
+
| `state` | string | No | `"toggle"` | `"open"`, `"closed"`, `"toggle"` |
|
|
413
|
+
|
|
414
|
+
\* Either `itemId` or `itemQuestion` is required.
|
|
415
|
+
|
|
416
|
+
```json
|
|
417
|
+
{
|
|
418
|
+
"kind": "toggle_faq_item",
|
|
419
|
+
"itemId": "getting-started",
|
|
420
|
+
"state": "open"
|
|
421
|
+
}
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### update_faq
|
|
425
|
+
|
|
426
|
+
Dynamically adds, removes, reorders, or replaces FAQ items at runtime.
|
|
427
|
+
|
|
428
|
+
| Property | Type | Required | Description |
|
|
429
|
+
| ----------- | ------------------- | -------- | ------------------------------------------------------- |
|
|
430
|
+
| `kind` | `"update_faq"` | Yes | Action type |
|
|
431
|
+
| `operation` | string | Yes | `"add"`, `"remove"`, `"reorder"`, `"replace"` |
|
|
432
|
+
| `items` | FAQQuestionAction[] | No | Items to add or replace with (required for add/replace) |
|
|
433
|
+
| `itemId` | string | No | Item to remove (required for remove) |
|
|
434
|
+
| `order` | string[] | No | Ordered list of item IDs (required for reorder) |
|
|
435
|
+
| `position` | string | No | `"prepend"`, `"append"`, `"before"`, `"after"` |
|
|
436
|
+
| `anchorId` | string | No | Reference item for before/after positioning |
|
|
437
|
+
|
|
438
|
+
**Add items:**
|
|
439
|
+
|
|
440
|
+
```json
|
|
441
|
+
{
|
|
442
|
+
"kind": "update_faq",
|
|
443
|
+
"operation": "add",
|
|
444
|
+
"position": "append",
|
|
445
|
+
"items": [
|
|
446
|
+
{
|
|
447
|
+
"kind": "faq:question",
|
|
448
|
+
"config": {
|
|
449
|
+
"id": "new-feature",
|
|
450
|
+
"question": "What is the new feature?",
|
|
451
|
+
"answer": "Our latest release includes AI-powered recommendations."
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
]
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Remove an item:**
|
|
459
|
+
|
|
460
|
+
```json
|
|
461
|
+
{
|
|
462
|
+
"kind": "update_faq",
|
|
463
|
+
"operation": "remove",
|
|
464
|
+
"itemId": "outdated-question"
|
|
465
|
+
}
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**Reorder items:**
|
|
469
|
+
|
|
470
|
+
```json
|
|
471
|
+
{
|
|
472
|
+
"kind": "update_faq",
|
|
473
|
+
"operation": "reorder",
|
|
474
|
+
"order": ["getting-started", "new-feature", "payment-methods"]
|
|
475
|
+
}
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
**Replace all items:**
|
|
479
|
+
|
|
480
|
+
```json
|
|
481
|
+
{
|
|
482
|
+
"kind": "update_faq",
|
|
483
|
+
"operation": "replace",
|
|
484
|
+
"items": [
|
|
485
|
+
{
|
|
486
|
+
"kind": "faq:question",
|
|
487
|
+
"config": {
|
|
488
|
+
"id": "only-question",
|
|
489
|
+
"question": "Is this the only question?",
|
|
490
|
+
"answer": "Yes, after replacing all items."
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
]
|
|
494
|
+
}
|
|
495
|
+
```
|
|
496
|
+
|
|
350
497
|
## Compositional Pattern
|
|
351
498
|
|
|
352
|
-
The FAQ widget
|
|
499
|
+
The FAQ widget uses a **compositional action pattern** where `faq:question` actions serve as configuration data rendered by the widget, rather than being executed by the runtime. This allows:
|
|
353
500
|
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
501
|
+
- **Per-item conditional visibility** via `showWhen` strategies -- items can appear or hide based on page URL, user segment, viewport, or any DecisionStrategy condition
|
|
502
|
+
- **Category grouping** -- items with a `category` field are grouped under collapsible section headers
|
|
503
|
+
- **Dynamic injection** -- `injections` rules can add items when trigger conditions are met, supporting contextual FAQ content
|
|
504
|
+
- **Ordering control** -- the `ordering` strategy determines how items are sorted within categories
|
|
358
505
|
|
|
359
|
-
Items without `showWhen` are always visible.
|
|
506
|
+
Items without `showWhen` are always visible. Items without `category` appear in an ungrouped section.
|
|
507
|
+
|
|
508
|
+
## Rich Answer Content
|
|
509
|
+
|
|
510
|
+
FAQ answers support three content formats via the `FAQAnswer` union type:
|
|
511
|
+
|
|
512
|
+
- **Plain string** -- simple text, supports basic markdown
|
|
513
|
+
- **Rich HTML** (`{ "type": "rich", "html": "<p>...</p>" }`) -- pre-rendered HTML content
|
|
514
|
+
- **Enhanced markdown** (`{ "type": "markdown", "content": "...", "assets": [...] }`) -- markdown with embedded media assets (images, videos)
|
|
515
|
+
|
|
516
|
+
```json
|
|
517
|
+
{
|
|
518
|
+
"config": {
|
|
519
|
+
"id": "rich-example",
|
|
520
|
+
"question": "How does the visual editor work?",
|
|
521
|
+
"answer": {
|
|
522
|
+
"type": "markdown",
|
|
523
|
+
"content": "The visual editor lets you create experiments with a point-and-click interface.\n\n",
|
|
524
|
+
"assets": [
|
|
525
|
+
{
|
|
526
|
+
"id": "editor-screenshot",
|
|
527
|
+
"type": "image",
|
|
528
|
+
"src": "https://cdn.example.com/editor.png",
|
|
529
|
+
"alt": "Visual editor interface",
|
|
530
|
+
"width": 800,
|
|
531
|
+
"height": 450
|
|
532
|
+
}
|
|
533
|
+
]
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
## Feedback
|
|
540
|
+
|
|
541
|
+
Per-item feedback allows users to rate answer helpfulness. Enable with a boolean or detailed config:
|
|
542
|
+
|
|
543
|
+
- `"feedback": true` -- enables thumbs up/down with default prompt
|
|
544
|
+
- `"feedback": { "style": "thumbs", "prompt": "Was this helpful?" }` -- thumbs with custom prompt
|
|
545
|
+
- `"feedback": { "style": "rating" }` -- numeric rating scale
|
|
546
|
+
|
|
547
|
+
Feedback events are published via `context.publishEvent` for analytics integration.
|
|
548
|
+
|
|
549
|
+
## Personalization
|
|
550
|
+
|
|
551
|
+
### Ordering Strategies
|
|
552
|
+
|
|
553
|
+
The `ordering` field controls how FAQ items are sorted:
|
|
554
|
+
|
|
555
|
+
- **`"static"`** (default) -- items appear in the order defined in the config
|
|
556
|
+
- **`"priority"`** -- items are sorted by their `priority` field (higher values first)
|
|
557
|
+
- **Segment-based** -- items are ordered differently per user segment:
|
|
558
|
+
|
|
559
|
+
```json
|
|
560
|
+
{
|
|
561
|
+
"ordering": {
|
|
562
|
+
"type": "segment",
|
|
563
|
+
"segmentWeights": {
|
|
564
|
+
"new_user": ["getting-started", "pricing", "support"],
|
|
565
|
+
"power_user": ["api-docs", "advanced-config", "integrations"]
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Dynamic Injection
|
|
572
|
+
|
|
573
|
+
Injection rules add contextual FAQ items when conditions are met:
|
|
574
|
+
|
|
575
|
+
```json
|
|
576
|
+
{
|
|
577
|
+
"injections": [
|
|
578
|
+
{
|
|
579
|
+
"trigger": {
|
|
580
|
+
"type": "rules",
|
|
581
|
+
"rules": [
|
|
582
|
+
{
|
|
583
|
+
"conditions": [{ "type": "page_url", "pattern": "/checkout*" }],
|
|
584
|
+
"value": true
|
|
585
|
+
}
|
|
586
|
+
],
|
|
587
|
+
"default": false
|
|
588
|
+
},
|
|
589
|
+
"items": [
|
|
590
|
+
{
|
|
591
|
+
"kind": "faq:question",
|
|
592
|
+
"config": {
|
|
593
|
+
"id": "checkout-help",
|
|
594
|
+
"question": "Having trouble with checkout?",
|
|
595
|
+
"answer": "Contact support at help@example.com for immediate assistance."
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
],
|
|
599
|
+
"position": "prepend",
|
|
600
|
+
"once": true
|
|
601
|
+
}
|
|
602
|
+
]
|
|
603
|
+
}
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
- `trigger` -- a DecisionStrategy that evaluates to `true` when injection should occur
|
|
607
|
+
- `items` -- FAQ items to inject
|
|
608
|
+
- `position` -- `"prepend"` or `"append"` relative to existing items
|
|
609
|
+
- `once` -- if `true`, items are injected only on the first trigger match
|
|
360
610
|
|
|
361
611
|
|
|
362
612
|
---
|
|
363
613
|
|
|
364
|
-
# @syntrologie/
|
|
614
|
+
# @syntrologie/adapt-gamification
|
|
365
615
|
|
|
366
616
|
Gamification capabilities including badges, points, and leaderboards.
|
|
367
617
|
|
|
@@ -448,7 +698,7 @@ Mounts gamification UI elements.
|
|
|
448
698
|
|
|
449
699
|
---
|
|
450
700
|
|
|
451
|
-
# @syntrologie/
|
|
701
|
+
# @syntrologie/adapt-nav
|
|
452
702
|
|
|
453
703
|
Navigation link list widget with conditional item visibility.
|
|
454
704
|
|
|
@@ -534,14 +784,7 @@ The nav widget supports **per-item conditional visibility** using `showWhen` str
|
|
|
534
784
|
|
|
535
785
|
Items without `showWhen` are always visible.
|
|
536
786
|
|
|
537
|
-
|
|
538
|
-
---
|
|
539
|
-
|
|
540
|
-
# @syntrologie/app-navigation
|
|
541
|
-
|
|
542
|
-
Navigation capabilities for scrolling and URL navigation.
|
|
543
|
-
|
|
544
|
-
## Actions
|
|
787
|
+
## Navigation Actions
|
|
545
788
|
|
|
546
789
|
### scroll_to
|
|
547
790
|
|
|
@@ -587,7 +830,7 @@ Navigates to a URL.
|
|
|
587
830
|
|
|
588
831
|
---
|
|
589
832
|
|
|
590
|
-
# @syntrologie/
|
|
833
|
+
# @syntrologie/adapt-overlays
|
|
591
834
|
|
|
592
835
|
Visual overlay capabilities including highlights, tooltips, badges, and pulse animations.
|
|
593
836
|
|
package/README.md
CHANGED
|
@@ -328,6 +328,93 @@ npm run validate-config -- path/to/config.json
|
|
|
328
328
|
|
|
329
329
|
---
|
|
330
330
|
|
|
331
|
+
## Releasing
|
|
332
|
+
|
|
333
|
+
The SDK uses [semantic-release](https://github.com/semantic-release/semantic-release) with conventional commits. Versions are never bumped manually.
|
|
334
|
+
|
|
335
|
+
### Channels
|
|
336
|
+
|
|
337
|
+
| Channel | Trigger | npm dist-tag | CDN path |
|
|
338
|
+
| ---------- | ---------------------------------------------- | ------------ | ----------------------------- |
|
|
339
|
+
| **Canary** | Push to `develop` touching `tech-core/sdks/**` | `develop` | `/v2/canary/` |
|
|
340
|
+
| **Stable** | Manual workflow dispatch from `main` | `latest` | `/v2/latest/` + `/{VERSION}/` |
|
|
341
|
+
|
|
342
|
+
### Commit Messages → Version Bumps
|
|
343
|
+
|
|
344
|
+
| Prefix | Bump | Example |
|
|
345
|
+
| ----------------- | --------------------- | ---------------- |
|
|
346
|
+
| `fix(sdk): ...` | Patch (2.0.0 → 2.0.1) | Bug fixes |
|
|
347
|
+
| `feat(sdk): ...` | Minor (2.0.0 → 2.1.0) | New features |
|
|
348
|
+
| `feat(sdk)!: ...` | Major (2.0.0 → 3.0.0) | Breaking changes |
|
|
349
|
+
|
|
350
|
+
Commits with `chore`, `docs`, `ci`, or `refactor` prefixes (without `!`) do not trigger a release.
|
|
351
|
+
|
|
352
|
+
### What the Pipeline Does
|
|
353
|
+
|
|
354
|
+
1. Builds all adaptives + runtime-sdk (lint, format check, tests)
|
|
355
|
+
2. Analyzes commits since last tag → determines version
|
|
356
|
+
3. Syncs version to all adaptive `package.json` files + `SDK_VERSION` constant
|
|
357
|
+
4. Publishes `runtime-sdk` to npm via OIDC trusted publishing
|
|
358
|
+
5. Publishes all `adapt-*` packages to npm via OIDC
|
|
359
|
+
6. Deploys CDN bundles to Cloudflare R2
|
|
360
|
+
7. Creates GitHub release with changelog
|
|
361
|
+
|
|
362
|
+
### npm Auth — OIDC Trusted Publishing
|
|
363
|
+
|
|
364
|
+
No npm tokens are needed. GitHub Actions exchanges a short-lived OIDC token with npm for auth. Each `@syntrologie/*` package has a trusted publisher configured on [npmjs.com](https://www.npmjs.com) pointing to:
|
|
365
|
+
|
|
366
|
+
- **Org:** `SyntropyForge`
|
|
367
|
+
- **Repo:** `amazing-demos`
|
|
368
|
+
- **Workflow:** `sdk-release.yaml`
|
|
369
|
+
|
|
370
|
+
When adding a new package, you must configure its trusted publisher on npmjs.com before the pipeline can publish it. The first publish of a new package requires a manual `npm publish` with a token (OIDC requires the package to already exist).
|
|
371
|
+
|
|
372
|
+
### Published Packages
|
|
373
|
+
|
|
374
|
+
| Package | Description |
|
|
375
|
+
| --------------------------------- | --------------------------------------------- |
|
|
376
|
+
| `@syntrologie/runtime-sdk` | Core runtime |
|
|
377
|
+
| `@syntrologie/adapt-content` | Text, attributes, styles, HTML insertion |
|
|
378
|
+
| `@syntrologie/adapt-overlays` | Highlights, tooltips, badges, pulse, modals |
|
|
379
|
+
| `@syntrologie/adapt-nav` | Navigation widget + scrollTo/navigate actions |
|
|
380
|
+
| `@syntrologie/adapt-gamification` | Badges, points, leaderboards |
|
|
381
|
+
| `@syntrologie/adapt-faq` | FAQ accordion widget |
|
|
382
|
+
| `@syntrologie/adapt-chatbot` | Chatbot widget |
|
|
383
|
+
|
|
384
|
+
### CDN URLs
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
# Stable (latest)
|
|
388
|
+
https://cdn.syntrologie.com/runtime-sdk/v2/latest/smart-canvas.min.js
|
|
389
|
+
|
|
390
|
+
# Canary (develop)
|
|
391
|
+
https://cdn.syntrologie.com/runtime-sdk/v2/canary/smart-canvas.min.js
|
|
392
|
+
|
|
393
|
+
# Pinned version
|
|
394
|
+
https://cdn.syntrologie.com/runtime-sdk/{VERSION}/smart-canvas.min.js
|
|
395
|
+
|
|
396
|
+
# Lazy adaptive bundles
|
|
397
|
+
https://cdn.syntrologie.com/runtime-sdk/v2/latest/adaptives/{appId}/index.js
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Required GitHub Secrets
|
|
401
|
+
|
|
402
|
+
| Secret | Purpose |
|
|
403
|
+
| ---------------------- | ------------------------ |
|
|
404
|
+
| `R2_ACCESS_KEY_ID` | Cloudflare R2 CDN deploy |
|
|
405
|
+
| `R2_SECRET_ACCESS_KEY` | Cloudflare R2 CDN deploy |
|
|
406
|
+
| `R2_ENDPOINT` | Cloudflare R2 endpoint |
|
|
407
|
+
|
|
408
|
+
`GITHUB_TOKEN` is auto-provided. npm auth is OIDC — no `NPM_TOKEN` needed.
|
|
409
|
+
|
|
410
|
+
### Troubleshooting
|
|
411
|
+
|
|
412
|
+
- **"No new version is released"** — 0 relevant commits since last tag. Push a `fix:` or `feat:` commit touching SDK paths.
|
|
413
|
+
- **npm 404 / auth error** — package missing trusted publisher config on npmjs.com.
|
|
414
|
+
- **Format check fails** — run `npx prettier --write <file>` locally before pushing.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
331
418
|
## Documentation
|
|
332
419
|
|
|
333
420
|
- **[APPS.md](./APPS.md)** - App architecture: how to build runtime extensions with actions, schemas, and editor modules
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Provides access to the SmartCanvasRuntime from any component in the tree.
|
|
5
5
|
*/
|
|
6
6
|
import { ReactNode } from 'react';
|
|
7
|
-
import type { SmartCanvasRuntime } from './runtime';
|
|
8
7
|
import type { RuntimeContext } from './context/types';
|
|
8
|
+
import type { SmartCanvasRuntime } from './runtime';
|
|
9
9
|
export interface RuntimeProviderProps {
|
|
10
10
|
/** The SmartCanvasRuntime instance */
|
|
11
11
|
runtime: SmartCanvasRuntime | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeProvider.js","sourceRoot":"","sources":["../src/RuntimeProvider.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeProvider.js","sourceRoot":"","sources":["../src/RuntimeProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/SmartCanvasApp.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { SmartCanvasController } from './controller';
|
|
3
|
-
import type { CanvasConfigFetcher } from './types';
|
|
4
|
-
import type { ExperimentClient } from './experiments/types';
|
|
5
|
-
import type { TelemetryClient } from './telemetry/types';
|
|
6
2
|
import { MountableComponent } from './api';
|
|
7
3
|
import { CanvasTheme } from './components/ShadowCanvasOverlay';
|
|
4
|
+
import { SmartCanvasController } from './controller';
|
|
5
|
+
import type { ExperimentClient } from './experiments/types';
|
|
8
6
|
import type { SmartCanvasRuntime } from './runtime';
|
|
7
|
+
import type { TelemetryClient } from './telemetry/types';
|
|
8
|
+
import type { CanvasConfigFetcher } from './types';
|
|
9
9
|
export interface SmartCanvasAppProps {
|
|
10
10
|
controller: SmartCanvasController;
|
|
11
11
|
fetcher?: CanvasConfigFetcher;
|
package/dist/SmartCanvasApp.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { ShadowCanvasOverlay } from './components/ShadowCanvasOverlay';
|
|
4
|
-
import { useShadowCanvasConfig } from './hooks/useShadowCanvasConfig';
|
|
5
4
|
import { createCanvasConfigFetcher } from './configFetcher';
|
|
5
|
+
import { useShadowCanvasConfig } from './hooks/useShadowCanvasConfig';
|
|
6
6
|
import { RuntimeProvider, usePageContext } from './RuntimeProvider';
|
|
7
7
|
/**
|
|
8
8
|
* Check if current route is allowed based on routes config
|
|
@@ -28,7 +28,7 @@ function isRouteAllowed(routes, pathname) {
|
|
|
28
28
|
function matchRoute(pattern, pathname) {
|
|
29
29
|
if (pattern.endsWith('/*')) {
|
|
30
30
|
const prefix = pattern.slice(0, -2);
|
|
31
|
-
return pathname === prefix || pathname.startsWith(prefix
|
|
31
|
+
return pathname === prefix || pathname.startsWith(`${prefix}/`);
|
|
32
32
|
}
|
|
33
33
|
return pathname === pattern;
|
|
34
34
|
}
|
|
@@ -67,11 +67,11 @@ function SmartCanvasAppInner({ controller, fetcher, configUri, configUriFeatureK
|
|
|
67
67
|
const originalReplaceState = history.replaceState;
|
|
68
68
|
history.pushState = function (...args) {
|
|
69
69
|
originalPushState.apply(this, args);
|
|
70
|
-
updatePathname
|
|
70
|
+
queueMicrotask(updatePathname);
|
|
71
71
|
};
|
|
72
72
|
history.replaceState = function (...args) {
|
|
73
73
|
originalReplaceState.apply(this, args);
|
|
74
|
-
updatePathname
|
|
74
|
+
queueMicrotask(updatePathname);
|
|
75
75
|
};
|
|
76
76
|
return () => {
|
|
77
77
|
window.removeEventListener('popstate', updatePathname);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type SmartCanvasAppProps } from './SmartCanvasApp';
|
|
2
|
-
import { SmartCanvasController } from './controller';
|
|
3
1
|
import { MountableComponent } from './api';
|
|
2
|
+
import { SmartCanvasController } from './controller';
|
|
3
|
+
import { type SmartCanvasAppProps } from './SmartCanvasApp';
|
|
4
4
|
export declare class SmartCanvasElement extends HTMLElement {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
@@ -12,8 +12,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
var _SmartCanvasElement_shadow, _SmartCanvasElement_mount, _SmartCanvasElement_overlayRoot, _SmartCanvasElement_controller, _SmartCanvasElement_root, _SmartCanvasElement_lastAppProps, _SmartCanvasElement_customRenderers;
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { createRoot } from 'react-dom/client';
|
|
15
|
-
import { SmartCanvasApp } from './SmartCanvasApp';
|
|
16
15
|
import { createSmartCanvasController } from './controller';
|
|
16
|
+
import { SmartCanvasApp } from './SmartCanvasApp';
|
|
17
17
|
const TAG_NAME = 'smart-canvas';
|
|
18
18
|
const BASE_CSS = `
|
|
19
19
|
:host {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasElement.js","sourceRoot":"","sources":["../src/SmartCanvasElement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SmartCanvasElement.js","sourceRoot":"","sources":["../src/SmartCanvasElement.tsx"],"names":[],"mappings":"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"}
|