@flamingo-stack/openframe-frontend-core 0.0.488 → 0.0.490-1506.3944.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-protocol/decode.d.ts +58 -0
- package/dist/chat-protocol/decode.d.ts.map +1 -0
- package/dist/chat-protocol/encode.d.ts +44 -0
- package/dist/chat-protocol/encode.d.ts.map +1 -0
- package/dist/chat-protocol/env-flag.d.ts +35 -0
- package/dist/chat-protocol/env-flag.d.ts.map +1 -0
- package/dist/chat-protocol/events.d.ts +196 -0
- package/dist/chat-protocol/events.d.ts.map +1 -0
- package/dist/chat-protocol/frames.d.ts +213 -0
- package/dist/chat-protocol/frames.d.ts.map +1 -0
- package/dist/chat-protocol/index.cjs +494 -0
- package/dist/chat-protocol/index.cjs.map +1 -0
- package/dist/chat-protocol/index.d.ts +18 -0
- package/dist/chat-protocol/index.d.ts.map +1 -0
- package/dist/chat-protocol/index.js +478 -0
- package/dist/chat-protocol/index.js.map +1 -0
- package/dist/chat-protocol/ip-normalize.d.ts +44 -0
- package/dist/chat-protocol/ip-normalize.d.ts.map +1 -0
- package/dist/chat-protocol/nats-decoder.d.ts +26 -0
- package/dist/chat-protocol/nats-decoder.d.ts.map +1 -0
- package/dist/{chunk-AJNDDXKC.js → chunk-4NWARV5I.js} +3 -3
- package/dist/{chunk-GQX6LFFA.cjs → chunk-5CJR2GZ4.cjs} +42 -42
- package/dist/{chunk-GQX6LFFA.cjs.map → chunk-5CJR2GZ4.cjs.map} +1 -1
- package/dist/{chunk-EUYIFALO.cjs → chunk-5EYRXSY5.cjs} +14 -14
- package/dist/{chunk-EUYIFALO.cjs.map → chunk-5EYRXSY5.cjs.map} +1 -1
- package/dist/{chunk-5RXKOGH6.cjs → chunk-5LMGFI4J.cjs} +7011 -4777
- package/dist/chunk-5LMGFI4J.cjs.map +1 -0
- package/dist/{chunk-KFQXO7QB.js → chunk-6GT557KN.js} +1 -1
- package/dist/chunk-6GT557KN.js.map +1 -0
- package/dist/{chunk-77DFPD35.js → chunk-BE6DK7QY.js} +12267 -10033
- package/dist/chunk-BE6DK7QY.js.map +1 -0
- package/dist/{chunk-A7IPON2V.cjs → chunk-BIKOJ4FH.cjs} +5 -5
- package/dist/{chunk-A7IPON2V.cjs.map → chunk-BIKOJ4FH.cjs.map} +1 -1
- package/dist/{chunk-HQYJINFV.js → chunk-CORIBKHG.js} +4 -4
- package/dist/{chunk-YEEHB4T6.cjs → chunk-CSYSYJCF.cjs} +40 -40
- package/dist/{chunk-YEEHB4T6.cjs.map → chunk-CSYSYJCF.cjs.map} +1 -1
- package/dist/{chunk-SIKCXKGB.cjs → chunk-DSDZ5T4P.cjs} +7 -7
- package/dist/{chunk-SIKCXKGB.cjs.map → chunk-DSDZ5T4P.cjs.map} +1 -1
- package/dist/{chunk-PNXNWGBY.js → chunk-GTWO5NAY.js} +2 -2
- package/dist/{chunk-SCCTJ2UI.js → chunk-HSACATCD.js} +4 -4
- package/dist/{chunk-PECGZWQR.cjs → chunk-KP5KRRD6.cjs} +3 -3
- package/dist/{chunk-PECGZWQR.cjs.map → chunk-KP5KRRD6.cjs.map} +1 -1
- package/dist/{chunk-2B6773QM.cjs → chunk-LILQJ3UZ.cjs} +1 -1
- package/dist/chunk-LILQJ3UZ.cjs.map +1 -0
- package/dist/{chunk-RZSA6MZL.cjs → chunk-NWX7MMF5.cjs} +15 -15
- package/dist/{chunk-RZSA6MZL.cjs.map → chunk-NWX7MMF5.cjs.map} +1 -1
- package/dist/{chunk-V3CNNMY3.cjs → chunk-P4WTZU6L.cjs} +18 -18
- package/dist/{chunk-V3CNNMY3.cjs.map → chunk-P4WTZU6L.cjs.map} +1 -1
- package/dist/{chunk-KLYHZRAD.js → chunk-PB3BTZDU.js} +2 -2
- package/dist/{chunk-FZOBQG6M.cjs → chunk-Q6E7VJ4W.cjs} +37 -36
- package/dist/chunk-Q6E7VJ4W.cjs.map +1 -0
- package/dist/{chunk-EYEIVYYF.cjs → chunk-QSCHCZL3.cjs} +7 -7
- package/dist/{chunk-EYEIVYYF.cjs.map → chunk-QSCHCZL3.cjs.map} +1 -1
- package/dist/{chunk-YJSKQ2ZV.js → chunk-RQLBHKXN.js} +3 -3
- package/dist/{chunk-CWQACI4Z.js → chunk-RW2LPL72.js} +2 -2
- package/dist/{chunk-DX6AOHNU.cjs → chunk-S2NHJDKQ.cjs} +77 -77
- package/dist/{chunk-DX6AOHNU.cjs.map → chunk-S2NHJDKQ.cjs.map} +1 -1
- package/dist/{chunk-AHDJMEEN.js → chunk-T2EGSZFN.js} +9 -8
- package/dist/chunk-T2EGSZFN.js.map +1 -0
- package/dist/{chunk-S52LJNMU.js → chunk-TKN5667N.js} +13 -13
- package/dist/chunk-TKN5667N.js.map +1 -0
- package/dist/{chunk-3BFX6HJM.js → chunk-UUYRJPGJ.js} +6 -6
- package/dist/{chunk-F6BYUO5U.js → chunk-VHG6AX5V.js} +3 -3
- package/dist/{chunk-FOQV6RCO.cjs → chunk-VQ523ORK.cjs} +29 -29
- package/dist/{chunk-FOQV6RCO.cjs.map → chunk-VQ523ORK.cjs.map} +1 -1
- package/dist/{chunk-PXF5J24T.js → chunk-XQ2B74SI.js} +2 -2
- package/dist/{chunk-H7JX2BG7.cjs → chunk-YHOIAA2E.cjs} +76 -76
- package/dist/chunk-YHOIAA2E.cjs.map +1 -0
- package/dist/{chunk-LLWBPPZ4.js → chunk-YZ2OIYQ3.js} +6 -6
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/hooks/index.d.ts +0 -1
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +47 -0
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat.d.ts +1 -0
- package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +15 -48
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +10 -53
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +12 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +23 -15
- package/dist/components/chat/stream/chat-dialog-store.d.ts +184 -0
- package/dist/components/chat/stream/chat-dialog-store.d.ts.map +1 -0
- package/dist/components/chat/stream/chat-stream-reducer.d.ts +367 -0
- package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -0
- package/dist/components/chat/stream/delta-batcher.d.ts +51 -0
- package/dist/components/chat/stream/delta-batcher.d.ts.map +1 -0
- package/dist/components/chat/stream/index.d.ts +17 -0
- package/dist/components/chat/stream/index.d.ts.map +1 -0
- package/dist/components/chat/stream/message-mutations.d.ts +77 -0
- package/dist/components/chat/stream/message-mutations.d.ts.map +1 -0
- package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +22 -0
- package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +1 -0
- package/dist/components/chat/types/api.types.d.ts +1 -81
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/chat/types/processing.types.d.ts +2 -90
- package/dist/components/chat/types/processing.types.d.ts.map +1 -1
- package/dist/components/chat/types/unified-chat-state.types.d.ts +5 -0
- package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
- package/dist/components/chat/utils/chat-conversation-storage.d.ts +34 -0
- package/dist/components/chat/utils/chat-conversation-storage.d.ts.map +1 -0
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +34 -6
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
- package/dist/components/chat/utils/index.d.ts +2 -3
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.d.ts +59 -11
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +182 -140
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +66 -24
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/index.cjs +46 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +1 -2
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +57 -15
- package/dist/components/ui/markdown/base-components.d.ts +51 -0
- package/dist/components/ui/markdown/base-components.d.ts.map +1 -0
- package/dist/components/ui/markdown/engine.d.ts +99 -0
- package/dist/components/ui/markdown/engine.d.ts.map +1 -0
- package/dist/components/ui/markdown/heading-ids.d.ts +65 -0
- package/dist/components/ui/markdown/heading-ids.d.ts.map +1 -0
- package/dist/components/ui/markdown/index.d.ts +18 -0
- package/dist/components/ui/markdown/index.d.ts.map +1 -0
- package/dist/components/ui/markdown/mermaid-diagram.d.ts +79 -0
- package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts +14 -0
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +40 -0
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/shortcodes.d.ts +8 -0
- package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +1 -0
- package/dist/components/ui/markdown/sanitize.d.ts +153 -0
- package/dist/components/ui/markdown/sanitize.d.ts.map +1 -0
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +23 -0
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/markdown/streaming.d.ts +78 -0
- package/dist/components/ui/markdown/streaming.d.ts.map +1 -0
- package/dist/components/ui/markdown/text-size.d.ts +34 -0
- package/dist/components/ui/markdown/text-size.d.ts.map +1 -0
- package/dist/contexts/chat-runtime-context.d.ts +8 -0
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +2 -2
- package/dist/contexts/index.js +1 -1
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +62 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +73 -15
- package/dist/utils/index.cjs +169 -40
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +162 -41
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/markdown-fences.d.ts +42 -0
- package/dist/utils/markdown-fences.d.ts.map +1 -0
- package/dist/utils/markdown-heading-id.d.ts +85 -0
- package/dist/utils/markdown-heading-id.d.ts.map +1 -0
- package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +307 -0
- package/src/chat-protocol/__tests__/chat-protocol.test.ts +516 -0
- package/src/chat-protocol/__tests__/env-flag.test.ts +52 -0
- package/src/chat-protocol/__tests__/ip-normalize.test.ts +136 -0
- package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +228 -0
- package/src/chat-protocol/decode.ts +278 -0
- package/src/chat-protocol/encode.ts +71 -0
- package/src/chat-protocol/env-flag.ts +39 -0
- package/src/chat-protocol/events.ts +232 -0
- package/src/chat-protocol/frames.ts +245 -0
- package/src/chat-protocol/index.ts +21 -0
- package/src/chat-protocol/ip-normalize.ts +146 -0
- package/src/chat-protocol/nats-decoder.ts +252 -0
- package/src/components/chat/__tests__/chat-message-list.test.tsx +293 -5
- package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +207 -0
- package/src/components/chat/__tests__/chat-pending-turn.test.tsx +209 -0
- package/src/components/chat/chat-message-enhanced.tsx +111 -17
- package/src/components/chat/chat-message-list.tsx +358 -109
- package/src/components/chat/embeddable-chat.tsx +6 -0
- package/src/components/chat/hooks/.index.md +30 -33
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +36 -55
- package/src/components/chat/hooks/__tests__/__snapshots__/conversation-id-persistence-golden.test.ts.snap +37 -0
- package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
- package/src/components/chat/hooks/__tests__/conversation-id-persistence-golden.test.ts +438 -0
- package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +318 -0
- package/src/components/chat/hooks/index.ts +0 -1
- package/src/components/chat/hooks/use-chat-history-hydration.ts +142 -0
- package/src/components/chat/hooks/use-chat.ts +20 -0
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +243 -823
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +417 -774
- package/src/components/chat/index.ts +5 -0
- package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +940 -0
- package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +756 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +460 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +894 -0
- package/src/components/chat/stream/__tests__/delta-batcher.test.ts +255 -0
- package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +98 -0
- package/src/components/chat/stream/chat-dialog-store.ts +536 -0
- package/src/components/chat/stream/chat-stream-reducer.ts +1796 -0
- package/src/components/chat/stream/delta-batcher.ts +159 -0
- package/src/components/chat/stream/index.ts +55 -0
- package/src/components/chat/stream/message-mutations.ts +338 -0
- package/src/components/chat/stream/use-chat-stream-reducer.ts +126 -0
- package/src/components/chat/thinking-display.tsx +1 -1
- package/src/components/chat/types/.api.types.md +39 -49
- package/src/components/chat/types/.processing.types.md +29 -58
- package/src/components/chat/types/api.types.ts +6 -73
- package/src/components/chat/types/processing.types.ts +11 -52
- package/src/components/chat/types/unified-chat-state.types.ts +6 -0
- package/src/components/chat/utils/.index.md +31 -40
- package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +420 -0
- package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +605 -0
- package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +317 -0
- package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +270 -0
- package/src/components/chat/utils/chat-conversation-storage.ts +83 -0
- package/src/components/chat/utils/extract-incomplete-message-state.ts +63 -5
- package/src/components/chat/utils/index.ts +5 -8
- package/src/components/chat/utils/process-historical-messages.ts +352 -384
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +22 -4
- package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
- package/src/components/shared/product-release/release-detail-page.tsx +19 -4
- package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +2420 -0
- package/src/components/ui/__tests__/markdown-parity.test.tsx +2528 -0
- package/src/components/ui/index.ts +1 -2
- package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +115 -0
- package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +95 -0
- package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +309 -0
- package/src/components/ui/markdown/__tests__/streaming.test.tsx +388 -0
- package/src/components/ui/markdown/base-components.tsx +360 -0
- package/src/components/ui/markdown/engine.tsx +315 -0
- package/src/components/ui/markdown/heading-ids.ts +239 -0
- package/src/components/ui/markdown/index.ts +49 -0
- package/src/components/ui/markdown/mermaid-diagram.tsx +291 -0
- package/src/components/ui/markdown/rich/embed-overrides.tsx +199 -0
- package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +184 -0
- package/src/components/ui/markdown/rich/shortcodes.ts +170 -0
- package/src/components/ui/markdown/sanitize.ts +3499 -0
- package/src/components/ui/markdown/simple-markdown-renderer.tsx +28 -0
- package/src/components/ui/markdown/streaming.ts +362 -0
- package/src/components/ui/markdown/text-size.ts +106 -0
- package/src/components/ui/release-changelog-section.tsx +1 -1
- package/src/components/ui/ticket-info-section.tsx +1 -1
- package/src/contexts/chat-runtime-context.tsx +8 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/markdown-fences.ts +127 -0
- package/src/utils/markdown-heading-id.ts +348 -0
- package/src/utils/markdown-section-extractor.ts +41 -56
- package/dist/chunk-2B6773QM.cjs.map +0 -1
- package/dist/chunk-5RXKOGH6.cjs.map +0 -1
- package/dist/chunk-77DFPD35.js.map +0 -1
- package/dist/chunk-AHDJMEEN.js.map +0 -1
- package/dist/chunk-FZOBQG6M.cjs.map +0 -1
- package/dist/chunk-H7JX2BG7.cjs.map +0 -1
- package/dist/chunk-KFQXO7QB.js.map +0 -1
- package/dist/chunk-S52LJNMU.js.map +0 -1
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +0 -6
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +0 -1
- package/dist/components/chat/utils/chunk-parser.d.ts +0 -25
- package/dist/components/chat/utils/chunk-parser.d.ts.map +0 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
- package/dist/components/ui/simple-markdown-renderer.d.ts +0 -73
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +0 -1
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +0 -77
- package/src/components/chat/hooks/use-realtime-chunk-processor.ts +0 -479
- package/src/components/chat/utils/.chunk-parser.md +0 -62
- package/src/components/chat/utils/chunk-parser.ts +0 -256
- package/src/components/ui/.simple-markdown-renderer.md +0 -52
- package/src/components/ui/rich-markdown-renderer.tsx +0 -1223
- package/src/components/ui/simple-markdown-renderer.tsx +0 -964
- /package/dist/{chunk-AJNDDXKC.js.map → chunk-4NWARV5I.js.map} +0 -0
- /package/dist/{chunk-HQYJINFV.js.map → chunk-CORIBKHG.js.map} +0 -0
- /package/dist/{chunk-PNXNWGBY.js.map → chunk-GTWO5NAY.js.map} +0 -0
- /package/dist/{chunk-SCCTJ2UI.js.map → chunk-HSACATCD.js.map} +0 -0
- /package/dist/{chunk-KLYHZRAD.js.map → chunk-PB3BTZDU.js.map} +0 -0
- /package/dist/{chunk-YJSKQ2ZV.js.map → chunk-RQLBHKXN.js.map} +0 -0
- /package/dist/{chunk-CWQACI4Z.js.map → chunk-RW2LPL72.js.map} +0 -0
- /package/dist/{chunk-3BFX6HJM.js.map → chunk-UUYRJPGJ.js.map} +0 -0
- /package/dist/{chunk-F6BYUO5U.js.map → chunk-VHG6AX5V.js.map} +0 -0
- /package/dist/{chunk-PXF5J24T.js.map → chunk-XQ2B74SI.js.map} +0 -0
- /package/dist/{chunk-LLWBPPZ4.js.map → chunk-YZ2OIYQ3.js.map} +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure message-mutation kernel for the master chat-stream reducer.
|
|
3
|
+
*
|
|
4
|
+
* These helpers were absorbed from `use-nats-chat-adapter.ts` in Phase 3 of
|
|
5
|
+
* the chat unification — they are the ONE implementation of "apply a stream
|
|
6
|
+
* fragment to a message thread". The reducer (`chat-stream-reducer.ts`) and
|
|
7
|
+
* the cross-side projections (`chat-dialog-store.ts`) both build on them.
|
|
8
|
+
*
|
|
9
|
+
* REFERENTIAL-STABILITY CONTRACT: every helper clones ONLY the touched
|
|
10
|
+
* message object (and the touched segment slot inside it). A value-level
|
|
11
|
+
* no-op — e.g. a replayed duplicate EXECUTED_TOOL whose merge would write
|
|
12
|
+
* identical values — returns the PRIOR references untouched, so React
|
|
13
|
+
* memoization over untouched messages survives redeliveries.
|
|
14
|
+
*
|
|
15
|
+
* Framework-free: no React, no timers.
|
|
16
|
+
*/
|
|
17
|
+
import type { ChatApprovalStatus, MessageSegment, ToolExecutionSegment } from '../types';
|
|
18
|
+
import type { UnifiedChatMessage } from '../types/unified-chat-state.types';
|
|
19
|
+
export declare function nextId(role: 'user' | 'assistant'): string;
|
|
20
|
+
/**
|
|
21
|
+
* Realtime user/direct/system chunks can be replays of rows already on
|
|
22
|
+
* screen. Content-window dedup is the LAST layer (seq-less transports only)
|
|
23
|
+
* — see the layer list in `chat-stream-reducer.ts`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const CONTENT_DEDUP_WINDOW = 4;
|
|
26
|
+
export declare const SYSTEM_DEDUP_WINDOW = 10;
|
|
27
|
+
export declare function hasRecentMessage(prev: UnifiedChatMessage[], predicate: (message: UnifiedChatMessage) => boolean, window: number): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Replace (or append) the trailing assistant message with the latest
|
|
30
|
+
* accumulated segments.
|
|
31
|
+
*/
|
|
32
|
+
export declare function updateTrailingAssistant(prev: UnifiedChatMessage[], segments: MessageSegment[]): UnifiedChatMessage[];
|
|
33
|
+
/**
|
|
34
|
+
* Append-mode counterpart of `updateTrailingAssistant` for post-MESSAGE_END
|
|
35
|
+
* continuation fragments (`SegmentsUpdateMetadata.append`). Coalesces
|
|
36
|
+
* trailing fragments of the same type, mirroring the accumulator; approval
|
|
37
|
+
* deltas upsert by request id so a replayed emit stays idempotent.
|
|
38
|
+
*/
|
|
39
|
+
export declare function appendToTrailingAssistant(prev: UnifiedChatMessage[], segments: MessageSegment[]): UnifiedChatMessage[];
|
|
40
|
+
/**
|
|
41
|
+
* Upsert a standalone context-compaction segment into the trailing assistant
|
|
42
|
+
* bubble. Compaction emissions arrive as the accumulator's CUMULATIVE array —
|
|
43
|
+
* only the compaction segment itself may be applied, or interleaved
|
|
44
|
+
* continuation text would duplicate. A `completed` segment replaces the last
|
|
45
|
+
* `started` one in place.
|
|
46
|
+
*/
|
|
47
|
+
export declare function upsertTrailingCompaction(prev: UnifiedChatMessage[], segments: MessageSegment[]): UnifiedChatMessage[];
|
|
48
|
+
/**
|
|
49
|
+
* Cross-message tool-execution updater for post-MESSAGE_END tool chunks
|
|
50
|
+
* (approved commands executing after the approval bubble, async batch
|
|
51
|
+
* results). Scans messages from the end:
|
|
52
|
+
* 1) an `approval_batch` whose `toolCalls` contains the execution id →
|
|
53
|
+
* merge into its `executions` map;
|
|
54
|
+
* 2) a matching `tool_execution` segment (same id, or EXECUTING with the
|
|
55
|
+
* same tool for legacy id-less backends) → update in place;
|
|
56
|
+
* 3) no match → append the segment to the trailing assistant bubble.
|
|
57
|
+
*
|
|
58
|
+
* A value-level no-op (replayed duplicate) returns `prev` untouched.
|
|
59
|
+
*/
|
|
60
|
+
export declare function applyToolExecutionToMessages(prev: UnifiedChatMessage[], segment: ToolExecutionSegment): UnifiedChatMessage[];
|
|
61
|
+
/**
|
|
62
|
+
* Merge-only variant of `applyToolExecutionToMessages` — the pure projection
|
|
63
|
+
* used for the cross-SIDE fan-out in `chat-dialog-store.ts`. Updates a
|
|
64
|
+
* matching batch slot / tool segment when present; returns `null` when
|
|
65
|
+
* nothing matches (the caller decides whether to append — projections never
|
|
66
|
+
* do, so a tool that belongs to one side only never grows a card on the
|
|
67
|
+
* other).
|
|
68
|
+
*/
|
|
69
|
+
export declare function mergeToolExecutionIfPresent(prev: UnifiedChatMessage[], segment: ToolExecutionSegment): UnifiedChatMessage[] | null;
|
|
70
|
+
/**
|
|
71
|
+
* Cross-message approval status flip (absorbed from the NATS adapter's
|
|
72
|
+
* `onApprovalResolved` handler). Idempotent + reference-preserving: only the
|
|
73
|
+
* messages/segments whose status (or resolvedByName) actually changes are
|
|
74
|
+
* cloned; a no-op returns `prev`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function projectApprovalResolutionToMessages(prev: UnifiedChatMessage[], requestId: string, status: ChatApprovalStatus, resolvedByName?: string | null): UnifiedChatMessage[];
|
|
77
|
+
//# sourceMappingURL=message-mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-mutations.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/stream/message-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EAErB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAE3E,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAKzD;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,kBAAkB,EAAE,EAC1B,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,EACnD,MAAM,EAAE,MAAM,GACb,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,QAAQ,EAAE,cAAc,EAAE,GACzB,kBAAkB,EAAE,CAetB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,QAAQ,EAAE,cAAc,EAAE,GACzB,kBAAkB,EAAE,CA8CtB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,QAAQ,EAAE,cAAc,EAAE,GACzB,kBAAkB,EAAE,CAsBtB;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,kBAAkB,EAAE,EAC1B,OAAO,EAAE,oBAAoB,GAC5B,kBAAkB,EAAE,CAItB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,OAAO,EAAE,oBAAoB,GAC5B,kBAAkB,EAAE,GAAG,IAAI,CA4E7B;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,kBAAkB,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,EAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,kBAAkB,EAAE,CAuBtB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ChatStreamEvent } from '../../../chat-protocol/events';
|
|
2
|
+
import { type ChatDialogSide, type ChatDialogStore } from './chat-dialog-store';
|
|
3
|
+
import type { ChatReducerState, ChatStreamReducer, ChatStreamReducerOptions } from './chat-stream-reducer';
|
|
4
|
+
export interface UseChatStreamReducerOptions {
|
|
5
|
+
store: ChatDialogStore;
|
|
6
|
+
dialogId: string;
|
|
7
|
+
side?: ChatDialogSide;
|
|
8
|
+
/** Consulted once, when this (dialogId, side) reducer is first created. */
|
|
9
|
+
createReducerOptions?: () => ChatStreamReducerOptions;
|
|
10
|
+
}
|
|
11
|
+
export interface UseChatStreamReducerReturn {
|
|
12
|
+
state: ChatReducerState;
|
|
13
|
+
/** Apply a decoded event (deltas are batched; everything else immediate). */
|
|
14
|
+
applyEvent: (event: ChatStreamEvent) => void;
|
|
15
|
+
/** Synchronously apply any pending delta batch. */
|
|
16
|
+
flushDeltas: () => void;
|
|
17
|
+
/** Run reducer commands (adapter-driven, non-wire mutations). */
|
|
18
|
+
mutate: <T>(fn: (reducer: ChatStreamReducer) => T) => T;
|
|
19
|
+
reducer: ChatStreamReducer;
|
|
20
|
+
}
|
|
21
|
+
export declare function useChatStreamReducer({ store, dialogId, side, createReducerOptions, }: UseChatStreamReducerOptions): UseChatStreamReducerReturn;
|
|
22
|
+
//# sourceMappingURL=use-chat-stream-reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-stream-reducer.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/stream/use-chat-stream-reducer.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,uBAAuB,CAAA;AAO9B,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,eAAe,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,MAAM,wBAAwB,CAAA;CACtD;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,gBAAgB,CAAA;IACvB,6EAA6E;IAC7E,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC5C,mDAAmD;IACnD,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,iEAAiE;IACjE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,CAAC,KAAK,CAAC,CAAA;IACvD,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,IAA0B,EAC1B,oBAAoB,GACrB,EAAE,2BAA2B,GAAG,0BAA0B,CAiE1D"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { ChunkData, NatsMessageType, FetchChunksFunction } from './network.types';
|
|
6
6
|
import type { ChatType, ChatApprovalStatus } from './chat.types';
|
|
7
|
-
import type { MessageSegment,
|
|
7
|
+
import type { MessageSegment, TokenUsageData, ToolExecutionSegment } from './message.types';
|
|
8
8
|
export interface UseChunkCatchupOptions {
|
|
9
9
|
dialogId: string | null;
|
|
10
10
|
onChunkReceived: (chunk: ChunkData, messageType: NatsMessageType) => void;
|
|
@@ -222,86 +222,6 @@ export interface RealtimeChunkCallbacks {
|
|
|
222
222
|
/** Called when a DIALOG_CLOSED chunk is received */
|
|
223
223
|
onDialogClosed?: () => void;
|
|
224
224
|
}
|
|
225
|
-
export interface UseRealtimeChunkProcessorOptions {
|
|
226
|
-
callbacks: RealtimeChunkCallbacks;
|
|
227
|
-
/**
|
|
228
|
-
* Filter approval types that should be displayed directly
|
|
229
|
-
* Others will trigger onEscalatedApproval
|
|
230
|
-
* Default: ['CLIENT']
|
|
231
|
-
*/
|
|
232
|
-
displayApprovalTypes?: string[];
|
|
233
|
-
/**
|
|
234
|
-
* Map of existing approval statuses
|
|
235
|
-
*/
|
|
236
|
-
approvalStatuses?: Record<string, ChatApprovalStatus>;
|
|
237
|
-
/**
|
|
238
|
-
* Initialize accumulator with existing state from incomplete historical message
|
|
239
|
-
* Used to continue building messages across page refreshes or reconnections
|
|
240
|
-
*/
|
|
241
|
-
initialState?: {
|
|
242
|
-
/** Existing segments to continue building upon */
|
|
243
|
-
existingSegments?: MessageSegment[];
|
|
244
|
-
/** Pending approvals that haven't been resolved */
|
|
245
|
-
pendingApprovals?: Map<string, {
|
|
246
|
-
command: string;
|
|
247
|
-
explanation?: string;
|
|
248
|
-
approvalType: string;
|
|
249
|
-
}>;
|
|
250
|
-
/** Executing tools waiting for completion */
|
|
251
|
-
executingTools?: Map<string, ExecutingToolState>;
|
|
252
|
-
/** Escalated approvals */
|
|
253
|
-
escalatedApprovals?: Map<string, {
|
|
254
|
-
command: string;
|
|
255
|
-
explanation?: string;
|
|
256
|
-
approvalType: string;
|
|
257
|
-
toolCalls?: PendingToolCallData[];
|
|
258
|
-
}>;
|
|
259
|
-
};
|
|
260
|
-
/**
|
|
261
|
-
* Consumer-owned (e.g. set in `openframe-oss-tenant` chat client via the
|
|
262
|
-
* `'batch-approvals'` feature flag and forwarded here). The lib does NOT
|
|
263
|
-
* default this to a batch-on behavior — when omitted it falls back to the
|
|
264
|
-
* legacy single-card rendering.
|
|
265
|
-
*
|
|
266
|
-
* When true: `APPROVAL_REQUEST` chunks containing `toolCalls[]` are rendered
|
|
267
|
-
* as a single batch card. When false / omitted: the batch is split into N
|
|
268
|
-
* legacy approval cards (one per tool that requires approval), all sharing
|
|
269
|
-
* the same `approvalRequestId`. Tools with `requiresApproval=false` are
|
|
270
|
-
* dropped from the UI in the unfolded mode.
|
|
271
|
-
*/
|
|
272
|
-
batchApprovalsEnabled?: boolean;
|
|
273
|
-
/**
|
|
274
|
-
* Engages the direct-mode barrier optimistically: once true, all AI-assistant
|
|
275
|
-
* chunks (text, thinking, tool executions, approvals, metadata, errors, etc.)
|
|
276
|
-
* are dropped and any open stream is torn down, leaving only human/control
|
|
277
|
-
* messages. A `DIRECT_MESSAGE` chunk engages the same barrier automatically
|
|
278
|
-
* regardless of this flag. Pass this from a host that already knows the dialog
|
|
279
|
-
* switched to direct mode (e.g. an optimistic mode toggle) to close the race
|
|
280
|
-
* window before the server emits the first `DIRECT_MESSAGE`.
|
|
281
|
-
*
|
|
282
|
-
* Do NOT set this when the host reconstructs history by replaying chunks
|
|
283
|
-
* through `processChunk` — a static flag would drop legitimate pre-switch AI
|
|
284
|
-
* history. Rely on the in-order `DIRECT_MESSAGE` detection instead.
|
|
285
|
-
*/
|
|
286
|
-
isDirectMode?: boolean;
|
|
287
|
-
}
|
|
288
|
-
export interface UseRealtimeChunkProcessorReturn {
|
|
289
|
-
/** Process a single chunk */
|
|
290
|
-
processChunk: (chunk: unknown) => void;
|
|
291
|
-
/** Get current segments */
|
|
292
|
-
getSegments: () => MessageSegment[];
|
|
293
|
-
/** Reset the accumulator */
|
|
294
|
-
reset: () => void;
|
|
295
|
-
/** Update approval status for a request */
|
|
296
|
-
updateApprovalStatus: (requestId: string, status: ChatApprovalStatus, resolvedByName?: string | null) => MessageSegment[];
|
|
297
|
-
/** Get pending approval requests */
|
|
298
|
-
getPendingApprovals: () => Map<string, {
|
|
299
|
-
command: string;
|
|
300
|
-
explanation?: string;
|
|
301
|
-
approvalType: string;
|
|
302
|
-
toolCalls?: PendingToolCallData[];
|
|
303
|
-
}>;
|
|
304
|
-
}
|
|
305
225
|
export interface ChatAPIRequest {
|
|
306
226
|
dialogId: string;
|
|
307
227
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/api.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/api.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EAEd,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAIxB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,KAAK,IAAI,CAAA;IACzE;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,KAAK,IAAI,CAAA;IAClE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C;;OAEG;IACH,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACjC;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE;QACpB,4FAA4F;QAC5F,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,8FAA8F;QAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,4FAA4F;QAC5F,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,uFAAuF;QACvF,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,yGAAyG;QACzG,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAID,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IACjG,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,qBAAqB,EAAE,MAAM,IAAI,CAAA;IACjC,iBAAiB,EAAE,MAAM,OAAO,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,kIAAkI;IAClI,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,wFAAwF;IACxF,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,qCAAqC;IACpD,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oCAAoC;IACpC,KAAK,EAAE,eAAe,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,KAAK,IAAI,CAAA;IAClE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,qEAAqE;IACrE,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACjC,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,mBAAmB,CAAC,EAAE;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,CAAA;IACzB,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;+DAG2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7H,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IAC1F,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD;;qEAEiE;IACjE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAAK,IAAI,CAAA;IACxL,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C;yEACqE;IACrE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACtI,8EAA8E;IAC9E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC3E,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACxD,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACvD,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACxH,2DAA2D;IAC3D,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjJ;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAClI;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACxD;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC5B;AAWD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAA;IAC5C,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAC,CAAA;IACF,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAID,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -2,79 +2,9 @@
|
|
|
2
2
|
* Message processing and transformation types
|
|
3
3
|
* Contains types for message parsing, accumulation, and processing
|
|
4
4
|
*/
|
|
5
|
-
import type { MessageSegment,
|
|
5
|
+
import type { MessageSegment, PendingToolCallData, ExecutingToolState } from './message.types';
|
|
6
6
|
import type { ChatApprovalStatus, AssistantType } from './chat.types';
|
|
7
|
-
import type { ChunkData
|
|
8
|
-
export type ParsedChunkAction = {
|
|
9
|
-
action: 'message_start';
|
|
10
|
-
} | {
|
|
11
|
-
action: 'message_end';
|
|
12
|
-
} | {
|
|
13
|
-
action: 'error';
|
|
14
|
-
error: string;
|
|
15
|
-
details?: string;
|
|
16
|
-
} | {
|
|
17
|
-
action: 'metadata';
|
|
18
|
-
modelDisplayName: string;
|
|
19
|
-
modelName: string;
|
|
20
|
-
providerName: string;
|
|
21
|
-
contextWindow: number;
|
|
22
|
-
} | {
|
|
23
|
-
action: 'text';
|
|
24
|
-
text: string;
|
|
25
|
-
} | {
|
|
26
|
-
action: 'thinking';
|
|
27
|
-
text: string;
|
|
28
|
-
} | {
|
|
29
|
-
action: 'tool_execution';
|
|
30
|
-
segment: ToolExecutionSegment;
|
|
31
|
-
} | {
|
|
32
|
-
action: 'approval_request';
|
|
33
|
-
requestId: string;
|
|
34
|
-
command: string;
|
|
35
|
-
explanation?: string;
|
|
36
|
-
approvalType: string;
|
|
37
|
-
} | {
|
|
38
|
-
action: 'approval_batch';
|
|
39
|
-
requestId: string;
|
|
40
|
-
approvalType: string;
|
|
41
|
-
toolCalls: PendingToolCallData[];
|
|
42
|
-
} | {
|
|
43
|
-
action: 'approval_result';
|
|
44
|
-
requestId: string;
|
|
45
|
-
approved: boolean;
|
|
46
|
-
approvalType: string;
|
|
47
|
-
resolvedByName?: string | null;
|
|
48
|
-
} | {
|
|
49
|
-
action: 'message_request';
|
|
50
|
-
text: string;
|
|
51
|
-
ownerType?: string;
|
|
52
|
-
displayName?: string;
|
|
53
|
-
userId?: string;
|
|
54
|
-
contextItems?: Array<{
|
|
55
|
-
type: string;
|
|
56
|
-
id: string;
|
|
57
|
-
}>;
|
|
58
|
-
} | {
|
|
59
|
-
action: 'token_usage';
|
|
60
|
-
data: TokenUsageData;
|
|
61
|
-
} | {
|
|
62
|
-
action: 'direct_message';
|
|
63
|
-
text: string;
|
|
64
|
-
ownerType?: string;
|
|
65
|
-
displayName?: string;
|
|
66
|
-
userId?: string;
|
|
67
|
-
} | {
|
|
68
|
-
action: 'system';
|
|
69
|
-
text: string;
|
|
70
|
-
} | {
|
|
71
|
-
action: 'context_compaction_start';
|
|
72
|
-
} | {
|
|
73
|
-
action: 'context_compaction_end';
|
|
74
|
-
summary?: string;
|
|
75
|
-
} | {
|
|
76
|
-
action: 'dialog_closed';
|
|
77
|
-
};
|
|
7
|
+
import type { ChunkData } from './network.types';
|
|
78
8
|
export interface PendingApproval {
|
|
79
9
|
command: string;
|
|
80
10
|
explanation?: string;
|
|
@@ -116,24 +46,6 @@ export interface MessageProcessingOptions {
|
|
|
116
46
|
*/
|
|
117
47
|
batchApprovalsEnabled?: boolean;
|
|
118
48
|
}
|
|
119
|
-
export interface ChunkProcessor {
|
|
120
|
-
processChunk: (chunk: ChunkData, messageType: NatsMessageType) => ParsedChunkAction | null;
|
|
121
|
-
reset: () => void;
|
|
122
|
-
}
|
|
123
|
-
export interface ChunkProcessorOptions {
|
|
124
|
-
onMessageStart?: () => void;
|
|
125
|
-
onMessageEnd?: () => void;
|
|
126
|
-
onError?: (error: string, details?: string) => void;
|
|
127
|
-
onText?: (text: string) => void;
|
|
128
|
-
onToolExecution?: (segment: MessageSegment) => void;
|
|
129
|
-
onApprovalRequest?: (data: any) => void;
|
|
130
|
-
onApprovalResult?: (data: any) => void;
|
|
131
|
-
onMetadata?: (data: any) => void;
|
|
132
|
-
}
|
|
133
|
-
export interface MessageTransformer {
|
|
134
|
-
transform: (input: any) => ProcessedMessage | null;
|
|
135
|
-
batch: (inputs: any[]) => ProcessedMessage[];
|
|
136
|
-
}
|
|
137
49
|
export interface TransformationOptions {
|
|
138
50
|
preserveOriginal?: boolean;
|
|
139
51
|
mergeSegments?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processing.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/processing.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"processing.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/processing.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -224,6 +224,11 @@ export interface UnifiedChatState {
|
|
|
224
224
|
isLoading: boolean;
|
|
225
225
|
/** Granular phase for the "Thinking..."/"Streaming..." status row above input. */
|
|
226
226
|
streamingPhase: StreamingPhase;
|
|
227
|
+
/** True while the adapter is rebuilding the message list from the
|
|
228
|
+
* server-side transcript store (SSE/Guide mount-time hydration). Optional —
|
|
229
|
+
* transports without server hydration (NATS manages its own dialog
|
|
230
|
+
* loading) never set it. */
|
|
231
|
+
isHydratingHistory?: boolean;
|
|
227
232
|
sendMessage: (text: string, options?: UnifiedSendMessageOptions) => Promise<void>;
|
|
228
233
|
/** Abort the in-flight stream. No-op when idle. */
|
|
229
234
|
stopMessage: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-chat-state.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/unified-chat-state.types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAInD;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAA;IACvB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAA;IACxB;6EACyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB;+DAC2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAA;AAI7E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;AAI9D;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7E;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAE1B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IAEvB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;IAE3B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAElC,mEAAmE;IACnE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,eAAe,EAAE,CAAA;CACjC;AAID;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,cAAc,EAAE,CAAA;IAE9B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,eAAe,EAAE,CAAA;CACjC;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAE9B;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAElB,kFAAkF;IAClF,cAAc,EAAE,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"unified-chat-state.types.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/types/unified-chat-state.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat conversation-id persistence — the SSE/Guide chat's ONLY local state.
|
|
3
|
+
*
|
|
4
|
+
* The stored value is the SERVER-minted conversation id echoed in the chat
|
|
5
|
+
* stream's leading metadata frame; the client never generates ids. Message
|
|
6
|
+
* history itself lives server-side (`chat_conversations` / `chat_messages`)
|
|
7
|
+
* and is rehydrated via the history endpoint — see
|
|
8
|
+
* `use-chat-history-hydration.ts`.
|
|
9
|
+
*
|
|
10
|
+
* Built on the lib-standard `createLocalStorageAdapter` (SSR guard,
|
|
11
|
+
* try/catch, quota-failure logging, dynamic namespacing) instead of raw
|
|
12
|
+
* `window.localStorage`. The namespace resolver runs on EVERY read/write, so
|
|
13
|
+
* a proxy-auth identity switch mid-page automatically re-partitions the key.
|
|
14
|
+
*
|
|
15
|
+
* Key shape: `mingo-chat-<source>[-u-<email>].conversation`
|
|
16
|
+
*/
|
|
17
|
+
import { type LocalStorageAdapter } from '../../../utils/local-storage-adapter';
|
|
18
|
+
export interface PersistedChatConversation {
|
|
19
|
+
conversationId: string;
|
|
20
|
+
}
|
|
21
|
+
/** One adapter per chat `source` (= platform). Memoize per mount. */
|
|
22
|
+
export declare function createChatConversationStorage(source: string): LocalStorageAdapter<PersistedChatConversation>;
|
|
23
|
+
/**
|
|
24
|
+
* Sweep THIS source's stale keys: the other-identity variants (base vs
|
|
25
|
+
* impersonation), and retired key shapes from before the server-minted-id
|
|
26
|
+
* design (raw `mingo-chat-<source>` and versioned `-v1`/`-v2` full-history
|
|
27
|
+
* stores). Boundary-aware: a hyphen-extended sibling source (`flamingo` vs
|
|
28
|
+
* `flamingo-teaser`) is NOT this source's namespace and must never be swept.
|
|
29
|
+
*
|
|
30
|
+
* Raw storage enumeration is unavoidable here — the adapter abstraction is
|
|
31
|
+
* per-key and Web Storage only exposes iteration on the raw object.
|
|
32
|
+
*/
|
|
33
|
+
export declare function pruneStaleChatConversationStorage(source: string): void;
|
|
34
|
+
//# sourceMappingURL=chat-conversation-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-conversation-storage.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/chat-conversation-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,sCAAsC,CAAA;AAG7C,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAA;CACvB;AAUD,qEAAqE;AACrE,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,GACb,mBAAmB,CAAC,yBAAyB,CAAC,CAUhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAsBtE"}
|
|
@@ -2,14 +2,42 @@
|
|
|
2
2
|
* Utility for extracting incomplete message state from historical messages
|
|
3
3
|
* Used to continue building messages across realtime connections
|
|
4
4
|
*/
|
|
5
|
-
import type { ProcessedMessage
|
|
5
|
+
import type { ProcessedMessage } from '../types';
|
|
6
|
+
import type { InitializeExtras } from '../stream/chat-stream-reducer';
|
|
7
|
+
/**
|
|
8
|
+
* What the realtime accumulator needs to RESUME an unfinished turn.
|
|
9
|
+
*
|
|
10
|
+
* DERIVED, not restated: this is exactly the reducer's `InitializeExtras`
|
|
11
|
+
* minus `escalatedApprovals` (which only the live stream can produce — it has
|
|
12
|
+
* no historical representation to extract). Hosts pass the result straight
|
|
13
|
+
* into `reducer.initializeWithState(messages, extras)`, so the two must not
|
|
14
|
+
* drift; a structural coincidence is not a contract.
|
|
15
|
+
*/
|
|
16
|
+
export type IncompleteMessageState = Omit<InitializeExtras, 'escalatedApprovals'>;
|
|
6
17
|
/**
|
|
7
18
|
* Extract incomplete message state from the last historical assistant message
|
|
8
19
|
* Used to initialize realtime chunk processor when continuing an incomplete message
|
|
9
20
|
*/
|
|
10
|
-
export declare function extractIncompleteMessageState(lastMessage: ProcessedMessage | undefined):
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
export declare function extractIncompleteMessageState(lastMessage: ProcessedMessage | undefined): IncompleteMessageState | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* THREAD-level generalization of `extractIncompleteMessageState`: given a
|
|
24
|
+
* processed thread, look at the TRAILING RUN of consecutive assistant
|
|
25
|
+
* messages (not just the very last row), flatten it to one segment list, and
|
|
26
|
+
* ask the single-message extractor whether that tail is unfinished.
|
|
27
|
+
*
|
|
28
|
+
* Why the run and not the last row: the backend can split one logical turn
|
|
29
|
+
* across several assistant messages (a preamble bubble, then the approval
|
|
30
|
+
* card, then the continuation). The unfinished artifact — a pending approval,
|
|
31
|
+
* an EXECUTING_TOOL with no result, an open compaction — can therefore sit in
|
|
32
|
+
* an EARLIER bubble of the same trailing run, and a last-row-only check
|
|
33
|
+
* reports "complete" while the turn is very much still in flight.
|
|
34
|
+
*
|
|
35
|
+
* SSOT for every "is the tail incomplete?" question — the NATS adapter (which
|
|
36
|
+
* used to inline the single-row check) and hosts replaying a stored thread
|
|
37
|
+
* both call this instead of re-deriving the walk.
|
|
38
|
+
*
|
|
39
|
+
* A trailing non-assistant row (user / error) means the last turn closed →
|
|
40
|
+
* `undefined`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function extractIncompleteTailState(messages: readonly ProcessedMessage[] | undefined): IncompleteMessageState | undefined;
|
|
15
43
|
//# sourceMappingURL=extract-incomplete-message-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-incomplete-message-state.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/extract-incomplete-message-state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"extract-incomplete-message-state.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/extract-incomplete-message-state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAErE;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;AAEjF;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,gBAAgB,GAAG,SAAS,GACxC,sBAAsB,GAAG,SAAS,CAwEpC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,GAChD,sBAAsB,GAAG,SAAS,CA0BpC"}
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* Message processing utilities
|
|
3
3
|
* Export all utilities for processing chat messages
|
|
4
4
|
*/
|
|
5
|
-
export { parseChunkToAction, isControlChunk, isErrorChunk, isMetadataChunk, extractTextFromChunk, } from './chunk-parser';
|
|
6
5
|
export { MessageSegmentAccumulator, createMessageSegmentAccumulator, type AccumulatorCallbacks, } from './message-segment-accumulator';
|
|
7
|
-
export { processHistoricalMessages, extractErrorMessages, processHistoricalMessagesWithErrors, } from './process-historical-messages';
|
|
8
|
-
export { extractIncompleteMessageState, } from './extract-incomplete-message-state';
|
|
6
|
+
export { processHistoricalMessages, extractErrorMessages, processHistoricalMessagesWithErrors, decodeHistoricalMessageData, } from './process-historical-messages';
|
|
7
|
+
export { extractIncompleteMessageState, extractIncompleteTailState, } from './extract-incomplete-message-state';
|
|
9
8
|
export { mergeHistoryWithRealtime, computeHistoryPrepend, flattenMessagePagesChronological, maxPersistedStreamSeq, SYNTHETIC_REALTIME_ID_PREFIXES, type MergeableChatMessage, type HistoryMergeInput, type HistoryPrependResult, } from './history-merge';
|
|
10
9
|
export { getCommandText } from './tool-call-helpers';
|
|
11
10
|
export { CHIP_ACTION_BUTTON_CLASS } from './chip-action-class';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Utility for processing historical messages from GraphQL/API
|
|
3
|
-
*
|
|
2
|
+
* Utility for processing historical messages from GraphQL/API into
|
|
3
|
+
* display-ready format.
|
|
4
|
+
*
|
|
5
|
+
* Phase 3 of the chat unification reduced this file to DECODE + ENVELOPE:
|
|
6
|
+
*
|
|
7
|
+
* - `decodeHistoricalMessageData` maps one persisted `MessageData` item
|
|
8
|
+
* into the shared `ChatStreamEvent` vocabulary (historical items share
|
|
9
|
+
* the MESSAGE_TYPE vocabulary with NATS chunks but are NOT full chunk
|
|
10
|
+
* envelopes — e.g. compaction summaries ride in `summary`, not `text`,
|
|
11
|
+
* and APPROVAL_RESULT rows carry `resolvedByName` directly);
|
|
12
|
+
* - `applyHistoryEvent` replays each decoded event into the shared
|
|
13
|
+
* per-turn kernel (`MessageSegmentAccumulator` — the same kernel the
|
|
14
|
+
* master `createChatStreamReducer` instantiates) with the
|
|
15
|
+
* history-specific approval semantics (display-all default, pending
|
|
16
|
+
* tracking + `flushPendingApprovals`, `approvalStatuses` overrides);
|
|
17
|
+
* - the ENVELOPE (user/assistant flush-grouping, OWNER_TYPE author /
|
|
18
|
+
* display-name / avatar resolution, standalone SYSTEM handling,
|
|
19
|
+
* per-message contextItems mapping, per-turn streamSeq MAX) lives ONCE
|
|
20
|
+
* in `processHistory` — the previous near-duplicate second copy was
|
|
21
|
+
* deleted (`processHistoricalMessagesWithErrors` is an alias; the two
|
|
22
|
+
* snapshots were byte-identical).
|
|
23
|
+
*
|
|
24
|
+
* Adapters then feed the processed rows into the reducer via
|
|
25
|
+
* `initializeWithState` (see `useNatsChatAdapter.loadDialogHistory`).
|
|
4
26
|
*/
|
|
5
|
-
import { type HistoricalMessage, type PendingToolCallData, type ProcessedMessage, type MessageProcessingOptions } from '../types';
|
|
27
|
+
import { type HistoricalMessage, type PendingToolCallData, type ProcessedMessage, type MessageProcessingOptions, type MessageData } from '../types';
|
|
28
|
+
import type { ChatStreamEvent } from '../../../chat-protocol/events';
|
|
29
|
+
/**
|
|
30
|
+
* Map one persisted `MessageData` item to a normalized `ChatStreamEvent`.
|
|
31
|
+
* Thin shim over the NATS chunk decoder's core mapping — the differences
|
|
32
|
+
* are exactly the persisted-row divergences from the realtime envelope:
|
|
33
|
+
*
|
|
34
|
+
* - compaction summaries arrive in `summary` (realtime: `text`);
|
|
35
|
+
* - APPROVAL_RESULT rows carry `resolvedByName` (realtime chunks carry
|
|
36
|
+
* the resolver's name as `displayName`);
|
|
37
|
+
* - `approvalType` defaults to 'CLIENT' (legacy history parity;
|
|
38
|
+
* realtime defaults APPROVAL_REQUEST to 'USER');
|
|
39
|
+
* - batch `toolCalls` pass through verbatim (already the persisted
|
|
40
|
+
* `PendingToolCallData` shape — no normalization pass).
|
|
41
|
+
*
|
|
42
|
+
* Returns `null` for rows the assistant-turn path doesn't decode (SYSTEM
|
|
43
|
+
* is handled by the envelope's standalone path; user TEXT rows are handled
|
|
44
|
+
* by the envelope's user path).
|
|
45
|
+
*/
|
|
46
|
+
export declare function decodeHistoricalMessageData(data: MessageData): ChatStreamEvent | null;
|
|
47
|
+
type EscalatedApprovals = Map<string, {
|
|
48
|
+
command: string;
|
|
49
|
+
explanation?: string;
|
|
50
|
+
approvalType: string;
|
|
51
|
+
toolCalls?: PendingToolCallData[];
|
|
52
|
+
}>;
|
|
6
53
|
/**
|
|
7
54
|
* Result type for historical message processing
|
|
8
55
|
*/
|
|
9
56
|
export interface ProcessHistoricalMessagesResult {
|
|
10
57
|
messages: ProcessedMessage[];
|
|
11
|
-
escalatedApprovals:
|
|
12
|
-
command: string;
|
|
13
|
-
explanation?: string;
|
|
14
|
-
approvalType: string;
|
|
15
|
-
toolCalls?: PendingToolCallData[];
|
|
16
|
-
}>;
|
|
58
|
+
escalatedApprovals: EscalatedApprovals;
|
|
17
59
|
}
|
|
18
60
|
/**
|
|
19
61
|
* Process an array of historical messages into display-ready format
|
|
@@ -25,7 +67,13 @@ export declare function processHistoricalMessages(messages: HistoricalMessage[],
|
|
|
25
67
|
*/
|
|
26
68
|
export declare function extractErrorMessages(messages: HistoricalMessage[], options?: MessageProcessingOptions): ProcessedMessage[];
|
|
27
69
|
/**
|
|
28
|
-
* Process messages and include error messages in the correct order
|
|
70
|
+
* Process messages and include error messages in the correct order.
|
|
71
|
+
*
|
|
72
|
+
* HISTORICAL ALIAS: this was a byte-identical second copy of
|
|
73
|
+
* `processHistoricalMessages` (both goldens snapshot identical output on the
|
|
74
|
+
* same corpus). The duplicate envelope was deleted in Phase 3 — kept as an
|
|
75
|
+
* alias for the established import sites.
|
|
29
76
|
*/
|
|
30
|
-
export declare
|
|
77
|
+
export declare const processHistoricalMessagesWithErrors: typeof processHistoricalMessages;
|
|
78
|
+
export {};
|
|
31
79
|
//# sourceMappingURL=process-historical-messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-historical-messages.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/process-historical-messages.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"process-historical-messages.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/utils/process-historical-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAEjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA2CpE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAuGrF;AAMD,KAAK,kBAAkB,GAAG,GAAG,CAC3B,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAAE,CACnG,CAAA;AAuLD;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,kBAAkB,EAAE,kBAAkB,CAAA;CACvC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,GAAE,wBAA6B,GACrC,+BAA+B,CA4KjC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,GAAE,wBAA6B,GACrC,gBAAgB,EAAE,CA8BpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mCAAmC,kCAA4B,CAAA"}
|