@syntrologie/adapt-chatbot 2.28.0 → 2.29.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.
Files changed (101) hide show
  1. package/dist/AdaptiveChatBar.composer.test.d.ts +2 -0
  2. package/dist/AdaptiveChatBar.composer.test.d.ts.map +1 -0
  3. package/dist/AdaptiveChatBar.d.ts +140 -4
  4. package/dist/AdaptiveChatBar.d.ts.map +1 -1
  5. package/dist/AdaptiveChatBar.js +4 -3
  6. package/dist/AdaptiveChatBarMountable.d.ts +47 -0
  7. package/dist/AdaptiveChatBarMountable.d.ts.map +1 -1
  8. package/dist/AdaptiveChatTrail.anchor-scroll.test.d.ts +2 -0
  9. package/dist/AdaptiveChatTrail.anchor-scroll.test.d.ts.map +1 -0
  10. package/dist/AdaptiveChatTrail.d.ts +397 -5
  11. package/dist/AdaptiveChatTrail.d.ts.map +1 -1
  12. package/dist/AdaptiveChatTrail.js +6 -4
  13. package/dist/AdaptiveChatTrail.test.d.ts +2 -0
  14. package/dist/AdaptiveChatTrail.test.d.ts.map +1 -0
  15. package/dist/AdaptiveChipsStrip.d.ts +17 -11
  16. package/dist/AdaptiveChipsStrip.d.ts.map +1 -1
  17. package/dist/AdaptiveChipsStrip.js +2 -2
  18. package/dist/ChatAssistantLit.d.ts.map +1 -1
  19. package/dist/ChatAssistantLit.js +4 -3
  20. package/dist/ChatSession.d.ts +66 -5
  21. package/dist/ChatSession.d.ts.map +1 -1
  22. package/dist/ChatTransport.d.ts +107 -0
  23. package/dist/ChatTransport.d.ts.map +1 -1
  24. package/dist/InlineRegistryWidgetMount.test.d.ts +2 -0
  25. package/dist/InlineRegistryWidgetMount.test.d.ts.map +1 -0
  26. package/dist/InlineWidgetLiveMount.test.d.ts +2 -0
  27. package/dist/InlineWidgetLiveMount.test.d.ts.map +1 -0
  28. package/dist/NavLinkMountable.d.ts.map +1 -1
  29. package/dist/TextAnswerMountable.test.d.ts +2 -0
  30. package/dist/TextAnswerMountable.test.d.ts.map +1 -0
  31. package/dist/Turnstile.d.ts.map +1 -1
  32. package/dist/chunk-A7RBZLIX.js +1678 -0
  33. package/dist/chunk-A7RBZLIX.js.map +7 -0
  34. package/dist/{chunk-435KJD27.js → chunk-EACGDSJI.js} +46 -1
  35. package/dist/chunk-EACGDSJI.js.map +7 -0
  36. package/dist/chunk-EWPPVPJ4.js +14 -0
  37. package/dist/chunk-EWPPVPJ4.js.map +7 -0
  38. package/dist/chunk-FXHYE6FY.js +632 -0
  39. package/dist/chunk-FXHYE6FY.js.map +7 -0
  40. package/dist/{chunk-AUER7ZCK.js → chunk-OIGVZGSX.js} +11 -4
  41. package/dist/chunk-OIGVZGSX.js.map +7 -0
  42. package/dist/{chunk-UC4XU6GH.js → chunk-VZIUXXAM.js} +761 -52
  43. package/dist/chunk-VZIUXXAM.js.map +7 -0
  44. package/dist/{chunk-KUO67E2W.js → chunk-ZXV4GXMO.js} +715 -227
  45. package/dist/chunk-ZXV4GXMO.js.map +7 -0
  46. package/dist/elements/ActionHandler.d.ts +1 -1
  47. package/dist/elements/ActionHandler.d.ts.map +1 -1
  48. package/dist/elements/ElementInstanceStore.d.ts +62 -0
  49. package/dist/elements/ElementInstanceStore.d.ts.map +1 -1
  50. package/dist/elements/TileHandler.d.ts.map +1 -1
  51. package/dist/elements/TileHandler.test.d.ts +2 -0
  52. package/dist/elements/TileHandler.test.d.ts.map +1 -0
  53. package/dist/elements/__tests__/ElementInstanceStore.recall.test.d.ts +2 -0
  54. package/dist/elements/__tests__/ElementInstanceStore.recall.test.d.ts.map +1 -0
  55. package/dist/elements/fetcher.d.ts +3 -3
  56. package/dist/elements/fetcher.d.ts.map +1 -1
  57. package/dist/elements/index.d.ts +1 -0
  58. package/dist/elements/index.d.ts.map +1 -1
  59. package/dist/elements/store-singleton.d.ts +4 -0
  60. package/dist/elements/store-singleton.d.ts.map +1 -0
  61. package/dist/elements/types.d.ts +4 -0
  62. package/dist/elements/types.d.ts.map +1 -1
  63. package/dist/observer/__tests__/bus-translate.test.d.ts +16 -0
  64. package/dist/observer/__tests__/bus-translate.test.d.ts.map +1 -0
  65. package/dist/observer/__tests__/lifecycle.test.d.ts +2 -0
  66. package/dist/observer/__tests__/lifecycle.test.d.ts.map +1 -0
  67. package/dist/observer/__tests__/observer-enrich.test.d.ts +10 -0
  68. package/dist/observer/__tests__/observer-enrich.test.d.ts.map +1 -0
  69. package/dist/observer/allowlist.d.ts +5 -7
  70. package/dist/observer/allowlist.d.ts.map +1 -1
  71. package/dist/observer/bus-translate.d.ts +33 -0
  72. package/dist/observer/bus-translate.d.ts.map +1 -0
  73. package/dist/observer/index.d.ts +10 -1
  74. package/dist/observer/index.d.ts.map +1 -1
  75. package/dist/observer/queue.d.ts +6 -0
  76. package/dist/observer/queue.d.ts.map +1 -1
  77. package/dist/observer/transport.d.ts +1 -0
  78. package/dist/observer/transport.d.ts.map +1 -1
  79. package/dist/personas.d.ts +30 -0
  80. package/dist/personas.d.ts.map +1 -0
  81. package/dist/runtime.d.ts +2 -0
  82. package/dist/runtime.d.ts.map +1 -1
  83. package/dist/runtime.js +856 -129
  84. package/dist/runtime.js.map +4 -4
  85. package/dist/schema.d.ts +363 -67
  86. package/dist/schema.d.ts.map +1 -1
  87. package/dist/schema.js +176 -3
  88. package/dist/schema.js.map +2 -2
  89. package/dist/test/setup.d.ts +1 -0
  90. package/dist/test/setup.d.ts.map +1 -0
  91. package/dist/types.d.ts +16 -0
  92. package/dist/types.d.ts.map +1 -1
  93. package/package.json +5 -1
  94. package/dist/chunk-435KJD27.js.map +0 -7
  95. package/dist/chunk-AUER7ZCK.js.map +0 -7
  96. package/dist/chunk-DOMEUJR7.js +0 -382
  97. package/dist/chunk-DOMEUJR7.js.map +0 -7
  98. package/dist/chunk-KUO67E2W.js.map +0 -7
  99. package/dist/chunk-QELVKBQV.js +0 -214
  100. package/dist/chunk-QELVKBQV.js.map +0 -7
  101. package/dist/chunk-UC4XU6GH.js.map +0 -7
@@ -27,7 +27,7 @@ export declare class ActionHandler implements ElementTypeHandler {
27
27
  readonly lifecycle: "imperative";
28
28
  validate(instance: MountedElement, _ctx: ElementHandlerContext): ValidateResult;
29
29
  mount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void>;
30
- patch(instance: MountedElement, ctx: ElementHandlerContext): Promise<void>;
30
+ patch(_instance: MountedElement, _ctx: ElementHandlerContext): Promise<void>;
31
31
  unmount(_instance: MountedElement, _ctx: ElementHandlerContext): Promise<void>;
32
32
  private _actionFromInstance;
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ActionHandler.d.ts","sourceRoot":"","sources":["../../src/elements/ActionHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,aAAc,YAAW,kBAAkB;IACtD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGtC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAE3C,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc;IAWzE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1E,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpF,OAAO,CAAC,mBAAmB;CAiC5B"}
1
+ {"version":3,"file":"ActionHandler.d.ts","sourceRoot":"","sources":["../../src/elements/ActionHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,aAAc,YAAW,kBAAkB;IACtD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGtC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAE3C,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc;IAWzE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpF,OAAO,CAAC,mBAAmB;CAiC5B"}
@@ -28,6 +28,38 @@
28
28
  import type { ActionEngine } from '../types';
29
29
  import type { ElementTypeHandler } from './ElementTypeHandler';
30
30
  import type { ElementMutation, MountedElement } from './types';
31
+ /**
32
+ * Slot name reserved for tiles the backend wants rendered INLINE IN THE
33
+ * CHAT TRAIL (in the conversation flow, like a rich message) rather than
34
+ * in the canvas deck. The reco carousel uses this: the deck tile mounts
35
+ * BEHIND the open chat panel, so the visitor never sees it. The backend
36
+ * owns the placement decision — `adaptive_agent.py` emits
37
+ * `SlotPlacement(slot="chat-inline")` for the reco mount. On the chat
38
+ * side these tiles:
39
+ * - surface via {@link ElementInstanceStore.listInlineWidgets} so the
40
+ * trail can mount the widget element inline; and
41
+ * - are SUPPRESSED from {@link ElementInstanceStore.listTileReceipts}
42
+ * (a receipt chip would be a redundant, weaker affordance for a
43
+ * widget already visible in the trail).
44
+ * Every other slot keeps its existing deck + receipt-chip behavior.
45
+ */
46
+ export declare const CHAT_INLINE_SLOT = "chat-inline";
47
+ /** One inline-rendered widget for the chat trail — a `chat-inline` tile. */
48
+ export interface InlineWidget {
49
+ instanceId: string;
50
+ /** Custom-element tag to mount (e.g. `syntro-product-reco-carousel`). */
51
+ tag: string;
52
+ /** Payload assigned to the mounted element as ONE `props` object property
53
+ * (`el.props = props` — the standard tile-widget mount contract; never
54
+ * spread as individual per-key properties). */
55
+ props: Record<string, unknown>;
56
+ /** `mounted_by.turn_id` — lets the chat trail restore the widget to its
57
+ * original transcript position after a reload. */
58
+ turnId?: string;
59
+ /** `tool_call_id` of the mount call — pins the restored widget to the exact
60
+ * transcript message hosting that call; `turnId` is the coarser fallback. */
61
+ toolCallId?: string;
62
+ }
31
63
  export interface ElementInstanceStoreOptions {
32
64
  actions: ActionEngine;
33
65
  /** Runtime's event bus. ItemHandler publishes
@@ -93,6 +125,9 @@ export declare class ElementInstanceStore {
93
125
  private readonly _resolveTileWidget?;
94
126
  /** Active TTL timeout — replaced on each call to `scheduleClientTtl`. */
95
127
  private _ttlTimer;
128
+ /** Instance IDs the client has dismissed. Persists across canvas remounts
129
+ * so a dismissed tile never silently reappears on replay/broadcast. */
130
+ private readonly _dismissedIds;
96
131
  constructor(options: ElementInstanceStoreOptions);
97
132
  /**
98
133
  * Listen for `element.compositional_replay_request` from container
@@ -107,6 +142,33 @@ export declare class ElementInstanceStore {
107
142
  private _replayItems;
108
143
  private _replayTiles;
109
144
  registerHandler(handler: ElementTypeHandler): void;
145
+ isDismissed(instanceId: string): boolean;
146
+ getDismissedIds(): ReadonlySet<string>;
147
+ /** Store-driven receipt source for the chat trail (one per active slot-tile). */
148
+ listTileReceipts(): Array<{
149
+ kind: 'tile';
150
+ instanceId: string;
151
+ title: string;
152
+ dismissed: boolean;
153
+ turnId?: string;
154
+ toolCallId?: string;
155
+ } | {
156
+ kind: 'alert';
157
+ instanceId: string;
158
+ title: string;
159
+ turnId?: string;
160
+ toolCallId?: string;
161
+ }>;
162
+ /**
163
+ * Store-driven inline-widget source for the chat trail — one entry per
164
+ * active `chat-inline` slot-tile. The trail mounts each entry's widget
165
+ * element (by tag name, via `document.createElement`) inline in the
166
+ * conversation flow. Distinct from {@link listTileReceipts}: those are
167
+ * chips that recall a deck tile; these ARE the rendered widget.
168
+ */
169
+ listInlineWidgets(): InlineWidget[];
170
+ /** Clear a client dismissal and re-publish the tile's mount from retained content. */
171
+ recreate(instanceId: string): void;
110
172
  /**
111
173
  * Apply the server-provided boot snapshot. For each instance:
112
174
  * - stateful: validated + mounted via the type handler;
@@ -1 +1 @@
1
- {"version":3,"file":"ElementInstanceStore.d.ts","sourceRoot":"","sources":["../../src/elements/ElementInstanceStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAyB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK/D,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACjE;;;;;;WAMG;QACH,SAAS,CAAC,EAAE;YACV,CACE,MAAM,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE,EAC5B,OAAO,EAAE,CAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,IAAI,GAC1E,MAAM,IAAI,CAAC;YACd,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;SAC3F,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,iEAAiE;IACjE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAClD;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAChE;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA6C;IACjF,yEAAyE;IACzE,OAAO,CAAC,SAAS,CAA8C;gBAEnD,OAAO,EAAE,2BAA2B;IAYhD;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAepB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIlD;;;;;;;;OAQG;IACG,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CxD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;OAIG;IACG,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,uDAAuD;IACvD,YAAY,IAAI,cAAc,EAAE;IAIhC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI5D;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;YAuB5C,oBAAoB;YAkBpB,SAAS;YAsGT,MAAM;IAyBpB,OAAO,CAAC,IAAI;CAGb"}
1
+ {"version":3,"file":"ElementInstanceStore.d.ts","sourceRoot":"","sources":["../../src/elements/ElementInstanceStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TileHandler.d.ts","sourceRoot":"","sources":["../../src/elements/TileHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAUH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,SAAS,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEpF,qBAAa,WAAY,YAAW,kBAAkB;IAIxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAH3C,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IACpC,QAAQ,CAAC,SAAS,EAAG,UAAU,CAAU;gBAEZ,aAAa,CAAC,EAAE,0BAA0B,YAAA;IAEvE,OAAO,CAAC,UAAU;IAIlB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc;IAiBzE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CASnF"}
1
+ {"version":3,"file":"TileHandler.d.ts","sourceRoot":"","sources":["../../src/elements/TileHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAUH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,SAAS,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEpF,qBAAa,WAAY,YAAW,kBAAkB;IAIxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAH3C,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IACpC,QAAQ,CAAC,SAAS,EAAG,UAAU,CAAU;gBAEZ,aAAa,CAAC,EAAE,0BAA0B,YAAA;IAEvE,OAAO,CAAC,UAAU;IAIlB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc;IA2BzE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CASnF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TileHandler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileHandler.test.d.ts","sourceRoot":"","sources":["../../src/elements/TileHandler.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ElementInstanceStore.recall.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementInstanceStore.recall.test.d.ts","sourceRoot":"","sources":["../../../src/elements/__tests__/ElementInstanceStore.recall.test.ts"],"names":[],"mappings":""}
@@ -6,9 +6,9 @@
6
6
  * — no shared HTTP client, no axios, no fetch wrapper).
7
7
  *
8
8
  * Auth: forwards the SDK token from `window.__SYNTRO_CONFIG__.token`
9
- * as a Bearer header. Cookies (`syntro_chat_session`) are sent via
10
- * `credentials: 'include'` so the backend can scope to the same Redis
11
- * session the chat uses.
9
+ * as a Bearer header, plus the runtime's visitor ids (`X-Distinct-Id` /
10
+ * `X-Syntro-Session`) so the backend rehydrates mounts under the same
11
+ * session-keyed Redis state the chat persisted to.
12
12
  *
13
13
  * 404 contract: the backend returns 404 only when the workspace's SDK
14
14
  * token doesn't resolve to a workspace. The SDK treats 404 as
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/elements/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,WAAW,2BAA2B;IAC1C;;4BAEwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,oDAAoD;IACpD,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CA+CzC"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/elements/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,WAAW,2BAA2B;IAC1C;;4BAEwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,oDAAoD;IACpD,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CA2DzC"}
@@ -27,6 +27,7 @@ export type { FetchMountedElementsOptions } from './fetcher';
27
27
  export { fetchMountedElements } from './fetcher';
28
28
  export type { CompositionalAppendEvent, CompositionalPatchEvent, CompositionalRemoveEvent, } from './ItemHandler';
29
29
  export { COMPOSITIONAL_APPEND_EVENT, COMPOSITIONAL_PATCH_EVENT, COMPOSITIONAL_REMOVE_EVENT, ItemHandler, } from './ItemHandler';
30
+ export { getElementInstanceStore, setElementInstanceStore } from './store-singleton';
30
31
  export { TileHandler } from './TileHandler';
31
32
  export type { AgentProvenance, ElementMutation, ElementState, MountedElement, MountedElementsResponse, MountMutation, Mutation, MutationEnvelope, NoPlacement, ParentTilePlacement, PatchMutation, Placement, SelectorPlacement, SlotPlacement, UnmountMutation, } from './types';
32
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ElementInstanceStore } from './ElementInstanceStore';
2
+ export declare function setElementInstanceStore(store: ElementInstanceStore | null): void;
3
+ export declare function getElementInstanceStore(): ElementInstanceStore | null;
4
+ //# sourceMappingURL=store-singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-singleton.d.ts","sourceRoot":"","sources":["../../src/elements/store-singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAInE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAEhF;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,IAAI,CAErE"}
@@ -59,6 +59,10 @@ export interface MountedElement {
59
59
  state: ElementState;
60
60
  mounted_by: AgentProvenance;
61
61
  mounted_at: string;
62
+ /** Model-issued id of the tool call that mounted this element — the SDK
63
+ * anchors the restored element to the transcript message hosting this
64
+ * call (BUG-1784935730). Absent on pre-existing sessions. */
65
+ tool_call_id?: string | null;
62
66
  version: number;
63
67
  mutation_log?: Mutation[];
64
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/elements/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC1F;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,iBAAiB,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAE9F,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,yBAAyB,CAAC;IAChC,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B;qCACiC;IACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,IAAI,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/elements/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC1F;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,iBAAiB,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAE9F,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB;;iEAE6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,yBAAyB,CAAC;IAChC,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B;qCACiC;IACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,IAAI,CAAC;CACtB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Real-seam tests for the bus-fed observer path.
3
+ *
4
+ * On hosts without a `window.posthog` global, click / rage / dead / form
5
+ * observations reach the chat agent only via the runtime bus, which carries
6
+ * NORMALIZED events (event-processor's PostHog normalizer). This drives the
7
+ * ACTUAL translator (`busEventToRawEvent`) into the ACTUAL matcher
8
+ * (`matchEvent`) with authentic bus-shaped inputs — the exact shape
9
+ * `packages/event-processor/src/normalizers/posthog.ts` emits.
10
+ *
11
+ * Pre-fix, the translator only re-prefixed pathname/url, so matchEvent's
12
+ * `$autocapture` branch read `$event_type: undefined` → returned null. These
13
+ * tests fail against that behavior and pass once the mapping is fixed.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=bus-translate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus-translate.test.d.ts","sourceRoot":"","sources":["../../../src/observer/__tests__/bus-translate.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lifecycle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.test.d.ts","sourceRoot":"","sources":["../../../src/observer/__tests__/lifecycle.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tests for the observer's per-observation `enrich` hook.
3
+ *
4
+ * The chat-bar uses this hook to attach normalized product identity (from the
5
+ * ACTIVE platform adapter) to click observations before they're queued for the
6
+ * observation POST. The observer itself stays platform-neutral — it just
7
+ * applies whatever transform it's given, AFTER matchEvent, BEFORE queueing.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=observer-enrich.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer-enrich.test.d.ts","sourceRoot":"","sources":["../../../src/observer/__tests__/observer-enrich.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -9,13 +9,11 @@
9
9
  * Kept dependency-free (no DOM access, no PostHog SDK imports) so the
10
10
  * Vitest unit tests run without any browser shim.
11
11
  */
12
- export type ObservationKind = 'nav' | 'click' | 'form' | 'rage' | 'dead' | 'scroll' | 'view' | 'idle' | 'hover' | 'hesitation' | 'custom';
13
- export interface ObservationEvent {
14
- ts: number;
15
- kind: ObservationKind;
16
- text: string;
17
- ref?: string;
18
- }
12
+ import type { ObservationEvent as ObservationEventContract } from '@syntrologie/runtime-contracts';
13
+ /** The templated event kinds (nav/click/form/rage/…) — the backend enum. */
14
+ export type ObservationKind = ObservationEventContract['kind'];
15
+ /** One templated host-page event — the SDK↔backend wire contract. */
16
+ export type ObservationEvent = ObservationEventContract;
19
17
  /** Shape of a raw event reaching matchEvent. Loose by design — PostHog's
20
18
  * event shape evolves, and we want matchEvent to be resilient to extra
21
19
  * properties. */
@@ -1 +1 @@
1
- {"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../src/observer/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;kBAEkB;AAClB,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AA0ED,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAE,YAAiB,GAAG,gBAAgB,GAAG,IAAI,CA4I1F"}
1
+ {"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../src/observer/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAE/D,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAExD;;kBAEkB;AAClB,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AA0ED,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAE,YAAiB,GAAG,gBAAgB,GAAG,IAAI,CAiJ1F"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Runtime-bus → observer translation.
3
+ *
4
+ * On hosts where `window.posthog` isn't exposed as a global, the observer's
5
+ * PostHog auto-attach is a no-op; instead the chat-bar subscribes to the
6
+ * SYNTRO runtime event bus and forwards events into the observer's allowlist.
7
+ *
8
+ * The catch: bus events have already been NORMALIZED by the event-processor
9
+ * (see `packages/event-processor/src/normalizers/posthog.ts`). The raw PostHog
10
+ * `$`-prefixed properties `matchEvent` reads (`$event_type`, `$elements`,
11
+ * `$element_tag_name`, `$pathname`, `$current_url`) were renamed to
12
+ * (`—dropped—`, `elements`, `tagName`, `pathname`, `url`) and the click/submit
13
+ * distinction moved from `$event_type` into the normalized event `name`
14
+ * (`ui.click` / `ui.submit`). This function re-derives the raw shape so
15
+ * `matchEvent` — the single source of truth, also fed directly by the
16
+ * `window.posthog`-global path — stays untouched.
17
+ */
18
+ import type { RawEvent } from './allowlist';
19
+ /** A normalized event as it arrives on the SYNTRO runtime bus. */
20
+ export interface BusEvent {
21
+ ts?: number;
22
+ name?: string;
23
+ source?: string;
24
+ props?: Record<string, unknown> & {
25
+ originalEvent?: string;
26
+ };
27
+ }
28
+ /**
29
+ * Translate one bus event into the `RawEvent` the observer allowlist expects,
30
+ * or null to drop it.
31
+ */
32
+ export declare function busEventToRawEvent(e: BusEvent): RawEvent | null;
33
+ //# sourceMappingURL=bus-translate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus-translate.d.ts","sourceRoot":"","sources":["../../src/observer/bus-translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAyB/D"}
@@ -11,14 +11,23 @@
11
11
  * returns the same instance. Calling stop() decrements the ref count;
12
12
  * the observer tears down only when the count reaches zero.
13
13
  */
14
- import { type RawEvent } from './allowlist';
14
+ import { type ObservationEvent, type RawEvent } from './allowlist';
15
15
  import { type ObserverStats } from './queue';
16
16
  import { type Transport } from './transport';
17
17
  export interface StartObserverOptions {
18
18
  url: string;
19
19
  token: () => string;
20
20
  getDistinctId: () => string | null;
21
+ getSessionId: () => string | null;
21
22
  observableEvents?: readonly string[];
23
+ /**
24
+ * Optional per-observation enrichment applied AFTER matchEvent, BEFORE the
25
+ * observation is queued for POST. Given the matched observation plus the raw
26
+ * event (element chain intact), returns a possibly-augmented observation —
27
+ * e.g. attaching normalized product identity from the active platform
28
+ * adapter. Kept as a generic transform so the observer stays platform-neutral.
29
+ */
30
+ enrich?: (ev: ObservationEvent, raw: RawEvent) => ObservationEvent;
22
31
  /** Test seam: override fetch/timer behavior by injecting a custom transport. */
23
32
  transport?: Transport;
24
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gFAAgF;IAChF,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,aAAa,CAAC;IACvB,wFAAwF;IACxF,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAoDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CAoCxE;AAoCD,+CAA+C;AAC/C,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,KAAK,gBAAgB,CAAC;IACnE,gFAAgF;IAChF,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,aAAa,CAAC;IACvB,wFAAwF;IACxF,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AA2DD,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CAqCxE;AAsCD,+CAA+C;AAC/C,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
@@ -47,6 +47,12 @@ export declare class ObserverQueue {
47
47
  constructor(opts: ObserverQueueOptions);
48
48
  push(event: ObservationEvent): void;
49
49
  flushNow(): Promise<void>;
50
+ /**
51
+ * Synchronously hand the newest backend-sized batch to an unload-safe sender.
52
+ * Returns false when the sender rejected delivery and restores the batch so
53
+ * the caller can fall back to fetch({ keepalive: true }).
54
+ */
55
+ flushOnPageHide(send: (batch: ObservationEvent[]) => boolean): boolean;
50
56
  stats(): ObserverStats;
51
57
  private _scheduleImmediate;
52
58
  private _scheduleInterval;
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/observer/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,oBAAoB;IAQtC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAe7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,KAAK,IAAI,aAAa;IAUtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;YAOR,MAAM;IA0BpB,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/observer/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,oBAAoB;IAQtC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAe7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,OAAO,GAAG,OAAO;IAkBtE,KAAK,IAAI,aAAa;IAUtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;YAOR,MAAM;IA0BpB,OAAO,CAAC,gBAAgB;CAazB"}
@@ -17,6 +17,7 @@ export interface TransportOptions {
17
17
  url: string;
18
18
  token: () => string;
19
19
  getDistinctId: () => string | null;
20
+ getSessionId: () => string | null;
20
21
  }
21
22
  export interface Transport {
22
23
  send(batch: ObservationEvent[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/observer/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;CAChD;AAYD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAoCjE"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/observer/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;CAChD;AAsBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CA4CjE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Chat personas — the "human face" of the concierge (FEAT-1784917430).
3
+ *
4
+ * A workspace ships a persona ROSTER in the chat-bar's props (plain config,
5
+ * like assistantName). Assignment is 50:50 sticky-random per visitor: first
6
+ * visit picks uniformly, the pick persists in localStorage, and every later
7
+ * session reuses it — consistency reads as a real team member, not a slot
8
+ * machine. An invalid/vanished persisted id re-picks (roster changes are
9
+ * config changes; visitors must never be stranded on a ghost).
10
+ *
11
+ * The persona never claims to be human: the header carries an explicit
12
+ * "AI concierge" microline (see renderHeader) and the server threads the
13
+ * no-human-claim rule into the prompt (Moffatt/R-001 lineage).
14
+ */
15
+ export interface PersonaAvatar {
16
+ sm?: string;
17
+ md?: string;
18
+ lg?: string;
19
+ }
20
+ export interface ChatPersona {
21
+ id: string;
22
+ name: string;
23
+ role_title?: string;
24
+ pronouns?: string;
25
+ avatar?: PersonaAvatar;
26
+ intro_line?: string;
27
+ }
28
+ /** Pick (or recall) the visitor's sticky persona from the roster. */
29
+ export declare function pickPersona(roster: ChatPersona[] | undefined | null): ChatPersona | null;
30
+ //# sourceMappingURL=personas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAiBxF"}
package/dist/runtime.d.ts CHANGED
@@ -11,6 +11,8 @@
11
11
  */
12
12
  import './AdaptiveChatBar';
13
13
  import './AdaptiveChatTrail';
14
+ export { ElementInstanceStore, TileHandler } from './elements';
15
+ export { getElementInstanceStore, setElementInstanceStore } from './elements/store-singleton';
14
16
  export declare const runtime: {
15
17
  id: string;
16
18
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAO7B,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CA4EnB,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAW7B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CA4EnB,CAAC;AAEF,eAAe,OAAO,CAAC"}