@syntrologie/adapt-chatbot 2.28.0 → 2.29.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 (102) 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 +5 -3
  19. package/dist/ChatAssistantLit.d.ts.map +1 -1
  20. package/dist/ChatAssistantLit.js +4 -3
  21. package/dist/ChatSession.d.ts +66 -5
  22. package/dist/ChatSession.d.ts.map +1 -1
  23. package/dist/ChatTransport.d.ts +107 -0
  24. package/dist/ChatTransport.d.ts.map +1 -1
  25. package/dist/InlineRegistryWidgetMount.test.d.ts +2 -0
  26. package/dist/InlineRegistryWidgetMount.test.d.ts.map +1 -0
  27. package/dist/InlineWidgetLiveMount.test.d.ts +2 -0
  28. package/dist/InlineWidgetLiveMount.test.d.ts.map +1 -0
  29. package/dist/NavLinkMountable.d.ts.map +1 -1
  30. package/dist/TextAnswerMountable.test.d.ts +2 -0
  31. package/dist/TextAnswerMountable.test.d.ts.map +1 -0
  32. package/dist/Turnstile.d.ts.map +1 -1
  33. package/dist/{chunk-KUO67E2W.js → chunk-A3TIGA4G.js} +718 -237
  34. package/dist/chunk-A3TIGA4G.js.map +7 -0
  35. package/dist/chunk-A7RBZLIX.js +1678 -0
  36. package/dist/chunk-A7RBZLIX.js.map +7 -0
  37. package/dist/{chunk-435KJD27.js → chunk-EACGDSJI.js} +46 -1
  38. package/dist/chunk-EACGDSJI.js.map +7 -0
  39. package/dist/chunk-EWPPVPJ4.js +14 -0
  40. package/dist/chunk-EWPPVPJ4.js.map +7 -0
  41. package/dist/chunk-FXHYE6FY.js +632 -0
  42. package/dist/chunk-FXHYE6FY.js.map +7 -0
  43. package/dist/{chunk-AUER7ZCK.js → chunk-OIGVZGSX.js} +11 -4
  44. package/dist/chunk-OIGVZGSX.js.map +7 -0
  45. package/dist/{chunk-UC4XU6GH.js → chunk-VZIUXXAM.js} +761 -52
  46. package/dist/chunk-VZIUXXAM.js.map +7 -0
  47. package/dist/elements/ActionHandler.d.ts +1 -1
  48. package/dist/elements/ActionHandler.d.ts.map +1 -1
  49. package/dist/elements/ElementInstanceStore.d.ts +62 -0
  50. package/dist/elements/ElementInstanceStore.d.ts.map +1 -1
  51. package/dist/elements/TileHandler.d.ts.map +1 -1
  52. package/dist/elements/TileHandler.test.d.ts +2 -0
  53. package/dist/elements/TileHandler.test.d.ts.map +1 -0
  54. package/dist/elements/__tests__/ElementInstanceStore.recall.test.d.ts +2 -0
  55. package/dist/elements/__tests__/ElementInstanceStore.recall.test.d.ts.map +1 -0
  56. package/dist/elements/fetcher.d.ts +8 -5
  57. package/dist/elements/fetcher.d.ts.map +1 -1
  58. package/dist/elements/index.d.ts +1 -0
  59. package/dist/elements/index.d.ts.map +1 -1
  60. package/dist/elements/store-singleton.d.ts +4 -0
  61. package/dist/elements/store-singleton.d.ts.map +1 -0
  62. package/dist/elements/types.d.ts +4 -0
  63. package/dist/elements/types.d.ts.map +1 -1
  64. package/dist/observer/__tests__/bus-translate.test.d.ts +16 -0
  65. package/dist/observer/__tests__/bus-translate.test.d.ts.map +1 -0
  66. package/dist/observer/__tests__/lifecycle.test.d.ts +2 -0
  67. package/dist/observer/__tests__/lifecycle.test.d.ts.map +1 -0
  68. package/dist/observer/__tests__/observer-enrich.test.d.ts +10 -0
  69. package/dist/observer/__tests__/observer-enrich.test.d.ts.map +1 -0
  70. package/dist/observer/allowlist.d.ts +5 -7
  71. package/dist/observer/allowlist.d.ts.map +1 -1
  72. package/dist/observer/bus-translate.d.ts +33 -0
  73. package/dist/observer/bus-translate.d.ts.map +1 -0
  74. package/dist/observer/index.d.ts +10 -1
  75. package/dist/observer/index.d.ts.map +1 -1
  76. package/dist/observer/queue.d.ts +6 -0
  77. package/dist/observer/queue.d.ts.map +1 -1
  78. package/dist/observer/transport.d.ts +1 -0
  79. package/dist/observer/transport.d.ts.map +1 -1
  80. package/dist/personas.d.ts +30 -0
  81. package/dist/personas.d.ts.map +1 -0
  82. package/dist/runtime.d.ts +2 -0
  83. package/dist/runtime.d.ts.map +1 -1
  84. package/dist/runtime.js +860 -137
  85. package/dist/runtime.js.map +4 -4
  86. package/dist/schema.d.ts +363 -67
  87. package/dist/schema.d.ts.map +1 -1
  88. package/dist/schema.js +176 -3
  89. package/dist/schema.js.map +2 -2
  90. package/dist/test/setup.d.ts +1 -0
  91. package/dist/test/setup.d.ts.map +1 -0
  92. package/dist/types.d.ts +25 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +5 -1
  95. package/dist/chunk-435KJD27.js.map +0 -7
  96. package/dist/chunk-AUER7ZCK.js.map +0 -7
  97. package/dist/chunk-DOMEUJR7.js +0 -382
  98. package/dist/chunk-DOMEUJR7.js.map +0 -7
  99. package/dist/chunk-KUO67E2W.js.map +0 -7
  100. package/dist/chunk-QELVKBQV.js +0 -214
  101. package/dist/chunk-QELVKBQV.js.map +0 -7
  102. package/dist/chunk-UC4XU6GH.js.map +0 -7
@@ -0,0 +1,2 @@
1
+ import './AdaptiveChatBar';
2
+ //# sourceMappingURL=AdaptiveChatBar.composer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveChatBar.composer.test.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatBar.composer.test.ts"],"names":[],"mappings":"AAkBA,OAAO,mBAAmB,CAAC"}
@@ -7,8 +7,6 @@
7
7
  * - `chat-message-sent` ({ text }): the user submitted text via Enter
8
8
  * or the send button. The owning code is responsible for pushing
9
9
  * this into the conversation history and producing a reply.
10
- * - `canvas-close`: the user clicked the close ✕ button. Propagated
11
- * to the canvas overlay so the underlying drawer is dismissed.
12
10
  *
13
11
  * Wiring contract (props in):
14
12
  * - `messages`: the conversation trail, passed straight through to
@@ -21,16 +19,26 @@
21
19
  * trail above floats over the host page without chrome. See PRD §4.4.
22
20
  */
23
21
  import { LitElement } from 'lit';
22
+ import { type ChatPersona } from './personas.js';
24
23
  import './AdaptiveChatTrail.js';
25
- import type { TrailMessage } from './AdaptiveChatTrail.js';
24
+ import type { InlineTrailWidget, InlineWidgetMounter, TileReceipt, TrailMessage } from './AdaptiveChatTrail.js';
26
25
  export declare class AdaptiveChatBar extends LitElement {
27
26
  static properties: {
27
+ personas: {
28
+ attribute: boolean;
29
+ };
30
+ _persona: {
31
+ state: boolean;
32
+ };
28
33
  messages: {
29
34
  attribute: boolean;
30
35
  };
31
36
  placeholder: {
32
37
  type: StringConstructor;
33
38
  };
39
+ assistantName: {
40
+ type: StringConstructor;
41
+ };
34
42
  greeting: {
35
43
  type: StringConstructor;
36
44
  };
@@ -38,12 +46,90 @@ export declare class AdaptiveChatBar extends LitElement {
38
46
  type: BooleanConstructor;
39
47
  reflect: boolean;
40
48
  };
49
+ thinkingText: {
50
+ attribute: boolean;
51
+ };
52
+ introSuggestion: {
53
+ attribute: boolean;
54
+ };
55
+ forceExpanded: {
56
+ type: BooleanConstructor;
57
+ reflect: boolean;
58
+ };
59
+ maximized: {
60
+ type: BooleanConstructor;
61
+ };
62
+ tileReceipts: {
63
+ attribute: boolean;
64
+ };
65
+ inlineWidgets: {
66
+ attribute: boolean;
67
+ };
68
+ mountInlineWidget: {
69
+ attribute: boolean;
70
+ };
71
+ voiceInput: {
72
+ type: BooleanConstructor;
73
+ };
41
74
  _input: {
42
75
  state: boolean;
43
76
  };
77
+ _composerFocused: {
78
+ state: boolean;
79
+ };
80
+ _micListening: {
81
+ state: boolean;
82
+ };
83
+ _micDisabled: {
84
+ state: boolean;
85
+ };
44
86
  };
45
87
  messages: TrailMessage[];
88
+ maximized: boolean;
89
+ tileReceipts: TileReceipt[];
90
+ /** Widgets rendered inline in the trail (reco carousel), sourced from
91
+ * the store's `chat-inline` slot mounts. Forwarded to the trail. */
92
+ inlineWidgets: InlineTrailWidget[];
93
+ /** Registry-backed mounter for inline widgets whose id is not their
94
+ * custom-element tag (product card, comparison, FAQ). Set by the
95
+ * mountable from `runtime.widgets`; forwarded to the trail. */
96
+ mountInlineWidget: InlineWidgetMounter | undefined;
97
+ /**
98
+ * Live reasoning narration from the model — streamed in via
99
+ * AG-UI THINKING_TEXT_MESSAGE_CONTENT events and forwarded by
100
+ * the ChatSession subscription on the host (mountable).
101
+ * Forwarded verbatim to the trail, which renders it in place of
102
+ * the silent loading dots between turns. Empty string when no
103
+ * thinking turn is active.
104
+ */
105
+ thinkingText: string;
106
+ /**
107
+ * Pre-conversation suggestion button — forwarded to the trail's
108
+ * empty-state pane. When the visitor clicks it the trail emits
109
+ * `trail-intro-suggestion`; we catch that here and submit the
110
+ * configured prompt through the normal send path.
111
+ */
112
+ introSuggestion: {
113
+ label: string;
114
+ prompt: string;
115
+ } | undefined;
116
+ /** Pass-through to {@link AdaptiveChatTrail}'s ``forceExpanded`` prop.
117
+ * Hosts that mount the chat-bar in a full-screen surface (mobile
118
+ * panel, agent app, etc.) set this to skip the collapse affordance
119
+ * — there is no smaller state to fall back to. */
120
+ forceExpanded: boolean;
46
121
  placeholder: string;
122
+ /**
123
+ * Name shown in the (forceExpanded) header. Defaults to a generic
124
+ * "Assistant". Hosts can override per-workspace (e.g. Vela sets
125
+ * "Vela Concierge") without inventing new SDK surface — it threads
126
+ * through the same mount config the placeholder does.
127
+ */
128
+ assistantName: string;
129
+ /** Persona roster from config (FEAT-1784917430); one is sticky-assigned. */
130
+ personas: ChatPersona[] | null;
131
+ /** @internal — the visitor's sticky persona, resolved from the roster. */
132
+ _persona: ChatPersona | null;
47
133
  /**
48
134
  * Initial assistant message shown before any real conversation
49
135
  * starts. Renders inside the trail as a phantom assistant chip
@@ -59,13 +145,63 @@ export declare class AdaptiveChatBar extends LitElement {
59
145
  * request is aborted. Enter is inert while in-flight.
60
146
  */
61
147
  inFlight: boolean;
148
+ /** Show a dictation mic when the Web Speech API is available. Config-gated, default off. */
149
+ voiceInput: boolean;
62
150
  _input: string;
151
+ _micListening: boolean;
152
+ _micDisabled: boolean;
153
+ private _micBase;
154
+ private _micNetworkErrors;
155
+ private _dictation;
156
+ /** True while focus is inside the composer row — drives the accent
157
+ * focus ring so the active text-entry surface is unmistakable on any
158
+ * theme (the idle pill is deliberately subtle). */
159
+ _composerFocused: boolean;
63
160
  createRenderRoot(): HTMLElement;
161
+ connectedCallback(): void;
162
+ disconnectedCallback(): void;
64
163
  private _onInput;
164
+ private _onMicClick;
65
165
  private _onKeyDown;
66
166
  private _onSendOrInterrupt;
67
- private _onClose;
167
+ private _onTileReceiptActivate;
168
+ private _onAlertReceiptActivate;
169
+ private _onComposerFocusIn;
170
+ private _onComposerFocusOut;
171
+ private _onMaximizeToggle;
68
172
  private _send;
173
+ /**
174
+ * Visitor tapped the intro suggestion button in the empty-state
175
+ * trail. Submit the configured prompt through the same channel as
176
+ * a typed message so listeners (mountable → chatSession.send) see
177
+ * a uniform shape — no need for a parallel "suggestion-sent" path.
178
+ * The trail's intro pane auto-disappears the moment the first
179
+ * message lands, so this also closes the empty state in one go.
180
+ */
181
+ private _onIntroSuggestion;
182
+ /**
183
+ * Reply-chip tap that arrived during the run TAIL. Chips render the
184
+ * moment the reply text lands, but `inFlight` (which includes
185
+ * `runActive` — typing events, tool tail, RUN_FINISHED) can lag for
186
+ * seconds. The old `if (this.inFlight) return;` guard silently ATE
187
+ * those taps — the visitor's chosen reply never appeared as their
188
+ * message (live repro, deployed vela 2026-07-08). Now the tap queues
189
+ * (latest wins) and dispatches when `inFlight` clears.
190
+ */
191
+ private _queuedSuggestedReply;
192
+ protected willUpdate(changed: Map<string, unknown>): void;
193
+ /**
194
+ * Visitor tapped an inline `suggest_replies` chip in the trail. Submit
195
+ * the chip text through the SAME `chat-message-sent` channel a typed
196
+ * message uses, so the reply rides the existing send path (mountable →
197
+ * chatSession.send → transport) — no fabricated AG-UI events. The
198
+ * trail clears the chips on its own once the reply lands and a newer
199
+ * assistant turn becomes the latest.
200
+ *
201
+ * A tap while the previous run is still closing is QUEUED, never
202
+ * dropped — see `_queuedSuggestedReply`.
203
+ */
204
+ private _onSuggestedReply;
69
205
  render(): import("lit-html").TemplateResult<1>;
70
206
  }
71
207
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptiveChatBar.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatBar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAGvC,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,UAAU;;;;;;;;;;;;;;;;;MAMxB;IAEF,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,WAAW,SAAuB;IAClC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IACzC;;;;;;OAMG;IACH,QAAQ,UAAS;IACjB,MAAM,SAAM;IAEH,gBAAgB,IAAI,WAAW;IAIxC,OAAO,CAAC,QAAQ,CAEd;IAEF,OAAO,CAAC,UAAU,CAShB;IAKF,OAAO,CAAC,kBAAkB,CAMxB;IAEF,OAAO,CAAC,QAAQ,CAEd;IAEF,OAAO,CAAC,KAAK;IAoBJ,MAAM;CAuChB;AA8GD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
1
+ {"version":3,"file":"AdaptiveChatBar.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatBar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAQ,UAAU,EAAgB,MAAM,KAAK,CAAC;AAErD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,eAAe,CAAC;AAE9D,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACb,MAAM,wBAAwB,CAAC;AAMhC,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoBxB;IAEF,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,SAAS,UAAS;IAClB,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC;yEACqE;IACrE,aAAa,EAAE,iBAAiB,EAAE,CAAM;IACxC;;oEAEgE;IAChE,iBAAiB,EAAE,mBAAmB,GAAG,SAAS,CAAa;IAE/D;;;;;;;OAOG;IACH,YAAY,SAAM;IAClB;;;;;OAKG;IACH,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAa;IAE3E;;;uDAGmD;IACnD,aAAa,UAAS;IACtB,WAAW,SAAuB;IAClC;;;;;OAKG;IACH,aAAa,SAA0B;IACvC,4EAA4E;IAC5E,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAQ;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEpC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IACzC;;;;;;OAMG;IACH,QAAQ,UAAS;IACjB,4FAA4F;IAC5F,UAAU,UAAS;IACnB,MAAM,SAAM;IACZ,aAAa,UAAS;IACtB,YAAY,UAAS;IACrB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,UAAU,CAAoC;IACtD;;wDAEoD;IACpD,gBAAgB,UAAS;IAEhB,gBAAgB,IAAI,WAAW;IAI/B,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAYrC,OAAO,CAAC,QAAQ,CAKd;IAEF,OAAO,CAAC,WAAW,CAwBjB;IAEF,OAAO,CAAC,UAAU,CAShB;IAKF,OAAO,CAAC,kBAAkB,CAUxB;IAEF,OAAO,CAAC,sBAAsB,CAM5B;IAEF,OAAO,CAAC,uBAAuB,CAK7B;IAEF,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,KAAK;IA2Bb;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB,CAmBxB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB,CAAuB;cAEjC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAyBlE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB,CAoBvB;IAEO,MAAM;CAwEhB;AAyVD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  AdaptiveChatBar
3
- } from "./chunk-QELVKBQV.js";
4
- import "./chunk-DOMEUJR7.js";
5
- import "./chunk-UC4XU6GH.js";
3
+ } from "./chunk-FXHYE6FY.js";
4
+ import "./chunk-EWPPVPJ4.js";
5
+ import "./chunk-A7RBZLIX.js";
6
+ import "./chunk-VZIUXXAM.js";
6
7
  import "./chunk-UVKRO5ER.js";
7
8
  export {
8
9
  AdaptiveChatBar
@@ -28,6 +28,53 @@
28
28
  * use is to let the conversation start empty.
29
29
  */
30
30
  import './AdaptiveChatBar';
31
+ import { type ProductIdentityExtractor } from '@syntrologie/sdk-contracts';
32
+ import type { ObservationEvent, RawEvent } from './observer/allowlist';
33
+ import type { ChatbotWidgetRuntime } from './types.js';
34
+ /**
35
+ * Test-only: drop the warm store singleton (and its hydration latch) so each
36
+ * test can wire a fresh store to its own event bus / registry. Without this,
37
+ * the first test in a file permanently binds the store to ITS bus and the
38
+ * per-instance version dedup silently drops every later test's re-mounts.
39
+ * Mirrors `observer/index.ts` `_resetObserverForTests`.
40
+ */
41
+ export declare function _resetElementStoreForTests(): void;
42
+ export declare function resolveTileWidget(templateId: string): string | undefined;
43
+ export declare function refreshTemplateWidgetMap(uiTemplates: Record<string, unknown> | undefined): void;
44
+ /**
45
+ * Observation enrichment (exported for direct testing).
46
+ *
47
+ * Two passes through the SAME platform-adapter extractor:
48
+ * 1. clicks — resolve product identity from the clicked element chain
49
+ * (original behavior, unchanged);
50
+ * 2. page-level signals (view/scroll/idle/hesitation/hover/nav) with no
51
+ * product — resolve the CURRENT page's product by feeding the extractor
52
+ * a synthetic chain element carrying `location.pathname`. Live-verified
53
+ * gap (FEAT-1783640628): a visitor ON a PDP produces section views with
54
+ * no product identity, which starved every product-shaped downstream
55
+ * (nudge ping-pong detection, the agent's "viewed <product>" context).
56
+ */
57
+ export declare function buildObserverEnrich(runtimeRef: {
58
+ getProductIdentity?: ProductIdentityExtractor;
59
+ }): (ev: ObservationEvent, raw: RawEvent) => ObservationEvent;
60
+ /**
61
+ * Surface reaction to a proactive nudge (FEAT-1783640628). The transport
62
+ * settles the nudge message into the trail and emits `syntro:nudge`; this
63
+ * layer owns what the VISITOR notices on top of that:
64
+ * 1. refresh persisted mounts — the headless turn's mount landed server-side
65
+ * in `mounted_elements`; re-running the replay fetch applies it live
66
+ * through the same hydrate path boot uses (no parallel mount wire shape);
67
+ * 2. a toast via the canvas overlay's notification primitive, so a visitor
68
+ * with the chat closed learns the agent spoke.
69
+ *
70
+ * Exported for direct testing (real DOM listener, fetch-stubbed network).
71
+ */
72
+ export declare function wireNudgeSurface(runtime: ChatbotWidgetRuntime, backendUrl: string): void;
73
+ /** Test seam: reset the nudge-surface once-guard AND detach the listener. */
74
+ export declare function _resetNudgeSurfaceForTests(): void;
75
+ /** @internal test hook */
76
+ export declare function _resetTemplatePublishForTests(): void;
77
+ export declare function _resetMountableObserverForTests(): void;
31
78
  export declare const AdaptiveChatBarMountable: {
32
79
  mount(container: HTMLElement, mountConfig?: Record<string, unknown>): () => void;
33
80
  update(container: HTMLElement, mountConfig?: Record<string, unknown>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptiveChatBarMountable.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatBarMountable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,mBAAmB,CAAC;AAyY3B,eAAO,MAAM,wBAAwB;qBAClB,WAAW,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI;sBAyC9D,WAAW,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAQ5E,CAAC"}
1
+ {"version":3,"file":"AdaptiveChatBarMountable.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatBarMountable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAIL,KAAK,wBAAwB,EAI9B,MAAM,4BAA4B,CAAC;AAiBpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,KAAK,EAAmB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA8HxE;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAIjD;AA6BD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAgB/F;AA+DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE;IAC9C,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;CAC/C,GAAG,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,KAAK,gBAAgB,CAkC5D;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAoExF;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAsGD,0BAA0B;AAC1B,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAwED,wBAAgB,+BAA+B,IAAI,IAAI,CAUtD;AAyID,eAAO,MAAM,wBAAwB;qBAClB,WAAW,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI;sBA8F9D,WAAW,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAQ5E,CAAC"}
@@ -0,0 +1,2 @@
1
+ import './AdaptiveChatTrail';
2
+ //# sourceMappingURL=AdaptiveChatTrail.anchor-scroll.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveChatTrail.anchor-scroll.test.d.ts","sourceRoot":"","sources":["../src/AdaptiveChatTrail.anchor-scroll.test.ts"],"names":[],"mappings":"AA0BA,OAAO,qBAAqB,CAAC"}