@flamingo-stack/openframe-frontend-core 0.0.508 → 0.0.509

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 (306) hide show
  1. package/dist/chat-protocol/decode.d.ts +58 -0
  2. package/dist/chat-protocol/decode.d.ts.map +1 -0
  3. package/dist/chat-protocol/encode.d.ts +44 -0
  4. package/dist/chat-protocol/encode.d.ts.map +1 -0
  5. package/dist/chat-protocol/env-flag.d.ts +35 -0
  6. package/dist/chat-protocol/env-flag.d.ts.map +1 -0
  7. package/dist/chat-protocol/events.d.ts +216 -0
  8. package/dist/chat-protocol/events.d.ts.map +1 -0
  9. package/dist/chat-protocol/frames.d.ts +213 -0
  10. package/dist/chat-protocol/frames.d.ts.map +1 -0
  11. package/dist/chat-protocol/index.cjs +506 -0
  12. package/dist/chat-protocol/index.cjs.map +1 -0
  13. package/dist/chat-protocol/index.d.ts +18 -0
  14. package/dist/chat-protocol/index.d.ts.map +1 -0
  15. package/dist/chat-protocol/index.js +490 -0
  16. package/dist/chat-protocol/index.js.map +1 -0
  17. package/dist/chat-protocol/ip-normalize.d.ts +44 -0
  18. package/dist/chat-protocol/ip-normalize.d.ts.map +1 -0
  19. package/dist/chat-protocol/nats-decoder.d.ts +26 -0
  20. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -0
  21. package/dist/{chunk-3SQ5KXHQ.cjs → chunk-2T4GTV25.cjs} +9 -9
  22. package/dist/{chunk-3SQ5KXHQ.cjs.map → chunk-2T4GTV25.cjs.map} +1 -1
  23. package/dist/{chunk-CWAOV2FK.cjs → chunk-3CGZPAGR.cjs} +3 -3
  24. package/dist/{chunk-CWAOV2FK.cjs.map → chunk-3CGZPAGR.cjs.map} +1 -1
  25. package/dist/{chunk-TLMJHMXJ.js → chunk-3QSR22IC.js} +12 -12
  26. package/dist/chunk-3QSR22IC.js.map +1 -0
  27. package/dist/{chunk-TWYNR4TZ.cjs → chunk-4G5TLHJD.cjs} +7141 -4799
  28. package/dist/chunk-4G5TLHJD.cjs.map +1 -0
  29. package/dist/{chunk-ADPMHWOE.js → chunk-72XAID7Y.js} +4 -4
  30. package/dist/{chunk-PAGKRNWK.js → chunk-7WZHBQ4J.js} +2 -2
  31. package/dist/{chunk-OCEKO5CW.js → chunk-AEELJC4N.js} +12106 -9764
  32. package/dist/chunk-AEELJC4N.js.map +1 -0
  33. package/dist/{chunk-Z42BGM6Q.cjs → chunk-BT2WWDFP.cjs} +5 -5
  34. package/dist/{chunk-Z42BGM6Q.cjs.map → chunk-BT2WWDFP.cjs.map} +1 -1
  35. package/dist/{chunk-7LEL3RIX.cjs → chunk-C7OY3PQP.cjs} +11 -11
  36. package/dist/{chunk-7LEL3RIX.cjs.map → chunk-C7OY3PQP.cjs.map} +1 -1
  37. package/dist/{chunk-RHGGEKPQ.cjs → chunk-CIOLOQKQ.cjs} +4 -4
  38. package/dist/{chunk-RHGGEKPQ.cjs.map → chunk-CIOLOQKQ.cjs.map} +1 -1
  39. package/dist/{chunk-TSZHM74B.js → chunk-DC2TKS7C.js} +2 -2
  40. package/dist/{chunk-M2GOR3XQ.cjs → chunk-DYPYR7FR.cjs} +87 -87
  41. package/dist/{chunk-M2GOR3XQ.cjs.map → chunk-DYPYR7FR.cjs.map} +1 -1
  42. package/dist/{chunk-I64ABCDX.js → chunk-I2B6X77L.js} +2 -2
  43. package/dist/{chunk-NIZDKTGL.cjs → chunk-K5MSCMDK.cjs} +37 -37
  44. package/dist/{chunk-NIZDKTGL.cjs.map → chunk-K5MSCMDK.cjs.map} +1 -1
  45. package/dist/{chunk-DTYRYB2N.js → chunk-K6QTZ7CZ.js} +2 -2
  46. package/dist/{chunk-4LTMXDUS.js → chunk-KBN7PMFT.js} +2 -2
  47. package/dist/{chunk-TBMV7I5N.js → chunk-KXZO2WZX.js} +2 -2
  48. package/dist/{chunk-QTYZMP6D.cjs → chunk-LBAKLT6T.cjs} +62 -62
  49. package/dist/chunk-LBAKLT6T.cjs.map +1 -0
  50. package/dist/{chunk-KEBYLU3U.js → chunk-LFUPI7VX.js} +2 -2
  51. package/dist/{chunk-LDTR4IVZ.cjs → chunk-M37PBG4N.cjs} +31 -31
  52. package/dist/{chunk-LDTR4IVZ.cjs.map → chunk-M37PBG4N.cjs.map} +1 -1
  53. package/dist/{chunk-WA7RR64F.js → chunk-PO5O654H.js} +6 -5
  54. package/dist/chunk-PO5O654H.js.map +1 -0
  55. package/dist/{chunk-WK4N5VBX.cjs → chunk-QJJISLPA.cjs} +28 -27
  56. package/dist/chunk-QJJISLPA.cjs.map +1 -0
  57. package/dist/{chunk-2F44PLTV.cjs → chunk-T7MCSA55.cjs} +26 -26
  58. package/dist/{chunk-2F44PLTV.cjs.map → chunk-T7MCSA55.cjs.map} +1 -1
  59. package/dist/{chunk-WJQHJD7J.js → chunk-TWSKTJHW.js} +2 -2
  60. package/dist/{chunk-ZSQHZYCO.cjs → chunk-UQDMJ6DH.cjs} +13 -13
  61. package/dist/{chunk-ZSQHZYCO.cjs.map → chunk-UQDMJ6DH.cjs.map} +1 -1
  62. package/dist/{chunk-TZRUCD56.js → chunk-V3ZAAFE3.js} +5 -5
  63. package/dist/{chunk-LRGHJPET.js → chunk-XGIFOHKE.js} +2 -2
  64. package/dist/{chunk-POOMO3PA.cjs → chunk-YQEPRYT5.cjs} +7 -7
  65. package/dist/{chunk-POOMO3PA.cjs.map → chunk-YQEPRYT5.cjs.map} +1 -1
  66. package/dist/components/case-studies/index.cjs +8 -8
  67. package/dist/components/case-studies/index.js +2 -2
  68. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  69. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  70. package/dist/components/chat/hooks/index.d.ts +0 -1
  71. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  72. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  73. package/dist/components/chat/hooks/use-chunk-catchup.d.ts.map +1 -1
  74. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +15 -48
  75. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  76. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +10 -57
  77. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  78. package/dist/components/chat/index.cjs +10 -2
  79. package/dist/components/chat/index.cjs.map +1 -1
  80. package/dist/components/chat/index.d.ts +1 -0
  81. package/dist/components/chat/index.d.ts.map +1 -1
  82. package/dist/components/chat/index.js +21 -13
  83. package/dist/components/chat/stream/chat-dialog-store.d.ts +184 -0
  84. package/dist/components/chat/stream/chat-dialog-store.d.ts.map +1 -0
  85. package/dist/components/chat/stream/chat-stream-reducer.d.ts +380 -0
  86. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -0
  87. package/dist/components/chat/stream/delta-batcher.d.ts +51 -0
  88. package/dist/components/chat/stream/delta-batcher.d.ts.map +1 -0
  89. package/dist/components/chat/stream/index.d.ts +17 -0
  90. package/dist/components/chat/stream/index.d.ts.map +1 -0
  91. package/dist/components/chat/stream/message-mutations.d.ts +77 -0
  92. package/dist/components/chat/stream/message-mutations.d.ts.map +1 -0
  93. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +22 -0
  94. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +1 -0
  95. package/dist/components/chat/types/api.types.d.ts +1 -81
  96. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  97. package/dist/components/chat/types/processing.types.d.ts +2 -93
  98. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  99. package/dist/components/chat/types/unified-chat-state.types.d.ts +15 -0
  100. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  101. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +34 -6
  102. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  103. package/dist/components/chat/utils/history-merge.d.ts.map +1 -1
  104. package/dist/components/chat/utils/index.d.ts +2 -3
  105. package/dist/components/chat/utils/index.d.ts.map +1 -1
  106. package/dist/components/chat/utils/process-historical-messages.d.ts +59 -11
  107. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  108. package/dist/components/contact/index.cjs +3 -3
  109. package/dist/components/contact/index.js +2 -2
  110. package/dist/components/docs/index.cjs +5 -5
  111. package/dist/components/docs/index.js +4 -4
  112. package/dist/components/embeds/index.cjs +3 -3
  113. package/dist/components/embeds/index.js +2 -2
  114. package/dist/components/faq/index.cjs +3 -3
  115. package/dist/components/faq/index.js +2 -2
  116. package/dist/components/features/index.cjs +2 -2
  117. package/dist/components/features/index.js +1 -1
  118. package/dist/components/help-center-pages/index.cjs +22 -22
  119. package/dist/components/help-center-pages/index.js +13 -13
  120. package/dist/components/index.cjs +174 -132
  121. package/dist/components/index.cjs.map +1 -1
  122. package/dist/components/index.js +65 -23
  123. package/dist/components/index.js.map +1 -1
  124. package/dist/components/meeting-scheduler/index.cjs +34 -34
  125. package/dist/components/meeting-scheduler/index.js +3 -3
  126. package/dist/components/navigation/index.cjs +2 -2
  127. package/dist/components/navigation/index.js +1 -1
  128. package/dist/components/onboarding-guides/index.cjs +5 -5
  129. package/dist/components/onboarding-guides/index.js +4 -4
  130. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  131. package/dist/components/related-content/index.cjs +3 -3
  132. package/dist/components/related-content/index.js +2 -2
  133. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  134. package/dist/components/tickets/index.cjs +6 -6
  135. package/dist/components/tickets/index.js +5 -5
  136. package/dist/components/ui/index.cjs +44 -2
  137. package/dist/components/ui/index.cjs.map +1 -1
  138. package/dist/components/ui/index.d.ts +1 -2
  139. package/dist/components/ui/index.d.ts.map +1 -1
  140. package/dist/components/ui/index.js +55 -13
  141. package/dist/components/ui/markdown/base-components.d.ts +51 -0
  142. package/dist/components/ui/markdown/base-components.d.ts.map +1 -0
  143. package/dist/components/ui/markdown/engine.d.ts +99 -0
  144. package/dist/components/ui/markdown/engine.d.ts.map +1 -0
  145. package/dist/components/ui/markdown/heading-ids.d.ts +65 -0
  146. package/dist/components/ui/markdown/heading-ids.d.ts.map +1 -0
  147. package/dist/components/ui/markdown/index.d.ts +18 -0
  148. package/dist/components/ui/markdown/index.d.ts.map +1 -0
  149. package/dist/components/ui/markdown/mermaid-diagram.d.ts +79 -0
  150. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -0
  151. package/dist/components/ui/markdown/rich/embed-overrides.d.ts +14 -0
  152. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -0
  153. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +40 -0
  154. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -0
  155. package/dist/components/ui/markdown/rich/shortcodes.d.ts +8 -0
  156. package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +1 -0
  157. package/dist/components/ui/markdown/sanitize.d.ts +153 -0
  158. package/dist/components/ui/markdown/sanitize.d.ts.map +1 -0
  159. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +23 -0
  160. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -0
  161. package/dist/components/ui/markdown/streaming.d.ts +78 -0
  162. package/dist/components/ui/markdown/streaming.d.ts.map +1 -0
  163. package/dist/components/ui/markdown/text-size.d.ts +34 -0
  164. package/dist/components/ui/markdown/text-size.d.ts.map +1 -0
  165. package/dist/index.cjs +60 -2
  166. package/dist/index.cjs.map +1 -1
  167. package/dist/index.js +71 -13
  168. package/dist/utils/index.cjs +169 -40
  169. package/dist/utils/index.cjs.map +1 -1
  170. package/dist/utils/index.d.ts +1 -0
  171. package/dist/utils/index.d.ts.map +1 -1
  172. package/dist/utils/index.js +162 -41
  173. package/dist/utils/index.js.map +1 -1
  174. package/dist/utils/markdown-fences.d.ts +42 -0
  175. package/dist/utils/markdown-fences.d.ts.map +1 -0
  176. package/dist/utils/markdown-heading-id.d.ts +85 -0
  177. package/dist/utils/markdown-heading-id.d.ts.map +1 -0
  178. package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
  179. package/package.json +7 -1
  180. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +319 -0
  181. package/src/chat-protocol/__tests__/chat-protocol.test.ts +516 -0
  182. package/src/chat-protocol/__tests__/env-flag.test.ts +52 -0
  183. package/src/chat-protocol/__tests__/ip-normalize.test.ts +136 -0
  184. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +237 -0
  185. package/src/chat-protocol/decode.ts +278 -0
  186. package/src/chat-protocol/encode.ts +71 -0
  187. package/src/chat-protocol/env-flag.ts +39 -0
  188. package/src/chat-protocol/events.ts +254 -0
  189. package/src/chat-protocol/frames.ts +245 -0
  190. package/src/chat-protocol/index.ts +21 -0
  191. package/src/chat-protocol/ip-normalize.ts +146 -0
  192. package/src/chat-protocol/nats-decoder.ts +264 -0
  193. package/src/components/chat/.chat-message-list.md +10 -6
  194. package/src/components/chat/__tests__/chat-message-list.test.tsx +450 -9
  195. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +207 -0
  196. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +250 -0
  197. package/src/components/chat/chat-message-enhanced.tsx +122 -20
  198. package/src/components/chat/chat-message-list.tsx +515 -133
  199. package/src/components/chat/embeddable-chat.tsx +6 -0
  200. package/src/components/chat/hooks/.index.md +30 -33
  201. package/src/components/chat/hooks/.use-nats-chat-adapter.md +36 -55
  202. package/src/components/chat/hooks/__tests__/__snapshots__/conversation-id-persistence-golden.test.ts.snap +37 -0
  203. package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
  204. package/src/components/chat/hooks/__tests__/chunk-catchup-dialog-staleness.test.ts +92 -0
  205. package/src/components/chat/hooks/__tests__/conversation-id-persistence-golden.test.ts +438 -0
  206. package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +318 -0
  207. package/src/components/chat/hooks/index.ts +0 -1
  208. package/src/components/chat/hooks/use-chat.ts +8 -0
  209. package/src/components/chat/hooks/use-chunk-catchup.ts +26 -1
  210. package/src/components/chat/hooks/use-nats-chat-adapter.ts +254 -825
  211. package/src/components/chat/hooks/use-sse-chat-adapter.ts +380 -684
  212. package/src/components/chat/index.ts +5 -0
  213. package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +944 -0
  214. package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +806 -0
  215. package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +467 -0
  216. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +1330 -0
  217. package/src/components/chat/stream/__tests__/delta-batcher.test.ts +255 -0
  218. package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +105 -0
  219. package/src/components/chat/stream/chat-dialog-store.ts +536 -0
  220. package/src/components/chat/stream/chat-stream-reducer.ts +1928 -0
  221. package/src/components/chat/stream/delta-batcher.ts +168 -0
  222. package/src/components/chat/stream/index.ts +55 -0
  223. package/src/components/chat/stream/message-mutations.ts +340 -0
  224. package/src/components/chat/stream/use-chat-stream-reducer.ts +126 -0
  225. package/src/components/chat/thinking-display.tsx +1 -1
  226. package/src/components/chat/types/.api.types.md +39 -49
  227. package/src/components/chat/types/.processing.types.md +29 -58
  228. package/src/components/chat/types/.unified-chat-state.types.md +2 -2
  229. package/src/components/chat/types/api.types.ts +6 -73
  230. package/src/components/chat/types/processing.types.ts +11 -53
  231. package/src/components/chat/types/unified-chat-state.types.ts +16 -0
  232. package/src/components/chat/utils/.extract-incomplete-message-state.md +21 -3
  233. package/src/components/chat/utils/.history-merge.md +44 -3
  234. package/src/components/chat/utils/.index.md +31 -40
  235. package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +420 -0
  236. package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +605 -0
  237. package/src/components/chat/utils/__tests__/extract-incomplete-message-state.test.ts +106 -0
  238. package/src/components/chat/utils/__tests__/history-merge.test.ts +160 -0
  239. package/src/components/chat/utils/__tests__/process-historical-messages-approvals.test.ts +61 -0
  240. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +394 -0
  241. package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +270 -0
  242. package/src/components/chat/utils/extract-incomplete-message-state.ts +93 -6
  243. package/src/components/chat/utils/history-merge.ts +85 -5
  244. package/src/components/chat/utils/index.ts +5 -8
  245. package/src/components/chat/utils/process-historical-messages.ts +361 -385
  246. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +22 -4
  247. package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
  248. package/src/components/shared/product-release/release-detail-page.tsx +19 -4
  249. package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +2420 -0
  250. package/src/components/ui/__tests__/markdown-parity.test.tsx +2540 -0
  251. package/src/components/ui/index.ts +1 -2
  252. package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +176 -0
  253. package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +151 -0
  254. package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +354 -0
  255. package/src/components/ui/markdown/__tests__/sanitize-render.test.tsx +118 -0
  256. package/src/components/ui/markdown/__tests__/streaming.test.tsx +436 -0
  257. package/src/components/ui/markdown/base-components.tsx +360 -0
  258. package/src/components/ui/markdown/engine.tsx +315 -0
  259. package/src/components/ui/markdown/heading-ids.ts +239 -0
  260. package/src/components/ui/markdown/index.ts +49 -0
  261. package/src/components/ui/markdown/mermaid-diagram.tsx +323 -0
  262. package/src/components/ui/markdown/rich/embed-overrides.tsx +199 -0
  263. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +184 -0
  264. package/src/components/ui/markdown/rich/shortcodes.ts +170 -0
  265. package/src/components/ui/markdown/sanitize.ts +3584 -0
  266. package/src/components/ui/markdown/simple-markdown-renderer.tsx +28 -0
  267. package/src/components/ui/markdown/streaming.ts +390 -0
  268. package/src/components/ui/markdown/text-size.ts +106 -0
  269. package/src/components/ui/release-changelog-section.tsx +1 -1
  270. package/src/components/ui/ticket-info-section.tsx +1 -1
  271. package/src/utils/index.ts +1 -0
  272. package/src/utils/markdown-fences.ts +127 -0
  273. package/src/utils/markdown-heading-id.ts +348 -0
  274. package/src/utils/markdown-section-extractor.ts +41 -56
  275. package/dist/chunk-OCEKO5CW.js.map +0 -1
  276. package/dist/chunk-QTYZMP6D.cjs.map +0 -1
  277. package/dist/chunk-TLMJHMXJ.js.map +0 -1
  278. package/dist/chunk-TWYNR4TZ.cjs.map +0 -1
  279. package/dist/chunk-WA7RR64F.js.map +0 -1
  280. package/dist/chunk-WK4N5VBX.cjs.map +0 -1
  281. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +0 -6
  282. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +0 -1
  283. package/dist/components/chat/utils/chunk-parser.d.ts +0 -25
  284. package/dist/components/chat/utils/chunk-parser.d.ts.map +0 -1
  285. package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
  286. package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
  287. package/dist/components/ui/simple-markdown-renderer.d.ts +0 -73
  288. package/dist/components/ui/simple-markdown-renderer.d.ts.map +0 -1
  289. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +0 -77
  290. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +0 -489
  291. package/src/components/chat/utils/.chunk-parser.md +0 -62
  292. package/src/components/chat/utils/chunk-parser.ts +0 -262
  293. package/src/components/ui/.simple-markdown-renderer.md +0 -52
  294. package/src/components/ui/rich-markdown-renderer.tsx +0 -1223
  295. package/src/components/ui/simple-markdown-renderer.tsx +0 -964
  296. /package/dist/{chunk-ADPMHWOE.js.map → chunk-72XAID7Y.js.map} +0 -0
  297. /package/dist/{chunk-PAGKRNWK.js.map → chunk-7WZHBQ4J.js.map} +0 -0
  298. /package/dist/{chunk-TSZHM74B.js.map → chunk-DC2TKS7C.js.map} +0 -0
  299. /package/dist/{chunk-I64ABCDX.js.map → chunk-I2B6X77L.js.map} +0 -0
  300. /package/dist/{chunk-DTYRYB2N.js.map → chunk-K6QTZ7CZ.js.map} +0 -0
  301. /package/dist/{chunk-4LTMXDUS.js.map → chunk-KBN7PMFT.js.map} +0 -0
  302. /package/dist/{chunk-TBMV7I5N.js.map → chunk-KXZO2WZX.js.map} +0 -0
  303. /package/dist/{chunk-KEBYLU3U.js.map → chunk-LFUPI7VX.js.map} +0 -0
  304. /package/dist/{chunk-WJQHJD7J.js.map → chunk-TWSKTJHW.js.map} +0 -0
  305. /package/dist/{chunk-TZRUCD56.js.map → chunk-V3ZAAFE3.js.map} +0 -0
  306. /package/dist/{chunk-LRGHJPET.js.map → chunk-XGIFOHKE.js.map} +0 -0
@@ -88,7 +88,9 @@ import {
88
88
  ContextMenuRow,
89
89
  CustomerInterviewCard,
90
90
  CustomerInterviewCardSkeleton,
91
+ DEFAULT_DIALOG_SIDE,
91
92
  DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
93
+ DEFAULT_MAX_REDUCERS,
92
94
  DataRoomDocCard,
93
95
  DataRoomDocCardSkeleton,
94
96
  DialogListItem,
@@ -114,6 +116,7 @@ import {
114
116
  ICON_REGISTRY,
115
117
  InvestorUpdateCard,
116
118
  InvestorUpdateCardSkeleton,
119
+ MAX_PENDING_RETAIN_KEYS,
117
120
  MESSAGE_ROLE,
118
121
  MESSAGE_TYPE,
119
122
  MemoizedChatMessageEnhanced,
@@ -180,8 +183,13 @@ import {
180
183
  clickupTaskUrl,
181
184
  computeHistoryPrepend,
182
185
  computeIsNewTab,
186
+ createChatDialogStore,
187
+ createChatStreamReducer,
188
+ createDeltaBatcher,
189
+ createEmptyTurnMeta,
183
190
  createMessageSegmentAccumulator,
184
191
  decideNewTab,
192
+ decodeHistoricalMessageData,
185
193
  defaultBuildProductReleaseCardProps,
186
194
  defaultTableIdForDocumentType,
187
195
  escapeMarkdownInline,
@@ -190,7 +198,7 @@ import {
190
198
  extractEntityIdFilter,
191
199
  extractErrorMessages,
192
200
  extractIncompleteMessageState,
193
- extractTextFromChunk,
201
+ extractIncompleteTailState,
194
202
  fetchEmptyStateConfig,
195
203
  fetchSlashCommands,
196
204
  flattenAssistantContent,
@@ -210,11 +218,8 @@ import {
210
218
  hideOnError,
211
219
  historicalToUnified,
212
220
  interleave,
213
- isControlChunk,
214
221
  isCrossOriginUrl,
215
- isErrorChunk,
216
222
  isHistoricalUserTurn,
217
- isMetadataChunk,
218
223
  isModifierClick,
219
224
  isQuickActionIconSpec,
220
225
  isStructuredContent,
@@ -225,7 +230,6 @@ import {
225
230
  normalizeContent,
226
231
  normalizeHistoricalMessageData,
227
232
  normalizeIconKey,
228
- parseChunkToAction,
229
233
  parseScrollAnchor,
230
234
  parseWireCommandOverride,
231
235
  processHistoricalMessages,
@@ -252,6 +256,7 @@ import {
252
256
  useChatAttachments,
253
257
  useChatCardItem,
254
258
  useChatIdentity,
259
+ useChatStreamReducer,
255
260
  useChunkCatchup,
256
261
  useCloseOnNavigation,
257
262
  useCollapsible,
@@ -261,14 +266,13 @@ import {
261
266
  useNatsChatAdapter,
262
267
  useNatsDialogSubscription,
263
268
  useProxiedImageUrl,
264
- useRealtimeChunkProcessor,
265
269
  useSSE,
266
270
  useScriptedStream,
267
271
  useSlashCommandRegistry,
268
272
  useSlashCommands,
269
273
  useSseChatAdapter,
270
274
  useUnifiedChat
271
- } from "../../chunk-OCEKO5CW.js";
275
+ } from "../../chunk-AEELJC4N.js";
272
276
  import "../../chunk-7EUIW46X.js";
273
277
  import "../../chunk-LXC6P2EO.js";
274
278
  import "../../chunk-EL5YVPD5.js";
@@ -381,7 +385,9 @@ export {
381
385
  ContextMenuRow,
382
386
  CustomerInterviewCard,
383
387
  CustomerInterviewCardSkeleton,
388
+ DEFAULT_DIALOG_SIDE,
384
389
  DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
390
+ DEFAULT_MAX_REDUCERS,
385
391
  DataRoomDocCard,
386
392
  DataRoomDocCardSkeleton,
387
393
  DialogListItem,
@@ -407,6 +413,7 @@ export {
407
413
  ICON_REGISTRY,
408
414
  InvestorUpdateCard,
409
415
  InvestorUpdateCardSkeleton,
416
+ MAX_PENDING_RETAIN_KEYS,
410
417
  MESSAGE_ROLE,
411
418
  MESSAGE_TYPE,
412
419
  MessageSegmentAccumulator,
@@ -475,8 +482,13 @@ export {
475
482
  clickupTaskUrl,
476
483
  computeHistoryPrepend,
477
484
  computeIsNewTab,
485
+ createChatDialogStore,
486
+ createChatStreamReducer,
487
+ createDeltaBatcher,
488
+ createEmptyTurnMeta,
478
489
  createMessageSegmentAccumulator,
479
490
  decideNewTab,
491
+ decodeHistoricalMessageData,
480
492
  defaultBuildProductReleaseCardProps,
481
493
  defaultTableIdForDocumentType,
482
494
  escapeMarkdownInline,
@@ -485,7 +497,7 @@ export {
485
497
  extractEntityIdFilter,
486
498
  extractErrorMessages,
487
499
  extractIncompleteMessageState,
488
- extractTextFromChunk,
500
+ extractIncompleteTailState,
489
501
  fetchEmptyStateConfig,
490
502
  fetchSlashCommands,
491
503
  flattenAssistantContent,
@@ -507,11 +519,8 @@ export {
507
519
  hideOnError,
508
520
  historicalToUnified,
509
521
  interleave,
510
- isControlChunk,
511
522
  isCrossOriginUrl,
512
- isErrorChunk,
513
523
  isHistoricalUserTurn,
514
- isMetadataChunk,
515
524
  isModifierClick,
516
525
  isQuickActionIconSpec,
517
526
  isStructuredContent,
@@ -522,7 +531,6 @@ export {
522
531
  normalizeContent,
523
532
  normalizeHistoricalMessageData,
524
533
  normalizeIconKey,
525
- parseChunkToAction,
526
534
  parseScrollAnchor,
527
535
  parseWireCommandOverride,
528
536
  processHistoricalMessages,
@@ -550,6 +558,7 @@ export {
550
558
  useChatAttachments,
551
559
  useChatCardItem,
552
560
  useChatIdentity,
561
+ useChatStreamReducer,
553
562
  useChunkCatchup,
554
563
  useCloseOnNavigation,
555
564
  useCollapsible,
@@ -560,7 +569,6 @@ export {
560
569
  useNatsChatAdapter,
561
570
  useNatsDialogSubscription,
562
571
  useProxiedImageUrl,
563
- useRealtimeChunkProcessor,
564
572
  useSSE,
565
573
  useScriptedStream,
566
574
  useSlashCommandRegistry,
@@ -0,0 +1,184 @@
1
+ /**
2
+ * createChatDialogStore — framework-free registry of `ChatStreamReducer`
3
+ * instances keyed by `(dialogId, side)`. Reducer state PERSISTS across
4
+ * component unmounts (the store outlives React), and the store is the
5
+ * `useSyncExternalStore` source for the `useChatStreamReducer` wrapper.
6
+ *
7
+ * CROSS-SIDE PROJECTION: exactly two operations fan out across sides of the
8
+ * same dialogId —
9
+ * 1. approval RESOLUTION by requestId (`approval-resolved` events), and
10
+ * 2. tool-execution MERGE by execId (`tool-execution` events)
11
+ * — implemented as idempotent pure projections over the other side's state
12
+ * (recomputed from state, never re-injected into the other side's seq
13
+ * stream; per-side seq gates stay untouched). Everything else — text,
14
+ * thinking, participant rows — is strictly per-side.
15
+ *
16
+ * LIFECYCLE / MEMORY: the reducer map is LRU-capped (`maxReducers`, default
17
+ * `DEFAULT_MAX_REDUCERS`) and evicted through the same path as `remove()`.
18
+ * Without a cap an agent cycling hundreds of dialogs would retain a reducer
19
+ * (thread + accumulator) per dialog for the process's lifetime; under SSR,
20
+ * where the store is module-scoped, that growth is shared across every
21
+ * request. `getSnapshot` is PURE — it never creates an entry — and
22
+ * `getServerSnapshot` always returns the shared frozen `EMPTY_STATE`.
23
+ *
24
+ * EVICTION SAFETY (LRU recency alone is NOT liveness):
25
+ * 1. RETAINED keys are never evicted. `retain(dialogId, side)` returns a
26
+ * release fn; the `useChatStreamReducer` hook calls it for as long as it
27
+ * is mounted, so a quiet-but-visible panel can't be dropped just because
28
+ * ten other keys were touched. NON-React hosts must call it too.
29
+ * Because the hook retains in an EFFECT but takes its reducer during
30
+ * RENDER, a key created by a public `getReducer` is protected from
31
+ * creation until its FIRST `retain()` (bounded by
32
+ * `MAX_PENDING_RETAIN_KEYS`) — see `pendingRetain`.
33
+ * 2. A reducer whose `streamingPhase !== 'idle'` is never evicted — dropping
34
+ * mid-turn would recreate an EMPTY reducer on the next `getReducer`
35
+ * while the host's seq cursor still says "caught up", i.e. the thread
36
+ * visually vanishes with no path back.
37
+ * 3. Eviction hands the host the dropped instance's PARKED state
38
+ * (`onEvict(..., { messages, approvalStatuses, lastAppliedSeq,
39
+ * pendingEchoes })`). A recreated reducer is pristine, so re-seeding
40
+ * messages alone would
41
+ * resurrect resolved approvals as actionable and reset the seq gate to
42
+ * `-Infinity`; the parked payload is what makes the round-trip lossless.
43
+ * 4. Eviction NEVER notifies synchronously. `getReducer` is called during
44
+ * render (by the hook), and notifying there means updating other
45
+ * components mid-render. The notify is deferred to a microtask.
46
+ */
47
+ import { type ChatReducerState, type ChatStreamReducer, type ChatStreamReducerOptions, type PendingEcho } from './chat-stream-reducer';
48
+ import type { ChatStreamEvent } from '../../../chat-protocol/events';
49
+ export type ChatDialogSide = string;
50
+ /** Factory for a key's reducer options, consulted ONCE at creation. A plain
51
+ * `() => options` thunk remains assignable. */
52
+ export type CreateReducerOptionsFn = (dialogId: string, side: ChatDialogSide) => ChatStreamReducerOptions;
53
+ export interface ChatDialogStore {
54
+ /** Create-or-get the reducer for `(dialogId, side)`. `createOptions` is
55
+ * consulted ONLY when the instance is first created. */
56
+ getReducer(dialogId: string, side?: ChatDialogSide, createOptions?: CreateReducerOptionsFn): ChatStreamReducer;
57
+ /** Apply one event to a side, then fan out the cross-side projections to
58
+ * the other sides of the same dialog. */
59
+ apply(dialogId: string, side: ChatDialogSide, event: ChatStreamEvent): void;
60
+ /** Run adapter commands against a reducer; subscribers are notified. */
61
+ mutate<T>(dialogId: string, side: ChatDialogSide, fn: (reducer: ChatStreamReducer) => T): T;
62
+ subscribe(listener: () => void): () => void;
63
+ /**
64
+ * Referentially-stable snapshot for `useSyncExternalStore`. PURE — an
65
+ * unknown key returns the shared frozen `EMPTY_STATE` rather than
66
+ * creating a reducer (a create-on-read would let SSR renders accumulate
67
+ * reducers in a process-global map, and would make React's snapshot read
68
+ * a mutation).
69
+ */
70
+ getSnapshot(dialogId: string, side?: ChatDialogSide): ChatReducerState;
71
+ /** `useSyncExternalStore`'s server getter — always `EMPTY_STATE`. There is
72
+ * no per-request store on the server, so a live thread cannot be rendered
73
+ * server-side; the client hydrates from the real reducer. */
74
+ getServerSnapshot(): ChatReducerState;
75
+ /** Drop a side's reducer (or every side of the dialog when omitted). */
76
+ remove(dialogId: string, side?: ChatDialogSide): void;
77
+ /**
78
+ * PIN `(dialogId, side)` against LRU eviction while a consumer is live.
79
+ * Returns the release fn (idempotent; refcounted, so nested retains are
80
+ * safe). Creation is NOT implied — retaining an absent key simply means the
81
+ * key is protected once it exists.
82
+ */
83
+ retain(dialogId: string, side?: ChatDialogSide): () => void;
84
+ /**
85
+ * POLICY retain: keep exactly `keys` pinned by this store-level set and
86
+ * release every key the set previously pinned. Independent of the refcounted
87
+ * `retain()` handles a host's components hold — the two compose.
88
+ *
89
+ * Exists because "retain this set, release the rest" is generic store
90
+ * policy that every multi-panel host otherwise re-derives (diffing its own
91
+ * key list against a map of release fns). Retains BEFORE releasing, so a key
92
+ * present in both the old and the new set never momentarily drops to zero
93
+ * retains and becomes evictable mid-swap.
94
+ */
95
+ setRetained(keys: Array<{
96
+ dialogId: string;
97
+ side?: ChatDialogSide;
98
+ }>): void;
99
+ }
100
+ export declare const DEFAULT_DIALOG_SIDE: ChatDialogSide;
101
+ /** Most-recently-used reducer keys retained before eviction. Ten covers
102
+ * every realistic multi-panel / dialog-switching session while bounding an
103
+ * agent that cycles hundreds of dialogs. */
104
+ export declare const DEFAULT_MAX_REDUCERS = 10;
105
+ /**
106
+ * Hard cap on keys held in the "created by `getReducer`, `retain()` still
107
+ * pending" protection set — the ONLY thing bounding the map while retains are
108
+ * outstanding, since that protection ends at the retain rather than on a timer.
109
+ *
110
+ * Deliberately far above `maxReducers`: a host may legitimately mount MORE
111
+ * panels than the LRU cap (once their effects run, retained keys already let
112
+ * the map exceed it), so capping the pending set at `maxReducers` would blank
113
+ * exactly the panels round 10 fixed. It is a backstop against a caller that
114
+ * reads a reducer once and drops it — or a concurrent render React discards
115
+ * before any effect runs — not a per-commit budget. Past it, the oldest pending
116
+ * key falls through to ordinary LRU.
117
+ */
118
+ export declare const MAX_PENDING_RETAIN_KEYS = 256;
119
+ export interface CreateChatDialogStoreOptions {
120
+ /** LRU cap on retained reducers (keys are `(dialogId, side)` pairs).
121
+ * Values < 1 are clamped to 1. Default `DEFAULT_MAX_REDUCERS`. */
122
+ maxReducers?: number;
123
+ /**
124
+ * Options applied to any reducer this store creates WITHOUT an explicit
125
+ * per-call `createOptions` — i.e. every reducer first materialized by
126
+ * `apply()` or `mutate()`. Hosts with non-default reducer semantics
127
+ * (`ownEchoIncludesAdmin`, `selfUserId`, approve/reject `callbacks`, …)
128
+ * MUST set this: creation options are consulted once, so a bare
129
+ * apply-created instance would keep those semantics missing for its whole
130
+ * lifetime, including for a later `getReducer(..., options)` caller.
131
+ */
132
+ defaultCreateOptions?: CreateReducerOptionsFn;
133
+ /**
134
+ * Called when LRU eviction actually DROPS a key. The store knows this
135
+ * exactly; without publishing it, hosts are left inferring eviction by
136
+ * comparing reducer OBJECT IDENTITY across `getReducer` calls and then
137
+ * suppressing the "pristine empty" snapshot that a silently-recreated
138
+ * reducer returns — archaeology about a fact this callback states outright.
139
+ *
140
+ * Fires only for LRU eviction. Host-initiated `remove()` needs no
141
+ * notification: the caller already knows which key it dropped.
142
+ *
143
+ * Called AFTER the key is gone, from `getReducer` (i.e. potentially during a
144
+ * React render) — treat it as a "schedule a refetch/rehydrate" signal, not a
145
+ * place to set state synchronously.
146
+ *
147
+ * `parked` carries the dropped reducer's non-refetchable state so the host
148
+ * can restore it on the recreated instance (`initializeWithState(messages,
149
+ * { approvalStatuses, lastAppliedSeq, pendingEchoes })`). Refetching
150
+ * messages alone is NOT
151
+ * equivalent: a recreated reducer starts with `approvalStatuses = {}` and
152
+ * `lastAppliedSeq = -Infinity`, so a resolved approval whose APPROVAL_RESULT
153
+ * row is not in the refetched history page re-renders as ACTIONABLE (the
154
+ * exact hazard `resetForDialogSwitch` preserves that map to avoid), and a
155
+ * replay from the host's own cursor re-applies events the dropped instance
156
+ * had already consumed.
157
+ */
158
+ onEvict?: (dialogId: string, side: ChatDialogSide, parked: EvictedReducerState) => void;
159
+ }
160
+ /**
161
+ * Snapshot of an LRU-evicted reducer's state, captured just before the
162
+ * instance is dropped. Everything here either cannot be refetched
163
+ * (`lastAppliedSeq`) or is not reliably present in a refetched history page
164
+ * (`approvalStatuses`); `messages` rides along so a host that keeps its own
165
+ * copy does not have to.
166
+ */
167
+ export interface EvictedReducerState {
168
+ messages: ChatReducerState['messages'];
169
+ approvalStatuses: ChatReducerState['approvalStatuses'];
170
+ /** `-Infinity` when the instance never applied a seq-carrying event. */
171
+ lastAppliedSeq: number;
172
+ /**
173
+ * Optimistic-echo entries still armed at eviction time. A key dropped
174
+ * between `pushOptimisticSend` and its `MESSAGE_REQUEST` echo would
175
+ * otherwise leave the recreated reducer with nothing armed, and the echo
176
+ * renders a DUPLICATE user bubble. Replay via
177
+ * `initializeWithState(messages, { pendingEchoes })`; the reducer drops
178
+ * entries already past `OWN_ECHO_AUTHOR_TTL_MS`. Empty for a key with no
179
+ * send in flight (the common case).
180
+ */
181
+ pendingEchoes: readonly PendingEcho[];
182
+ }
183
+ export declare function createChatDialogStore(options?: CreateChatDialogStoreOptions): ChatDialogStore;
184
+ //# sourceMappingURL=chat-dialog-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-dialog-store.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/stream/chat-dialog-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC;gDACgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,KACjB,wBAAwB,CAAA;AAE7B,MAAM,WAAW,eAAe;IAC9B;6DACyD;IACzD,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,cAAc,EACrB,aAAa,CAAC,EAAE,sBAAsB,GACrC,iBAAiB,CAAA;IACpB;8CAC0C;IAC1C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IAC3E,wEAAwE;IACxE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3F,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAA;IACtE;;kEAE8D;IAC9D,iBAAiB,IAAI,gBAAgB,CAAA;IACrC,wEAAwE;IACxE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACrD;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CAAA;IAC3D;;;;;;;;;;OAUG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;CAC5E;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAuB,CAAA;AAEzD;;6CAE6C;AAC7C,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAE1C,MAAM,WAAW,4BAA4B;IAC3C;uEACmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,mBAAmB,KACxB,IAAI,CAAA;CACV;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACtC,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;IACtD,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;;OAQG;IACH,aAAa,EAAE,SAAS,WAAW,EAAE,CAAA;CACtC;AAyBD,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,4BAAiC,GACzC,eAAe,CAgTjB"}