@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.
Files changed (177) hide show
  1. package/CAPABILITIES.md +286 -43
  2. package/README.md +87 -0
  3. package/dist/RuntimeProvider.d.ts +1 -1
  4. package/dist/RuntimeProvider.js.map +1 -1
  5. package/dist/SmartCanvasApp.d.ts +4 -4
  6. package/dist/SmartCanvasApp.js +4 -4
  7. package/dist/SmartCanvasApp.js.map +1 -1
  8. package/dist/SmartCanvasElement.d.ts +2 -2
  9. package/dist/SmartCanvasElement.js +1 -1
  10. package/dist/SmartCanvasElement.js.map +1 -1
  11. package/dist/SmartCanvasPortal.js.map +1 -1
  12. package/dist/actions/ActionEngine.js +2 -4
  13. package/dist/actions/ActionEngine.js.map +1 -1
  14. package/dist/actions/executors/index.d.ts +3 -4
  15. package/dist/actions/executors/index.js +9 -11
  16. package/dist/actions/executors/index.js.map +1 -1
  17. package/dist/actions/executors/tour.js +3 -3
  18. package/dist/actions/executors/tour.js.map +1 -1
  19. package/dist/actions/validation.js +6 -31
  20. package/dist/actions/validation.js.map +1 -1
  21. package/dist/adaptives/adaptive-chatbot/index.js +9 -0
  22. package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
  23. package/dist/adaptives/adaptive-content/index.js +2 -0
  24. package/dist/adaptives/adaptive-content/index.js.map +7 -0
  25. package/dist/adaptives/adaptive-faq/index.js +11 -0
  26. package/dist/adaptives/adaptive-faq/index.js.map +7 -0
  27. package/dist/adaptives/adaptive-gamification/index.js +2 -0
  28. package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
  29. package/dist/adaptives/adaptive-nav/index.js +11 -0
  30. package/dist/adaptives/adaptive-nav/index.js.map +7 -0
  31. package/dist/adaptives/adaptive-overlays/index.js +91 -0
  32. package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
  33. package/dist/api.d.ts +5 -5
  34. package/dist/api.js +4 -7
  35. package/dist/api.js.map +1 -1
  36. package/dist/apps/AppContext.js +3 -5
  37. package/dist/apps/AppContext.js.map +1 -1
  38. package/dist/apps/AppLoader.d.ts +2 -1
  39. package/dist/apps/AppLoader.js +37 -11
  40. package/dist/apps/AppLoader.js.map +1 -1
  41. package/dist/apps/AppRegistry.js.map +1 -1
  42. package/dist/apps/examples/gamification-app.example.d.ts +8 -8
  43. package/dist/apps/examples/gamification-app.example.js.map +1 -1
  44. package/dist/apps/index.d.ts +2 -3
  45. package/dist/apps/index.js +2 -3
  46. package/dist/apps/index.js.map +1 -1
  47. package/dist/apps/types.d.ts +1 -1
  48. package/dist/blocks/data/ComparisonBlock.js +9 -9
  49. package/dist/blocks/data/ComparisonBlock.js.map +1 -1
  50. package/dist/blocks/data/StatsBlock.js +12 -14
  51. package/dist/blocks/data/StatsBlock.js.map +1 -1
  52. package/dist/blocks/index.d.ts +2 -2
  53. package/dist/blocks/index.js +3 -4
  54. package/dist/blocks/index.js.map +1 -1
  55. package/dist/blocks/interactive/ChecklistBlock.js +12 -12
  56. package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
  57. package/dist/blocks/interactive/RatingBlock.js +12 -14
  58. package/dist/blocks/interactive/RatingBlock.js.map +1 -1
  59. package/dist/blocks/notification/NotificationBlock.js +24 -24
  60. package/dist/blocks/notification/NotificationBlock.js.map +1 -1
  61. package/dist/bootstrap.d.ts +6 -6
  62. package/dist/bootstrap.js +31 -34
  63. package/dist/bootstrap.js.map +1 -1
  64. package/dist/components/ShadowCanvasOverlay.d.ts +2 -2
  65. package/dist/components/ShadowCanvasOverlay.js +25 -24
  66. package/dist/components/ShadowCanvasOverlay.js.map +1 -1
  67. package/dist/components/TileCard.d.ts +2 -2
  68. package/dist/components/TileCard.js +24 -23
  69. package/dist/components/TileCard.js.map +1 -1
  70. package/dist/components/TileWheel.d.ts +1 -1
  71. package/dist/components/TileWheel.js +23 -1
  72. package/dist/components/TileWheel.js.map +1 -1
  73. package/dist/config-validator.d.ts +49 -0
  74. package/dist/config-validator.js +173 -0
  75. package/dist/config-validator.js.map +1 -0
  76. package/dist/configFetcher.d.ts +6 -2
  77. package/dist/configFetcher.js +66 -29
  78. package/dist/configFetcher.js.map +1 -1
  79. package/dist/context/ContextManager.d.ts +1 -1
  80. package/dist/context/ContextManager.js +4 -3
  81. package/dist/context/ContextManager.js.map +1 -1
  82. package/dist/context/schema.d.ts +8 -8
  83. package/dist/context/schema.js +1 -1
  84. package/dist/context/schema.js.map +1 -1
  85. package/dist/decisions/engine.d.ts +2 -2
  86. package/dist/decisions/engine.js.map +1 -1
  87. package/dist/decisions/schema.d.ts +34 -34
  88. package/dist/decisions/schema.js +1 -1
  89. package/dist/decisions/schema.js.map +1 -1
  90. package/dist/editorLoader.d.ts +19 -9
  91. package/dist/editorLoader.js +107 -96
  92. package/dist/editorLoader.js.map +1 -1
  93. package/dist/events/normalizers/canvas.d.ts +1 -1
  94. package/dist/events/normalizers/canvas.js.map +1 -1
  95. package/dist/events/schema.d.ts +8 -8
  96. package/dist/events/schema.js +1 -1
  97. package/dist/events/schema.js.map +1 -1
  98. package/dist/experiments/adapters/growthbook.d.ts +2 -1
  99. package/dist/experiments/adapters/growthbook.js +9 -1
  100. package/dist/experiments/adapters/growthbook.js.map +1 -1
  101. package/dist/experiments/types.d.ts +5 -0
  102. package/dist/fetchers/cdnFetcher.js.map +1 -1
  103. package/dist/fetchers/experimentsFetcher.d.ts +24 -2
  104. package/dist/fetchers/experimentsFetcher.js +48 -1
  105. package/dist/fetchers/experimentsFetcher.js.map +1 -1
  106. package/dist/fetchers/mergeConfigs.d.ts +29 -0
  107. package/dist/fetchers/mergeConfigs.js +38 -0
  108. package/dist/fetchers/mergeConfigs.js.map +1 -0
  109. package/dist/hooks/useCanvasOverlays.d.ts +1 -1
  110. package/dist/hooks/useCanvasOverlays.js +2 -2
  111. package/dist/hooks/useCanvasOverlays.js.map +1 -1
  112. package/dist/hooks/useHostPatches.js.map +1 -1
  113. package/dist/hooks/useShadowCanvasConfig.d.ts +1 -1
  114. package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
  115. package/dist/hostPatcher/core/patcher.js.map +1 -1
  116. package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
  117. package/dist/index.d.ts +2 -0
  118. package/dist/index.js +17 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/overlays/fetcher.d.ts +1 -1
  121. package/dist/overlays/fetcher.js +12 -14
  122. package/dist/overlays/fetcher.js.map +1 -1
  123. package/dist/overlays/runtime/overlay/runner.js +18 -5
  124. package/dist/overlays/runtime/overlay/runner.js.map +1 -1
  125. package/dist/overlays/runtime/overlay/tooltip.js +3 -5
  126. package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
  127. package/dist/react.d.ts +1 -1
  128. package/dist/react.js.map +1 -1
  129. package/dist/render/RenderContext.js.map +1 -1
  130. package/dist/runtime.d.ts +6 -6
  131. package/dist/runtime.js +38 -16
  132. package/dist/runtime.js.map +1 -1
  133. package/dist/smart-canvas.esm.js +97 -85
  134. package/dist/smart-canvas.esm.js.map +4 -4
  135. package/dist/smart-canvas.js +41603 -44405
  136. package/dist/smart-canvas.js.map +4 -4
  137. package/dist/smart-canvas.min.js +97 -85
  138. package/dist/smart-canvas.min.js.map +4 -4
  139. package/dist/state/StateStore.d.ts +0 -6
  140. package/dist/state/StateStore.js +7 -1
  141. package/dist/state/StateStore.js.map +1 -1
  142. package/dist/surfaces/Surfaces.js +1 -1
  143. package/dist/surfaces/Surfaces.js.map +1 -1
  144. package/dist/surfaces/positioning.js.map +1 -1
  145. package/dist/telemetry/adapters/noop.d.ts +1 -18
  146. package/dist/telemetry/adapters/noop.js +5 -38
  147. package/dist/telemetry/adapters/noop.js.map +1 -1
  148. package/dist/telemetry/adapters/posthog.js +1 -1
  149. package/dist/telemetry/adapters/posthog.js.map +1 -1
  150. package/dist/telemetry/index.d.ts +0 -1
  151. package/dist/telemetry/registry.d.ts +0 -7
  152. package/dist/telemetry/registry.js +2 -2
  153. package/dist/telemetry/registry.js.map +1 -1
  154. package/dist/theme/ThemeProvider.js.map +1 -1
  155. package/dist/theme/defaultTheme.d.ts +2 -3
  156. package/dist/theme/defaultTheme.js +60 -51
  157. package/dist/theme/defaultTheme.js.map +1 -1
  158. package/dist/theme/extractHostTheme.js +1 -1
  159. package/dist/theme/extractHostTheme.js.map +1 -1
  160. package/dist/types.d.ts +22 -1
  161. package/dist/types.js +14 -2
  162. package/dist/types.js.map +1 -1
  163. package/dist/version.d.ts +13 -0
  164. package/dist/version.js +14 -0
  165. package/dist/version.js.map +1 -0
  166. package/dist/widgets/WidgetRegistry.d.ts +6 -0
  167. package/dist/widgets/WidgetRegistry.js +12 -3
  168. package/dist/widgets/WidgetRegistry.js.map +1 -1
  169. package/package.json +19 -11
  170. package/dist/apps/adaptive-chatbot/index.js +0 -7
  171. package/dist/apps/adaptive-chatbot/index.js.map +0 -7
  172. package/dist/apps/faq/index.js +0 -11
  173. package/dist/apps/faq/index.js.map +0 -7
  174. package/dist/apps/gamification/index.js +0 -2
  175. package/dist/apps/gamification/index.js.map +0 -7
  176. package/dist/apps/nav/index.js +0 -11
  177. 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/app-chatbot](#syntrologieapp-chatbot)
71
- - [@syntrologie/app-content](#syntrologieapp-content)
72
- - [@syntrologie/app-faq](#syntrologieapp-faq)
73
- - [@syntrologie/app-gamification](#syntrologieapp-gamification)
74
- - [@syntrologie/app-nav](#syntrologieapp-nav)
75
- - [@syntrologie/app-navigation](#syntrologieapp-navigation)
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/app-chatbot
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/app-content
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/app-faq
292
+ # @syntrologie/adapt-faq
294
293
 
295
- FAQ accordion widget with conditional item visibility.
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 | Type | Required | Description |
304
- | -------------- | ------------- | -------- | -------------------------------------------------------- |
305
- | `kind` | `"mount_faq"` | Yes | Action type |
306
- | `slot` | string | Yes | Target slot (e.g., `"drawer_right"`, `"overlay_center"`) |
307
- | `config.title` | string | No | Widget title |
308
- | `config.items` | array | Yes | FAQ items (see below) |
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 | Type | Required | Description |
315
- | ---------- | ---------------- | -------- | ----------------------------------- |
316
- | `question` | string | Yes | The question text |
317
- | `answer` | string | Yes | The answer text (supports markdown) |
318
- | `showWhen` | DecisionStrategy | No | Conditional visibility strategy |
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
- "question": "How do I get started?",
329
- "answer": "Sign up for a free account and follow our quickstart guide."
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
- "question": "What payment methods do you accept?",
333
- "answer": "We accept all major credit cards and PayPal.",
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 supports **per-item conditional visibility** using `showWhen` strategies. This allows different FAQ items to appear based on:
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
- - Current page/route
355
- - User segment or state
356
- - Viewport conditions
357
- - Any other DecisionStrategy condition
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![Editor screenshot](asset:editor-screenshot)",
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/app-gamification
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/app-nav
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/app-overlays
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":"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"}
1
+ {"version":3,"file":"RuntimeProvider.js","sourceRoot":"","sources":["../src/RuntimeProvider.tsx"],"names":[],"mappings":"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"}
@@ -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;
@@ -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":"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"}
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":"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"}
1
+ {"version":3,"file":"SmartCanvasElement.js","sourceRoot":"","sources":["../src/SmartCanvasElement.tsx"],"names":[],"mappings":"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"}