@flamingo-stack/openframe-frontend-core 0.0.468-snapshot.20260723140929 → 0.0.468

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 (280) hide show
  1. package/dist/{chunk-TOFOK7G5.cjs → chunk-2WZAR2MB.cjs} +37 -37
  2. package/dist/{chunk-TOFOK7G5.cjs.map → chunk-2WZAR2MB.cjs.map} +1 -1
  3. package/dist/{chunk-YXNWEVER.cjs → chunk-3I34MUEG.cjs} +62 -62
  4. package/dist/{chunk-YXNWEVER.cjs.map → chunk-3I34MUEG.cjs.map} +1 -1
  5. package/dist/{chunk-4W54HUP7.cjs → chunk-3PLQWO4H.cjs} +4896 -7014
  6. package/dist/chunk-3PLQWO4H.cjs.map +1 -0
  7. package/dist/{chunk-33FDAZDB.js → chunk-3TU6QURP.js} +2 -2
  8. package/dist/{chunk-2BJSRTKU.js → chunk-AEM7ADDG.js} +2 -2
  9. package/dist/{chunk-VUCYS36H.js → chunk-CLW2S55N.js} +10 -10
  10. package/dist/chunk-CLW2S55N.js.map +1 -0
  11. package/dist/{chunk-LRESZO4L.cjs → chunk-ELIY4AO2.cjs} +26 -26
  12. package/dist/{chunk-LRESZO4L.cjs.map → chunk-ELIY4AO2.cjs.map} +1 -1
  13. package/dist/{chunk-MMF6HJB7.js → chunk-EZESVVIM.js} +4 -4
  14. package/dist/{chunk-AW3LVWVV.js → chunk-HTSWLPMU.js} +2 -2
  15. package/dist/{chunk-MTLBBSLP.cjs → chunk-HVLMAT4T.cjs} +5 -5
  16. package/dist/{chunk-MTLBBSLP.cjs.map → chunk-HVLMAT4T.cjs.map} +1 -1
  17. package/dist/{chunk-RPAOSHBN.js → chunk-IUMPVRSH.js} +2 -2
  18. package/dist/{chunk-5HUTT3FD.cjs → chunk-J6CE6HZS.cjs} +11 -11
  19. package/dist/{chunk-5HUTT3FD.cjs.map → chunk-J6CE6HZS.cjs.map} +1 -1
  20. package/dist/{chunk-7I2QMUEZ.js → chunk-JW3UNHGW.js} +2 -2
  21. package/dist/{chunk-4UFRQT7Z.cjs → chunk-L3BWGFHT.cjs} +15 -15
  22. package/dist/{chunk-4UFRQT7Z.cjs.map → chunk-L3BWGFHT.cjs.map} +1 -1
  23. package/dist/{chunk-WHWDGCQV.cjs → chunk-MULVIGIN.cjs} +60 -60
  24. package/dist/chunk-MULVIGIN.cjs.map +1 -0
  25. package/dist/{chunk-AJSNF5YF.js → chunk-O2QOC5FA.js} +5 -6
  26. package/dist/chunk-O2QOC5FA.js.map +1 -0
  27. package/dist/{chunk-E6O6XATC.js → chunk-P5SLNM3C.js} +9699 -11817
  28. package/dist/chunk-P5SLNM3C.js.map +1 -0
  29. package/dist/{chunk-GYEZV4GK.js → chunk-QTGYQ2U7.js} +2 -2
  30. package/dist/{chunk-4QDFNDVW.js → chunk-QZJN5OHK.js} +4 -4
  31. package/dist/{chunk-U2KPMWO6.cjs → chunk-TISXEAGH.cjs} +7 -7
  32. package/dist/{chunk-U2KPMWO6.cjs.map → chunk-TISXEAGH.cjs.map} +1 -1
  33. package/dist/{chunk-V5YWOQBP.cjs → chunk-VHFH3BG6.cjs} +31 -31
  34. package/dist/{chunk-V5YWOQBP.cjs.map → chunk-VHFH3BG6.cjs.map} +1 -1
  35. package/dist/{chunk-OVIUQJ2H.cjs → chunk-VRJXY6TM.cjs} +27 -28
  36. package/dist/chunk-VRJXY6TM.cjs.map +1 -0
  37. package/dist/{chunk-DG7TX763.js → chunk-VYUEOKI6.js} +2 -2
  38. package/dist/{chunk-GLKULDQN.cjs → chunk-X77X3RKH.cjs} +9 -9
  39. package/dist/{chunk-GLKULDQN.cjs.map → chunk-X77X3RKH.cjs.map} +1 -1
  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/hooks/index.d.ts +1 -0
  45. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  46. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  47. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +48 -15
  48. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  49. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +6 -0
  50. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -0
  51. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +47 -3
  52. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  53. package/dist/components/chat/index.cjs +2 -10
  54. package/dist/components/chat/index.cjs.map +1 -1
  55. package/dist/components/chat/index.d.ts +0 -1
  56. package/dist/components/chat/index.d.ts.map +1 -1
  57. package/dist/components/chat/index.js +13 -21
  58. package/dist/components/chat/types/api.types.d.ts +81 -1
  59. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  60. package/dist/components/chat/types/processing.types.d.ts +90 -2
  61. package/dist/components/chat/types/processing.types.d.ts.map +1 -1
  62. package/dist/components/chat/utils/chunk-parser.d.ts +25 -0
  63. package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -0
  64. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +6 -34
  65. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  66. package/dist/components/chat/utils/index.d.ts +3 -2
  67. package/dist/components/chat/utils/index.d.ts.map +1 -1
  68. package/dist/components/chat/utils/process-historical-messages.d.ts +11 -59
  69. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  70. package/dist/components/contact/index.cjs +3 -3
  71. package/dist/components/contact/index.js +2 -2
  72. package/dist/components/docs/index.cjs +5 -5
  73. package/dist/components/docs/index.js +4 -4
  74. package/dist/components/embeds/index.cjs +3 -3
  75. package/dist/components/embeds/index.js +2 -2
  76. package/dist/components/faq/index.cjs +3 -3
  77. package/dist/components/faq/index.js +2 -2
  78. package/dist/components/features/index.cjs +2 -2
  79. package/dist/components/features/index.js +1 -1
  80. package/dist/components/help-center-pages/index.cjs +20 -20
  81. package/dist/components/help-center-pages/index.js +11 -11
  82. package/dist/components/index.cjs +130 -172
  83. package/dist/components/index.cjs.map +1 -1
  84. package/dist/components/index.js +21 -63
  85. package/dist/components/index.js.map +1 -1
  86. package/dist/components/navigation/index.cjs +2 -2
  87. package/dist/components/navigation/index.js +1 -1
  88. package/dist/components/onboarding-guides/index.cjs +5 -5
  89. package/dist/components/onboarding-guides/index.js +4 -4
  90. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  91. package/dist/components/related-content/index.cjs +3 -3
  92. package/dist/components/related-content/index.js +2 -2
  93. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  94. package/dist/components/tickets/index.cjs +5 -5
  95. package/dist/components/tickets/index.js +4 -4
  96. package/dist/components/ui/index.cjs +2 -44
  97. package/dist/components/ui/index.cjs.map +1 -1
  98. package/dist/components/ui/index.d.ts +2 -1
  99. package/dist/components/ui/index.d.ts.map +1 -1
  100. package/dist/components/ui/index.js +13 -55
  101. package/dist/components/ui/rich-markdown-renderer.d.ts +34 -0
  102. package/dist/components/ui/rich-markdown-renderer.d.ts.map +1 -0
  103. package/dist/components/ui/simple-markdown-renderer.d.ts +73 -0
  104. package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -0
  105. package/dist/index.cjs +2 -60
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +13 -71
  108. package/dist/utils/index.cjs +40 -169
  109. package/dist/utils/index.cjs.map +1 -1
  110. package/dist/utils/index.d.ts +0 -1
  111. package/dist/utils/index.d.ts.map +1 -1
  112. package/dist/utils/index.js +41 -162
  113. package/dist/utils/index.js.map +1 -1
  114. package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
  115. package/package.json +1 -7
  116. package/src/components/chat/__tests__/chat-message-list.test.tsx +5 -293
  117. package/src/components/chat/chat-message-enhanced.tsx +17 -111
  118. package/src/components/chat/chat-message-list.tsx +109 -358
  119. package/src/components/chat/embeddable-chat.tsx +0 -6
  120. package/src/components/chat/hooks/.index.md +1 -1
  121. package/src/components/chat/hooks/.use-nats-chat-adapter.md +1 -1
  122. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +50 -0
  123. package/src/components/chat/hooks/index.ts +1 -0
  124. package/src/components/chat/hooks/use-chat.ts +0 -8
  125. package/src/components/chat/hooks/use-nats-chat-adapter.ts +822 -243
  126. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +479 -0
  127. package/src/components/chat/hooks/use-sse-chat-adapter.ts +666 -318
  128. package/src/components/chat/index.ts +0 -5
  129. package/src/components/chat/thinking-display.tsx +1 -1
  130. package/src/components/chat/types/.api.types.md +3 -1
  131. package/src/components/chat/types/.processing.types.md +23 -6
  132. package/src/components/chat/types/api.types.ts +73 -6
  133. package/src/components/chat/types/processing.types.ts +52 -11
  134. package/src/components/chat/utils/.chunk-parser.md +51 -0
  135. package/src/components/chat/utils/.index.md +5 -0
  136. package/src/components/chat/utils/chunk-parser.ts +255 -0
  137. package/src/components/chat/utils/extract-incomplete-message-state.ts +5 -63
  138. package/src/components/chat/utils/index.ts +8 -5
  139. package/src/components/chat/utils/process-historical-messages.ts +383 -352
  140. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +4 -22
  141. package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
  142. package/src/components/shared/product-release/release-detail-page.tsx +4 -19
  143. package/src/components/ui/.simple-markdown-renderer.md +40 -0
  144. package/src/components/ui/index.ts +2 -1
  145. package/src/components/ui/release-changelog-section.tsx +1 -1
  146. package/src/components/ui/rich-markdown-renderer.tsx +1223 -0
  147. package/src/components/ui/simple-markdown-renderer.tsx +965 -0
  148. package/src/components/ui/ticket-info-section.tsx +1 -1
  149. package/src/utils/index.ts +0 -1
  150. package/src/utils/markdown-section-extractor.ts +56 -41
  151. package/dist/chat-protocol/decode.d.ts +0 -58
  152. package/dist/chat-protocol/decode.d.ts.map +0 -1
  153. package/dist/chat-protocol/encode.d.ts +0 -44
  154. package/dist/chat-protocol/encode.d.ts.map +0 -1
  155. package/dist/chat-protocol/env-flag.d.ts +0 -35
  156. package/dist/chat-protocol/env-flag.d.ts.map +0 -1
  157. package/dist/chat-protocol/events.d.ts +0 -192
  158. package/dist/chat-protocol/events.d.ts.map +0 -1
  159. package/dist/chat-protocol/frames.d.ts +0 -206
  160. package/dist/chat-protocol/frames.d.ts.map +0 -1
  161. package/dist/chat-protocol/index.cjs +0 -493
  162. package/dist/chat-protocol/index.cjs.map +0 -1
  163. package/dist/chat-protocol/index.d.ts +0 -18
  164. package/dist/chat-protocol/index.d.ts.map +0 -1
  165. package/dist/chat-protocol/index.js +0 -477
  166. package/dist/chat-protocol/index.js.map +0 -1
  167. package/dist/chat-protocol/ip-normalize.d.ts +0 -44
  168. package/dist/chat-protocol/ip-normalize.d.ts.map +0 -1
  169. package/dist/chat-protocol/nats-decoder.d.ts +0 -26
  170. package/dist/chat-protocol/nats-decoder.d.ts.map +0 -1
  171. package/dist/chunk-4W54HUP7.cjs.map +0 -1
  172. package/dist/chunk-AJSNF5YF.js.map +0 -1
  173. package/dist/chunk-E6O6XATC.js.map +0 -1
  174. package/dist/chunk-OVIUQJ2H.cjs.map +0 -1
  175. package/dist/chunk-VUCYS36H.js.map +0 -1
  176. package/dist/chunk-WHWDGCQV.cjs.map +0 -1
  177. package/dist/components/chat/stream/chat-dialog-store.d.ts +0 -184
  178. package/dist/components/chat/stream/chat-dialog-store.d.ts.map +0 -1
  179. package/dist/components/chat/stream/chat-stream-reducer.d.ts +0 -367
  180. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +0 -1
  181. package/dist/components/chat/stream/delta-batcher.d.ts +0 -51
  182. package/dist/components/chat/stream/delta-batcher.d.ts.map +0 -1
  183. package/dist/components/chat/stream/index.d.ts +0 -17
  184. package/dist/components/chat/stream/index.d.ts.map +0 -1
  185. package/dist/components/chat/stream/message-mutations.d.ts +0 -77
  186. package/dist/components/chat/stream/message-mutations.d.ts.map +0 -1
  187. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +0 -22
  188. package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +0 -1
  189. package/dist/components/ui/markdown/base-components.d.ts +0 -56
  190. package/dist/components/ui/markdown/base-components.d.ts.map +0 -1
  191. package/dist/components/ui/markdown/engine.d.ts +0 -99
  192. package/dist/components/ui/markdown/engine.d.ts.map +0 -1
  193. package/dist/components/ui/markdown/heading-ids.d.ts +0 -65
  194. package/dist/components/ui/markdown/heading-ids.d.ts.map +0 -1
  195. package/dist/components/ui/markdown/index.d.ts +0 -18
  196. package/dist/components/ui/markdown/index.d.ts.map +0 -1
  197. package/dist/components/ui/markdown/mermaid-diagram.d.ts +0 -79
  198. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +0 -1
  199. package/dist/components/ui/markdown/rich/embed-overrides.d.ts +0 -14
  200. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +0 -1
  201. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +0 -40
  202. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +0 -1
  203. package/dist/components/ui/markdown/rich/shortcodes.d.ts +0 -8
  204. package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +0 -1
  205. package/dist/components/ui/markdown/sanitize.d.ts +0 -153
  206. package/dist/components/ui/markdown/sanitize.d.ts.map +0 -1
  207. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -23
  208. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +0 -1
  209. package/dist/components/ui/markdown/streaming.d.ts +0 -78
  210. package/dist/components/ui/markdown/streaming.d.ts.map +0 -1
  211. package/dist/components/ui/markdown/text-size.d.ts +0 -34
  212. package/dist/components/ui/markdown/text-size.d.ts.map +0 -1
  213. package/dist/utils/markdown-fences.d.ts +0 -42
  214. package/dist/utils/markdown-fences.d.ts.map +0 -1
  215. package/dist/utils/markdown-heading-id.d.ts +0 -85
  216. package/dist/utils/markdown-heading-id.d.ts.map +0 -1
  217. package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +0 -307
  218. package/src/chat-protocol/__tests__/chat-protocol.test.ts +0 -515
  219. package/src/chat-protocol/__tests__/env-flag.test.ts +0 -52
  220. package/src/chat-protocol/__tests__/ip-normalize.test.ts +0 -136
  221. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +0 -228
  222. package/src/chat-protocol/decode.ts +0 -277
  223. package/src/chat-protocol/encode.ts +0 -71
  224. package/src/chat-protocol/env-flag.ts +0 -39
  225. package/src/chat-protocol/events.ts +0 -228
  226. package/src/chat-protocol/frames.ts +0 -238
  227. package/src/chat-protocol/index.ts +0 -21
  228. package/src/chat-protocol/ip-normalize.ts +0 -146
  229. package/src/chat-protocol/nats-decoder.ts +0 -252
  230. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +0 -207
  231. package/src/components/chat/__tests__/chat-pending-turn.test.tsx +0 -209
  232. package/src/components/chat/hooks/__tests__/__snapshots__/persisted-state-v1-golden.test.ts.snap +0 -297
  233. package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
  234. package/src/components/chat/hooks/__tests__/persisted-state-v1-golden.test.ts +0 -272
  235. package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +0 -318
  236. package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +0 -937
  237. package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +0 -756
  238. package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +0 -460
  239. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +0 -894
  240. package/src/components/chat/stream/__tests__/delta-batcher.test.ts +0 -255
  241. package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +0 -98
  242. package/src/components/chat/stream/chat-dialog-store.ts +0 -536
  243. package/src/components/chat/stream/chat-stream-reducer.ts +0 -1796
  244. package/src/components/chat/stream/delta-batcher.ts +0 -159
  245. package/src/components/chat/stream/index.ts +0 -55
  246. package/src/components/chat/stream/message-mutations.ts +0 -338
  247. package/src/components/chat/stream/use-chat-stream-reducer.ts +0 -126
  248. package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +0 -418
  249. package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +0 -599
  250. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +0 -317
  251. package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +0 -270
  252. package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +0 -2420
  253. package/src/components/ui/__tests__/markdown-parity.test.tsx +0 -2528
  254. package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +0 -115
  255. package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +0 -95
  256. package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +0 -309
  257. package/src/components/ui/markdown/__tests__/streaming.test.tsx +0 -388
  258. package/src/components/ui/markdown/base-components.tsx +0 -341
  259. package/src/components/ui/markdown/engine.tsx +0 -315
  260. package/src/components/ui/markdown/heading-ids.ts +0 -239
  261. package/src/components/ui/markdown/index.ts +0 -49
  262. package/src/components/ui/markdown/mermaid-diagram.tsx +0 -291
  263. package/src/components/ui/markdown/rich/embed-overrides.tsx +0 -199
  264. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +0 -184
  265. package/src/components/ui/markdown/rich/shortcodes.ts +0 -170
  266. package/src/components/ui/markdown/sanitize.ts +0 -3499
  267. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -28
  268. package/src/components/ui/markdown/streaming.ts +0 -362
  269. package/src/components/ui/markdown/text-size.ts +0 -106
  270. package/src/utils/markdown-fences.ts +0 -127
  271. package/src/utils/markdown-heading-id.ts +0 -348
  272. /package/dist/{chunk-33FDAZDB.js.map → chunk-3TU6QURP.js.map} +0 -0
  273. /package/dist/{chunk-2BJSRTKU.js.map → chunk-AEM7ADDG.js.map} +0 -0
  274. /package/dist/{chunk-MMF6HJB7.js.map → chunk-EZESVVIM.js.map} +0 -0
  275. /package/dist/{chunk-AW3LVWVV.js.map → chunk-HTSWLPMU.js.map} +0 -0
  276. /package/dist/{chunk-RPAOSHBN.js.map → chunk-IUMPVRSH.js.map} +0 -0
  277. /package/dist/{chunk-7I2QMUEZ.js.map → chunk-JW3UNHGW.js.map} +0 -0
  278. /package/dist/{chunk-GYEZV4GK.js.map → chunk-QTGYQ2U7.js.map} +0 -0
  279. /package/dist/{chunk-4QDFNDVW.js.map → chunk-QZJN5OHK.js.map} +0 -0
  280. /package/dist/{chunk-DG7TX763.js.map → chunk-VYUEOKI6.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
- `;