@flamingo-stack/openframe-frontend-core 0.0.488 → 0.0.490-1506.3944.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 (311) 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 +196 -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 +494 -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 +478 -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-AJNDDXKC.js → chunk-4NWARV5I.js} +3 -3
  22. package/dist/{chunk-GQX6LFFA.cjs → chunk-5CJR2GZ4.cjs} +42 -42
  23. package/dist/{chunk-GQX6LFFA.cjs.map → chunk-5CJR2GZ4.cjs.map} +1 -1
  24. package/dist/{chunk-EUYIFALO.cjs → chunk-5EYRXSY5.cjs} +14 -14
  25. package/dist/{chunk-EUYIFALO.cjs.map → chunk-5EYRXSY5.cjs.map} +1 -1
  26. package/dist/{chunk-5RXKOGH6.cjs → chunk-5LMGFI4J.cjs} +7011 -4777
  27. package/dist/chunk-5LMGFI4J.cjs.map +1 -0
  28. package/dist/{chunk-KFQXO7QB.js → chunk-6GT557KN.js} +1 -1
  29. package/dist/chunk-6GT557KN.js.map +1 -0
  30. package/dist/{chunk-77DFPD35.js → chunk-BE6DK7QY.js} +12267 -10033
  31. package/dist/chunk-BE6DK7QY.js.map +1 -0
  32. package/dist/{chunk-A7IPON2V.cjs → chunk-BIKOJ4FH.cjs} +5 -5
  33. package/dist/{chunk-A7IPON2V.cjs.map → chunk-BIKOJ4FH.cjs.map} +1 -1
  34. package/dist/{chunk-HQYJINFV.js → chunk-CORIBKHG.js} +4 -4
  35. package/dist/{chunk-YEEHB4T6.cjs → chunk-CSYSYJCF.cjs} +40 -40
  36. package/dist/{chunk-YEEHB4T6.cjs.map → chunk-CSYSYJCF.cjs.map} +1 -1
  37. package/dist/{chunk-SIKCXKGB.cjs → chunk-DSDZ5T4P.cjs} +7 -7
  38. package/dist/{chunk-SIKCXKGB.cjs.map → chunk-DSDZ5T4P.cjs.map} +1 -1
  39. package/dist/{chunk-PNXNWGBY.js → chunk-GTWO5NAY.js} +2 -2
  40. package/dist/{chunk-SCCTJ2UI.js → chunk-HSACATCD.js} +4 -4
  41. package/dist/{chunk-PECGZWQR.cjs → chunk-KP5KRRD6.cjs} +3 -3
  42. package/dist/{chunk-PECGZWQR.cjs.map → chunk-KP5KRRD6.cjs.map} +1 -1
  43. package/dist/{chunk-2B6773QM.cjs → chunk-LILQJ3UZ.cjs} +1 -1
  44. package/dist/chunk-LILQJ3UZ.cjs.map +1 -0
  45. package/dist/{chunk-RZSA6MZL.cjs → chunk-NWX7MMF5.cjs} +15 -15
  46. package/dist/{chunk-RZSA6MZL.cjs.map → chunk-NWX7MMF5.cjs.map} +1 -1
  47. package/dist/{chunk-V3CNNMY3.cjs → chunk-P4WTZU6L.cjs} +18 -18
  48. package/dist/{chunk-V3CNNMY3.cjs.map → chunk-P4WTZU6L.cjs.map} +1 -1
  49. package/dist/{chunk-KLYHZRAD.js → chunk-PB3BTZDU.js} +2 -2
  50. package/dist/{chunk-FZOBQG6M.cjs → chunk-Q6E7VJ4W.cjs} +37 -36
  51. package/dist/chunk-Q6E7VJ4W.cjs.map +1 -0
  52. package/dist/{chunk-EYEIVYYF.cjs → chunk-QSCHCZL3.cjs} +7 -7
  53. package/dist/{chunk-EYEIVYYF.cjs.map → chunk-QSCHCZL3.cjs.map} +1 -1
  54. package/dist/{chunk-YJSKQ2ZV.js → chunk-RQLBHKXN.js} +3 -3
  55. package/dist/{chunk-CWQACI4Z.js → chunk-RW2LPL72.js} +2 -2
  56. package/dist/{chunk-DX6AOHNU.cjs → chunk-S2NHJDKQ.cjs} +77 -77
  57. package/dist/{chunk-DX6AOHNU.cjs.map → chunk-S2NHJDKQ.cjs.map} +1 -1
  58. package/dist/{chunk-AHDJMEEN.js → chunk-T2EGSZFN.js} +9 -8
  59. package/dist/chunk-T2EGSZFN.js.map +1 -0
  60. package/dist/{chunk-S52LJNMU.js → chunk-TKN5667N.js} +13 -13
  61. package/dist/chunk-TKN5667N.js.map +1 -0
  62. package/dist/{chunk-3BFX6HJM.js → chunk-UUYRJPGJ.js} +6 -6
  63. package/dist/{chunk-F6BYUO5U.js → chunk-VHG6AX5V.js} +3 -3
  64. package/dist/{chunk-FOQV6RCO.cjs → chunk-VQ523ORK.cjs} +29 -29
  65. package/dist/{chunk-FOQV6RCO.cjs.map → chunk-VQ523ORK.cjs.map} +1 -1
  66. package/dist/{chunk-PXF5J24T.js → chunk-XQ2B74SI.js} +2 -2
  67. package/dist/{chunk-H7JX2BG7.cjs → chunk-YHOIAA2E.cjs} +76 -76
  68. package/dist/chunk-YHOIAA2E.cjs.map +1 -0
  69. package/dist/{chunk-LLWBPPZ4.js → chunk-YZ2OIYQ3.js} +6 -6
  70. package/dist/components/case-studies/index.cjs +10 -10
  71. package/dist/components/case-studies/index.js +4 -4
  72. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  73. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  74. package/dist/components/chat/hooks/index.d.ts +0 -1
  75. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  76. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +47 -0
  77. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -0
  78. package/dist/components/chat/hooks/use-chat.d.ts +1 -0
  79. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  80. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +15 -48
  81. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  82. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +10 -53
  83. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  84. package/dist/components/chat/index.cjs +12 -4
  85. package/dist/components/chat/index.cjs.map +1 -1
  86. package/dist/components/chat/index.d.ts +1 -0
  87. package/dist/components/chat/index.d.ts.map +1 -1
  88. package/dist/components/chat/index.js +23 -15
  89. package/dist/components/chat/stream/chat-dialog-store.d.ts +184 -0
  90. package/dist/components/chat/stream/chat-dialog-store.d.ts.map +1 -0
  91. package/dist/components/chat/stream/chat-stream-reducer.d.ts +367 -0
  92. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -0
  93. package/dist/components/chat/stream/delta-batcher.d.ts +51 -0
  94. package/dist/components/chat/stream/delta-batcher.d.ts.map +1 -0
  95. package/dist/components/chat/stream/index.d.ts +17 -0
  96. package/dist/components/chat/stream/index.d.ts.map +1 -0
  97. package/dist/components/chat/stream/message-mutations.d.ts +77 -0
  98. package/dist/components/chat/stream/message-mutations.d.ts.map +1 -0
  99. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +22 -0
  100. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +1 -0
  101. package/dist/components/chat/types/api.types.d.ts +1 -81
  102. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  103. package/dist/components/chat/types/processing.types.d.ts +2 -90
  104. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  105. package/dist/components/chat/types/unified-chat-state.types.d.ts +5 -0
  106. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  107. package/dist/components/chat/utils/chat-conversation-storage.d.ts +34 -0
  108. package/dist/components/chat/utils/chat-conversation-storage.d.ts.map +1 -0
  109. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +34 -6
  110. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  111. package/dist/components/chat/utils/index.d.ts +2 -3
  112. package/dist/components/chat/utils/index.d.ts.map +1 -1
  113. package/dist/components/chat/utils/process-historical-messages.d.ts +59 -11
  114. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  115. package/dist/components/contact/index.cjs +5 -5
  116. package/dist/components/contact/index.js +4 -4
  117. package/dist/components/docs/index.cjs +7 -7
  118. package/dist/components/docs/index.js +6 -6
  119. package/dist/components/embeds/index.cjs +5 -5
  120. package/dist/components/embeds/index.js +4 -4
  121. package/dist/components/faq/index.cjs +6 -6
  122. package/dist/components/faq/index.js +5 -5
  123. package/dist/components/features/index.cjs +4 -4
  124. package/dist/components/features/index.js +3 -3
  125. package/dist/components/help-center-pages/index.cjs +23 -23
  126. package/dist/components/help-center-pages/index.js +14 -14
  127. package/dist/components/index.cjs +182 -140
  128. package/dist/components/index.cjs.map +1 -1
  129. package/dist/components/index.js +66 -24
  130. package/dist/components/index.js.map +1 -1
  131. package/dist/components/navigation/index.cjs +4 -4
  132. package/dist/components/navigation/index.js +3 -3
  133. package/dist/components/onboarding-guides/index.cjs +8 -8
  134. package/dist/components/onboarding-guides/index.js +7 -7
  135. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  136. package/dist/components/related-content/index.cjs +6 -6
  137. package/dist/components/related-content/index.js +5 -5
  138. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  139. package/dist/components/tickets/index.cjs +7 -7
  140. package/dist/components/tickets/index.js +6 -6
  141. package/dist/components/ui/index.cjs +46 -4
  142. package/dist/components/ui/index.cjs.map +1 -1
  143. package/dist/components/ui/index.d.ts +1 -2
  144. package/dist/components/ui/index.d.ts.map +1 -1
  145. package/dist/components/ui/index.js +57 -15
  146. package/dist/components/ui/markdown/base-components.d.ts +51 -0
  147. package/dist/components/ui/markdown/base-components.d.ts.map +1 -0
  148. package/dist/components/ui/markdown/engine.d.ts +99 -0
  149. package/dist/components/ui/markdown/engine.d.ts.map +1 -0
  150. package/dist/components/ui/markdown/heading-ids.d.ts +65 -0
  151. package/dist/components/ui/markdown/heading-ids.d.ts.map +1 -0
  152. package/dist/components/ui/markdown/index.d.ts +18 -0
  153. package/dist/components/ui/markdown/index.d.ts.map +1 -0
  154. package/dist/components/ui/markdown/mermaid-diagram.d.ts +79 -0
  155. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -0
  156. package/dist/components/ui/markdown/rich/embed-overrides.d.ts +14 -0
  157. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -0
  158. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +40 -0
  159. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -0
  160. package/dist/components/ui/markdown/rich/shortcodes.d.ts +8 -0
  161. package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +1 -0
  162. package/dist/components/ui/markdown/sanitize.d.ts +153 -0
  163. package/dist/components/ui/markdown/sanitize.d.ts.map +1 -0
  164. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +23 -0
  165. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -0
  166. package/dist/components/ui/markdown/streaming.d.ts +78 -0
  167. package/dist/components/ui/markdown/streaming.d.ts.map +1 -0
  168. package/dist/components/ui/markdown/text-size.d.ts +34 -0
  169. package/dist/components/ui/markdown/text-size.d.ts.map +1 -0
  170. package/dist/contexts/chat-runtime-context.d.ts +8 -0
  171. package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
  172. package/dist/contexts/index.cjs +2 -2
  173. package/dist/contexts/index.js +1 -1
  174. package/dist/hooks/index.cjs +3 -3
  175. package/dist/hooks/index.js +2 -2
  176. package/dist/index.cjs +62 -4
  177. package/dist/index.cjs.map +1 -1
  178. package/dist/index.js +73 -15
  179. package/dist/utils/index.cjs +169 -40
  180. package/dist/utils/index.cjs.map +1 -1
  181. package/dist/utils/index.d.ts +1 -0
  182. package/dist/utils/index.d.ts.map +1 -1
  183. package/dist/utils/index.js +162 -41
  184. package/dist/utils/index.js.map +1 -1
  185. package/dist/utils/markdown-fences.d.ts +42 -0
  186. package/dist/utils/markdown-fences.d.ts.map +1 -0
  187. package/dist/utils/markdown-heading-id.d.ts +85 -0
  188. package/dist/utils/markdown-heading-id.d.ts.map +1 -0
  189. package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
  190. package/package.json +7 -1
  191. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +307 -0
  192. package/src/chat-protocol/__tests__/chat-protocol.test.ts +516 -0
  193. package/src/chat-protocol/__tests__/env-flag.test.ts +52 -0
  194. package/src/chat-protocol/__tests__/ip-normalize.test.ts +136 -0
  195. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +228 -0
  196. package/src/chat-protocol/decode.ts +278 -0
  197. package/src/chat-protocol/encode.ts +71 -0
  198. package/src/chat-protocol/env-flag.ts +39 -0
  199. package/src/chat-protocol/events.ts +232 -0
  200. package/src/chat-protocol/frames.ts +245 -0
  201. package/src/chat-protocol/index.ts +21 -0
  202. package/src/chat-protocol/ip-normalize.ts +146 -0
  203. package/src/chat-protocol/nats-decoder.ts +252 -0
  204. package/src/components/chat/__tests__/chat-message-list.test.tsx +293 -5
  205. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +207 -0
  206. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +209 -0
  207. package/src/components/chat/chat-message-enhanced.tsx +111 -17
  208. package/src/components/chat/chat-message-list.tsx +358 -109
  209. package/src/components/chat/embeddable-chat.tsx +6 -0
  210. package/src/components/chat/hooks/.index.md +30 -33
  211. package/src/components/chat/hooks/.use-nats-chat-adapter.md +36 -55
  212. package/src/components/chat/hooks/__tests__/__snapshots__/conversation-id-persistence-golden.test.ts.snap +37 -0
  213. package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
  214. package/src/components/chat/hooks/__tests__/conversation-id-persistence-golden.test.ts +438 -0
  215. package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +318 -0
  216. package/src/components/chat/hooks/index.ts +0 -1
  217. package/src/components/chat/hooks/use-chat-history-hydration.ts +142 -0
  218. package/src/components/chat/hooks/use-chat.ts +20 -0
  219. package/src/components/chat/hooks/use-nats-chat-adapter.ts +243 -823
  220. package/src/components/chat/hooks/use-sse-chat-adapter.ts +417 -774
  221. package/src/components/chat/index.ts +5 -0
  222. package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +940 -0
  223. package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +756 -0
  224. package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +460 -0
  225. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +894 -0
  226. package/src/components/chat/stream/__tests__/delta-batcher.test.ts +255 -0
  227. package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +98 -0
  228. package/src/components/chat/stream/chat-dialog-store.ts +536 -0
  229. package/src/components/chat/stream/chat-stream-reducer.ts +1796 -0
  230. package/src/components/chat/stream/delta-batcher.ts +159 -0
  231. package/src/components/chat/stream/index.ts +55 -0
  232. package/src/components/chat/stream/message-mutations.ts +338 -0
  233. package/src/components/chat/stream/use-chat-stream-reducer.ts +126 -0
  234. package/src/components/chat/thinking-display.tsx +1 -1
  235. package/src/components/chat/types/.api.types.md +39 -49
  236. package/src/components/chat/types/.processing.types.md +29 -58
  237. package/src/components/chat/types/api.types.ts +6 -73
  238. package/src/components/chat/types/processing.types.ts +11 -52
  239. package/src/components/chat/types/unified-chat-state.types.ts +6 -0
  240. package/src/components/chat/utils/.index.md +31 -40
  241. package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +420 -0
  242. package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +605 -0
  243. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +317 -0
  244. package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +270 -0
  245. package/src/components/chat/utils/chat-conversation-storage.ts +83 -0
  246. package/src/components/chat/utils/extract-incomplete-message-state.ts +63 -5
  247. package/src/components/chat/utils/index.ts +5 -8
  248. package/src/components/chat/utils/process-historical-messages.ts +352 -384
  249. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +22 -4
  250. package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
  251. package/src/components/shared/product-release/release-detail-page.tsx +19 -4
  252. package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +2420 -0
  253. package/src/components/ui/__tests__/markdown-parity.test.tsx +2528 -0
  254. package/src/components/ui/index.ts +1 -2
  255. package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +115 -0
  256. package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +95 -0
  257. package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +309 -0
  258. package/src/components/ui/markdown/__tests__/streaming.test.tsx +388 -0
  259. package/src/components/ui/markdown/base-components.tsx +360 -0
  260. package/src/components/ui/markdown/engine.tsx +315 -0
  261. package/src/components/ui/markdown/heading-ids.ts +239 -0
  262. package/src/components/ui/markdown/index.ts +49 -0
  263. package/src/components/ui/markdown/mermaid-diagram.tsx +291 -0
  264. package/src/components/ui/markdown/rich/embed-overrides.tsx +199 -0
  265. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +184 -0
  266. package/src/components/ui/markdown/rich/shortcodes.ts +170 -0
  267. package/src/components/ui/markdown/sanitize.ts +3499 -0
  268. package/src/components/ui/markdown/simple-markdown-renderer.tsx +28 -0
  269. package/src/components/ui/markdown/streaming.ts +362 -0
  270. package/src/components/ui/markdown/text-size.ts +106 -0
  271. package/src/components/ui/release-changelog-section.tsx +1 -1
  272. package/src/components/ui/ticket-info-section.tsx +1 -1
  273. package/src/contexts/chat-runtime-context.tsx +8 -0
  274. package/src/utils/index.ts +1 -0
  275. package/src/utils/markdown-fences.ts +127 -0
  276. package/src/utils/markdown-heading-id.ts +348 -0
  277. package/src/utils/markdown-section-extractor.ts +41 -56
  278. package/dist/chunk-2B6773QM.cjs.map +0 -1
  279. package/dist/chunk-5RXKOGH6.cjs.map +0 -1
  280. package/dist/chunk-77DFPD35.js.map +0 -1
  281. package/dist/chunk-AHDJMEEN.js.map +0 -1
  282. package/dist/chunk-FZOBQG6M.cjs.map +0 -1
  283. package/dist/chunk-H7JX2BG7.cjs.map +0 -1
  284. package/dist/chunk-KFQXO7QB.js.map +0 -1
  285. package/dist/chunk-S52LJNMU.js.map +0 -1
  286. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +0 -6
  287. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +0 -1
  288. package/dist/components/chat/utils/chunk-parser.d.ts +0 -25
  289. package/dist/components/chat/utils/chunk-parser.d.ts.map +0 -1
  290. package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
  291. package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
  292. package/dist/components/ui/simple-markdown-renderer.d.ts +0 -73
  293. package/dist/components/ui/simple-markdown-renderer.d.ts.map +0 -1
  294. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +0 -77
  295. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +0 -479
  296. package/src/components/chat/utils/.chunk-parser.md +0 -62
  297. package/src/components/chat/utils/chunk-parser.ts +0 -256
  298. package/src/components/ui/.simple-markdown-renderer.md +0 -52
  299. package/src/components/ui/rich-markdown-renderer.tsx +0 -1223
  300. package/src/components/ui/simple-markdown-renderer.tsx +0 -964
  301. /package/dist/{chunk-AJNDDXKC.js.map → chunk-4NWARV5I.js.map} +0 -0
  302. /package/dist/{chunk-HQYJINFV.js.map → chunk-CORIBKHG.js.map} +0 -0
  303. /package/dist/{chunk-PNXNWGBY.js.map → chunk-GTWO5NAY.js.map} +0 -0
  304. /package/dist/{chunk-SCCTJ2UI.js.map → chunk-HSACATCD.js.map} +0 -0
  305. /package/dist/{chunk-KLYHZRAD.js.map → chunk-PB3BTZDU.js.map} +0 -0
  306. /package/dist/{chunk-YJSKQ2ZV.js.map → chunk-RQLBHKXN.js.map} +0 -0
  307. /package/dist/{chunk-CWQACI4Z.js.map → chunk-RW2LPL72.js.map} +0 -0
  308. /package/dist/{chunk-3BFX6HJM.js.map → chunk-UUYRJPGJ.js.map} +0 -0
  309. /package/dist/{chunk-F6BYUO5U.js.map → chunk-VHG6AX5V.js.map} +0 -0
  310. /package/dist/{chunk-PXF5J24T.js.map → chunk-XQ2B74SI.js.map} +0 -0
  311. /package/dist/{chunk-LLWBPPZ4.js.map → chunk-YZ2OIYQ3.js.map} +0 -0
package/dist/index.js CHANGED
@@ -196,8 +196,10 @@ import {
196
196
  CveLink,
197
197
  DEFAULT_CONTENT_SUFFIXES,
198
198
  DEFAULT_CUSTOM_STATUS_COLOR,
199
+ DEFAULT_DIALOG_SIDE,
199
200
  DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
200
201
  DEFAULT_FOLDER_INDEX_FILE,
202
+ DEFAULT_MAX_REDUCERS,
201
203
  DEFAULT_OS_PLATFORM,
202
204
  DEFAULT_THEME,
203
205
  DEFAULT_VIDEO_BITES_TITLE,
@@ -290,6 +292,7 @@ import {
290
292
  GitHubReleasesManager,
291
293
  GuideModeBanner,
292
294
  GuideWelcome,
295
+ HEADING_EMOJI_RE,
293
296
  HEX_PATTERN,
294
297
  Header,
295
298
  HeaderButton,
@@ -336,12 +339,14 @@ import {
336
339
  LogSeverityDot,
337
340
  LoginForm,
338
341
  LogsList,
342
+ MAX_PENDING_RETAIN_KEYS,
339
343
  MESSAGE_ROLE,
340
344
  MESSAGE_TYPE,
341
345
  MOBILE_NAV_PANEL_ID,
342
346
  MUX_IMAGE_ORIGIN,
343
347
  MUX_STREAM_ORIGIN,
344
348
  MarkdownEditor,
349
+ MarkdownEngine,
345
350
  MarqueeWall,
346
351
  MarqueeWallFades,
347
352
  MediaGalleryManager,
@@ -363,6 +368,7 @@ import {
363
368
  MenubarSubContent,
364
369
  MenubarSubTrigger,
365
370
  MenubarTrigger,
371
+ MermaidDiagram,
366
372
  MessageSegmentAccumulator,
367
373
  MingoAiButton,
368
374
  MingoChatHistory,
@@ -486,6 +492,7 @@ import {
486
492
  RoadmapCard,
487
493
  RoadmapCardSkeleton,
488
494
  RoadmapVoteButton,
495
+ SAFE_HTML_TAGS,
489
496
  SCROLL_ANCHOR,
490
497
  SCROLL_ANCHOR_WIRE_KEY,
491
498
  SECTION_HEADING_CLASS,
@@ -498,6 +505,7 @@ import {
498
505
  SOURCE_ICON_NAMES,
499
506
  SOURCE_LABELS_BY_TABLE,
500
507
  STRIP_CELL_MAX_WIDTH,
508
+ SVG_TAGS,
501
509
  SYNTHETIC_REALTIME_ID_PREFIXES,
502
510
  ScriptArguments,
503
511
  ScriptInfoSection,
@@ -555,6 +563,7 @@ import {
555
563
  TAG_BADGE_CLASS,
556
564
  TASK_TYPE_LABELS,
557
565
  TASK_TYPE_TEXT_COLORS,
566
+ TEXT_SIZE_PRESETS,
558
567
  THEME_ATTRIBUTE,
559
568
  THEME_STORAGE_KEY,
560
569
  TICKET_STATUS_COLOR_PRESETS,
@@ -660,13 +669,17 @@ import {
660
669
  buildDefaultHref,
661
670
  buildDiscussAddendum,
662
671
  buildDocumentTree,
672
+ buildEffectiveTagSet,
673
+ buildHeadingIdMap,
663
674
  buildListUrl,
664
675
  buildNatsWsUrl,
665
676
  buildProductReleaseCardProps,
677
+ buildSanitizeSchema,
666
678
  buildStreamFrames,
667
679
  buildSuggestionUrl,
668
680
  canonicalContentRefType,
669
681
  captureFirstTouchAttribution,
682
+ cardAwareUrlTransform,
670
683
  changelogLabels,
671
684
  chatChipClass,
672
685
  cleanEmailDomain,
@@ -677,12 +690,20 @@ import {
677
690
  clearWalkthroughDismissal,
678
691
  clickupTaskUrl,
679
692
  columnFromTicketStatus,
693
+ completeStreamingTail,
680
694
  computeHistoryPrepend,
681
695
  computeIsNewTab,
696
+ createChatDialogStore,
697
+ createChatStreamReducer,
682
698
  createColumnHelper,
699
+ createDeltaBatcher,
700
+ createEmptyTurnMeta,
701
+ createFenceTracker,
702
+ createHeadingIdDeduper,
683
703
  createMessageSegmentAccumulator,
684
704
  createUTCTimestamp,
685
705
  decideNewTab,
706
+ decodeHistoricalMessageData,
686
707
  deepClone,
687
708
  defaultBuildProductReleaseCardProps,
688
709
  defaultTableIdForDocumentType,
@@ -696,6 +717,7 @@ import {
696
717
  dismissWalkthrough,
697
718
  ensureBiteIds,
698
719
  escapeMarkdownInline,
720
+ escapeUnknownHtmlTags,
699
721
  executeNavigation,
700
722
  executeNavigationImperative,
701
723
  exportToCSV,
@@ -705,10 +727,11 @@ import {
705
727
  extractErrorMessages,
706
728
  extractImageEdgeColorAsync,
707
729
  extractIncompleteMessageState,
730
+ extractIncompleteTailState,
708
731
  extractItemId,
709
732
  extractItems,
710
733
  extractSections,
711
- extractTextFromChunk,
734
+ extractText,
712
735
  extractYouTubeId,
713
736
  faqItemAnchor,
714
737
  faqSectionSlug,
@@ -835,15 +858,13 @@ import {
835
858
  interleave,
836
859
  isAnnouncementDismissed,
837
860
  isApprovalNotification,
838
- isControlChunk,
861
+ isBlankLine,
839
862
  isCrossOriginUrl,
840
863
  isDismissedCookieValue,
841
- isErrorChunk,
842
864
  isFigmaSlidesUrl,
843
865
  isGenericDomain,
844
866
  isGenericWebsiteDomain,
845
867
  isHistoricalUserTurn,
846
- isMetadataChunk,
847
868
  isModifierClick,
848
869
  isOSPlatform,
849
870
  isQuickActionIconSpec,
@@ -877,7 +898,6 @@ import {
877
898
  orderContentRefTypes,
878
899
  osLabels,
879
900
  parseAttributionFromUrl,
880
- parseChunkToAction,
881
901
  parseFaqHash,
882
902
  parseScrollAnchor,
883
903
  parseWireCommandOverride,
@@ -885,10 +905,12 @@ import {
885
905
  pickReadableTextColor,
886
906
  processHistoricalMessages,
887
907
  processHistoricalMessagesWithErrors,
908
+ processShortcodes,
888
909
  programItemToStripProfile,
889
910
  ratioToCategory,
890
911
  readDismissCookie,
891
912
  readLeadingDecisionFrame,
913
+ rehypeStripUnsafe,
892
914
  releaseStatusOptions,
893
915
  releaseTypeOptions,
894
916
  releaseTypeToBadgeColor,
@@ -904,20 +926,26 @@ import {
904
926
  resolveSourceIcon,
905
927
  resolveSourceRowCTA,
906
928
  resolveStatusTagProps,
929
+ resolveTextSizeConfig,
907
930
  resolveTicketStatus,
908
931
  rgbToHex,
909
932
  safeHref,
910
933
  sanitizeLandingUrl,
911
934
  sanitizeTitleForChat,
912
935
  saveDataEnabled,
936
+ scanHeadings,
913
937
  serializeJsonLd,
914
938
  shellLabels,
915
939
  shouldProxyImage,
940
+ slugifyHeadingBase,
941
+ slugifyHeadingText,
916
942
  sortBitesByCreatedAtDesc,
917
943
  sortTreeChildren,
944
+ splitStreamingBlocks,
918
945
  statusBadgeVariants,
919
946
  stripChatAttachmentMarkdown,
920
947
  stripFolderIndexFromPath,
948
+ stripHeadingEmojis,
921
949
  stripHtml,
922
950
  stripInlineMarkdown,
923
951
  stripSameOriginToPath,
@@ -944,6 +972,7 @@ import {
944
972
  useChatAttachments,
945
973
  useChatCardItem,
946
974
  useChatIdentity,
975
+ useChatStreamReducer,
947
976
  useChunkCatchup,
948
977
  useCloseOnNavigation,
949
978
  useCollapsible,
@@ -953,6 +982,7 @@ import {
953
982
  useDynamicTheme,
954
983
  useEmptyStateConfig,
955
984
  useFiltersDropdown,
985
+ useHeadingIdMap,
956
986
  useJetStreamDialogSubscription,
957
987
  useLoading,
958
988
  useMarqueeSync,
@@ -963,7 +993,6 @@ import {
963
993
  useOptionalTimeTracker,
964
994
  usePageActionsBottomPadding,
965
995
  useProxiedImageUrl,
966
- useRealtimeChunkProcessor,
967
996
  useSSE,
968
997
  useScriptedStream,
969
998
  useScrollFade,
@@ -987,7 +1016,7 @@ import {
987
1016
  walkthroughDismissCookieName,
988
1017
  withFirstTouchAttribution,
989
1018
  writeDismissCookie
990
- } from "./chunk-77DFPD35.js";
1019
+ } from "./chunk-BE6DK7QY.js";
991
1020
  import {
992
1021
  CommandApprovalToast,
993
1022
  DEFAULT_MIN_FILL_MS,
@@ -1106,11 +1135,11 @@ import {
1106
1135
  validateSchema,
1107
1136
  validateVariables,
1108
1137
  variablesToUrlParams
1109
- } from "./chunk-KLYHZRAD.js";
1138
+ } from "./chunk-PB3BTZDU.js";
1110
1139
  import {
1111
1140
  PLAY_ICON_PATH
1112
1141
  } from "./chunk-OYGFWWLQ.js";
1113
- import "./chunk-KFQXO7QB.js";
1142
+ import "./chunk-6GT557KN.js";
1114
1143
  import "./chunk-7EUIW46X.js";
1115
1144
  import "./chunk-EL5YVPD5.js";
1116
1145
  import "./chunk-ZJJERZUA.js";
@@ -1540,8 +1569,10 @@ export {
1540
1569
  CveLink,
1541
1570
  DEFAULT_CONTENT_SUFFIXES,
1542
1571
  DEFAULT_CUSTOM_STATUS_COLOR,
1572
+ DEFAULT_DIALOG_SIDE,
1543
1573
  DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
1544
1574
  DEFAULT_FOLDER_INDEX_FILE,
1575
+ DEFAULT_MAX_REDUCERS,
1545
1576
  DEFAULT_MIN_FILL_MS,
1546
1577
  DEFAULT_OS_PLATFORM,
1547
1578
  DEFAULT_THEME,
@@ -1682,6 +1713,7 @@ export {
1682
1713
  GridViewIcon,
1683
1714
  GuideModeBanner,
1684
1715
  GuideWelcome,
1716
+ HEADING_EMOJI_RE,
1685
1717
  HEX_PATTERN,
1686
1718
  HONEYPOT_FIELD,
1687
1719
  HUB_HEADER_OFFSET_PX,
@@ -1751,6 +1783,7 @@ export {
1751
1783
  CheckCircleIcon2 as LucideCheckCircleIcon,
1752
1784
  XIcon2 as LucideXIcon,
1753
1785
  LumaIcon,
1786
+ MAX_PENDING_RETAIN_KEYS,
1754
1787
  MESSAGE_ROLE,
1755
1788
  MESSAGE_TYPE,
1756
1789
  MOBILE_NAV_PANEL_ID,
@@ -1759,6 +1792,7 @@ export {
1759
1792
  MacOSIcon,
1760
1793
  MarginCrisisIcon,
1761
1794
  MarkdownEditor,
1795
+ MarkdownEngine,
1762
1796
  MarqueeWall,
1763
1797
  MarqueeWallFades,
1764
1798
  MediaGalleryManager,
@@ -1780,6 +1814,7 @@ export {
1780
1814
  MenubarSubContent,
1781
1815
  MenubarSubTrigger,
1782
1816
  MenubarTrigger,
1817
+ MermaidDiagram,
1783
1818
  MessageCircleIcon,
1784
1819
  MessageSegmentAccumulator,
1785
1820
  MiamiCyberGangLogo,
@@ -1939,6 +1974,7 @@ export {
1939
1974
  RoadmapCard,
1940
1975
  RoadmapCardSkeleton,
1941
1976
  RoadmapVoteButton,
1977
+ SAFE_HTML_TAGS,
1942
1978
  SCROLL_ANCHOR,
1943
1979
  SCROLL_ANCHOR_WIRE_KEY,
1944
1980
  SECTION_HEADING_CLASS,
@@ -1954,6 +1990,7 @@ export {
1954
1990
  SSOConfigurationIcon,
1955
1991
  STICKY_HEADER_OFFSET_PX,
1956
1992
  STRIP_CELL_MAX_WIDTH,
1993
+ SVG_TAGS,
1957
1994
  SYNTHETIC_REALTIME_ID_PREFIXES,
1958
1995
  ScriptArguments,
1959
1996
  ScriptGenerationIcon,
@@ -2038,6 +2075,7 @@ export {
2038
2075
  TAG_BADGE_CLASS,
2039
2076
  TASK_TYPE_LABELS,
2040
2077
  TASK_TYPE_TEXT_COLORS,
2078
+ TEXT_SIZE_PRESETS,
2041
2079
  THEME_ATTRIBUTE,
2042
2080
  THEME_STORAGE_KEY,
2043
2081
  TICKET_STATUS_COLOR_PRESETS,
@@ -2166,15 +2204,19 @@ export {
2166
2204
  buildDefaultHref,
2167
2205
  buildDiscussAddendum,
2168
2206
  buildDocumentTree,
2207
+ buildEffectiveTagSet,
2208
+ buildHeadingIdMap,
2169
2209
  buildListUrl,
2170
2210
  buildNatsWsUrl,
2171
2211
  buildOgPlaceholderUrl,
2172
2212
  buildProductReleaseCardProps,
2213
+ buildSanitizeSchema,
2173
2214
  buildStreamFrames,
2174
2215
  buildSuggestionUrl,
2175
2216
  buttonVariants,
2176
2217
  canonicalContentRefType,
2177
2218
  captureFirstTouchAttribution,
2219
+ cardAwareUrlTransform,
2178
2220
  changelogLabels,
2179
2221
  embedAuthedFetch as chatAuthedFetch,
2180
2222
  chatChipClass,
@@ -2192,16 +2234,24 @@ export {
2192
2234
  cn,
2193
2235
  coerceValue,
2194
2236
  columnFromTicketStatus,
2237
+ completeStreamingTail,
2195
2238
  computeHistoryPrepend,
2196
2239
  computeIsNewTab,
2197
2240
  configureAuthenticatedImage,
2198
2241
  configureBatchImageFetch,
2199
2242
  consumeAccessCode,
2243
+ createChatDialogStore,
2244
+ createChatStreamReducer,
2200
2245
  createColumnHelper,
2246
+ createDeltaBatcher,
2247
+ createEmptyTurnMeta,
2248
+ createFenceTracker,
2249
+ createHeadingIdDeduper,
2201
2250
  createMessageSegmentAccumulator,
2202
2251
  createSearchParams,
2203
2252
  createUTCTimestamp,
2204
2253
  decideNewTab,
2254
+ decodeHistoricalMessageData,
2205
2255
  deepClone,
2206
2256
  defaultBuildProductReleaseCardProps,
2207
2257
  defaultTableIdForDocumentType,
@@ -2217,6 +2267,7 @@ export {
2217
2267
  embedAuthedFetch,
2218
2268
  ensureBiteIds,
2219
2269
  escapeMarkdownInline,
2270
+ escapeUnknownHtmlTags,
2220
2271
  evaluateHumanitySignals,
2221
2272
  executeNavigation,
2222
2273
  executeNavigationImperative,
@@ -2228,10 +2279,11 @@ export {
2228
2279
  extractHumanitySignals,
2229
2280
  extractImageEdgeColorAsync,
2230
2281
  extractIncompleteMessageState,
2282
+ extractIncompleteTailState,
2231
2283
  extractItemId,
2232
2284
  extractItems,
2233
2285
  extractSections,
2234
- extractTextFromChunk,
2286
+ extractText,
2235
2287
  extractVariablesFromQuery,
2236
2288
  extractYouTubeId,
2237
2289
  faqItemAnchor,
@@ -2381,16 +2433,14 @@ export {
2381
2433
  introspector,
2382
2434
  isAnnouncementDismissed,
2383
2435
  isApprovalNotification,
2384
- isControlChunk,
2436
+ isBlankLine,
2385
2437
  isCrossOriginUrl,
2386
2438
  isDismissedCookieValue,
2387
- isErrorChunk,
2388
2439
  isFigmaSlidesUrl,
2389
2440
  isGenericDomain,
2390
2441
  isGenericWebsiteDomain,
2391
2442
  isHistoricalUserTurn,
2392
2443
  isInputObjectType,
2393
- isMetadataChunk,
2394
2444
  isModifierClick,
2395
2445
  isOSPlatform,
2396
2446
  isQuickActionIconSpec,
@@ -2429,7 +2479,6 @@ export {
2429
2479
  orderContentRefTypes,
2430
2480
  osLabels,
2431
2481
  parseAttributionFromUrl,
2432
- parseChunkToAction,
2433
2482
  parseFaqHash,
2434
2483
  parseScrollAnchor,
2435
2484
  parseWireCommandOverride,
@@ -2444,11 +2493,13 @@ export {
2444
2493
  platformSlogans,
2445
2494
  processHistoricalMessages,
2446
2495
  processHistoricalMessagesWithErrors,
2496
+ processShortcodes,
2447
2497
  programItemToStripProfile,
2448
2498
  progressColorByVariant,
2449
2499
  ratioToCategory,
2450
2500
  readDismissCookie,
2451
2501
  readLeadingDecisionFrame,
2502
+ rehypeStripUnsafe,
2452
2503
  releaseStatusOptions,
2453
2504
  releaseTypeOptions,
2454
2505
  releaseTypeToBadgeColor,
@@ -2465,12 +2516,14 @@ export {
2465
2516
  resolveSourceIcon,
2466
2517
  resolveSourceRowCTA,
2467
2518
  resolveStatusTagProps,
2519
+ resolveTextSizeConfig,
2468
2520
  resolveTicketStatus,
2469
2521
  rgbToHex,
2470
2522
  safeHref,
2471
2523
  sanitizeLandingUrl,
2472
2524
  sanitizeTitleForChat,
2473
2525
  saveDataEnabled,
2526
+ scanHeadings,
2474
2527
  scrollElementIntoView,
2475
2528
  serializeJsonLd,
2476
2529
  setEmbedProxyAuth as setChatProxyAuth,
@@ -2482,12 +2535,16 @@ export {
2482
2535
  shouldProxyImage,
2483
2536
  showCommandApprovalToast,
2484
2537
  showToast,
2538
+ slugifyHeadingBase,
2539
+ slugifyHeadingText,
2485
2540
  sortBitesByCreatedAtDesc,
2486
2541
  sortTreeChildren,
2487
2542
  splitCsvEnv,
2543
+ splitStreamingBlocks,
2488
2544
  statusBadgeVariants,
2489
2545
  stripChatAttachmentMarkdown,
2490
2546
  stripFolderIndexFromPath,
2547
+ stripHeadingEmojis,
2491
2548
  stripHtml,
2492
2549
  stripInlineMarkdown,
2493
2550
  stripSameOriginToPath,
@@ -2524,6 +2581,7 @@ export {
2524
2581
  useChatAttachments,
2525
2582
  useChatCardItem,
2526
2583
  useChatIdentity,
2584
+ useChatStreamReducer,
2527
2585
  useChunkCatchup,
2528
2586
  useCloseOnNavigation,
2529
2587
  useCollapsible,
@@ -2541,6 +2599,7 @@ export {
2541
2599
  useFiltersDropdown,
2542
2600
  useFocusTrap,
2543
2601
  useHeaderHeight,
2602
+ useHeadingIdMap,
2544
2603
  useHorizontalScrollbar,
2545
2604
  useHumanitySignals,
2546
2605
  useImageEdgeColor,
@@ -2569,7 +2628,6 @@ export {
2569
2628
  usePreventScroll,
2570
2629
  useProxiedImageUrl,
2571
2630
  useQueryParams,
2572
- useRealtimeChunkProcessor,
2573
2631
  useResetOnPageHidden,
2574
2632
  useSSE,
2575
2633
  useScriptedStream,
@@ -3996,6 +3996,151 @@ function buildDocumentTree(docs, mapFn, getParentPath, getPath) {
3996
3996
  return sortTreeChildren(rootNodes);
3997
3997
  }
3998
3998
 
3999
+ // src/utils/markdown-fences.ts
4000
+ var FENCE_RE = /^ {0,3}(`{3,}|~{3,})([^\n]*?)\r?$/;
4001
+ var BLANK_LINE_RE = /^[ \t\r]*$/;
4002
+ function isBlankLine(line) {
4003
+ return BLANK_LINE_RE.test(line);
4004
+ }
4005
+ function createFenceTracker() {
4006
+ let fenceChar = null;
4007
+ let fenceLength = 0;
4008
+ return {
4009
+ push(line) {
4010
+ const fence = FENCE_RE.exec(line);
4011
+ if (fence) {
4012
+ const run = fence[1];
4013
+ if (fenceChar === null) {
4014
+ fenceChar = run[0];
4015
+ fenceLength = run.length;
4016
+ return "open";
4017
+ }
4018
+ if (run[0] === fenceChar && run.length >= fenceLength && isBlankLine(fence[2])) {
4019
+ fenceChar = null;
4020
+ fenceLength = 0;
4021
+ return "close";
4022
+ }
4023
+ return "inside";
4024
+ }
4025
+ return fenceChar === null ? "text" : "inside";
4026
+ },
4027
+ openChar: () => fenceChar,
4028
+ openLength: () => fenceLength
4029
+ };
4030
+ }
4031
+
4032
+ // src/utils/markdown-heading-id.ts
4033
+ var HEADING_EMOJI_RE = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/gu;
4034
+ function stripHeadingEmojis(text) {
4035
+ return text.replace(HEADING_EMOJI_RE, "").trim();
4036
+ }
4037
+ function slugifyHeadingBase(text) {
4038
+ return text.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/^-+|-+$/g, "");
4039
+ }
4040
+ function slugifyHeadingText(text) {
4041
+ return slugifyHeadingBase(stripHeadingEmojis(text));
4042
+ }
4043
+ var ATX_HEADING_RE = /^ {0,3}(#{1,6})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*\r?$/;
4044
+ var ATX_EMPTY_RE = /^ {0,3}(#{1,6})[ \t]*#*[ \t]*\r?$/;
4045
+ var RAW_HEADING_RE = /<h([1-6])\b[^>]*>([\s\S]*?)(?:<\/h\1>|$)/gi;
4046
+ var CONTAINER_PREFIX_RE = /^ {0,3}(?:(?:>[ \t]?)+|(?:[-+*]|\d{1,9}[.)])[ \t]+)+/;
4047
+ var SETEXT_UNDERLINE_RE = /^ {0,3}(=+|-+)[ \t]*\r?$/;
4048
+ var THEMATIC_BREAK_RE = /^ {0,3}(\*|_){3,}[ \t]*\r?$/;
4049
+ var HTML_BLOCK_TAGS = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
4050
+ var HTML_BLOCK_OPENER_RE = new RegExp(
4051
+ `^ {0,3}(?:<(?:script|pre|style|textarea)(?:[\\s>]|$)|<!--|<\\?|<![a-zA-Z]|<!\\[CDATA\\[|</?(?:${HTML_BLOCK_TAGS})(?:[\\s/>]|$)|<[a-zA-Z][a-zA-Z0-9-]*(?:\\s[^>]*)?/?>[ \\t]*\\r?$|</[a-zA-Z][a-zA-Z0-9-]*[ \\t]*>[ \\t]*\\r?$)`,
4052
+ "i"
4053
+ );
4054
+ function scanHeadings(content, options = {}) {
4055
+ const { skipFrontmatter = true, includeRawHtml = true, skipFences = true } = options;
4056
+ const out = [];
4057
+ const lines = content.split("\n");
4058
+ const fences = skipFences ? createFenceTracker() : null;
4059
+ let start = 0;
4060
+ if (skipFrontmatter && lines[0]?.trim() === "---") {
4061
+ for (let i = 1; i < lines.length; i++) {
4062
+ if (lines[i].trim() === "---" || lines[i].trim() === "...") {
4063
+ start = i + 1;
4064
+ break;
4065
+ }
4066
+ }
4067
+ }
4068
+ let setextRun = null;
4069
+ for (let i = start; i < lines.length; i++) {
4070
+ const line = lines[i];
4071
+ if (fences) {
4072
+ const role = fences.push(line);
4073
+ if (role !== "text") {
4074
+ setextRun = null;
4075
+ continue;
4076
+ }
4077
+ }
4078
+ const prefix = CONTAINER_PREFIX_RE.exec(line)?.[0] ?? "";
4079
+ const body = prefix ? line.slice(prefix.length) : line;
4080
+ const setext = SETEXT_UNDERLINE_RE.exec(body);
4081
+ if (setext) {
4082
+ if (setextRun && !setextRun.disqualified && setextRun.prefix === prefix) {
4083
+ out.push({
4084
+ line: setextRun.line,
4085
+ level: setext[1][0] === "=" ? 1 : 2,
4086
+ text: setextRun.lines.join("\n")
4087
+ });
4088
+ }
4089
+ setextRun = null;
4090
+ continue;
4091
+ }
4092
+ const atx = ATX_HEADING_RE.exec(body) ?? ATX_EMPTY_RE.exec(body);
4093
+ if (atx) {
4094
+ out.push({ line: i + 1, level: atx[1].length, text: (atx[2] ?? "").trim() });
4095
+ setextRun = null;
4096
+ continue;
4097
+ }
4098
+ if (includeRawHtml && line.indexOf("<") !== -1) {
4099
+ RAW_HEADING_RE.lastIndex = 0;
4100
+ let raw;
4101
+ let matched = false;
4102
+ while ((raw = RAW_HEADING_RE.exec(line)) !== null) {
4103
+ matched = true;
4104
+ out.push({
4105
+ line: i + 1,
4106
+ level: Number(raw[1]),
4107
+ text: raw[2].replace(/<[^>]*>/g, "").trim()
4108
+ });
4109
+ }
4110
+ if (matched) {
4111
+ setextRun = null;
4112
+ continue;
4113
+ }
4114
+ }
4115
+ if (isBlankLine(body) || THEMATIC_BREAK_RE.test(body)) {
4116
+ setextRun = null;
4117
+ continue;
4118
+ }
4119
+ if (setextRun && setextRun.prefix === prefix) {
4120
+ setextRun.lines.push(body.trim());
4121
+ } else {
4122
+ setextRun = {
4123
+ line: i + 1,
4124
+ prefix,
4125
+ lines: [body.trim()],
4126
+ disqualified: HTML_BLOCK_OPENER_RE.test(body)
4127
+ };
4128
+ }
4129
+ }
4130
+ return out;
4131
+ }
4132
+ function createHeadingIdDeduper() {
4133
+ const counts = {};
4134
+ return (cleanId) => {
4135
+ if (counts[cleanId]) {
4136
+ counts[cleanId]++;
4137
+ return `${cleanId}-${counts[cleanId]}`;
4138
+ }
4139
+ counts[cleanId] = 1;
4140
+ return cleanId;
4141
+ };
4142
+ }
4143
+
3999
4144
  // src/utils/markdown-to-plain.ts
4000
4145
  function stripInlineMarkdown(s) {
4001
4146
  return s.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*]+)\*/g, "$1").replace(/`([^`]+)`/g, "$1");
@@ -4026,50 +4171,26 @@ var DEFAULT_OPTIONS = {
4026
4171
  function extractSections(markdown, options = {}) {
4027
4172
  const opts = { ...DEFAULT_OPTIONS, ...options };
4028
4173
  const sections = [];
4029
- const lines = markdown.split("\n");
4030
- const idCounts = {};
4031
- let inCodeBlock = false;
4032
- let inYamlBlock = false;
4033
- for (const line of lines) {
4034
- if (opts.skipCodeAndYamlBlocks) {
4035
- if (line.startsWith("```")) {
4036
- inCodeBlock = !inCodeBlock;
4037
- continue;
4038
- }
4039
- if (line === "---") {
4040
- inYamlBlock = !inYamlBlock;
4041
- continue;
4042
- }
4043
- if (inCodeBlock || inYamlBlock) continue;
4044
- }
4045
- const pattern = new RegExp(`^(#{1,${opts.maxLevel}})\\s+(.+)`);
4046
- const match = line.match(pattern);
4047
- if (!match) continue;
4048
- const level = match[1].length;
4049
- if (level > opts.maxLevel) continue;
4050
- let title = match[2].trim();
4174
+ const dedupe = createHeadingIdDeduper();
4175
+ const scanned = scanHeadings(markdown, {
4176
+ skipFrontmatter: opts.skipCodeAndYamlBlocks,
4177
+ skipFences: opts.skipCodeAndYamlBlocks
4178
+ });
4179
+ for (const heading of scanned) {
4180
+ if (heading.level > opts.maxLevel) continue;
4181
+ let title = heading.text;
4051
4182
  if (opts.stripFormattingMarkers) {
4052
4183
  title = stripInlineMarkdown(title).trim();
4053
4184
  }
4054
- let baseId = title;
4055
- if (opts.removeEmojis) {
4056
- baseId = baseId.replace(
4057
- /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/gu,
4058
- ""
4059
- ).trim();
4060
- }
4061
- baseId = baseId.toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/^-+|-+$/g, "");
4185
+ const baseId = slugifyHeadingBase(
4186
+ opts.removeEmojis ? stripHeadingEmojis(title) : title
4187
+ );
4062
4188
  const cleanId = baseId || `section-${sections.length + 1}`;
4063
- let id = cleanId;
4064
- if (opts.handleDuplicateIds) {
4065
- if (idCounts[cleanId]) {
4066
- idCounts[cleanId]++;
4067
- id = `${cleanId}-${idCounts[cleanId]}`;
4068
- } else {
4069
- idCounts[cleanId] = 1;
4070
- }
4071
- }
4072
- sections.push({ id, title, level });
4189
+ sections.push({
4190
+ id: opts.handleDuplicateIds ? dedupe(cleanId) : cleanId,
4191
+ title,
4192
+ level: heading.level
4193
+ });
4073
4194
  }
4074
4195
  return sections;
4075
4196
  }
@@ -4235,6 +4356,7 @@ exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS;
4235
4356
  exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD;
4236
4357
  exports.FIRST_TOUCH_ATTRIBUTION_KEY = FIRST_TOUCH_ATTRIBUTION_KEY;
4237
4358
  exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS;
4359
+ exports.HEADING_EMOJI_RE = HEADING_EMOJI_RE;
4238
4360
  exports.HEX_PATTERN = HEX_PATTERN;
4239
4361
  exports.HONEYPOT_FIELD = HONEYPOT_FIELD;
4240
4362
  exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX;
@@ -4277,6 +4399,8 @@ exports.clearWalkthroughDismissal = clearWalkthroughDismissal;
4277
4399
  exports.clickupTaskUrl = clickupTaskUrl;
4278
4400
  exports.cn = cn;
4279
4401
  exports.consumeAccessCode = consumeAccessCode;
4402
+ exports.createFenceTracker = createFenceTracker;
4403
+ exports.createHeadingIdDeduper = createHeadingIdDeduper;
4280
4404
  exports.createUTCTimestamp = createUTCTimestamp;
4281
4405
  exports.deepClone = deepClone;
4282
4406
  exports.delay = delay;
@@ -4400,6 +4524,7 @@ exports.getTrendColors = getTrendColors;
4400
4524
  exports.hasGenericEmailDomain = hasGenericEmailDomain;
4401
4525
  exports.hexToRgb = hexToRgb2;
4402
4526
  exports.isAnnouncementDismissed = isAnnouncementDismissed;
4527
+ exports.isBlankLine = isBlankLine;
4403
4528
  exports.isCrossOriginUrl = isCrossOriginUrl;
4404
4529
  exports.isDismissedCookieValue = isDismissedCookieValue;
4405
4530
  exports.isFigmaSlidesUrl = isFigmaSlidesUrl;
@@ -4445,15 +4570,19 @@ exports.resolveReleaseCover = resolveReleaseCover;
4445
4570
  exports.rgbToHex = rgbToHex;
4446
4571
  exports.sanitizeLandingUrl = sanitizeLandingUrl;
4447
4572
  exports.sanitizeTitleForChat = sanitizeTitleForChat;
4573
+ exports.scanHeadings = scanHeadings;
4448
4574
  exports.scrollElementIntoView = scrollElementIntoView;
4449
4575
  exports.serializeJsonLd = serializeJsonLd;
4450
4576
  exports.setEmbedAuthAdapter = setEmbedAuthAdapter;
4451
4577
  exports.setEmbedProxyAuth = setEmbedProxyAuth;
4452
4578
  exports.shouldProxyImage = shouldProxyImage;
4579
+ exports.slugifyHeadingBase = slugifyHeadingBase;
4580
+ exports.slugifyHeadingText = slugifyHeadingText;
4453
4581
  exports.sortTreeChildren = sortTreeChildren;
4454
4582
  exports.splitCsvEnv = splitCsvEnv;
4455
4583
  exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown;
4456
4584
  exports.stripFolderIndexFromPath = stripFolderIndexFromPath;
4585
+ exports.stripHeadingEmojis = stripHeadingEmojis;
4457
4586
  exports.stripHtml = stripHtml;
4458
4587
  exports.stripInlineMarkdown = stripInlineMarkdown;
4459
4588
  exports.toDocSlug = toDocSlug;