@flamingo-stack/openframe-frontend-core 0.0.490-1506.3944.1 → 0.0.490

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 (293) hide show
  1. package/dist/{chunk-5CJR2GZ4.cjs → chunk-2MKUHJ3O.cjs} +31 -31
  2. package/dist/{chunk-5CJR2GZ4.cjs.map → chunk-2MKUHJ3O.cjs.map} +1 -1
  3. package/dist/{chunk-S2NHJDKQ.cjs → chunk-3IEVA5AO.cjs} +62 -62
  4. package/dist/{chunk-S2NHJDKQ.cjs.map → chunk-3IEVA5AO.cjs.map} +1 -1
  5. package/dist/{chunk-GTWO5NAY.js → chunk-6CFFISUC.js} +2 -2
  6. package/dist/{chunk-VHG6AX5V.js → chunk-6CJ2K7BD.js} +2 -2
  7. package/dist/{chunk-4NWARV5I.js → chunk-6QK3ONDD.js} +2 -2
  8. package/dist/{chunk-YHOIAA2E.cjs → chunk-7I42V2OD.cjs} +60 -60
  9. package/dist/chunk-7I42V2OD.cjs.map +1 -0
  10. package/dist/{chunk-T2EGSZFN.js → chunk-AIRNG27G.js} +5 -6
  11. package/dist/chunk-AIRNG27G.js.map +1 -0
  12. package/dist/{chunk-NWX7MMF5.cjs → chunk-AW63ET2A.cjs} +15 -15
  13. package/dist/{chunk-NWX7MMF5.cjs.map → chunk-AW63ET2A.cjs.map} +1 -1
  14. package/dist/{chunk-TKN5667N.js → chunk-BZMOEWWS.js} +10 -10
  15. package/dist/chunk-BZMOEWWS.js.map +1 -0
  16. package/dist/{chunk-DSDZ5T4P.cjs → chunk-D5LQMRPU.cjs} +5 -5
  17. package/dist/{chunk-DSDZ5T4P.cjs.map → chunk-D5LQMRPU.cjs.map} +1 -1
  18. package/dist/{chunk-CORIBKHG.js → chunk-EGXCWZYP.js} +2 -2
  19. package/dist/{chunk-5EYRXSY5.cjs → chunk-EJQUYZXF.cjs} +9 -9
  20. package/dist/{chunk-5EYRXSY5.cjs.map → chunk-EJQUYZXF.cjs.map} +1 -1
  21. package/dist/{chunk-P4WTZU6L.cjs → chunk-FY5XAW3H.cjs} +11 -11
  22. package/dist/{chunk-P4WTZU6L.cjs.map → chunk-FY5XAW3H.cjs.map} +1 -1
  23. package/dist/{chunk-VQ523ORK.cjs → chunk-GMPYR3MX.cjs} +26 -26
  24. package/dist/{chunk-VQ523ORK.cjs.map → chunk-GMPYR3MX.cjs.map} +1 -1
  25. package/dist/{chunk-QSCHCZL3.cjs → chunk-GUTYUMGV.cjs} +7 -7
  26. package/dist/{chunk-QSCHCZL3.cjs.map → chunk-GUTYUMGV.cjs.map} +1 -1
  27. package/dist/{chunk-Q6E7VJ4W.cjs → chunk-IEZ3YBAP.cjs} +27 -28
  28. package/dist/chunk-IEZ3YBAP.cjs.map +1 -0
  29. package/dist/{chunk-HSACATCD.js → chunk-MPYDX5WX.js} +2 -2
  30. package/dist/{chunk-RQLBHKXN.js → chunk-NGEFYPY7.js} +2 -2
  31. package/dist/{chunk-BE6DK7QY.js → chunk-OQIMH2WQ.js} +8985 -11081
  32. package/dist/chunk-OQIMH2WQ.js.map +1 -0
  33. package/dist/{chunk-CSYSYJCF.cjs → chunk-UZZT65PQ.cjs} +37 -37
  34. package/dist/{chunk-CSYSYJCF.cjs.map → chunk-UZZT65PQ.cjs.map} +1 -1
  35. package/dist/{chunk-YZ2OIYQ3.js → chunk-VDZO6IDR.js} +4 -4
  36. package/dist/{chunk-UUYRJPGJ.js → chunk-VL2YMDPH.js} +4 -4
  37. package/dist/{chunk-5LMGFI4J.cjs → chunk-VUXNXWOQ.cjs} +4946 -7042
  38. package/dist/chunk-VUXNXWOQ.cjs.map +1 -0
  39. package/dist/{chunk-XQ2B74SI.js → chunk-WLM3F3WU.js} +2 -2
  40. package/dist/components/case-studies/index.cjs +8 -8
  41. package/dist/components/case-studies/index.js +2 -2
  42. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  43. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  44. package/dist/components/chat/guide-display.d.ts +14 -0
  45. package/dist/components/chat/guide-display.d.ts.map +1 -0
  46. package/dist/components/chat/hooks/index.d.ts +1 -0
  47. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  48. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  49. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +48 -15
  50. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  51. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +6 -0
  52. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -0
  53. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +57 -10
  54. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  55. package/dist/components/chat/index.cjs +2 -8
  56. package/dist/components/chat/index.cjs.map +1 -1
  57. package/dist/components/chat/index.d.ts +1 -1
  58. package/dist/components/chat/index.d.ts.map +1 -1
  59. package/dist/components/chat/index.js +15 -21
  60. package/dist/components/chat/types/api.types.d.ts +81 -1
  61. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  62. package/dist/components/chat/types/component.types.d.ts +6 -0
  63. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  64. package/dist/components/chat/types/message.types.d.ts +15 -2
  65. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  66. package/dist/components/chat/types/processing.types.d.ts +93 -2
  67. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  68. package/dist/components/chat/utils/chunk-parser.d.ts +25 -0
  69. package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -0
  70. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +6 -34
  71. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  72. package/dist/components/chat/utils/index.d.ts +3 -2
  73. package/dist/components/chat/utils/index.d.ts.map +1 -1
  74. package/dist/components/chat/utils/message-segment-accumulator.d.ts +5 -0
  75. package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
  76. package/dist/components/chat/utils/process-historical-messages.d.ts +11 -59
  77. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  78. package/dist/components/contact/index.cjs +3 -3
  79. package/dist/components/contact/index.js +2 -2
  80. package/dist/components/docs/index.cjs +5 -5
  81. package/dist/components/docs/index.js +4 -4
  82. package/dist/components/embeds/index.cjs +3 -3
  83. package/dist/components/embeds/index.js +2 -2
  84. package/dist/components/faq/index.cjs +3 -3
  85. package/dist/components/faq/index.js +2 -2
  86. package/dist/components/features/index.cjs +2 -2
  87. package/dist/components/features/index.js +1 -1
  88. package/dist/components/help-center-pages/index.cjs +20 -20
  89. package/dist/components/help-center-pages/index.js +11 -11
  90. package/dist/components/index.cjs +130 -170
  91. package/dist/components/index.cjs.map +1 -1
  92. package/dist/components/index.js +23 -63
  93. package/dist/components/index.js.map +1 -1
  94. package/dist/components/navigation/index.cjs +2 -2
  95. package/dist/components/navigation/index.js +1 -1
  96. package/dist/components/onboarding-guides/index.cjs +5 -5
  97. package/dist/components/onboarding-guides/index.js +4 -4
  98. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  99. package/dist/components/related-content/index.cjs +3 -3
  100. package/dist/components/related-content/index.js +2 -2
  101. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  102. package/dist/components/tickets/index.cjs +5 -5
  103. package/dist/components/tickets/index.js +4 -4
  104. package/dist/components/ui/index.cjs +2 -42
  105. package/dist/components/ui/index.cjs.map +1 -1
  106. package/dist/components/ui/index.d.ts +2 -1
  107. package/dist/components/ui/index.d.ts.map +1 -1
  108. package/dist/components/ui/index.js +15 -55
  109. package/dist/components/ui/rich-markdown-renderer.d.ts +34 -0
  110. package/dist/components/ui/rich-markdown-renderer.d.ts.map +1 -0
  111. package/dist/components/ui/simple-markdown-renderer.d.ts +73 -0
  112. package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -0
  113. package/dist/index.cjs +2 -58
  114. package/dist/index.cjs.map +1 -1
  115. package/dist/index.js +15 -71
  116. package/dist/utils/index.cjs +40 -169
  117. package/dist/utils/index.cjs.map +1 -1
  118. package/dist/utils/index.d.ts +0 -1
  119. package/dist/utils/index.d.ts.map +1 -1
  120. package/dist/utils/index.js +41 -162
  121. package/dist/utils/index.js.map +1 -1
  122. package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
  123. package/package.json +1 -7
  124. package/src/components/chat/__tests__/chat-message-list.test.tsx +5 -293
  125. package/src/components/chat/chat-message-enhanced.tsx +80 -163
  126. package/src/components/chat/chat-message-list.tsx +109 -358
  127. package/src/components/chat/embeddable-chat.tsx +0 -6
  128. package/src/components/chat/guide-display.tsx +44 -0
  129. package/src/components/chat/hooks/.index.md +33 -30
  130. package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
  131. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +77 -0
  132. package/src/components/chat/hooks/index.ts +1 -0
  133. package/src/components/chat/hooks/use-chat.ts +0 -8
  134. package/src/components/chat/hooks/use-nats-chat-adapter.ts +825 -243
  135. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +489 -0
  136. package/src/components/chat/hooks/use-sse-chat-adapter.ts +684 -380
  137. package/src/components/chat/index.ts +1 -5
  138. package/src/components/chat/thinking-display.tsx +1 -1
  139. package/src/components/chat/types/.api.types.md +49 -39
  140. package/src/components/chat/types/.processing.types.md +58 -29
  141. package/src/components/chat/types/api.types.ts +73 -6
  142. package/src/components/chat/types/component.types.ts +9 -0
  143. package/src/components/chat/types/message.types.ts +17 -1
  144. package/src/components/chat/types/processing.types.ts +53 -11
  145. package/src/components/chat/utils/.chunk-parser.md +62 -0
  146. package/src/components/chat/utils/.index.md +40 -31
  147. package/src/components/chat/utils/chunk-parser.ts +262 -0
  148. package/src/components/chat/utils/extract-incomplete-message-state.ts +5 -63
  149. package/src/components/chat/utils/index.ts +8 -5
  150. package/src/components/chat/utils/message-segment-accumulator.ts +19 -0
  151. package/src/components/chat/utils/process-historical-messages.ts +390 -352
  152. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +4 -22
  153. package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
  154. package/src/components/shared/product-release/release-detail-page.tsx +4 -19
  155. package/src/components/ui/.simple-markdown-renderer.md +52 -0
  156. package/src/components/ui/index.ts +2 -1
  157. package/src/components/ui/release-changelog-section.tsx +1 -1
  158. package/src/components/ui/rich-markdown-renderer.tsx +1223 -0
  159. package/src/components/ui/simple-markdown-renderer.tsx +964 -0
  160. package/src/components/ui/ticket-info-section.tsx +1 -1
  161. package/src/stories/ChatMessageEnhanced.stories.tsx +48 -1
  162. package/src/utils/index.ts +0 -1
  163. package/src/utils/markdown-section-extractor.ts +56 -41
  164. package/dist/chat-protocol/decode.d.ts +0 -58
  165. package/dist/chat-protocol/decode.d.ts.map +0 -1
  166. package/dist/chat-protocol/encode.d.ts +0 -44
  167. package/dist/chat-protocol/encode.d.ts.map +0 -1
  168. package/dist/chat-protocol/env-flag.d.ts +0 -35
  169. package/dist/chat-protocol/env-flag.d.ts.map +0 -1
  170. package/dist/chat-protocol/events.d.ts +0 -196
  171. package/dist/chat-protocol/events.d.ts.map +0 -1
  172. package/dist/chat-protocol/frames.d.ts +0 -213
  173. package/dist/chat-protocol/frames.d.ts.map +0 -1
  174. package/dist/chat-protocol/index.cjs +0 -494
  175. package/dist/chat-protocol/index.cjs.map +0 -1
  176. package/dist/chat-protocol/index.d.ts +0 -18
  177. package/dist/chat-protocol/index.d.ts.map +0 -1
  178. package/dist/chat-protocol/index.js +0 -478
  179. package/dist/chat-protocol/index.js.map +0 -1
  180. package/dist/chat-protocol/ip-normalize.d.ts +0 -44
  181. package/dist/chat-protocol/ip-normalize.d.ts.map +0 -1
  182. package/dist/chat-protocol/nats-decoder.d.ts +0 -26
  183. package/dist/chat-protocol/nats-decoder.d.ts.map +0 -1
  184. package/dist/chunk-5LMGFI4J.cjs.map +0 -1
  185. package/dist/chunk-BE6DK7QY.js.map +0 -1
  186. package/dist/chunk-Q6E7VJ4W.cjs.map +0 -1
  187. package/dist/chunk-T2EGSZFN.js.map +0 -1
  188. package/dist/chunk-TKN5667N.js.map +0 -1
  189. package/dist/chunk-YHOIAA2E.cjs.map +0 -1
  190. package/dist/components/chat/stream/chat-dialog-store.d.ts +0 -184
  191. package/dist/components/chat/stream/chat-dialog-store.d.ts.map +0 -1
  192. package/dist/components/chat/stream/chat-stream-reducer.d.ts +0 -367
  193. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +0 -1
  194. package/dist/components/chat/stream/delta-batcher.d.ts +0 -51
  195. package/dist/components/chat/stream/delta-batcher.d.ts.map +0 -1
  196. package/dist/components/chat/stream/index.d.ts +0 -17
  197. package/dist/components/chat/stream/index.d.ts.map +0 -1
  198. package/dist/components/chat/stream/message-mutations.d.ts +0 -77
  199. package/dist/components/chat/stream/message-mutations.d.ts.map +0 -1
  200. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +0 -22
  201. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +0 -1
  202. package/dist/components/ui/markdown/base-components.d.ts +0 -51
  203. package/dist/components/ui/markdown/base-components.d.ts.map +0 -1
  204. package/dist/components/ui/markdown/engine.d.ts +0 -99
  205. package/dist/components/ui/markdown/engine.d.ts.map +0 -1
  206. package/dist/components/ui/markdown/heading-ids.d.ts +0 -65
  207. package/dist/components/ui/markdown/heading-ids.d.ts.map +0 -1
  208. package/dist/components/ui/markdown/index.d.ts +0 -18
  209. package/dist/components/ui/markdown/index.d.ts.map +0 -1
  210. package/dist/components/ui/markdown/mermaid-diagram.d.ts +0 -79
  211. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +0 -1
  212. package/dist/components/ui/markdown/rich/embed-overrides.d.ts +0 -14
  213. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +0 -1
  214. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +0 -40
  215. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +0 -1
  216. package/dist/components/ui/markdown/rich/shortcodes.d.ts +0 -8
  217. package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +0 -1
  218. package/dist/components/ui/markdown/sanitize.d.ts +0 -153
  219. package/dist/components/ui/markdown/sanitize.d.ts.map +0 -1
  220. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -23
  221. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +0 -1
  222. package/dist/components/ui/markdown/streaming.d.ts +0 -78
  223. package/dist/components/ui/markdown/streaming.d.ts.map +0 -1
  224. package/dist/components/ui/markdown/text-size.d.ts +0 -34
  225. package/dist/components/ui/markdown/text-size.d.ts.map +0 -1
  226. package/dist/utils/markdown-fences.d.ts +0 -42
  227. package/dist/utils/markdown-fences.d.ts.map +0 -1
  228. package/dist/utils/markdown-heading-id.d.ts +0 -85
  229. package/dist/utils/markdown-heading-id.d.ts.map +0 -1
  230. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +0 -307
  231. package/src/chat-protocol/__tests__/chat-protocol.test.ts +0 -516
  232. package/src/chat-protocol/__tests__/env-flag.test.ts +0 -52
  233. package/src/chat-protocol/__tests__/ip-normalize.test.ts +0 -136
  234. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +0 -228
  235. package/src/chat-protocol/decode.ts +0 -278
  236. package/src/chat-protocol/encode.ts +0 -71
  237. package/src/chat-protocol/env-flag.ts +0 -39
  238. package/src/chat-protocol/events.ts +0 -232
  239. package/src/chat-protocol/frames.ts +0 -245
  240. package/src/chat-protocol/index.ts +0 -21
  241. package/src/chat-protocol/ip-normalize.ts +0 -146
  242. package/src/chat-protocol/nats-decoder.ts +0 -252
  243. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +0 -207
  244. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +0 -209
  245. package/src/components/chat/hooks/__tests__/__snapshots__/conversation-id-persistence-golden.test.ts.snap +0 -37
  246. package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
  247. package/src/components/chat/hooks/__tests__/conversation-id-persistence-golden.test.ts +0 -438
  248. package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +0 -318
  249. package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +0 -940
  250. package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +0 -756
  251. package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +0 -460
  252. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +0 -894
  253. package/src/components/chat/stream/__tests__/delta-batcher.test.ts +0 -255
  254. package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +0 -98
  255. package/src/components/chat/stream/chat-dialog-store.ts +0 -536
  256. package/src/components/chat/stream/chat-stream-reducer.ts +0 -1796
  257. package/src/components/chat/stream/delta-batcher.ts +0 -159
  258. package/src/components/chat/stream/index.ts +0 -55
  259. package/src/components/chat/stream/message-mutations.ts +0 -338
  260. package/src/components/chat/stream/use-chat-stream-reducer.ts +0 -126
  261. package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +0 -420
  262. package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +0 -605
  263. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +0 -317
  264. package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +0 -270
  265. package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +0 -2420
  266. package/src/components/ui/__tests__/markdown-parity.test.tsx +0 -2528
  267. package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +0 -115
  268. package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +0 -95
  269. package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +0 -309
  270. package/src/components/ui/markdown/__tests__/streaming.test.tsx +0 -388
  271. package/src/components/ui/markdown/base-components.tsx +0 -360
  272. package/src/components/ui/markdown/engine.tsx +0 -315
  273. package/src/components/ui/markdown/heading-ids.ts +0 -239
  274. package/src/components/ui/markdown/index.ts +0 -49
  275. package/src/components/ui/markdown/mermaid-diagram.tsx +0 -291
  276. package/src/components/ui/markdown/rich/embed-overrides.tsx +0 -199
  277. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +0 -184
  278. package/src/components/ui/markdown/rich/shortcodes.ts +0 -170
  279. package/src/components/ui/markdown/sanitize.ts +0 -3499
  280. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -28
  281. package/src/components/ui/markdown/streaming.ts +0 -362
  282. package/src/components/ui/markdown/text-size.ts +0 -106
  283. package/src/utils/markdown-fences.ts +0 -127
  284. package/src/utils/markdown-heading-id.ts +0 -348
  285. /package/dist/{chunk-GTWO5NAY.js.map → chunk-6CFFISUC.js.map} +0 -0
  286. /package/dist/{chunk-VHG6AX5V.js.map → chunk-6CJ2K7BD.js.map} +0 -0
  287. /package/dist/{chunk-4NWARV5I.js.map → chunk-6QK3ONDD.js.map} +0 -0
  288. /package/dist/{chunk-CORIBKHG.js.map → chunk-EGXCWZYP.js.map} +0 -0
  289. /package/dist/{chunk-HSACATCD.js.map → chunk-MPYDX5WX.js.map} +0 -0
  290. /package/dist/{chunk-RQLBHKXN.js.map → chunk-NGEFYPY7.js.map} +0 -0
  291. /package/dist/{chunk-YZ2OIYQ3.js.map → chunk-VDZO6IDR.js.map} +0 -0
  292. /package/dist/{chunk-UUYRJPGJ.js.map → chunk-VL2YMDPH.js.map} +0 -0
  293. /package/dist/{chunk-XQ2B74SI.js.map → chunk-WLM3F3WU.js.map} +0 -0
@@ -1,478 +0,0 @@
1
- // src/chat-protocol/frames.ts
2
- var FRAME_TERMINATOR = "\0";
3
- var END_OF_LEADING = "";
4
- var TRAILER_SENTINEL = "";
5
-
6
- // src/chat-protocol/events.ts
7
- var CHAT_OWNER_ADMIN = "ADMIN";
8
-
9
- // src/chat-protocol/encode.ts
10
- var encoder = new TextEncoder();
11
- var SENTINEL_BYTES_RE = /[\u0000\u001E\u001F]/g;
12
- function stripSentinelBytes(text) {
13
- return text.replace(SENTINEL_BYTES_RE, "");
14
- }
15
- function encodeLeadingFrame(frame) {
16
- return encoder.encode(JSON.stringify(frame) + FRAME_TERMINATOR);
17
- }
18
- function encodeEndOfLeading() {
19
- return encoder.encode(END_OF_LEADING);
20
- }
21
- function encodeTextDelta(text) {
22
- return encoder.encode(stripSentinelBytes(text));
23
- }
24
- function encodeTrailingUsageFrame(frame) {
25
- return encoder.encode(TRAILER_SENTINEL + JSON.stringify(frame));
26
- }
27
-
28
- // src/chat-protocol/decode.ts
29
- function escapeThinkingTags(text) {
30
- return text.replace(/</g, "&lt;");
31
- }
32
- function mapLeadingFrame(meta, out) {
33
- if (meta.status === "thinking") {
34
- out.push({ type: "status", phase: "thinking" });
35
- } else if (meta.kind === "thinking-delta" && typeof meta.text === "string") {
36
- out.push({ type: "thinking-delta", text: meta.text });
37
- } else if (meta.kind === "usage" && meta.stage === "start") {
38
- out.push({
39
- type: "usage",
40
- stage: "start",
41
- input_tokens: meta.input_tokens,
42
- cache_read_input_tokens: meta.cache_read_input_tokens,
43
- cache_creation_input_tokens: meta.cache_creation_input_tokens
44
- });
45
- } else if (meta.kind === "decision_resolved" && typeof meta.action === "string") {
46
- const status = meta.action === "rejected" ? "rejected" : "approved";
47
- const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
48
- const result = meta.result ?? null;
49
- const card = meta.card ?? null;
50
- out.push({
51
- type: "approval-resolved",
52
- status,
53
- ok: meta.ok === true,
54
- willAutoContinue: meta.willAutoContinue === true,
55
- ...toolName ? { toolName } : {},
56
- ...result ? { result } : {},
57
- ...card?.marker ? { marker: card.marker } : {},
58
- ...card?.ref ? { cardRef: card.ref } : {},
59
- ...card?.type ? { cardType: card.type } : {},
60
- ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
61
- requestId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
62
- });
63
- } else if (meta.kind === "approval_request" && meta.proposalId) {
64
- const proposalId = String(meta.proposalId);
65
- const toolName = String(meta.toolName ?? "tool");
66
- const headline = typeof meta.title === "string" && meta.title.length > 0 ? meta.title : toolName;
67
- const rawFields = Array.isArray(meta.fields) ? meta.fields : [];
68
- const fields = [];
69
- for (const f of rawFields) {
70
- if (!f || !f.label || !f.value) continue;
71
- fields.push({ label: f.label, value: f.value });
72
- }
73
- out.push({
74
- type: "approval-request",
75
- requestId: proposalId,
76
- approvalType: toolName,
77
- command: headline,
78
- fields,
79
- status: "pending"
80
- });
81
- } else if (meta.kind === "text-leading" && typeof meta.text === "string") {
82
- out.push({ type: "text-delta", text: meta.text, leading: true });
83
- } else if (meta.kind === "tool_error") {
84
- const msg = typeof meta.message === "string" && meta.message.length > 0 ? meta.message : "Could not complete the requested action right now.";
85
- out.push({ type: "error", title: msg });
86
- } else if (meta.kind === "routing") {
87
- if (typeof meta.routedComplexity === "string") {
88
- out.push({
89
- type: "metadata",
90
- routing: {
91
- routedComplexity: meta.routedComplexity,
92
- ...typeof meta.routedModel === "string" ? { routedModel: meta.routedModel } : {},
93
- routedThinkingBudget: typeof meta.routedThinkingBudget === "number" ? meta.routedThinkingBudget : null
94
- }
95
- });
96
- }
97
- } else {
98
- out.push({
99
- type: "metadata",
100
- sources: meta.sources,
101
- refs: meta.refs,
102
- provider: meta.provider,
103
- modelLabel: meta.modelLabel,
104
- modelName: meta.model,
105
- contextWindowMaxTokens: meta.contextWindowMaxTokens,
106
- scrollAnchor: meta.scrollAnchor,
107
- conversationId: meta.conversationId
108
- });
109
- }
110
- }
111
- function createSseFrameDecoder() {
112
- const textDecoder = new TextDecoder();
113
- let buffer = "";
114
- let inText = false;
115
- let inTrailer = false;
116
- let trailerBuffer = "";
117
- let ended = false;
118
- function push(bytes) {
119
- const out = [];
120
- const chunk = textDecoder.decode(bytes, { stream: true });
121
- if (!inText) {
122
- buffer += chunk;
123
- while (!inText) {
124
- const recIdx = buffer.indexOf(END_OF_LEADING);
125
- const nullIdx = buffer.indexOf(FRAME_TERMINATOR);
126
- if (recIdx !== -1 && (nullIdx === -1 || recIdx < nullIdx)) {
127
- inText = true;
128
- out.push({ type: "turn-start" });
129
- const after = buffer.slice(recIdx + 1);
130
- buffer = "";
131
- if (after) {
132
- const unitIdx = after.indexOf(TRAILER_SENTINEL);
133
- if (unitIdx === -1) {
134
- out.push({ type: "text-delta", text: after });
135
- } else {
136
- const textBefore = after.slice(0, unitIdx);
137
- const trailerAfter = after.slice(unitIdx + 1);
138
- if (textBefore) {
139
- out.push({ type: "text-delta", text: textBefore });
140
- }
141
- inTrailer = true;
142
- trailerBuffer = trailerAfter;
143
- }
144
- }
145
- break;
146
- }
147
- if (nullIdx === -1) break;
148
- const metaStr = buffer.slice(0, nullIdx);
149
- const remaining = buffer.slice(nullIdx + 1);
150
- let meta;
151
- try {
152
- meta = JSON.parse(metaStr);
153
- } catch {
154
- inText = true;
155
- out.push({ type: "turn-start", implicit: true });
156
- if (buffer.length > 0) {
157
- out.push({ type: "text-delta", text: buffer });
158
- buffer = "";
159
- }
160
- break;
161
- }
162
- mapLeadingFrame(meta, out);
163
- buffer = remaining;
164
- }
165
- } else if (inTrailer) {
166
- trailerBuffer += chunk;
167
- } else {
168
- const sepIdx = chunk.indexOf(TRAILER_SENTINEL);
169
- if (sepIdx === -1) {
170
- out.push({ type: "text-delta", text: chunk });
171
- } else {
172
- const before = chunk.slice(0, sepIdx);
173
- const after = chunk.slice(sepIdx + 1);
174
- if (before) out.push({ type: "text-delta", text: before });
175
- inTrailer = true;
176
- trailerBuffer = after;
177
- }
178
- }
179
- return out;
180
- }
181
- function end() {
182
- if (ended) return [];
183
- ended = true;
184
- const out = [];
185
- if (trailerBuffer.length > 0) {
186
- const raw = trailerBuffer;
187
- trailerBuffer = "";
188
- try {
189
- const meta = JSON.parse(raw);
190
- if (meta.kind === "usage" && (meta.stage === "end" || meta.stage === "display")) {
191
- out.push({
192
- type: "usage",
193
- stage: "end",
194
- input_tokens: meta.input_tokens,
195
- output_tokens: meta.output_tokens,
196
- cache_read_input_tokens: meta.cache_read_input_tokens,
197
- cache_creation_input_tokens: meta.cache_creation_input_tokens,
198
- hit_rate_pct: meta.hit_rate_pct,
199
- telemetry: meta.telemetry,
200
- breakdown: meta.breakdown,
201
- debug: meta.debug
202
- });
203
- }
204
- } catch {
205
- }
206
- }
207
- return out;
208
- }
209
- return { push, end };
210
- }
211
-
212
- // src/components/chat/types/message.types.ts
213
- var MESSAGE_TYPE = {
214
- TEXT: "TEXT",
215
- THINKING: "THINKING",
216
- EXECUTING_TOOL: "EXECUTING_TOOL",
217
- EXECUTED_TOOL: "EXECUTED_TOOL",
218
- APPROVAL_REQUEST: "APPROVAL_REQUEST",
219
- APPROVAL_RESULT: "APPROVAL_RESULT",
220
- ERROR: "ERROR",
221
- MESSAGE_START: "MESSAGE_START",
222
- MESSAGE_END: "MESSAGE_END",
223
- MESSAGE_REQUEST: "MESSAGE_REQUEST",
224
- AI_METADATA: "AI_METADATA",
225
- TOKEN_USAGE: "TOKEN_USAGE",
226
- CONTEXT_COMPACTION_START: "CONTEXT_COMPACTION_START",
227
- CONTEXT_COMPACTION_END: "CONTEXT_COMPACTION_END",
228
- DIRECT_MESSAGE: "DIRECT_MESSAGE",
229
- SYSTEM: "SYSTEM",
230
- DIALOG_CLOSED: "DIALOG_CLOSED"
231
- };
232
-
233
- // src/chat-protocol/nats-decoder.ts
234
- function normalizeToolCalls(raw) {
235
- if (!Array.isArray(raw)) return [];
236
- return raw.filter((item) => !!item && typeof item === "object").map((item) => ({
237
- toolExecutionRequestId: String(item.toolExecutionRequestId ?? ""),
238
- toolName: String(item.toolName ?? ""),
239
- toolTitle: typeof item.toolTitle === "string" ? item.toolTitle : void 0,
240
- toolExplanation: typeof item.toolExplanation === "string" ? item.toolExplanation : void 0,
241
- toolType: typeof item.toolType === "string" ? item.toolType : void 0,
242
- requiresApproval: item.requiresApproval === true,
243
- approvalType: typeof item.approvalType === "string" ? item.approvalType : null,
244
- toolCallArguments: item.toolCallArguments && typeof item.toolCallArguments === "object" ? item.toolCallArguments : null
245
- }));
246
- }
247
- function decodeNatsChunk(chunk) {
248
- if (!chunk || typeof chunk !== "object") return null;
249
- const data = chunk;
250
- const type = String(data.type || "");
251
- const seq = typeof data.streamSeq === "number" ? { seq: data.streamSeq } : {};
252
- switch (type) {
253
- case MESSAGE_TYPE.MESSAGE_START:
254
- return { type: "turn-start", ...seq };
255
- case MESSAGE_TYPE.MESSAGE_END:
256
- return { type: "turn-end", ...seq };
257
- case MESSAGE_TYPE.AI_METADATA: {
258
- const providerName = data.providerName || data.provider;
259
- if (typeof data.modelName === "string" && typeof providerName === "string") {
260
- return {
261
- type: "metadata",
262
- modelLabel: data.modelDisplayName,
263
- modelName: data.modelName,
264
- provider: providerName,
265
- contextWindowMaxTokens: typeof data.contextWindow === "number" ? data.contextWindow : 0,
266
- ...seq
267
- };
268
- }
269
- return null;
270
- }
271
- case MESSAGE_TYPE.TEXT:
272
- if (typeof data.text === "string") {
273
- return { type: "text-delta", text: data.text, ...seq };
274
- }
275
- return null;
276
- case MESSAGE_TYPE.THINKING:
277
- if (typeof data.text === "string") {
278
- return { type: "thinking-delta", text: data.text, ...seq };
279
- }
280
- return null;
281
- case MESSAGE_TYPE.EXECUTING_TOOL:
282
- return {
283
- type: "tool-execution",
284
- data: {
285
- type: "EXECUTING_TOOL",
286
- integratedToolType: data.integratedToolType || "",
287
- toolFunction: data.toolFunction || "",
288
- toolTitle: typeof data.title === "string" ? data.title : void 0,
289
- parameters: data.parameters,
290
- toolExecutionRequestId: typeof data.toolExecutionRequestId === "string" ? data.toolExecutionRequestId : void 0
291
- },
292
- ...seq
293
- };
294
- case MESSAGE_TYPE.EXECUTED_TOOL:
295
- return {
296
- type: "tool-execution",
297
- data: {
298
- type: "EXECUTED_TOOL",
299
- integratedToolType: data.integratedToolType || "",
300
- toolFunction: data.toolFunction || "",
301
- toolTitle: typeof data.title === "string" ? data.title : void 0,
302
- parameters: data.parameters,
303
- result: data.result,
304
- success: data.success,
305
- toolExecutionRequestId: typeof data.toolExecutionRequestId === "string" ? data.toolExecutionRequestId : void 0
306
- },
307
- ...seq
308
- };
309
- case MESSAGE_TYPE.APPROVAL_REQUEST: {
310
- const requestId = data.approvalRequestId || data.approval_request_id || "";
311
- const approvalType = data.approvalType || "USER";
312
- const toolCalls = normalizeToolCalls(data.toolCalls);
313
- if (toolCalls.length > 0) {
314
- return { type: "approval-request", requestId, approvalType, toolCalls, ...seq };
315
- }
316
- return {
317
- type: "approval-request",
318
- requestId,
319
- approvalType,
320
- command: data.command || "",
321
- explanation: data.explanation,
322
- ...seq
323
- };
324
- }
325
- case MESSAGE_TYPE.APPROVAL_RESULT: {
326
- const resolvedByName = typeof data.resolvedByName === "string" ? data.resolvedByName : typeof data.displayName === "string" ? data.displayName : void 0;
327
- return {
328
- type: "approval-resolved",
329
- requestId: data.approvalRequestId || data.approval_request_id || "",
330
- status: data.approved === true ? "approved" : "rejected",
331
- approvalType: data.approvalType || "CLIENT",
332
- resolvedByName,
333
- ...seq
334
- };
335
- }
336
- case MESSAGE_TYPE.ERROR:
337
- return {
338
- type: "error",
339
- title: data.error || "An error occurred",
340
- details: data.details,
341
- ...seq
342
- };
343
- case MESSAGE_TYPE.MESSAGE_REQUEST:
344
- return {
345
- type: "participant",
346
- kind: "message-request",
347
- text: String(data.text || ""),
348
- ownerType: typeof data.ownerType === "string" ? data.ownerType : void 0,
349
- displayName: typeof data.displayName === "string" ? data.displayName : void 0,
350
- userId: typeof data.userId === "string" ? data.userId : void 0,
351
- // Wire shape carries no label; fall back to the id (parity with
352
- // the history path in `process-historical-messages.ts`).
353
- contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof it?.type === "string" && typeof it?.id === "string").map((it) => ({
354
- type: it.type,
355
- id: it.id,
356
- label: it.id
357
- })) : void 0,
358
- ...seq
359
- };
360
- case MESSAGE_TYPE.TOKEN_USAGE:
361
- return {
362
- type: "token-usage",
363
- inputTokensSize: data.inputTokensSize ?? 0,
364
- outputTokensSize: data.outputTokensSize ?? 0,
365
- totalTokensSize: data.totalTokensSize ?? 0,
366
- contextSize: data.contextSize ?? 0,
367
- ...seq
368
- };
369
- case MESSAGE_TYPE.CONTEXT_COMPACTION_START:
370
- return { type: "compaction", phase: "start", ...seq };
371
- case MESSAGE_TYPE.CONTEXT_COMPACTION_END:
372
- return {
373
- type: "compaction",
374
- phase: "end",
375
- summary: typeof data.text === "string" ? data.text : void 0,
376
- ...seq
377
- };
378
- case MESSAGE_TYPE.SYSTEM:
379
- if (typeof data.text === "string") {
380
- return { type: "participant", kind: "system", text: data.text, ...seq };
381
- }
382
- return null;
383
- case MESSAGE_TYPE.DIRECT_MESSAGE:
384
- if (typeof data.text === "string") {
385
- return {
386
- type: "participant",
387
- kind: "direct-message",
388
- text: data.text,
389
- ownerType: typeof data.ownerType === "string" ? data.ownerType : void 0,
390
- displayName: typeof data.displayName === "string" ? data.displayName : void 0,
391
- userId: typeof data.userId === "string" ? data.userId : void 0,
392
- ...seq
393
- };
394
- }
395
- return null;
396
- case MESSAGE_TYPE.DIALOG_CLOSED:
397
- return { type: "dialog-closed", ...seq };
398
- default:
399
- return null;
400
- }
401
- }
402
-
403
- // src/chat-protocol/ip-normalize.ts
404
- var IP_BUCKET_KEY_MAX_LENGTH = 64;
405
- function isIpv4(value) {
406
- const parts = value.split(".");
407
- if (parts.length !== 4) return false;
408
- for (const part of parts) {
409
- if (!/^\d{1,3}$/.test(part)) return false;
410
- if (part.length > 1 && part.startsWith("0")) return false;
411
- if (Number(part) > 255) return false;
412
- }
413
- return true;
414
- }
415
- function isIpv6(value) {
416
- if (!value.includes(":")) return false;
417
- if (!/^[0-9a-f:.]+$/.test(value)) return false;
418
- if (value.includes(":::")) return false;
419
- if (value.endsWith(":") && !value.endsWith("::")) return false;
420
- if (value.startsWith(":") && !value.startsWith("::")) return false;
421
- const compressions = value.split("::").length - 1;
422
- if (compressions > 1) return false;
423
- const groups = value.split(":");
424
- if (groups.length > 8) return false;
425
- for (let i = 0; i < groups.length; i += 1) {
426
- const group = groups[i];
427
- if (group === "") continue;
428
- if (group.includes(".")) {
429
- if (i !== groups.length - 1) return false;
430
- if (!isIpv4(group)) return false;
431
- continue;
432
- }
433
- if (!/^[0-9a-f]{1,4}$/.test(group)) return false;
434
- }
435
- if (compressions === 0) {
436
- const embedsIpv4 = groups[groups.length - 1]?.includes(".") ?? false;
437
- if (groups.length !== (embedsIpv4 ? 7 : 8)) return false;
438
- }
439
- return true;
440
- }
441
- function normalizeIpForBucketKey(value) {
442
- if (typeof value !== "string") return null;
443
- let candidate = value.trim();
444
- if (candidate === "" || candidate.length > IP_BUCKET_KEY_MAX_LENGTH) return null;
445
- if (candidate.startsWith("[")) {
446
- const close = candidate.indexOf("]");
447
- if (close === -1) return null;
448
- const trailer = candidate.slice(close + 1);
449
- if (trailer !== "" && !/^:\d{1,5}$/.test(trailer)) return null;
450
- candidate = candidate.slice(1, close);
451
- }
452
- const zone = candidate.indexOf("%");
453
- if (zone !== -1) candidate = candidate.slice(0, zone);
454
- if (candidate === "") return null;
455
- const portSplit = candidate.lastIndexOf(":");
456
- if (portSplit > 0 && /^\d{1,5}$/.test(candidate.slice(portSplit + 1))) {
457
- const head = candidate.slice(0, portSplit);
458
- if (isIpv4(head)) candidate = head;
459
- }
460
- if (isIpv4(candidate)) return candidate;
461
- const lowered = candidate.toLowerCase();
462
- const mapped = /^(?:(?:0{1,4}:){5}|::)ffff:(\d{1,3}(?:\.\d{1,3}){3})$/.exec(lowered);
463
- if (mapped) return isIpv4(mapped[1]) ? mapped[1] : null;
464
- if (isIpv6(lowered)) return lowered;
465
- return null;
466
- }
467
-
468
- // src/chat-protocol/env-flag.ts
469
- function envFlagEnabled(name) {
470
- const raw = process.env[name];
471
- if (!raw) return false;
472
- const v = raw.trim().toLowerCase();
473
- return v !== "" && v !== "0" && v !== "false" && v !== "off";
474
- }
475
-
476
- export { CHAT_OWNER_ADMIN, END_OF_LEADING, FRAME_TERMINATOR, IP_BUCKET_KEY_MAX_LENGTH, TRAILER_SENTINEL, createSseFrameDecoder, decodeNatsChunk, encodeEndOfLeading, encodeLeadingFrame, encodeTextDelta, encodeTrailingUsageFrame, envFlagEnabled, escapeThinkingTags, normalizeIpForBucketKey, stripSentinelBytes };
477
- //# sourceMappingURL=index.js.map
478
- //# sourceMappingURL=index.js.map