@flamingo-stack/openframe-frontend-core 0.0.716 → 0.0.718

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 (113) hide show
  1. package/dist/chat-protocol/index.cjs +23 -14
  2. package/dist/chat-protocol/index.js +23 -14
  3. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
  4. package/dist/chat-protocol/source-metadata.d.ts +11 -2
  5. package/dist/chat-protocol/source-metadata.d.ts.map +1 -1
  6. package/dist/{chunk-DPX6244M.js → chunk-45F7PXUI.js} +3 -3
  7. package/dist/{chunk-KYFNFRSV.js → chunk-67QBMN4R.js} +2 -2
  8. package/dist/{chunk-3RKBJT6K.cjs → chunk-6A43ZDWV.cjs} +2 -2
  9. package/dist/chunk-A6P6DHEZ.cjs +130 -0
  10. package/dist/{chunk-KNOZVVCU.cjs → chunk-BOTM373R.cjs} +9 -9
  11. package/dist/{chunk-DHMO5GI4.cjs → chunk-BWIN42ZA.cjs} +21 -21
  12. package/dist/{chunk-YTMV4OBY.js → chunk-DCD5WZUF.js} +4 -4
  13. package/dist/{chunk-V36WGIYR.js → chunk-DEZDMTBM.js} +5 -5
  14. package/dist/{chunk-YO5JB3WE.cjs → chunk-DXCBOZVT.cjs} +35 -35
  15. package/dist/{chunk-ZX7SCPLO.cjs → chunk-E7YCPY7K.cjs} +3 -3
  16. package/dist/{chunk-I5F2OTFE.cjs → chunk-EZC2F5OT.cjs} +33 -33
  17. package/dist/{chunk-DLEO53NX.cjs → chunk-GN4A7PMB.cjs} +69 -69
  18. package/dist/{chunk-6T3BTD6Q.js → chunk-IWCPXJEE.js} +201 -327
  19. package/dist/{chunk-ROBQ5TR7.js → chunk-JH2SIWPQ.js} +28 -17
  20. package/dist/{chunk-3AJIQPFG.js → chunk-JIWMBIVZ.js} +6 -6
  21. package/dist/{chunk-DDWFCWOE.js → chunk-JPD4NXH6.js} +1 -1
  22. package/dist/{chunk-JVCAK4W3.cjs → chunk-LE5WKGJV.cjs} +3 -3
  23. package/dist/{chunk-NPAQSMRY.js → chunk-LOYPRJWA.js} +1053 -357
  24. package/dist/{chunk-5IJXM3RU.cjs → chunk-MIQLUUVF.cjs} +10 -10
  25. package/dist/{chunk-MXPQMQI3.js → chunk-MM7MCIXL.js} +6 -6
  26. package/dist/{chunk-C5AGSZBT.js → chunk-N2PF5CFX.js} +4837 -5425
  27. package/dist/{chunk-STCJYO2Z.cjs → chunk-NDZ5ZXOQ.cjs} +11 -11
  28. package/dist/{chunk-H5R7U2D2.js → chunk-NZ5BHDFZ.js} +1 -1
  29. package/dist/{chunk-JCA5MBVY.js → chunk-PQ6HBLZ7.js} +4 -4
  30. package/dist/{chunk-EOKSKJSS.cjs → chunk-QBCDSTLE.cjs} +13 -13
  31. package/dist/{chunk-NQWJAOHO.js → chunk-QXZCLQNV.js} +1 -1
  32. package/dist/{chunk-2V7D5GJX.cjs → chunk-S2FUFMLW.cjs} +25 -25
  33. package/dist/{chunk-64F6OEEV.js → chunk-SGFTTJKO.js} +1 -1
  34. package/dist/{chunk-P7IL4CX3.js → chunk-TBCZCRQ5.js} +6 -6
  35. package/dist/{chunk-HETQETPV.cjs → chunk-UWQWMGJ7.cjs} +28 -17
  36. package/dist/{chunk-X2MNNV5H.cjs → chunk-WALCXC7J.cjs} +3 -3
  37. package/dist/{chunk-YBS5QGON.js → chunk-XGHGGBM3.js} +2 -2
  38. package/dist/{chunk-NKILEG3Y.cjs → chunk-YC5COB5V.cjs} +45 -45
  39. package/dist/{chunk-BVZ7W4HW.js → chunk-YEMCCYIF.js} +4 -4
  40. package/dist/chunk-YYYVS7CX.js +130 -0
  41. package/dist/{chunk-S2VWQX6T.cjs → chunk-Z3CVSPO3.cjs} +842 -1430
  42. package/dist/{chunk-PPXR22YC.cjs → chunk-Z5UWW3Z2.cjs} +707 -11
  43. package/dist/{chunk-JO5TLJPM.cjs → chunk-ZXCZYMN4.cjs} +37 -163
  44. package/dist/{cloud-tenants-2J7CPTKT.cjs → cloud-tenants-PFDF7O5U.cjs} +6 -5
  45. package/dist/{cloud-tenants-YOY2WLGC.js → cloud-tenants-TAKOWXLD.js} +5 -4
  46. package/dist/components/case-studies/index.cjs +17 -16
  47. package/dist/components/case-studies/index.js +6 -5
  48. package/dist/components/chat/index.cjs +2 -2
  49. package/dist/components/chat/index.js +1 -1
  50. package/dist/components/chat/types/message.types.d.ts +20 -16
  51. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  52. package/dist/components/chat/types/unified-chat-state.types.d.ts +1 -1
  53. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  54. package/dist/components/contact/index.cjs +7 -6
  55. package/dist/components/contact/index.js +6 -5
  56. package/dist/components/docs/index.cjs +10 -9
  57. package/dist/components/docs/index.js +9 -8
  58. package/dist/components/embeds/index.cjs +7 -6
  59. package/dist/components/embeds/index.js +6 -5
  60. package/dist/components/faq/index.cjs +7 -6
  61. package/dist/components/faq/index.js +6 -5
  62. package/dist/components/features/index.cjs +10 -5
  63. package/dist/components/features/index.js +9 -4
  64. package/dist/components/features/remote-session/index.d.ts +2 -0
  65. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  66. package/dist/components/features/remote-session/remote-session-keep-modals.d.ts +3 -3
  67. package/dist/components/features/remote-session/remote-session-keep-modals.d.ts.map +1 -1
  68. package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts +29 -0
  69. package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts.map +1 -0
  70. package/dist/components/help-center-pages/index.cjs +71 -70
  71. package/dist/components/help-center-pages/index.js +17 -16
  72. package/dist/components/index.cjs +44 -39
  73. package/dist/components/index.js +22 -17
  74. package/dist/components/meeting-scheduler/index.cjs +33 -32
  75. package/dist/components/meeting-scheduler/index.js +5 -4
  76. package/dist/components/navigation/index.cjs +9 -8
  77. package/dist/components/navigation/index.js +8 -7
  78. package/dist/components/onboarding-guides/index.cjs +9 -8
  79. package/dist/components/onboarding-guides/index.js +8 -7
  80. package/dist/components/product-demo/index.cjs +7 -7
  81. package/dist/components/product-demo/index.js +7 -7
  82. package/dist/components/tickets/index.cjs +10 -9
  83. package/dist/components/tickets/index.js +9 -8
  84. package/dist/components/ui/autocomplete.d.ts +6 -0
  85. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  86. package/dist/components/ui/index.cjs +8 -7
  87. package/dist/components/ui/index.js +7 -6
  88. package/dist/{devices-5NADSKDZ.cjs → devices-KRCGZMGA.cjs} +7 -6
  89. package/dist/{devices-EQXXILXW.js → devices-LHEX7O5T.js} +5 -4
  90. package/dist/hooks/index.cjs +6 -4
  91. package/dist/hooks/index.js +5 -3
  92. package/dist/index.cjs +17 -11
  93. package/dist/index.js +18 -12
  94. package/dist/{knowledge-LHQYZJE7.cjs → knowledge-KLVPVEYZ.cjs} +7 -6
  95. package/dist/{knowledge-YCQITBJB.js → knowledge-RZSFNR33.js} +5 -4
  96. package/dist/{logs-LZNXGOSW.js → logs-E5DOV5JO.js} +5 -4
  97. package/dist/{logs-DUVKSQU3.cjs → logs-OX3XTVL2.cjs} +14 -13
  98. package/dist/{policies-5H74FS4S.cjs → policies-FOSCIZGK.cjs} +10 -9
  99. package/dist/{policies-VYWOJ7IF.js → policies-MC2S4S5G.js} +5 -4
  100. package/dist/{remote-session-R6VAFESR.cjs → remote-session-DRFE5XZE.cjs} +4 -3
  101. package/dist/{remote-session-GSGZOFDX.js → remote-session-JQ2BPIE3.js} +2 -1
  102. package/dist/{software-update-MSDY3OLX.js → software-update-D4OEIH65.js} +7 -5
  103. package/dist/{software-update-VRRX5U4W.cjs → software-update-HOBSTWVO.cjs} +12 -10
  104. package/package.json +1 -1
  105. package/src/chat-protocol/nats-decoder.ts +10 -8
  106. package/src/chat-protocol/source-metadata.ts +25 -2
  107. package/src/components/chat/types/message.types.ts +21 -15
  108. package/src/components/chat/types/unified-chat-state.types.ts +1 -1
  109. package/src/components/chat/utils/process-historical-messages.ts +12 -4
  110. package/src/components/features/remote-session/index.ts +2 -0
  111. package/src/components/features/remote-session/remote-session-keep-modals.tsx +4 -4
  112. package/src/components/features/remote-session/remote-session-ticket-modals.tsx +140 -0
  113. package/src/components/ui/autocomplete.tsx +18 -4
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  ShellTypeBadge,
9
9
  SoftwareInfo,
10
10
  SoftwareSourceBadge
11
- } from "./chunk-YBS5QGON.js";
11
+ } from "./chunk-XGHGGBM3.js";
12
12
  import {
13
13
  AppHeader,
14
14
  AppLayout,
@@ -33,15 +33,15 @@ import {
33
33
  isMegaMenu,
34
34
  navLinkLabel,
35
35
  siteNavHasMobileMenus
36
- } from "./chunk-BVZ7W4HW.js";
36
+ } from "./chunk-YEMCCYIF.js";
37
37
  import {
38
38
  MobileNavigationDropdown,
39
39
  MultiLevelNavigation,
40
40
  StickySectionNav,
41
41
  useScrollSpy,
42
42
  useSectionNavigation
43
- } from "./chunk-H5R7U2D2.js";
44
- import "./chunk-DDWFCWOE.js";
43
+ } from "./chunk-NZ5BHDFZ.js";
44
+ import "./chunk-JPD4NXH6.js";
45
45
  import {
46
46
  AIEnrichButton,
47
47
  AIEnrichSection,
@@ -95,7 +95,6 @@ import {
95
95
  AuthBenefitsPanel,
96
96
  AuthProvidersList,
97
97
  AuthShell,
98
- Autocomplete,
99
98
  BackToLoginLink,
100
99
  Badge,
101
100
  BenefitCard,
@@ -220,7 +219,6 @@ import {
220
219
  GooglePlayBadge,
221
220
  HIDDEN_DEVICE_STATUSES,
222
221
  HeaderButton,
223
- HiddenTagsPopup,
224
222
  HighlightCard,
225
223
  HighlightCardGrid,
226
224
  HighlightConfigSection,
@@ -565,7 +563,7 @@ import {
565
563
  useTrackerClock,
566
564
  useWalkthroughVideo,
567
565
  usersCountLabel
568
- } from "./chunk-C5AGSZBT.js";
566
+ } from "./chunk-N2PF5CFX.js";
569
567
  import {
570
568
  Board,
571
569
  BoardColumn,
@@ -585,9 +583,12 @@ import {
585
583
  import "./chunk-LQYXMEYF.js";
586
584
  import "./chunk-4JPLYOS6.js";
587
585
  import {
586
+ AssignTicketModal,
587
+ Autocomplete,
588
588
  BACK_BUTTON_SKELETON_CLASS,
589
589
  BackButton,
590
590
  EntityImage,
591
+ HiddenTagsPopup,
591
592
  KeepRecordingModal,
592
593
  PageActions,
593
594
  PageLayout,
@@ -632,11 +633,12 @@ import {
632
633
  TITLE_BLOCK_MIN_HEIGHT,
633
634
  TitleBlock,
634
635
  TruncateText,
636
+ UnassignTicketModal,
635
637
  formatRemoteSessionElapsed,
636
638
  formatRemoteSessionOffset,
637
639
  usePageActionsBottomPadding,
638
640
  useRemoteSessionTimer
639
- } from "./chunk-NPAQSMRY.js";
641
+ } from "./chunk-LOYPRJWA.js";
640
642
  import {
641
643
  CommandApprovalToast,
642
644
  GraphQLIntrospector,
@@ -670,7 +672,6 @@ import {
670
672
  useActiveSection,
671
673
  useApiParams,
672
674
  useAuthenticatedImage,
673
- useAutoLimitTags,
674
675
  useBatchImages,
675
676
  useClaudeMirrorSrc,
676
677
  useContactSubmission,
@@ -680,7 +681,6 @@ import {
680
681
  useFocusTrap,
681
682
  useFormRescue,
682
683
  useHumanitySignals,
683
- useKeyboardCollisionPadding,
684
684
  useLocationHash,
685
685
  useMemoizedCallback,
686
686
  useNatsClient,
@@ -704,7 +704,7 @@ import {
704
704
  validateSchema,
705
705
  validateVariables,
706
706
  variablesToUrlParams
707
- } from "./chunk-6T3BTD6Q.js";
707
+ } from "./chunk-IWCPXJEE.js";
708
708
  import {
709
709
  DRAG_AND_DROP_MEDIA_QUERY,
710
710
  useDragAndDropEnabled,
@@ -712,6 +712,10 @@ import {
712
712
  useLocalStorage
713
713
  } from "./chunk-3K5ZLZE7.js";
714
714
  import "./chunk-HFL2F4RM.js";
715
+ import {
716
+ useAutoLimitTags,
717
+ useKeyboardCollisionPadding
718
+ } from "./chunk-YYYVS7CX.js";
715
719
  import "./chunk-WSDT7LYL.js";
716
720
  import "./chunk-G3GRYDMS.js";
717
721
  import {
@@ -1173,7 +1177,7 @@ import {
1173
1177
  withFirstTouchAttribution,
1174
1178
  withWalkthroughOpenParam,
1175
1179
  writeDismissCookie
1176
- } from "./chunk-ROBQ5TR7.js";
1180
+ } from "./chunk-JH2SIWPQ.js";
1177
1181
  import {
1178
1182
  ApprovalBatchMessage,
1179
1183
  ApprovalStatusTag,
@@ -2160,6 +2164,7 @@ export {
2160
2164
  AskDisplay,
2161
2165
  AskPrompts,
2162
2166
  AspectRatio,
2167
+ AssignTicketModal,
2163
2168
  AssigneeDropdown,
2164
2169
  AuditLoggingIcon,
2165
2170
  AuthBenefitsPanel,
@@ -3162,6 +3167,7 @@ export {
3162
3167
  TruncateText,
3163
3168
  TrustpilotIcon,
3164
3169
  UnarchiveChatModal,
3170
+ UnassignTicketModal,
3165
3171
  UnreadCountBadge,
3166
3172
  UnreadDot,
3167
3173
  UnsavedChangesChip,
@@ -8,20 +8,21 @@ var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
8
8
  var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
9
9
 
10
10
 
11
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
11
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
12
12
  require('./chunk-4HJRHEXD.cjs');
13
13
  require('./chunk-HQQE74RO.cjs');
14
14
  require('./chunk-DEY6XXGO.cjs');
15
- require('./chunk-PPXR22YC.cjs');
16
- require('./chunk-JO5TLJPM.cjs');
15
+ require('./chunk-Z5UWW3Z2.cjs');
16
+ require('./chunk-ZXCZYMN4.cjs');
17
17
  require('./chunk-B4NCVYEQ.cjs');
18
18
  require('./chunk-MZ4KBSH7.cjs');
19
+ require('./chunk-A6P6DHEZ.cjs');
19
20
  require('./chunk-WBNAEYTQ.cjs');
20
21
  require('./chunk-AUMKE74M.cjs');
21
22
  require('./chunk-LX22Y43B.cjs');
22
23
 
23
24
 
24
- var _chunkHETQETPVcjs = require('./chunk-HETQETPV.cjs');
25
+ var _chunkUWQWMGJ7cjs = require('./chunk-UWQWMGJ7.cjs');
25
26
  require('./chunk-KT3U3ZRP.cjs');
26
27
  require('./chunk-DC4RTYWK.cjs');
27
28
  require('./chunk-FFT56TYB.cjs');
@@ -96,10 +97,10 @@ function KnowledgeScreen(_props) {
96
97
  const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
97
98
  const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
98
99
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
99
- _chunkS2VWQX6Tcjs.KnowledgeBaseArticleView,
100
+ _chunkZ3CVSPO3cjs.KnowledgeBaseArticleView,
100
101
  {
101
102
  ...fixture.article,
102
- content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHETQETPVcjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
103
+ content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUWQWMGJ7cjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
103
104
  }
104
105
  ) });
105
106
  }
@@ -8,20 +8,21 @@ import {
8
8
  } from "./chunk-CYUUHFXL.js";
9
9
  import {
10
10
  KnowledgeBaseArticleView
11
- } from "./chunk-C5AGSZBT.js";
11
+ } from "./chunk-N2PF5CFX.js";
12
12
  import "./chunk-ILNN6QRW.js";
13
13
  import "./chunk-LQYXMEYF.js";
14
14
  import "./chunk-4JPLYOS6.js";
15
- import "./chunk-NPAQSMRY.js";
16
- import "./chunk-6T3BTD6Q.js";
15
+ import "./chunk-LOYPRJWA.js";
16
+ import "./chunk-IWCPXJEE.js";
17
17
  import "./chunk-3K5ZLZE7.js";
18
18
  import "./chunk-HFL2F4RM.js";
19
+ import "./chunk-YYYVS7CX.js";
19
20
  import "./chunk-WSDT7LYL.js";
20
21
  import "./chunk-G3GRYDMS.js";
21
22
  import "./chunk-PLWMIU72.js";
22
23
  import {
23
24
  SimpleMarkdownRenderer
24
- } from "./chunk-ROBQ5TR7.js";
25
+ } from "./chunk-JH2SIWPQ.js";
25
26
  import "./chunk-2NASBO7O.js";
26
27
  import "./chunk-KBJJQFYU.js";
27
28
  import "./chunk-P3JMAMHP.js";
@@ -16,20 +16,21 @@ import {
16
16
  ToolBadge,
17
17
  logSeverityVariant,
18
18
  logSourceLabels
19
- } from "./chunk-C5AGSZBT.js";
19
+ } from "./chunk-N2PF5CFX.js";
20
20
  import "./chunk-ILNN6QRW.js";
21
21
  import "./chunk-LQYXMEYF.js";
22
22
  import "./chunk-4JPLYOS6.js";
23
- import "./chunk-NPAQSMRY.js";
24
- import "./chunk-6T3BTD6Q.js";
23
+ import "./chunk-LOYPRJWA.js";
24
+ import "./chunk-IWCPXJEE.js";
25
25
  import "./chunk-3K5ZLZE7.js";
26
26
  import "./chunk-HFL2F4RM.js";
27
+ import "./chunk-YYYVS7CX.js";
27
28
  import "./chunk-WSDT7LYL.js";
28
29
  import "./chunk-G3GRYDMS.js";
29
30
  import "./chunk-PLWMIU72.js";
30
31
  import {
31
32
  normalizeToolTypeWithFallback
32
- } from "./chunk-ROBQ5TR7.js";
33
+ } from "./chunk-JH2SIWPQ.js";
33
34
  import "./chunk-2NASBO7O.js";
34
35
  import "./chunk-KBJJQFYU.js";
35
36
  import "./chunk-P3JMAMHP.js";
@@ -16,20 +16,21 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
19
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
20
20
  require('./chunk-4HJRHEXD.cjs');
21
21
  require('./chunk-HQQE74RO.cjs');
22
22
  require('./chunk-DEY6XXGO.cjs');
23
- require('./chunk-PPXR22YC.cjs');
24
- require('./chunk-JO5TLJPM.cjs');
23
+ require('./chunk-Z5UWW3Z2.cjs');
24
+ require('./chunk-ZXCZYMN4.cjs');
25
25
  require('./chunk-B4NCVYEQ.cjs');
26
26
  require('./chunk-MZ4KBSH7.cjs');
27
+ require('./chunk-A6P6DHEZ.cjs');
27
28
  require('./chunk-WBNAEYTQ.cjs');
28
29
  require('./chunk-AUMKE74M.cjs');
29
30
  require('./chunk-LX22Y43B.cjs');
30
31
 
31
32
 
32
- var _chunkHETQETPVcjs = require('./chunk-HETQETPV.cjs');
33
+ var _chunkUWQWMGJ7cjs = require('./chunk-UWQWMGJ7.cjs');
33
34
  require('./chunk-KT3U3ZRP.cjs');
34
35
  require('./chunk-DC4RTYWK.cjs');
35
36
  require('./chunk-FFT56TYB.cjs');
@@ -77,7 +78,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
77
78
  id: logId,
78
79
  logId,
79
80
  timestamp: displayTime(_chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, minutesAgo)),
80
- status: { label: severity, variant: _chunkS2VWQX6Tcjs.logSeverityVariant.call(void 0, severity) },
81
+ status: { label: severity, variant: _chunkZ3CVSPO3cjs.logSeverityVariant.call(void 0, severity) },
81
82
  source: { name: toolType, toolType },
82
83
  device: device2,
83
84
  description: { title: summary }
@@ -149,13 +150,13 @@ var NO_FILTERS = {};
149
150
  var ACTION_COLUMNS = ["copy", "quickView", "open"];
150
151
  var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
151
152
  var logHref = () => "#";
152
- var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.LogCopyIconButton, {});
153
+ var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.LogCopyIconButton, {});
153
154
  function LogsScreen({ compact = false }) {
154
155
  const [dock, setDock] = _react.useState.call(void 0, null);
155
156
  const selected = LOGS_FIXTURE_SELECTED;
156
157
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
157
158
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
158
- _chunkS2VWQX6Tcjs.LogsPageView,
159
+ _chunkZ3CVSPO3cjs.LogsPageView,
159
160
  {
160
161
  showHeader: false,
161
162
  className: "p-[var(--spacing-system-l)]",
@@ -163,7 +164,7 @@ function LogsScreen({ compact = false }) {
163
164
  onSearchChange: noop,
164
165
  onOpenFilters: noop,
165
166
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
166
- _chunkS2VWQX6Tcjs.LogsTableView,
167
+ _chunkZ3CVSPO3cjs.LogsTableView,
167
168
  {
168
169
  logs: LOGS_FIXTURE_ENTRIES,
169
170
  facets: LOGS_FIXTURE_FACETS,
@@ -177,8 +178,8 @@ function LogsScreen({ compact = false }) {
177
178
  )
178
179
  }
179
180
  ) }),
180
- !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
181
- _chunkS2VWQX6Tcjs.LogDrawer,
181
+ !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
+ _chunkZ3CVSPO3cjs.LogDrawer,
182
183
  {
183
184
  docked: true,
184
185
  isOpen: true,
@@ -190,12 +191,12 @@ function LogsScreen({ compact = false }) {
190
191
  { label: "Log ID", value: selected.logId },
191
192
  {
192
193
  label: "Source",
193
- value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.ToolBadge, { toolType: _chunkHETQETPVcjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
194
+ value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.ToolBadge, { toolType: _chunkUWQWMGJ7cjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
194
195
  },
195
- { label: "Device", value: _chunkS2VWQX6Tcjs.logSourceLabels.call(void 0, selected.device).deviceName }
196
+ { label: "Device", value: _chunkZ3CVSPO3cjs.logSourceLabels.call(void 0, selected.device).deviceName }
196
197
  ],
197
198
  deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
198
- _chunkS2VWQX6Tcjs.DeviceCard,
199
+ _chunkZ3CVSPO3cjs.DeviceCard,
199
200
  {
200
201
  ...LOGS_FIXTURE_DEVICE,
201
202
  actions: {
@@ -10,18 +10,19 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
13
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
14
14
  require('./chunk-4HJRHEXD.cjs');
15
15
  require('./chunk-HQQE74RO.cjs');
16
16
  require('./chunk-DEY6XXGO.cjs');
17
- require('./chunk-PPXR22YC.cjs');
18
- require('./chunk-JO5TLJPM.cjs');
17
+ require('./chunk-Z5UWW3Z2.cjs');
18
+ require('./chunk-ZXCZYMN4.cjs');
19
19
  require('./chunk-B4NCVYEQ.cjs');
20
20
  require('./chunk-MZ4KBSH7.cjs');
21
+ require('./chunk-A6P6DHEZ.cjs');
21
22
  require('./chunk-WBNAEYTQ.cjs');
22
23
  require('./chunk-AUMKE74M.cjs');
23
24
  require('./chunk-LX22Y43B.cjs');
24
- require('./chunk-HETQETPV.cjs');
25
+ require('./chunk-UWQWMGJ7.cjs');
25
26
  require('./chunk-KT3U3ZRP.cjs');
26
27
  require('./chunk-DC4RTYWK.cjs');
27
28
  require('./chunk-FFT56TYB.cjs');
@@ -82,14 +83,14 @@ var POLICIES = [
82
83
  policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
83
84
  ];
84
85
  var POLICIES_FIXTURE = {
85
- summary: _chunkS2VWQX6Tcjs.computePolicySummary.call(void 0, POLICIES),
86
+ summary: _chunkZ3CVSPO3cjs.computePolicySummary.call(void 0, POLICIES),
86
87
  rows: POLICIES.map((item) => ({
87
88
  id: item.id,
88
89
  name: item.name,
89
90
  description: item.description,
90
91
  critical: item.critical,
91
92
  severityLabel: item.critical ? "Critical" : "Low",
92
- status: _chunkS2VWQX6Tcjs.getPolicyTableStatus.call(void 0, item),
93
+ status: _chunkZ3CVSPO3cjs.getPolicyTableStatus.call(void 0, item),
93
94
  actions: [
94
95
  { label: "Policy Details", onClick: noop },
95
96
  { label: "Delete Policy", onClick: noop }
@@ -103,16 +104,16 @@ var POLICIES_FIXTURE = {
103
104
  var _jsxruntime = require('react/jsx-runtime');
104
105
  function PoliciesScreen({ compact = false }) {
105
106
  const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
106
- _chunkS2VWQX6Tcjs.PoliciesTable,
107
+ _chunkZ3CVSPO3cjs.PoliciesTable,
107
108
  {
108
109
  rows: POLICIES_FIXTURE.rows,
109
110
  rowAsLink: true,
110
- rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.DataTable.RowCount, {}),
111
+ rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.DataTable.RowCount, {}),
111
112
  emptyMessage: "No policies found."
112
113
  }
113
114
  );
114
115
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col gap-[var(--spacing-system-l)] bg-ods-bg p-[var(--spacing-system-l)]", children: [
115
- !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
116
+ !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
116
117
  table
117
118
  ] });
118
119
  }
@@ -10,18 +10,19 @@ import {
10
10
  PolicySummaryCards,
11
11
  computePolicySummary,
12
12
  getPolicyTableStatus
13
- } from "./chunk-C5AGSZBT.js";
13
+ } from "./chunk-N2PF5CFX.js";
14
14
  import "./chunk-ILNN6QRW.js";
15
15
  import "./chunk-LQYXMEYF.js";
16
16
  import "./chunk-4JPLYOS6.js";
17
- import "./chunk-NPAQSMRY.js";
18
- import "./chunk-6T3BTD6Q.js";
17
+ import "./chunk-LOYPRJWA.js";
18
+ import "./chunk-IWCPXJEE.js";
19
19
  import "./chunk-3K5ZLZE7.js";
20
20
  import "./chunk-HFL2F4RM.js";
21
+ import "./chunk-YYYVS7CX.js";
21
22
  import "./chunk-WSDT7LYL.js";
22
23
  import "./chunk-G3GRYDMS.js";
23
24
  import "./chunk-PLWMIU72.js";
24
- import "./chunk-ROBQ5TR7.js";
25
+ import "./chunk-JH2SIWPQ.js";
25
26
  import "./chunk-2NASBO7O.js";
26
27
  import "./chunk-KBJJQFYU.js";
27
28
  import "./chunk-P3JMAMHP.js";
@@ -10,7 +10,8 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkPPXR22YCcjs = require('./chunk-PPXR22YC.cjs');
13
+ var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
14
+ require('./chunk-A6P6DHEZ.cjs');
14
15
  require('./chunk-DC4RTYWK.cjs');
15
16
  require('./chunk-FFT56TYB.cjs');
16
17
  require('./chunk-PSVSEN4J.cjs');
@@ -174,7 +175,7 @@ function RemoteSessionScreen({ compact = false }) {
174
175
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col bg-ods-bg", children: [
175
176
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[var(--spacing-system-l)] flex-shrink-0" }),
176
177
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
177
- _chunkPPXR22YCcjs.RemoteDesktopView,
178
+ _chunkZ5UWW3Z2cjs.RemoteDesktopView,
178
179
  {
179
180
  ...fixture.view,
180
181
  onEnterFullscreen: noop,
@@ -185,7 +186,7 @@ function RemoteSessionScreen({ compact = false }) {
185
186
  screen: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RemoteDesktopPicture, { desktop: fixture.desktop }),
186
187
  chat: compact ? null : (
187
188
  // The side column needs the room of the wide layout; a narrow frame keeps the screen alone.
188
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPXR22YCcjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
189
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ5UWW3Z2cjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
189
190
  )
190
191
  }
191
192
  ) })
@@ -10,7 +10,8 @@ import {
10
10
  import {
11
11
  RemoteDesktopChatPanel,
12
12
  RemoteDesktopView
13
- } from "./chunk-NPAQSMRY.js";
13
+ } from "./chunk-LOYPRJWA.js";
14
+ import "./chunk-YYYVS7CX.js";
14
15
  import "./chunk-KBJJQFYU.js";
15
16
  import "./chunk-P3JMAMHP.js";
16
17
  import "./chunk-JHQ334WS.js";
@@ -11,23 +11,25 @@ import {
11
11
  DEMO_NOW
12
12
  } from "./chunk-CYUUHFXL.js";
13
13
  import {
14
- Autocomplete,
15
14
  DeviceSelector,
16
15
  PACKAGE_SEARCH_LABEL,
17
16
  PACKAGE_SEARCH_PLACEHOLDER,
18
17
  SoftwareActionForm
19
- } from "./chunk-C5AGSZBT.js";
18
+ } from "./chunk-N2PF5CFX.js";
20
19
  import "./chunk-ILNN6QRW.js";
21
20
  import "./chunk-LQYXMEYF.js";
22
21
  import "./chunk-4JPLYOS6.js";
23
- import "./chunk-NPAQSMRY.js";
24
- import "./chunk-6T3BTD6Q.js";
22
+ import {
23
+ Autocomplete
24
+ } from "./chunk-LOYPRJWA.js";
25
+ import "./chunk-IWCPXJEE.js";
25
26
  import "./chunk-3K5ZLZE7.js";
26
27
  import "./chunk-HFL2F4RM.js";
28
+ import "./chunk-YYYVS7CX.js";
27
29
  import "./chunk-WSDT7LYL.js";
28
30
  import "./chunk-G3GRYDMS.js";
29
31
  import "./chunk-PLWMIU72.js";
30
- import "./chunk-ROBQ5TR7.js";
32
+ import "./chunk-JH2SIWPQ.js";
31
33
  import "./chunk-2NASBO7O.js";
32
34
  import "./chunk-KBJJQFYU.js";
33
35
  import "./chunk-P3JMAMHP.js";
@@ -15,19 +15,21 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
15
15
 
16
16
 
17
17
 
18
-
19
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
18
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
20
19
  require('./chunk-4HJRHEXD.cjs');
21
20
  require('./chunk-HQQE74RO.cjs');
22
21
  require('./chunk-DEY6XXGO.cjs');
23
- require('./chunk-PPXR22YC.cjs');
24
- require('./chunk-JO5TLJPM.cjs');
22
+
23
+
24
+ var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
25
+ require('./chunk-ZXCZYMN4.cjs');
25
26
  require('./chunk-B4NCVYEQ.cjs');
26
27
  require('./chunk-MZ4KBSH7.cjs');
28
+ require('./chunk-A6P6DHEZ.cjs');
27
29
  require('./chunk-WBNAEYTQ.cjs');
28
30
  require('./chunk-AUMKE74M.cjs');
29
31
  require('./chunk-LX22Y43B.cjs');
30
- require('./chunk-HETQETPV.cjs');
32
+ require('./chunk-UWQWMGJ7.cjs');
31
33
  require('./chunk-KT3U3ZRP.cjs');
32
34
  require('./chunk-DC4RTYWK.cjs');
33
35
  require('./chunk-FFT56TYB.cjs');
@@ -114,14 +116,14 @@ var noop = () => {
114
116
  var HIDDEN_WHEN_COMPACT = ["organization"];
115
117
  function StaticPackageField({ value }) {
116
118
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
117
- _chunkS2VWQX6Tcjs.Autocomplete,
119
+ _chunkZ5UWW3Z2cjs.Autocomplete,
118
120
  {
119
- label: _chunkS2VWQX6Tcjs.PACKAGE_SEARCH_LABEL,
121
+ label: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_LABEL,
120
122
  labelVariant: "large",
121
123
  options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
122
124
  value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
123
125
  onChange: noop,
124
- placeholder: _chunkS2VWQX6Tcjs.PACKAGE_SEARCH_PLACEHOLDER
126
+ placeholder: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_PLACEHOLDER
125
127
  }
126
128
  );
127
129
  }
@@ -135,7 +137,7 @@ function SoftwareUpdateScreen({ compact = false }) {
135
137
  [fixture.devices, fixture.selectedIds]
136
138
  );
137
139
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
138
- _chunkS2VWQX6Tcjs.SoftwareActionForm,
140
+ _chunkZ3CVSPO3cjs.SoftwareActionForm,
139
141
  {
140
142
  action: fixture.action,
141
143
  showHeader: false,
@@ -147,7 +149,7 @@ function SoftwareUpdateScreen({ compact = false }) {
147
149
  initialValues: fixture.initialValues,
148
150
  renderPackageSearch,
149
151
  renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
150
- _chunkS2VWQX6Tcjs.DeviceSelector,
152
+ _chunkZ3CVSPO3cjs.DeviceSelector,
151
153
  {
152
154
  devices: selected,
153
155
  loading: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.716",
3
+ "version": "0.0.718",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@ import { MESSAGE_TYPE } from '../components/chat/types/message.types';
20
20
  import type { AskOptionData } from '../components/chat/types/message.types';
21
21
  import { ESCALATION_STATE, escalationResolvedStatus } from './events';
22
22
  import type { ApprovalToolCall, ChatStreamEvent } from './events';
23
- import { sourceMetadataEvent } from './source-metadata';
23
+ import { attachmentsEvent, sourceMetadataEvent } from './source-metadata';
24
24
  import { isRecord } from './wire-narrow';
25
25
 
26
26
  /** Minimal structural view of a NATS chunk (see `ChunkData` in
@@ -122,13 +122,15 @@ export function decodeNatsChunk(chunk: unknown): ChatStreamEvent | null {
122
122
  }
123
123
  return null;
124
124
 
125
- // Two chunk names, one payload and one decoder. `SOURCES` is the contract
126
- // the backend is moving to; `GUIDE` is the v2 envelope it ships in during
127
- // the rollout (see `MESSAGE_TYPE.GUIDE`). The chunk arrives BEFORE or
128
- // between the answer's text deltas, so the reducer — not this decoder —
129
- // owns attaching it to the right turn.
130
- case MESSAGE_TYPE.GUIDE:
131
- case MESSAGE_TYPE.SOURCES: {
125
+ // The chunk arrives BEFORE or between the answer's text deltas, so the
126
+ // reducer — not this decoder — owns attaching it to the right turn.
127
+ case MESSAGE_TYPE.ATTACHMENTS: {
128
+ const event = attachmentsEvent(data);
129
+ return event ? { ...event, ...seq } : null;
130
+ }
131
+
132
+ // The envelope `ATTACHMENTS` replaced (see `MESSAGE_TYPE.GUIDE`).
133
+ case MESSAGE_TYPE.GUIDE: {
132
134
  const event = sourceMetadataEvent(data.payload);
133
135
  return event ? { ...event, ...seq } : null;
134
136
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Source-metadata payload → `{ sources, refs }`.
3
3
  *
4
- * ONE decoder for two arrival paths: the live `GUIDE`/`SOURCES` NATS chunk and
5
- * the persisted row of the same name in dialog history. That is the whole point
4
+ * ONE decoder for two arrival paths: the live `ATTACHMENTS` NATS chunk and the
5
+ * persisted row of the same name in dialog history. That is the whole point
6
6
  * of putting it here rather than in either consumer — a reloaded thread has to
7
7
  * render identically to the live turn, and two parsers is exactly how that stops
8
8
  * being true.
@@ -313,6 +313,29 @@ export function sourceMetadataEvent(payload: unknown): SourcesEvent | null {
313
313
  };
314
314
  }
315
315
 
316
+ /** `null` fields dropped, at any depth. */
317
+ function withoutNulls(value: unknown): unknown {
318
+ if (Array.isArray(value)) return value.map(withoutNulls);
319
+ if (!isRecord(value)) return value;
320
+ return Object.fromEntries(
321
+ Object.entries(value)
322
+ .filter(([, field]) => field !== null)
323
+ .map(([key, field]) => [key, withoutNulls(field)]),
324
+ );
325
+ }
326
+
327
+ /**
328
+ * Decode one typed `ATTACHMENTS` record — the live chunk or the persisted
329
+ * `AttachmentsData` row, which carry `sources` / `videos` / `cards` directly.
330
+ *
331
+ * GraphQL answers an unset field with `null` where the live chunk omits it, so
332
+ * nulls are read as absent: a reloaded source must not gain a
333
+ * `targetPlatform: null` ("no destination") the live one never carried.
334
+ */
335
+ export function attachmentsEvent(record: unknown): SourcesEvent | null {
336
+ return sourceMetadataEvent(withoutNulls(record));
337
+ }
338
+
316
339
  /** What one assistant answer carries: its citations and its expandable refs. */
317
340
  export interface SourceMetadata {
318
341
  sources?: ChatSource[];