@flamingo-stack/openframe-frontend-core 0.0.458-snapshot.20260720215024 → 0.0.458

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 (281) hide show
  1. package/dist/{chunk-BLZZXZNM.cjs → chunk-5USSSRAL.cjs} +26 -26
  2. package/dist/{chunk-BLZZXZNM.cjs.map → chunk-5USSSRAL.cjs.map} +1 -1
  3. package/dist/{chunk-CGNDAJ7V.js → chunk-6B27O3ZB.js} +4 -4
  4. package/dist/{chunk-P5JQDFRM.cjs → chunk-7IRPMNRL.cjs} +60 -60
  5. package/dist/chunk-7IRPMNRL.cjs.map +1 -0
  6. package/dist/{chunk-4XDWNAZW.cjs → chunk-DQ3EHM6G.cjs} +9 -9
  7. package/dist/{chunk-4XDWNAZW.cjs.map → chunk-DQ3EHM6G.cjs.map} +1 -1
  8. package/dist/{chunk-7KSEINAE.cjs → chunk-FTXDIDNX.cjs} +15 -15
  9. package/dist/{chunk-7KSEINAE.cjs.map → chunk-FTXDIDNX.cjs.map} +1 -1
  10. package/dist/{chunk-4R6H2U77.js → chunk-H7ETLG65.js} +4 -4
  11. package/dist/{chunk-LAOO7XHO.js → chunk-HWTUVLYB.js} +2 -2
  12. package/dist/{chunk-F2NMWV44.js → chunk-IDKDOQZL.js} +2 -2
  13. package/dist/{chunk-BQ7PMWLM.cjs → chunk-KIIOBK7G.cjs} +27 -28
  14. package/dist/chunk-KIIOBK7G.cjs.map +1 -0
  15. package/dist/{chunk-QO2XD3FR.js → chunk-KQGFKG6Y.js} +2 -2
  16. package/dist/{chunk-3N3TMZ62.cjs → chunk-L676XVP4.cjs} +7 -7
  17. package/dist/{chunk-3N3TMZ62.cjs.map → chunk-L676XVP4.cjs.map} +1 -1
  18. package/dist/{chunk-F7F43U7Q.cjs → chunk-LDAOPWXZ.cjs} +11 -11
  19. package/dist/{chunk-F7F43U7Q.cjs.map → chunk-LDAOPWXZ.cjs.map} +1 -1
  20. package/dist/{chunk-ADD3FPDG.cjs → chunk-MKLP2SOZ.cjs} +4886 -7004
  21. package/dist/chunk-MKLP2SOZ.cjs.map +1 -0
  22. package/dist/{chunk-VXJH5TDN.js → chunk-QL7ODLJA.js} +10 -10
  23. package/dist/chunk-QL7ODLJA.js.map +1 -0
  24. package/dist/{chunk-OR5AMXYN.js → chunk-R5QYMUKN.js} +2 -2
  25. package/dist/{chunk-REWRUV3K.js → chunk-TNLFAJPA.js} +9673 -11791
  26. package/dist/chunk-TNLFAJPA.js.map +1 -0
  27. package/dist/{chunk-XF5ROTMQ.js → chunk-U2YDR5DT.js} +2 -2
  28. package/dist/{chunk-PXZ7YQ5V.cjs → chunk-VTQSB6QB.cjs} +5 -5
  29. package/dist/{chunk-PXZ7YQ5V.cjs.map → chunk-VTQSB6QB.cjs.map} +1 -1
  30. package/dist/{chunk-UI7CIUAR.js → chunk-WGJPTFRH.js} +2 -2
  31. package/dist/{chunk-WCE66C2Z.cjs → chunk-XUNJILJT.cjs} +62 -62
  32. package/dist/{chunk-WCE66C2Z.cjs.map → chunk-XUNJILJT.cjs.map} +1 -1
  33. package/dist/{chunk-APF5QBAU.js → chunk-YQBPIUZU.js} +2 -2
  34. package/dist/{chunk-TA7MFVUS.cjs → chunk-YV2YA3QH.cjs} +31 -31
  35. package/dist/{chunk-TA7MFVUS.cjs.map → chunk-YV2YA3QH.cjs.map} +1 -1
  36. package/dist/{chunk-QSGZE6AZ.cjs → chunk-ZDJ4ZUQ4.cjs} +37 -37
  37. package/dist/{chunk-QSGZE6AZ.cjs.map → chunk-ZDJ4ZUQ4.cjs.map} +1 -1
  38. package/dist/{chunk-LJKZIIK4.js → chunk-ZHQQRYMB.js} +5 -6
  39. package/dist/chunk-ZHQQRYMB.js.map +1 -0
  40. package/dist/components/case-studies/index.cjs +8 -8
  41. package/dist/components/case-studies/index.js +2 -2
  42. package/dist/components/chart.d.ts +1 -1
  43. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  44. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  45. package/dist/components/chat/hooks/index.d.ts +1 -0
  46. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  47. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  48. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +48 -15
  49. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  50. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +6 -0
  51. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -0
  52. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +47 -3
  53. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  54. package/dist/components/chat/index.cjs +2 -10
  55. package/dist/components/chat/index.cjs.map +1 -1
  56. package/dist/components/chat/index.d.ts +0 -1
  57. package/dist/components/chat/index.d.ts.map +1 -1
  58. package/dist/components/chat/index.js +13 -21
  59. package/dist/components/chat/types/api.types.d.ts +81 -1
  60. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  61. package/dist/components/chat/types/processing.types.d.ts +90 -2
  62. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  63. package/dist/components/chat/utils/chunk-parser.d.ts +25 -0
  64. package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -0
  65. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +6 -34
  66. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  67. package/dist/components/chat/utils/index.d.ts +3 -2
  68. package/dist/components/chat/utils/index.d.ts.map +1 -1
  69. package/dist/components/chat/utils/process-historical-messages.d.ts +11 -59
  70. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  71. package/dist/components/contact/index.cjs +3 -3
  72. package/dist/components/contact/index.js +2 -2
  73. package/dist/components/docs/index.cjs +5 -5
  74. package/dist/components/docs/index.js +4 -4
  75. package/dist/components/embeds/index.cjs +3 -3
  76. package/dist/components/embeds/index.js +2 -2
  77. package/dist/components/faq/index.cjs +3 -3
  78. package/dist/components/faq/index.js +2 -2
  79. package/dist/components/features/index.cjs +2 -2
  80. package/dist/components/features/index.js +1 -1
  81. package/dist/components/help-center-pages/index.cjs +20 -20
  82. package/dist/components/help-center-pages/index.js +11 -11
  83. package/dist/components/index.cjs +129 -171
  84. package/dist/components/index.cjs.map +1 -1
  85. package/dist/components/index.js +21 -63
  86. package/dist/components/index.js.map +1 -1
  87. package/dist/components/navigation/index.cjs +2 -2
  88. package/dist/components/navigation/index.js +1 -1
  89. package/dist/components/onboarding-guides/index.cjs +5 -5
  90. package/dist/components/onboarding-guides/index.js +4 -4
  91. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  92. package/dist/components/related-content/index.cjs +3 -3
  93. package/dist/components/related-content/index.js +2 -2
  94. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  95. package/dist/components/tickets/index.cjs +5 -5
  96. package/dist/components/tickets/index.js +4 -4
  97. package/dist/components/ui/index.cjs +2 -44
  98. package/dist/components/ui/index.cjs.map +1 -1
  99. package/dist/components/ui/index.d.ts +2 -1
  100. package/dist/components/ui/index.d.ts.map +1 -1
  101. package/dist/components/ui/index.js +13 -55
  102. package/dist/components/ui/rich-markdown-renderer.d.ts +34 -0
  103. package/dist/components/ui/rich-markdown-renderer.d.ts.map +1 -0
  104. package/dist/components/ui/simple-markdown-renderer.d.ts +73 -0
  105. package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -0
  106. package/dist/index.cjs +2 -60
  107. package/dist/index.cjs.map +1 -1
  108. package/dist/index.js +13 -71
  109. package/dist/utils/index.cjs +40 -169
  110. package/dist/utils/index.cjs.map +1 -1
  111. package/dist/utils/index.d.ts +0 -1
  112. package/dist/utils/index.d.ts.map +1 -1
  113. package/dist/utils/index.js +41 -162
  114. package/dist/utils/index.js.map +1 -1
  115. package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
  116. package/package.json +1 -7
  117. package/src/components/chat/__tests__/chat-message-list.test.tsx +5 -293
  118. package/src/components/chat/chat-message-enhanced.tsx +17 -111
  119. package/src/components/chat/chat-message-list.tsx +113 -367
  120. package/src/components/chat/embeddable-chat.tsx +0 -6
  121. package/src/components/chat/hooks/.index.md +1 -1
  122. package/src/components/chat/hooks/.use-nats-chat-adapter.md +1 -1
  123. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +50 -0
  124. package/src/components/chat/hooks/index.ts +1 -0
  125. package/src/components/chat/hooks/use-chat.ts +0 -8
  126. package/src/components/chat/hooks/use-nats-chat-adapter.ts +822 -243
  127. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +479 -0
  128. package/src/components/chat/hooks/use-sse-chat-adapter.ts +666 -318
  129. package/src/components/chat/index.ts +0 -5
  130. package/src/components/chat/thinking-display.tsx +1 -1
  131. package/src/components/chat/types/.api.types.md +3 -1
  132. package/src/components/chat/types/.processing.types.md +23 -6
  133. package/src/components/chat/types/api.types.ts +73 -6
  134. package/src/components/chat/types/processing.types.ts +52 -11
  135. package/src/components/chat/utils/.chunk-parser.md +51 -0
  136. package/src/components/chat/utils/.index.md +5 -0
  137. package/src/components/chat/utils/chunk-parser.ts +255 -0
  138. package/src/components/chat/utils/extract-incomplete-message-state.ts +5 -63
  139. package/src/components/chat/utils/index.ts +8 -5
  140. package/src/components/chat/utils/process-historical-messages.ts +383 -352
  141. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +4 -22
  142. package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
  143. package/src/components/shared/product-release/release-detail-page.tsx +4 -19
  144. package/src/components/ui/.simple-markdown-renderer.md +40 -0
  145. package/src/components/ui/index.ts +2 -1
  146. package/src/components/ui/release-changelog-section.tsx +1 -1
  147. package/src/components/ui/rich-markdown-renderer.tsx +1223 -0
  148. package/src/components/ui/simple-markdown-renderer.tsx +965 -0
  149. package/src/components/ui/ticket-info-section.tsx +1 -1
  150. package/src/utils/index.ts +0 -1
  151. package/src/utils/markdown-section-extractor.ts +56 -41
  152. package/dist/chat-protocol/decode.d.ts +0 -58
  153. package/dist/chat-protocol/decode.d.ts.map +0 -1
  154. package/dist/chat-protocol/encode.d.ts +0 -44
  155. package/dist/chat-protocol/encode.d.ts.map +0 -1
  156. package/dist/chat-protocol/env-flag.d.ts +0 -35
  157. package/dist/chat-protocol/env-flag.d.ts.map +0 -1
  158. package/dist/chat-protocol/events.d.ts +0 -192
  159. package/dist/chat-protocol/events.d.ts.map +0 -1
  160. package/dist/chat-protocol/frames.d.ts +0 -206
  161. package/dist/chat-protocol/frames.d.ts.map +0 -1
  162. package/dist/chat-protocol/index.cjs +0 -493
  163. package/dist/chat-protocol/index.cjs.map +0 -1
  164. package/dist/chat-protocol/index.d.ts +0 -18
  165. package/dist/chat-protocol/index.d.ts.map +0 -1
  166. package/dist/chat-protocol/index.js +0 -477
  167. package/dist/chat-protocol/index.js.map +0 -1
  168. package/dist/chat-protocol/ip-normalize.d.ts +0 -44
  169. package/dist/chat-protocol/ip-normalize.d.ts.map +0 -1
  170. package/dist/chat-protocol/nats-decoder.d.ts +0 -26
  171. package/dist/chat-protocol/nats-decoder.d.ts.map +0 -1
  172. package/dist/chunk-ADD3FPDG.cjs.map +0 -1
  173. package/dist/chunk-BQ7PMWLM.cjs.map +0 -1
  174. package/dist/chunk-LJKZIIK4.js.map +0 -1
  175. package/dist/chunk-P5JQDFRM.cjs.map +0 -1
  176. package/dist/chunk-REWRUV3K.js.map +0 -1
  177. package/dist/chunk-VXJH5TDN.js.map +0 -1
  178. package/dist/components/chat/stream/chat-dialog-store.d.ts +0 -184
  179. package/dist/components/chat/stream/chat-dialog-store.d.ts.map +0 -1
  180. package/dist/components/chat/stream/chat-stream-reducer.d.ts +0 -367
  181. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +0 -1
  182. package/dist/components/chat/stream/delta-batcher.d.ts +0 -51
  183. package/dist/components/chat/stream/delta-batcher.d.ts.map +0 -1
  184. package/dist/components/chat/stream/index.d.ts +0 -17
  185. package/dist/components/chat/stream/index.d.ts.map +0 -1
  186. package/dist/components/chat/stream/message-mutations.d.ts +0 -77
  187. package/dist/components/chat/stream/message-mutations.d.ts.map +0 -1
  188. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +0 -22
  189. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +0 -1
  190. package/dist/components/ui/markdown/base-components.d.ts +0 -56
  191. package/dist/components/ui/markdown/base-components.d.ts.map +0 -1
  192. package/dist/components/ui/markdown/engine.d.ts +0 -99
  193. package/dist/components/ui/markdown/engine.d.ts.map +0 -1
  194. package/dist/components/ui/markdown/heading-ids.d.ts +0 -65
  195. package/dist/components/ui/markdown/heading-ids.d.ts.map +0 -1
  196. package/dist/components/ui/markdown/index.d.ts +0 -18
  197. package/dist/components/ui/markdown/index.d.ts.map +0 -1
  198. package/dist/components/ui/markdown/mermaid-diagram.d.ts +0 -79
  199. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +0 -1
  200. package/dist/components/ui/markdown/rich/embed-overrides.d.ts +0 -14
  201. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +0 -1
  202. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +0 -40
  203. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +0 -1
  204. package/dist/components/ui/markdown/rich/shortcodes.d.ts +0 -8
  205. package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +0 -1
  206. package/dist/components/ui/markdown/sanitize.d.ts +0 -153
  207. package/dist/components/ui/markdown/sanitize.d.ts.map +0 -1
  208. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -23
  209. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +0 -1
  210. package/dist/components/ui/markdown/streaming.d.ts +0 -78
  211. package/dist/components/ui/markdown/streaming.d.ts.map +0 -1
  212. package/dist/components/ui/markdown/text-size.d.ts +0 -34
  213. package/dist/components/ui/markdown/text-size.d.ts.map +0 -1
  214. package/dist/utils/markdown-fences.d.ts +0 -42
  215. package/dist/utils/markdown-fences.d.ts.map +0 -1
  216. package/dist/utils/markdown-heading-id.d.ts +0 -85
  217. package/dist/utils/markdown-heading-id.d.ts.map +0 -1
  218. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +0 -307
  219. package/src/chat-protocol/__tests__/chat-protocol.test.ts +0 -515
  220. package/src/chat-protocol/__tests__/env-flag.test.ts +0 -52
  221. package/src/chat-protocol/__tests__/ip-normalize.test.ts +0 -136
  222. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +0 -228
  223. package/src/chat-protocol/decode.ts +0 -277
  224. package/src/chat-protocol/encode.ts +0 -71
  225. package/src/chat-protocol/env-flag.ts +0 -39
  226. package/src/chat-protocol/events.ts +0 -228
  227. package/src/chat-protocol/frames.ts +0 -238
  228. package/src/chat-protocol/index.ts +0 -21
  229. package/src/chat-protocol/ip-normalize.ts +0 -146
  230. package/src/chat-protocol/nats-decoder.ts +0 -252
  231. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +0 -207
  232. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +0 -209
  233. package/src/components/chat/hooks/__tests__/__snapshots__/persisted-state-v1-golden.test.ts.snap +0 -297
  234. package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
  235. package/src/components/chat/hooks/__tests__/persisted-state-v1-golden.test.ts +0 -272
  236. package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +0 -318
  237. package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +0 -937
  238. package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +0 -756
  239. package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +0 -460
  240. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +0 -894
  241. package/src/components/chat/stream/__tests__/delta-batcher.test.ts +0 -255
  242. package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +0 -98
  243. package/src/components/chat/stream/chat-dialog-store.ts +0 -536
  244. package/src/components/chat/stream/chat-stream-reducer.ts +0 -1796
  245. package/src/components/chat/stream/delta-batcher.ts +0 -159
  246. package/src/components/chat/stream/index.ts +0 -55
  247. package/src/components/chat/stream/message-mutations.ts +0 -338
  248. package/src/components/chat/stream/use-chat-stream-reducer.ts +0 -126
  249. package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +0 -418
  250. package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +0 -599
  251. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +0 -317
  252. package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +0 -270
  253. package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +0 -2420
  254. package/src/components/ui/__tests__/markdown-parity.test.tsx +0 -2528
  255. package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +0 -115
  256. package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +0 -95
  257. package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +0 -309
  258. package/src/components/ui/markdown/__tests__/streaming.test.tsx +0 -388
  259. package/src/components/ui/markdown/base-components.tsx +0 -341
  260. package/src/components/ui/markdown/engine.tsx +0 -315
  261. package/src/components/ui/markdown/heading-ids.ts +0 -239
  262. package/src/components/ui/markdown/index.ts +0 -49
  263. package/src/components/ui/markdown/mermaid-diagram.tsx +0 -291
  264. package/src/components/ui/markdown/rich/embed-overrides.tsx +0 -199
  265. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +0 -184
  266. package/src/components/ui/markdown/rich/shortcodes.ts +0 -170
  267. package/src/components/ui/markdown/sanitize.ts +0 -3499
  268. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -28
  269. package/src/components/ui/markdown/streaming.ts +0 -362
  270. package/src/components/ui/markdown/text-size.ts +0 -106
  271. package/src/utils/markdown-fences.ts +0 -127
  272. package/src/utils/markdown-heading-id.ts +0 -348
  273. /package/dist/{chunk-CGNDAJ7V.js.map → chunk-6B27O3ZB.js.map} +0 -0
  274. /package/dist/{chunk-4R6H2U77.js.map → chunk-H7ETLG65.js.map} +0 -0
  275. /package/dist/{chunk-LAOO7XHO.js.map → chunk-HWTUVLYB.js.map} +0 -0
  276. /package/dist/{chunk-F2NMWV44.js.map → chunk-IDKDOQZL.js.map} +0 -0
  277. /package/dist/{chunk-QO2XD3FR.js.map → chunk-KQGFKG6Y.js.map} +0 -0
  278. /package/dist/{chunk-OR5AMXYN.js.map → chunk-R5QYMUKN.js.map} +0 -0
  279. /package/dist/{chunk-XF5ROTMQ.js.map → chunk-U2YDR5DT.js.map} +0 -0
  280. /package/dist/{chunk-UI7CIUAR.js.map → chunk-WGJPTFRH.js.map} +0 -0
  281. /package/dist/{chunk-APF5QBAU.js.map → chunk-YQBPIUZU.js.map} +0 -0
@@ -1,599 +0,0 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`MessageSegmentAccumulator — golden sequences > CHARACTERIZATION: a LATE standalone EXECUTING after its EXECUTED pushes a NEW executing segment (no in-place downgrade, but a duplicate card appears) 1`] = `
4
- [
5
- {
6
- "data": {
7
- "integratedToolType": "TACTICAL_RMM",
8
- "parameters": {
9
- "script": "cleanup.sh",
10
- },
11
- "result": "Freed 2.3 GB",
12
- "success": true,
13
- "toolExecutionRequestId": "exec-1",
14
- "toolFunction": "run_script",
15
- "toolTitle": "Run cleanup script",
16
- "type": "EXECUTED_TOOL",
17
- },
18
- "type": "tool_execution",
19
- },
20
- {
21
- "data": {
22
- "integratedToolType": "TACTICAL_RMM",
23
- "parameters": {
24
- "script": "cleanup.sh",
25
- },
26
- "toolExecutionRequestId": "exec-1",
27
- "toolFunction": "run_script",
28
- "toolTitle": "Run cleanup script",
29
- "type": "EXECUTING_TOOL",
30
- },
31
- "type": "tool_execution",
32
- },
33
- ]
34
- `;
35
-
36
- exports[`MessageSegmentAccumulator — golden sequences > EXECUTED with no prior EXECUTING lands as a standalone completed segment 1`] = `
37
- [
38
- {
39
- "data": {
40
- "integratedToolType": "TACTICAL_RMM",
41
- "parameters": undefined,
42
- "result": "Freed 2.3 GB",
43
- "success": true,
44
- "toolExecutionRequestId": "exec-orphan",
45
- "toolFunction": "run_script",
46
- "toolTitle": undefined,
47
- "type": "EXECUTED_TOOL",
48
- },
49
- "type": "tool_execution",
50
- },
51
- ]
52
- `;
53
-
54
- exports[`MessageSegmentAccumulator — golden sequences > addApprovalBatch upserts by approvalRequestId (replay path produces ONE batch segment) 1`] = `
55
- [
56
- {
57
- "data": {
58
- "approvalRequestId": "batch-1",
59
- "approvalType": "CLIENT",
60
- "executions": {
61
- "exec-a": {
62
- "result": "ok",
63
- "status": "done",
64
- "success": true,
65
- },
66
- },
67
- "toolCalls": [
68
- {
69
- "approvalType": "CLIENT",
70
- "requiresApproval": true,
71
- "toolCallArguments": {
72
- "subject": "Printer down",
73
- },
74
- "toolExecutionRequestId": "exec-a",
75
- "toolExplanation": "Opens a support ticket",
76
- "toolName": "create_ticket",
77
- "toolTitle": "Create ticket",
78
- },
79
- {
80
- "approvalType": null,
81
- "requiresApproval": false,
82
- "toolCallArguments": null,
83
- "toolExecutionRequestId": "exec-b",
84
- "toolName": "read_kb",
85
- },
86
- ],
87
- },
88
- "onApprove": undefined,
89
- "onReject": undefined,
90
- "resolvedByName": "Jane Admin",
91
- "status": "approved",
92
- "type": "approval_batch",
93
- },
94
- ]
95
- `;
96
-
97
- exports[`MessageSegmentAccumulator — golden sequences > batch approval with per-tool executions merged into the batch (no standalone segments) 1`] = `
98
- [
99
- {
100
- "data": {
101
- "approvalRequestId": "batch-1",
102
- "approvalType": "CLIENT",
103
- "executions": {
104
- "exec-a": {
105
- "result": "Ticket #77 created",
106
- "status": "done",
107
- "success": true,
108
- },
109
- "exec-b": {
110
- "result": undefined,
111
- "status": "executing",
112
- "success": undefined,
113
- },
114
- },
115
- "toolCalls": [
116
- {
117
- "approvalType": "CLIENT",
118
- "requiresApproval": true,
119
- "toolCallArguments": {
120
- "subject": "Printer down",
121
- },
122
- "toolExecutionRequestId": "exec-a",
123
- "toolExplanation": "Opens a support ticket",
124
- "toolName": "create_ticket",
125
- "toolTitle": "Create ticket",
126
- },
127
- {
128
- "approvalType": null,
129
- "requiresApproval": false,
130
- "toolCallArguments": null,
131
- "toolExecutionRequestId": "exec-b",
132
- "toolName": "read_kb",
133
- },
134
- ],
135
- },
136
- "onApprove": undefined,
137
- "onReject": undefined,
138
- "resolvedByName": "Jane Admin",
139
- "status": "approved",
140
- "type": "approval_batch",
141
- },
142
- ]
143
- `;
144
-
145
- exports[`MessageSegmentAccumulator — golden sequences > batch no-downgrade rule: a redelivered EXECUTING after EXECUTED keeps the done slot 1`] = `
146
- [
147
- {
148
- "data": {
149
- "approvalRequestId": "batch-1",
150
- "approvalType": "CLIENT",
151
- "executions": {
152
- "exec-a": {
153
- "result": "done!",
154
- "status": "done",
155
- "success": true,
156
- },
157
- },
158
- "toolCalls": [
159
- {
160
- "approvalType": "CLIENT",
161
- "requiresApproval": true,
162
- "toolCallArguments": {
163
- "subject": "Printer down",
164
- },
165
- "toolExecutionRequestId": "exec-a",
166
- "toolExplanation": "Opens a support ticket",
167
- "toolName": "create_ticket",
168
- "toolTitle": "Create ticket",
169
- },
170
- {
171
- "approvalType": null,
172
- "requiresApproval": false,
173
- "toolCallArguments": null,
174
- "toolExecutionRequestId": "exec-b",
175
- "toolName": "read_kb",
176
- },
177
- ],
178
- },
179
- "onApprove": undefined,
180
- "onReject": undefined,
181
- "resolvedByName": undefined,
182
- "status": "approved",
183
- "type": "approval_batch",
184
- },
185
- ]
186
- `;
187
-
188
- exports[`MessageSegmentAccumulator — golden sequences > coalesces consecutive text deltas into one text segment 1`] = `
189
- [
190
- {
191
- "text": "Hello, world",
192
- "type": "text",
193
- },
194
- ]
195
- `;
196
-
197
- exports[`MessageSegmentAccumulator — golden sequences > coalesces thinking deltas, and text after thinking starts a NEW segment 1`] = `
198
- [
199
- {
200
- "text": "Let me think… ok.",
201
- "type": "thinking",
202
- },
203
- {
204
- "text": "Answer: 42",
205
- "type": "text",
206
- },
207
- {
208
- "text": "post-answer thought",
209
- "type": "thinking",
210
- },
211
- ]
212
- `;
213
-
214
- exports[`MessageSegmentAccumulator — golden sequences > completeContextCompaction with no started segment pushes a completed one 1`] = `
215
- [
216
- {
217
- "status": "completed",
218
- "summary": undefined,
219
- "type": "context_compaction",
220
- },
221
- ]
222
- `;
223
-
224
- exports[`MessageSegmentAccumulator — golden sequences > context compaction start → complete replaces the started segment in place 1`] = `
225
- [
226
- {
227
- "text": "Before compaction",
228
- "type": "text",
229
- },
230
- {
231
- "status": "completed",
232
- "summary": "Summarized 34 messages",
233
- "type": "context_compaction",
234
- },
235
- {
236
- "text": "After compaction",
237
- "type": "text",
238
- },
239
- ]
240
- `;
241
-
242
- exports[`MessageSegmentAccumulator — golden sequences > error segments append verbatim 1`] = `
243
- [
244
- {
245
- "text": "partial answer",
246
- "type": "text",
247
- },
248
- {
249
- "details": "boom",
250
- "title": "Agent crashed",
251
- "type": "error",
252
- },
253
- ]
254
- `;
255
-
256
- exports[`MessageSegmentAccumulator — golden sequences > flushPendingApprovals emits pending cards for every tracked-but-unresolved approval 1`] = `
257
- [
258
- {
259
- "data": {
260
- "approvalType": "CLIENT",
261
- "command": "cmd-1",
262
- "explanation": undefined,
263
- "requestId": "req-1",
264
- },
265
- "onApprove": undefined,
266
- "onReject": undefined,
267
- "status": "pending",
268
- "type": "approval_request",
269
- },
270
- {
271
- "data": {
272
- "approvalType": "ADMIN",
273
- "command": "cmd-2",
274
- "explanation": "why",
275
- "requestId": "req-2",
276
- },
277
- "onApprove": undefined,
278
- "onReject": undefined,
279
- "status": "pending",
280
- "type": "approval_request",
281
- },
282
- ]
283
- `;
284
-
285
- exports[`MessageSegmentAccumulator — golden sequences > implicit approval does NOT touch approval_batch segments (handled by applyExecutionToBatch only) 1`] = `
286
- [
287
- {
288
- "data": {
289
- "approvalRequestId": "batch-1",
290
- "approvalType": "CLIENT",
291
- "toolCalls": [
292
- {
293
- "approvalType": "CLIENT",
294
- "requiresApproval": true,
295
- "toolCallArguments": {
296
- "subject": "Printer down",
297
- },
298
- "toolExecutionRequestId": "exec-a",
299
- "toolExplanation": "Opens a support ticket",
300
- "toolName": "create_ticket",
301
- "toolTitle": "Create ticket",
302
- },
303
- {
304
- "approvalType": null,
305
- "requiresApproval": false,
306
- "toolCallArguments": null,
307
- "toolExecutionRequestId": "exec-b",
308
- "toolName": "read_kb",
309
- },
310
- ],
311
- },
312
- "onApprove": undefined,
313
- "onReject": undefined,
314
- "resolvedByName": undefined,
315
- "status": "pending",
316
- "type": "approval_batch",
317
- },
318
- {
319
- "data": {
320
- "integratedToolType": "TACTICAL_RMM",
321
- "parameters": {
322
- "script": "cleanup.sh",
323
- },
324
- "toolExecutionRequestId": "exec-unrelated",
325
- "toolFunction": "run_script",
326
- "toolTitle": "Run cleanup script",
327
- "type": "EXECUTING_TOOL",
328
- },
329
- "type": "tool_execution",
330
- },
331
- ]
332
- `;
333
-
334
- exports[`MessageSegmentAccumulator — golden sequences > implicit approval flips ONLY the latest pending gate, earlier pending gates stay pending 1`] = `
335
- [
336
- {
337
- "data": {
338
- "approvalType": "CLIENT",
339
- "command": "first",
340
- "explanation": undefined,
341
- "requestId": "req-1",
342
- },
343
- "onApprove": undefined,
344
- "onReject": undefined,
345
- "status": "pending",
346
- "type": "approval_request",
347
- },
348
- {
349
- "data": {
350
- "approvalType": "CLIENT",
351
- "command": "second",
352
- "explanation": undefined,
353
- "requestId": "req-2",
354
- },
355
- "onApprove": undefined,
356
- "onReject": undefined,
357
- "status": "approved",
358
- "type": "approval_request",
359
- },
360
- {
361
- "data": {
362
- "integratedToolType": "TACTICAL_RMM",
363
- "parameters": {
364
- "script": "cleanup.sh",
365
- },
366
- "toolExecutionRequestId": "exec-1",
367
- "toolFunction": "run_script",
368
- "toolTitle": "Run cleanup script",
369
- "type": "EXECUTING_TOOL",
370
- },
371
- "type": "tool_execution",
372
- },
373
- ]
374
- `;
375
-
376
- exports[`MessageSegmentAccumulator — golden sequences > implicit resolvePendingApprovalForExecution: a tool execution flips the LATEST pending single approval (NATS-observer behavior) 1`] = `
377
- [
378
- {
379
- "data": {
380
- "approvalType": "CLIENT",
381
- "command": "echo old",
382
- "explanation": undefined,
383
- "requestId": "req-old",
384
- },
385
- "onApprove": undefined,
386
- "onReject": undefined,
387
- "status": "rejected",
388
- "type": "approval_request",
389
- },
390
- {
391
- "data": {
392
- "approvalType": "CLIENT",
393
- "command": "systemctl restart nats",
394
- "explanation": undefined,
395
- "requestId": "req-1",
396
- },
397
- "onApprove": undefined,
398
- "onReject": undefined,
399
- "status": "approved",
400
- "type": "approval_request",
401
- },
402
- {
403
- "data": {
404
- "integratedToolType": "TACTICAL_RMM",
405
- "parameters": {
406
- "script": "cleanup.sh",
407
- },
408
- "toolExecutionRequestId": "exec-9",
409
- "toolFunction": "run_script",
410
- "toolTitle": "Run cleanup script",
411
- "type": "EXECUTING_TOOL",
412
- },
413
- "type": "tool_execution",
414
- },
415
- ]
416
- `;
417
-
418
- exports[`MessageSegmentAccumulator — golden sequences > initializeWithState continues an incomplete message across reconnect 1`] = `
419
- [
420
- {
421
- "text": "partial ",
422
- "type": "text",
423
- },
424
- {
425
- "data": {
426
- "integratedToolType": "TACTICAL_RMM",
427
- "parameters": {
428
- "script": "cleanup.sh",
429
- },
430
- "result": "Freed 2.3 GB",
431
- "success": true,
432
- "toolExecutionRequestId": "exec-1",
433
- "toolFunction": "run_script",
434
- "toolTitle": "Run cleanup script",
435
- "type": "EXECUTED_TOOL",
436
- },
437
- "type": "tool_execution",
438
- },
439
- {
440
- "text": "and the rest.",
441
- "type": "text",
442
- },
443
- ]
444
- `;
445
-
446
- exports[`MessageSegmentAccumulator — golden sequences > merges EXECUTING_TOOL → EXECUTED_TOOL in place by toolExecutionRequestId (title restored) 1`] = `
447
- [
448
- {
449
- "text": "Running a cleanup now.",
450
- "type": "text",
451
- },
452
- {
453
- "data": {
454
- "integratedToolType": "TACTICAL_RMM",
455
- "parameters": {
456
- "script": "cleanup.sh",
457
- },
458
- "result": "Freed 2.3 GB",
459
- "success": true,
460
- "toolExecutionRequestId": "exec-1",
461
- "toolFunction": "run_script",
462
- "toolTitle": "Run cleanup script",
463
- "type": "EXECUTED_TOOL",
464
- },
465
- "type": "tool_execution",
466
- },
467
- ]
468
- `;
469
-
470
- exports[`MessageSegmentAccumulator — golden sequences > pairs by (integratedToolType, toolFunction) when no exec id is present (older backends) 1`] = `
471
- [
472
- {
473
- "data": {
474
- "integratedToolType": "TACTICAL_RMM",
475
- "parameters": {
476
- "script": "cleanup.sh",
477
- },
478
- "result": "Freed 2.3 GB",
479
- "success": true,
480
- "toolFunction": "run_script",
481
- "toolTitle": "Run cleanup script",
482
- "type": "EXECUTED_TOOL",
483
- },
484
- "type": "tool_execution",
485
- },
486
- ]
487
- `;
488
-
489
- exports[`MessageSegmentAccumulator — golden sequences > replaySegments reproduces a mixed recorded segment array (idempotent replay) 1`] = `
490
- [
491
- {
492
- "text": "hmm",
493
- "type": "thinking",
494
- },
495
- {
496
- "text": "Sure — ",
497
- "type": "text",
498
- },
499
- {
500
- "data": {
501
- "integratedToolType": "TACTICAL_RMM",
502
- "parameters": {
503
- "script": "cleanup.sh",
504
- },
505
- "result": "Freed 2.3 GB",
506
- "success": true,
507
- "toolExecutionRequestId": "exec-1",
508
- "toolFunction": "run_script",
509
- "toolTitle": "Run cleanup script",
510
- "type": "EXECUTED_TOOL",
511
- },
512
- "type": "tool_execution",
513
- },
514
- {
515
- "data": {
516
- "approvalRequestId": "batch-1",
517
- "approvalType": "CLIENT",
518
- "executions": {
519
- "exec-a": {
520
- "result": "ok",
521
- "status": "done",
522
- "success": true,
523
- },
524
- },
525
- "toolCalls": [
526
- {
527
- "approvalType": "CLIENT",
528
- "requiresApproval": true,
529
- "toolCallArguments": {
530
- "subject": "Printer down",
531
- },
532
- "toolExecutionRequestId": "exec-a",
533
- "toolExplanation": "Opens a support ticket",
534
- "toolName": "create_ticket",
535
- "toolTitle": "Create ticket",
536
- },
537
- {
538
- "approvalType": null,
539
- "requiresApproval": false,
540
- "toolCallArguments": null,
541
- "toolExecutionRequestId": "exec-b",
542
- "toolName": "read_kb",
543
- },
544
- ],
545
- },
546
- "onApprove": undefined,
547
- "onReject": undefined,
548
- "resolvedByName": undefined,
549
- "status": "approved",
550
- "type": "approval_batch",
551
- },
552
- {
553
- "text": "done.",
554
- "type": "text",
555
- },
556
- ]
557
- `;
558
-
559
- exports[`MessageSegmentAccumulator — golden sequences > single approval request → updateApprovalStatus flips status and stamps resolvedByName only on batches 1`] = `
560
- [
561
- {
562
- "data": {
563
- "approvalType": "CLIENT",
564
- "command": "systemctl restart nats",
565
- "explanation": "Restart broker",
566
- "requestId": "req-1",
567
- },
568
- "onApprove": [Function],
569
- "onReject": [Function],
570
- "status": "approved",
571
- "type": "approval_request",
572
- },
573
- ]
574
- `;
575
-
576
- exports[`MessageSegmentAccumulator — golden sequences > tracked (pending) approval + processApprovalResult appends a resolved segment 1`] = `
577
- {
578
- "hasPendingAfter": false,
579
- "pendingData": {
580
- "approvalType": "CLIENT",
581
- "command": "rm -rf /tmp/cache",
582
- "explanation": "Clear caches",
583
- },
584
- "segments": [
585
- {
586
- "data": {
587
- "approvalType": "CLIENT",
588
- "command": "rm -rf /tmp/cache",
589
- "explanation": "Clear caches",
590
- "requestId": "req-2",
591
- },
592
- "onApprove": undefined,
593
- "onReject": undefined,
594
- "status": "rejected",
595
- "type": "approval_request",
596
- },
597
- ],
598
- }
599
- `;