@manta-eu/react 0.11.0 → 0.13.0

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 (592) hide show
  1. package/README.md +59 -0
  2. package/dist/components/AppErrorBoundary.d.ts.map +1 -1
  3. package/dist/components/AppErrorBoundary.js +14 -11
  4. package/dist/components/AppErrorBoundary.js.map +1 -1
  5. package/dist/components/app-gate/AppGate.d.ts +8 -0
  6. package/dist/components/app-gate/AppGate.d.ts.map +1 -0
  7. package/dist/components/app-gate/AppGate.js +68 -0
  8. package/dist/components/app-gate/AppGate.js.map +1 -0
  9. package/dist/components/app-gate/AwaitingDatastoreStatus.d.ts +7 -0
  10. package/dist/components/app-gate/AwaitingDatastoreStatus.d.ts.map +1 -0
  11. package/dist/components/app-gate/AwaitingDatastoreStatus.js +19 -0
  12. package/dist/components/app-gate/AwaitingDatastoreStatus.js.map +1 -0
  13. package/dist/components/app-gate/EnterDatastoreRoute.d.ts +2 -0
  14. package/dist/components/app-gate/EnterDatastoreRoute.d.ts.map +1 -0
  15. package/dist/components/app-gate/EnterDatastoreRoute.js +25 -0
  16. package/dist/components/app-gate/EnterDatastoreRoute.js.map +1 -0
  17. package/dist/components/app-gate/ErrorRoute.d.ts +2 -0
  18. package/dist/components/app-gate/ErrorRoute.d.ts.map +1 -0
  19. package/dist/components/app-gate/ErrorRoute.js +27 -0
  20. package/dist/components/app-gate/ErrorRoute.js.map +1 -0
  21. package/dist/components/app-gate/FailureAlert.d.ts +5 -0
  22. package/dist/components/app-gate/FailureAlert.d.ts.map +1 -0
  23. package/dist/components/app-gate/FailureAlert.js +9 -0
  24. package/dist/components/app-gate/FailureAlert.js.map +1 -0
  25. package/dist/components/app-gate/NoDatastoreAccess.d.ts +8 -0
  26. package/dist/components/app-gate/NoDatastoreAccess.d.ts.map +1 -0
  27. package/dist/components/app-gate/NoDatastoreAccess.js +9 -0
  28. package/dist/components/app-gate/NoDatastoreAccess.js.map +1 -0
  29. package/dist/components/app-gate/NotFoundRoute.d.ts +2 -0
  30. package/dist/components/app-gate/NotFoundRoute.d.ts.map +1 -0
  31. package/dist/components/app-gate/NotFoundRoute.js +9 -0
  32. package/dist/components/app-gate/NotFoundRoute.js.map +1 -0
  33. package/dist/components/app-gate/PendingInvitations.d.ts +5 -0
  34. package/dist/components/app-gate/PendingInvitations.d.ts.map +1 -0
  35. package/dist/components/app-gate/PendingInvitations.js +58 -0
  36. package/dist/components/app-gate/PendingInvitations.js.map +1 -0
  37. package/dist/components/app-gate/ServiceError.d.ts +8 -0
  38. package/dist/components/app-gate/ServiceError.d.ts.map +1 -0
  39. package/dist/components/app-gate/ServiceError.js +10 -0
  40. package/dist/components/app-gate/ServiceError.js.map +1 -0
  41. package/dist/components/app-gate/index.d.ts +3 -0
  42. package/dist/components/app-gate/index.d.ts.map +1 -0
  43. package/dist/components/app-gate/index.js +3 -0
  44. package/dist/components/app-gate/index.js.map +1 -0
  45. package/dist/components/app-gate/sdk-route-elements.d.ts +23 -0
  46. package/dist/components/app-gate/sdk-route-elements.d.ts.map +1 -0
  47. package/dist/components/app-gate/sdk-route-elements.js +35 -0
  48. package/dist/components/app-gate/sdk-route-elements.js.map +1 -0
  49. package/dist/components/app-shell/AppShell.d.ts +7 -0
  50. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  51. package/dist/components/app-shell/AppShell.js +10 -0
  52. package/dist/components/app-shell/AppShell.js.map +1 -0
  53. package/dist/components/app-shell/AppShellRoutes.d.ts +9 -0
  54. package/dist/components/app-shell/AppShellRoutes.d.ts.map +1 -0
  55. package/dist/components/app-shell/AppShellRoutes.js +20 -0
  56. package/dist/components/app-shell/AppShellRoutes.js.map +1 -0
  57. package/dist/components/app-shell/GroupDatastores.d.ts +8 -0
  58. package/dist/components/app-shell/GroupDatastores.d.ts.map +1 -0
  59. package/dist/components/app-shell/GroupDatastores.js +15 -0
  60. package/dist/components/app-shell/GroupDatastores.js.map +1 -0
  61. package/dist/components/app-shell/GroupRoute.d.ts +2 -0
  62. package/dist/components/app-shell/GroupRoute.d.ts.map +1 -0
  63. package/dist/components/app-shell/GroupRoute.js +22 -0
  64. package/dist/components/app-shell/GroupRoute.js.map +1 -0
  65. package/dist/components/app-shell/index.d.ts +3 -0
  66. package/dist/components/app-shell/index.d.ts.map +1 -0
  67. package/dist/components/app-shell/index.js +3 -0
  68. package/dist/components/app-shell/index.js.map +1 -0
  69. package/dist/components/authenticated-chat/index.d.ts +1 -2
  70. package/dist/components/authenticated-chat/index.d.ts.map +1 -1
  71. package/dist/components/authenticated-chat/index.js +1 -12
  72. package/dist/components/authenticated-chat/index.js.map +1 -1
  73. package/dist/components/chat-view/Chat.d.ts +2 -1
  74. package/dist/components/chat-view/Chat.d.ts.map +1 -1
  75. package/dist/components/chat-view/Chat.js +3 -2
  76. package/dist/components/chat-view/Chat.js.map +1 -1
  77. package/dist/components/chat-view/MessageItem.d.ts.map +1 -1
  78. package/dist/components/chat-view/MessageItem.js +4 -2
  79. package/dist/components/chat-view/MessageItem.js.map +1 -1
  80. package/dist/components/chat-view/tool-part-rendering.d.ts +1 -0
  81. package/dist/components/chat-view/tool-part-rendering.d.ts.map +1 -1
  82. package/dist/components/chat-view/tool-part-rendering.js +8 -1
  83. package/dist/components/chat-view/tool-part-rendering.js.map +1 -1
  84. package/dist/components/chip/index.d.ts +1 -0
  85. package/dist/components/chip/index.d.ts.map +1 -1
  86. package/dist/components/chip/index.js +2 -1
  87. package/dist/components/chip/index.js.map +1 -1
  88. package/dist/components/embedded-chat/index.d.ts +1 -1
  89. package/dist/components/embedded-chat/index.d.ts.map +1 -1
  90. package/dist/components/embedded-chat/index.js +1 -1
  91. package/dist/components/embedded-chat/index.js.map +1 -1
  92. package/dist/components/input/input-date-time.d.ts +6 -0
  93. package/dist/components/input/input-date-time.d.ts.map +1 -1
  94. package/dist/components/input/input-date-time.js +2 -1
  95. package/dist/components/input/input-date-time.js.map +1 -1
  96. package/dist/components/input/input-date.d.ts +22 -0
  97. package/dist/components/input/input-date.d.ts.map +1 -1
  98. package/dist/components/input/input-date.js +28 -14
  99. package/dist/components/input/input-date.js.map +1 -1
  100. package/dist/components/input/input-time.d.ts +9 -0
  101. package/dist/components/input/input-time.d.ts.map +1 -1
  102. package/dist/components/input/input-time.js +29 -18
  103. package/dist/components/input/input-time.js.map +1 -1
  104. package/dist/components/layouts/RouteLayout.d.ts +0 -9
  105. package/dist/components/layouts/RouteLayout.d.ts.map +1 -1
  106. package/dist/components/layouts/RouteLayout.js +7 -4
  107. package/dist/components/layouts/RouteLayout.js.map +1 -1
  108. package/dist/components/layouts/Sidebar.d.ts +1 -8
  109. package/dist/components/layouts/Sidebar.d.ts.map +1 -1
  110. package/dist/components/layouts/Sidebar.js +7 -14
  111. package/dist/components/layouts/Sidebar.js.map +1 -1
  112. package/dist/components/plan-limits/PlanLimitsDialog.d.ts +20 -0
  113. package/dist/components/plan-limits/PlanLimitsDialog.d.ts.map +1 -0
  114. package/dist/components/plan-limits/PlanLimitsDialog.js +109 -0
  115. package/dist/components/plan-limits/PlanLimitsDialog.js.map +1 -0
  116. package/dist/components/plan-limits/index.d.ts +4 -0
  117. package/dist/components/plan-limits/index.d.ts.map +1 -0
  118. package/dist/components/plan-limits/index.js +2 -0
  119. package/dist/components/plan-limits/index.js.map +1 -0
  120. package/dist/components/plan-limits/plan-limits-client.d.ts +15 -0
  121. package/dist/components/plan-limits/plan-limits-client.d.ts.map +1 -0
  122. package/dist/components/plan-limits/plan-limits-client.js +44 -0
  123. package/dist/components/plan-limits/plan-limits-client.js.map +1 -0
  124. package/dist/components/plan-limits/plan-limits-model.d.ts +66 -0
  125. package/dist/components/plan-limits/plan-limits-model.d.ts.map +1 -0
  126. package/dist/components/plan-limits/plan-limits-model.js +123 -0
  127. package/dist/components/plan-limits/plan-limits-model.js.map +1 -0
  128. package/dist/components/plan-limits/plan-limits-save.d.ts +31 -0
  129. package/dist/components/plan-limits/plan-limits-save.d.ts.map +1 -0
  130. package/dist/components/plan-limits/plan-limits-save.js +43 -0
  131. package/dist/components/plan-limits/plan-limits-save.js.map +1 -0
  132. package/dist/components/planning/PlanLimitsAction.d.ts +6 -0
  133. package/dist/components/planning/PlanLimitsAction.d.ts.map +1 -0
  134. package/dist/components/planning/PlanLimitsAction.js +19 -0
  135. package/dist/components/planning/PlanLimitsAction.js.map +1 -0
  136. package/dist/components/slider/index.d.ts.map +1 -1
  137. package/dist/components/slider/index.js +2 -1
  138. package/dist/components/slider/index.js.map +1 -1
  139. package/dist/datastore-picker/datastore-picker-rows.d.ts +7 -0
  140. package/dist/datastore-picker/datastore-picker-rows.d.ts.map +1 -1
  141. package/dist/datastore-picker/datastore-picker-rows.js +26 -22
  142. package/dist/datastore-picker/datastore-picker-rows.js.map +1 -1
  143. package/dist/globals.css +85 -2
  144. package/dist/hooks/use-action-plans-list.d.ts +3 -0
  145. package/dist/hooks/use-action-plans-list.d.ts.map +1 -1
  146. package/dist/hooks/use-action-plans-list.js +8 -9
  147. package/dist/hooks/use-action-plans-list.js.map +1 -1
  148. package/dist/hooks/use-activity-feed.d.ts +10 -1
  149. package/dist/hooks/use-activity-feed.d.ts.map +1 -1
  150. package/dist/hooks/use-activity-feed.js +9 -11
  151. package/dist/hooks/use-activity-feed.js.map +1 -1
  152. package/dist/hooks/use-entity.d.ts +4 -3
  153. package/dist/hooks/use-entity.d.ts.map +1 -1
  154. package/dist/hooks/use-entity.js +4 -4
  155. package/dist/hooks/use-entity.js.map +1 -1
  156. package/dist/hooks/use-manual-actions.d.ts +1 -1
  157. package/dist/hooks/use-manual-actions.d.ts.map +1 -1
  158. package/dist/hooks/use-manual-actions.js +5 -5
  159. package/dist/hooks/use-manual-actions.js.map +1 -1
  160. package/dist/hooks/use-unsaved-changes-warning.d.ts +2 -0
  161. package/dist/hooks/use-unsaved-changes-warning.d.ts.map +1 -0
  162. package/dist/hooks/use-unsaved-changes-warning.js +13 -0
  163. package/dist/hooks/use-unsaved-changes-warning.js.map +1 -0
  164. package/dist/hooks/useAuth.d.ts.map +1 -1
  165. package/dist/hooks/useAuth.js +4 -3
  166. package/dist/hooks/useAuth.js.map +1 -1
  167. package/dist/hooks/useChatPanelSync.d.ts.map +1 -1
  168. package/dist/hooks/useChatPanelSync.js +2 -3
  169. package/dist/hooks/useChatPanelSync.js.map +1 -1
  170. package/dist/hooks/useDatastoreSelection.d.ts.map +1 -1
  171. package/dist/hooks/useDatastoreSelection.js +11 -4
  172. package/dist/hooks/useDatastoreSelection.js.map +1 -1
  173. package/dist/hooks/useExecuteAction.d.ts +1 -0
  174. package/dist/hooks/useExecuteAction.d.ts.map +1 -1
  175. package/dist/hooks/useExecuteAction.js.map +1 -1
  176. package/dist/hooks/useLoginRedirect.d.ts +6 -0
  177. package/dist/hooks/useLoginRedirect.d.ts.map +1 -0
  178. package/dist/hooks/useLoginRedirect.js +51 -0
  179. package/dist/hooks/useLoginRedirect.js.map +1 -0
  180. package/dist/hooks/usePlanLimits.d.ts +18 -0
  181. package/dist/hooks/usePlanLimits.d.ts.map +1 -0
  182. package/dist/hooks/usePlanLimits.js +56 -0
  183. package/dist/hooks/usePlanLimits.js.map +1 -0
  184. package/dist/ldo-ui.d.ts +1 -1
  185. package/dist/ldo-ui.d.ts.map +1 -1
  186. package/dist/ldo-ui.js.map +1 -1
  187. package/dist/lib/app-tools.d.ts +18 -0
  188. package/dist/lib/app-tools.d.ts.map +1 -0
  189. package/dist/lib/app-tools.js +42 -0
  190. package/dist/lib/app-tools.js.map +1 -0
  191. package/dist/lib/chat-types.d.ts +3 -0
  192. package/dist/lib/chat-types.d.ts.map +1 -1
  193. package/dist/lib/chat-types.js.map +1 -1
  194. package/dist/lib/datastore-route-table.d.ts +3 -0
  195. package/dist/lib/datastore-route-table.d.ts.map +1 -1
  196. package/dist/lib/datastore-route-table.js +6 -0
  197. package/dist/lib/datastore-route-table.js.map +1 -1
  198. package/dist/lib/graphql-error.d.ts +2 -0
  199. package/dist/lib/graphql-error.d.ts.map +1 -0
  200. package/dist/lib/graphql-error.js +7 -0
  201. package/dist/lib/graphql-error.js.map +1 -0
  202. package/dist/lib/update-notice.d.ts +2 -1
  203. package/dist/lib/update-notice.d.ts.map +1 -1
  204. package/dist/lib/update-notice.js +8 -2
  205. package/dist/lib/update-notice.js.map +1 -1
  206. package/dist/providers/ActiveChatProvider.d.ts +2 -0
  207. package/dist/providers/ActiveChatProvider.d.ts.map +1 -1
  208. package/dist/providers/ActiveChatProvider.js +6 -3
  209. package/dist/providers/ActiveChatProvider.js.map +1 -1
  210. package/dist/providers/ActiveDatastoreProvider.d.ts +12 -0
  211. package/dist/providers/ActiveDatastoreProvider.d.ts.map +1 -1
  212. package/dist/providers/ActiveDatastoreProvider.js +114 -11
  213. package/dist/providers/ActiveDatastoreProvider.js.map +1 -1
  214. package/dist/providers/AuthContext.d.ts +1 -0
  215. package/dist/providers/AuthContext.d.ts.map +1 -1
  216. package/dist/providers/AuthContext.js.map +1 -1
  217. package/dist/providers/KnowledgeGraphStateContext.d.ts +2 -2
  218. package/dist/providers/KnowledgeGraphStateContext.d.ts.map +1 -1
  219. package/dist/providers/KnowledgeGraphStateProvider.d.ts.map +1 -1
  220. package/dist/providers/KnowledgeGraphStateProvider.js +8 -49
  221. package/dist/providers/KnowledgeGraphStateProvider.js.map +1 -1
  222. package/dist/providers/MantaClientProvider.d.ts.map +1 -1
  223. package/dist/providers/MantaClientProvider.js +3 -3
  224. package/dist/providers/MantaClientProvider.js.map +1 -1
  225. package/dist/providers/index.d.ts +3 -1
  226. package/dist/providers/index.d.ts.map +1 -1
  227. package/dist/providers/index.js +2 -2
  228. package/dist/providers/index.js.map +1 -1
  229. package/dist/routes/activity/detail/ActivityDetailRoute.d.ts.map +1 -1
  230. package/dist/routes/activity/detail/ActivityDetailRoute.js +1 -3
  231. package/dist/routes/activity/detail/ActivityDetailRoute.js.map +1 -1
  232. package/dist/routes/activity/index.d.ts.map +1 -1
  233. package/dist/routes/activity/index.js +1 -3
  234. package/dist/routes/activity/index.js.map +1 -1
  235. package/dist/routes/chat/index.d.ts +2 -21
  236. package/dist/routes/chat/index.d.ts.map +1 -1
  237. package/dist/routes/chat/index.js +4 -2
  238. package/dist/routes/chat/index.js.map +1 -1
  239. package/dist/routes/data-collection/index.d.ts.map +1 -1
  240. package/dist/routes/data-collection/index.js +1 -3
  241. package/dist/routes/data-collection/index.js.map +1 -1
  242. package/dist/routes/data-explorer/components/DataExplorerLayout.d.ts.map +1 -1
  243. package/dist/routes/data-explorer/components/DataExplorerLayout.js +1 -3
  244. package/dist/routes/data-explorer/components/DataExplorerLayout.js.map +1 -1
  245. package/dist/routes/data-explorer/components/class-detail/UsedByRules.js +2 -2
  246. package/dist/routes/data-explorer/components/class-detail/UsedByRules.js.map +1 -1
  247. package/dist/routes/datastores/index.d.ts.map +1 -1
  248. package/dist/routes/datastores/index.js +2 -2
  249. package/dist/routes/datastores/index.js.map +1 -1
  250. package/dist/routes/explain/index.d.ts.map +1 -1
  251. package/dist/routes/explain/index.js +1 -3
  252. package/dist/routes/explain/index.js.map +1 -1
  253. package/dist/routes/integrations/components/connect-forms/DashConnectForm.d.ts.map +1 -1
  254. package/dist/routes/integrations/components/connect-forms/DashConnectForm.js +0 -1
  255. package/dist/routes/integrations/components/connect-forms/DashConnectForm.js.map +1 -1
  256. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.d.ts.map +1 -1
  257. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.js +0 -1
  258. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.js.map +1 -1
  259. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.d.ts.map +1 -1
  260. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.js +0 -1
  261. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.js.map +1 -1
  262. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.d.ts.map +1 -1
  263. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.js +0 -1
  264. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.js.map +1 -1
  265. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.d.ts +0 -1
  266. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.d.ts.map +1 -1
  267. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.js +3 -2
  268. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.js.map +1 -1
  269. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.d.ts.map +1 -1
  270. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.js +0 -1
  271. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.js.map +1 -1
  272. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.d.ts.map +1 -1
  273. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.js +0 -1
  274. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.js.map +1 -1
  275. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.d.ts +0 -1
  276. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.d.ts.map +1 -1
  277. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.js +4 -3
  278. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.js.map +1 -1
  279. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.d.ts.map +1 -1
  280. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.js +0 -1
  281. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.js.map +1 -1
  282. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.d.ts.map +1 -1
  283. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.js +0 -1
  284. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.js.map +1 -1
  285. package/dist/routes/integrations/types.d.ts +2 -1
  286. package/dist/routes/integrations/types.d.ts.map +1 -1
  287. package/dist/routes/integrations/types.js +16 -0
  288. package/dist/routes/integrations/types.js.map +1 -1
  289. package/dist/routes/memories/components/DateValueInput.d.ts +16 -0
  290. package/dist/routes/memories/components/DateValueInput.d.ts.map +1 -0
  291. package/dist/routes/memories/components/DateValueInput.js +35 -0
  292. package/dist/routes/memories/components/DateValueInput.js.map +1 -0
  293. package/dist/routes/memories/components/EntityValuePicker.d.ts +11 -0
  294. package/dist/routes/memories/components/EntityValuePicker.d.ts.map +1 -0
  295. package/dist/routes/memories/components/EntityValuePicker.js +61 -0
  296. package/dist/routes/memories/components/EntityValuePicker.js.map +1 -0
  297. package/dist/routes/memories/components/FieldLabel.d.ts +12 -0
  298. package/dist/routes/memories/components/FieldLabel.d.ts.map +1 -0
  299. package/dist/routes/memories/components/FieldLabel.js +12 -0
  300. package/dist/routes/memories/components/FieldLabel.js.map +1 -0
  301. package/dist/routes/memories/components/ImportanceSlider.d.ts +2 -0
  302. package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -1
  303. package/dist/routes/memories/components/ImportanceSlider.js +4 -1
  304. package/dist/routes/memories/components/ImportanceSlider.js.map +1 -1
  305. package/dist/routes/memories/components/MemoriesFilters.d.ts +2 -2
  306. package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -1
  307. package/dist/routes/memories/components/MemoriesFilters.js.map +1 -1
  308. package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -1
  309. package/dist/routes/memories/components/MemoriesPanel.js +4 -0
  310. package/dist/routes/memories/components/MemoriesPanel.js.map +1 -1
  311. package/dist/routes/memories/components/MemoriesTabPanel.d.ts +2 -2
  312. package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -1
  313. package/dist/routes/memories/components/MemoryActions.d.ts +2 -0
  314. package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -1
  315. package/dist/routes/memories/components/MemoryActions.js +3 -3
  316. package/dist/routes/memories/components/MemoryActions.js.map +1 -1
  317. package/dist/routes/memories/components/MemoryFields.d.ts +15 -3
  318. package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -1
  319. package/dist/routes/memories/components/MemoryFields.js +34 -5
  320. package/dist/routes/memories/components/MemoryFields.js.map +1 -1
  321. package/dist/routes/memories/components/MemoryFormDialog.d.ts +6 -3
  322. package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -1
  323. package/dist/routes/memories/components/MemoryFormDialog.js +105 -59
  324. package/dist/routes/memories/components/MemoryFormDialog.js.map +1 -1
  325. package/dist/routes/memories/components/MemoryPropertyFields.d.ts +10 -0
  326. package/dist/routes/memories/components/MemoryPropertyFields.d.ts.map +1 -0
  327. package/dist/routes/memories/components/MemoryPropertyFields.js +67 -0
  328. package/dist/routes/memories/components/MemoryPropertyFields.js.map +1 -0
  329. package/dist/routes/memories/components/RuleDraftDialog.d.ts +7 -0
  330. package/dist/routes/memories/components/RuleDraftDialog.d.ts.map +1 -0
  331. package/dist/routes/memories/components/RuleDraftDialog.js +20 -0
  332. package/dist/routes/memories/components/RuleDraftDialog.js.map +1 -0
  333. package/dist/routes/memories/components/SchemasTab.d.ts +17 -2
  334. package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -1
  335. package/dist/routes/memories/components/SchemasTab.js +146 -28
  336. package/dist/routes/memories/components/SchemasTab.js.map +1 -1
  337. package/dist/routes/memories/components/badges.d.ts +7 -0
  338. package/dist/routes/memories/components/badges.d.ts.map +1 -1
  339. package/dist/routes/memories/components/badges.js +11 -3
  340. package/dist/routes/memories/components/badges.js.map +1 -1
  341. package/dist/routes/memories/hooks/useMemoryColumns.d.ts +4 -2
  342. package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -1
  343. package/dist/routes/memories/hooks/useMemoryColumns.js +31 -15
  344. package/dist/routes/memories/hooks/useMemoryColumns.js.map +1 -1
  345. package/dist/routes/memories/index.d.ts +2 -1
  346. package/dist/routes/memories/index.d.ts.map +1 -1
  347. package/dist/routes/memories/index.js +72 -30
  348. package/dist/routes/memories/index.js.map +1 -1
  349. package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -1
  350. package/dist/routes/memories/memory-mutation-input.js +5 -2
  351. package/dist/routes/memories/memory-mutation-input.js.map +1 -1
  352. package/dist/routes/memories/memory-property-values.d.ts +13 -0
  353. package/dist/routes/memories/memory-property-values.d.ts.map +1 -0
  354. package/dist/routes/memories/memory-property-values.js +40 -0
  355. package/dist/routes/memories/memory-property-values.js.map +1 -0
  356. package/dist/routes/memories/schemas/AllowedValuesField.d.ts +14 -0
  357. package/dist/routes/memories/schemas/AllowedValuesField.d.ts.map +1 -0
  358. package/dist/routes/memories/schemas/AllowedValuesField.js +64 -0
  359. package/dist/routes/memories/schemas/AllowedValuesField.js.map +1 -0
  360. package/dist/routes/memories/schemas/MemorySchemaPage.d.ts +127 -0
  361. package/dist/routes/memories/schemas/MemorySchemaPage.d.ts.map +1 -0
  362. package/dist/routes/memories/schemas/MemorySchemaPage.js +285 -0
  363. package/dist/routes/memories/schemas/MemorySchemaPage.js.map +1 -0
  364. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.d.ts +20 -0
  365. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.d.ts.map +1 -0
  366. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.js +54 -0
  367. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.js.map +1 -0
  368. package/dist/routes/memories/schemas/SchemaConfirmDialog.d.ts +15 -0
  369. package/dist/routes/memories/schemas/SchemaConfirmDialog.d.ts.map +1 -0
  370. package/dist/routes/memories/schemas/SchemaConfirmDialog.js +8 -0
  371. package/dist/routes/memories/schemas/SchemaConfirmDialog.js.map +1 -0
  372. package/dist/routes/memories/schemas/SchemaDetailPage.d.ts +15 -0
  373. package/dist/routes/memories/schemas/SchemaDetailPage.d.ts.map +1 -0
  374. package/dist/routes/memories/schemas/SchemaDetailPage.js +74 -0
  375. package/dist/routes/memories/schemas/SchemaDetailPage.js.map +1 -0
  376. package/dist/routes/memories/schemas/SchemaEditorForm.d.ts +10 -0
  377. package/dist/routes/memories/schemas/SchemaEditorForm.d.ts.map +1 -0
  378. package/dist/routes/memories/schemas/SchemaEditorForm.js +242 -0
  379. package/dist/routes/memories/schemas/SchemaEditorForm.js.map +1 -0
  380. package/dist/routes/memories/schemas/SchemaTemplatesDialog.d.ts +13 -0
  381. package/dist/routes/memories/schemas/SchemaTemplatesDialog.d.ts.map +1 -0
  382. package/dist/routes/memories/schemas/SchemaTemplatesDialog.js +13 -0
  383. package/dist/routes/memories/schemas/SchemaTemplatesDialog.js.map +1 -0
  384. package/dist/routes/memories/schemas/ValueTypeSelect.d.ts +12 -0
  385. package/dist/routes/memories/schemas/ValueTypeSelect.d.ts.map +1 -0
  386. package/dist/routes/memories/schemas/ValueTypeSelect.js +10 -0
  387. package/dist/routes/memories/schemas/ValueTypeSelect.js.map +1 -0
  388. package/dist/routes/memories/schemas/schema-form.d.ts +72 -0
  389. package/dist/routes/memories/schemas/schema-form.d.ts.map +1 -0
  390. package/dist/routes/memories/schemas/schema-form.js +279 -0
  391. package/dist/routes/memories/schemas/schema-form.js.map +1 -0
  392. package/dist/routes/memories/schemas/schema-impact.d.ts +13 -0
  393. package/dist/routes/memories/schemas/schema-impact.d.ts.map +1 -0
  394. package/dist/routes/memories/schemas/schema-impact.js +40 -0
  395. package/dist/routes/memories/schemas/schema-impact.js.map +1 -0
  396. package/dist/routes/memories/schemas/schema-route.d.ts +18 -0
  397. package/dist/routes/memories/schemas/schema-route.d.ts.map +1 -0
  398. package/dist/routes/memories/schemas/schema-route.js +21 -0
  399. package/dist/routes/memories/schemas/schema-route.js.map +1 -0
  400. package/dist/routes/memories/schemas/schema-rule-context.d.ts +17 -0
  401. package/dist/routes/memories/schemas/schema-rule-context.d.ts.map +1 -0
  402. package/dist/routes/memories/schemas/schema-rule-context.js +83 -0
  403. package/dist/routes/memories/schemas/schema-rule-context.js.map +1 -0
  404. package/dist/routes/memories/schemas/schema-table.d.ts +11 -0
  405. package/dist/routes/memories/schemas/schema-table.d.ts.map +1 -0
  406. package/dist/routes/memories/schemas/schema-table.js +34 -0
  407. package/dist/routes/memories/schemas/schema-table.js.map +1 -0
  408. package/dist/routes/memories/schemas/useMemorySchemaMutations.d.ts +32 -0
  409. package/dist/routes/memories/schemas/useMemorySchemaMutations.d.ts.map +1 -0
  410. package/dist/routes/memories/schemas/useMemorySchemaMutations.js +31 -0
  411. package/dist/routes/memories/schemas/useMemorySchemaMutations.js.map +1 -0
  412. package/dist/routes/memories/schemas/useSchemaChangeReview.d.ts +51 -0
  413. package/dist/routes/memories/schemas/useSchemaChangeReview.d.ts.map +1 -0
  414. package/dist/routes/memories/schemas/useSchemaChangeReview.js +175 -0
  415. package/dist/routes/memories/schemas/useSchemaChangeReview.js.map +1 -0
  416. package/dist/routes/memories/schemas/useSchemaLifecycle.d.ts +46 -0
  417. package/dist/routes/memories/schemas/useSchemaLifecycle.d.ts.map +1 -0
  418. package/dist/routes/memories/schemas/useSchemaLifecycle.js +93 -0
  419. package/dist/routes/memories/schemas/useSchemaLifecycle.js.map +1 -0
  420. package/dist/routes/memories/schemas/useSchemasTab.d.ts +18 -0
  421. package/dist/routes/memories/schemas/useSchemasTab.d.ts.map +1 -0
  422. package/dist/routes/memories/schemas/useSchemasTab.js +92 -0
  423. package/dist/routes/memories/schemas/useSchemasTab.js.map +1 -0
  424. package/dist/routes/plans/index.d.ts.map +1 -1
  425. package/dist/routes/plans/index.js +2 -2
  426. package/dist/routes/plans/index.js.map +1 -1
  427. package/dist/routes/rules/components/CreateRuleChatModal.d.ts +7 -1
  428. package/dist/routes/rules/components/CreateRuleChatModal.d.ts.map +1 -1
  429. package/dist/routes/rules/components/CreateRuleChatModal.js +9 -4
  430. package/dist/routes/rules/components/CreateRuleChatModal.js.map +1 -1
  431. package/dist/routes/rules/components/RuleValueControls.d.ts.map +1 -1
  432. package/dist/routes/rules/components/RuleValueControls.js +3 -24
  433. package/dist/routes/rules/components/RuleValueControls.js.map +1 -1
  434. package/dist/routes/rules/components/rule-value-input.d.ts +11 -0
  435. package/dist/routes/rules/components/rule-value-input.d.ts.map +1 -0
  436. package/dist/routes/rules/components/rule-value-input.js +24 -0
  437. package/dist/routes/rules/components/rule-value-input.js.map +1 -0
  438. package/dist/routes/rules/components/rules.utils.d.ts +5 -0
  439. package/dist/routes/rules/components/rules.utils.d.ts.map +1 -1
  440. package/dist/routes/rules/components/rules.utils.js +18 -3
  441. package/dist/routes/rules/components/rules.utils.js.map +1 -1
  442. package/dist/routes/rules/pages.d.ts +1 -1
  443. package/dist/routes/rules/pages.d.ts.map +1 -1
  444. package/dist/routes/rules/pages.js +1 -1
  445. package/dist/routes/rules/pages.js.map +1 -1
  446. package/dist/shared/graph-derived-queries.d.ts.map +1 -1
  447. package/dist/shared/graph-derived-queries.js +4 -1
  448. package/dist/shared/graph-derived-queries.js.map +1 -1
  449. package/dist/worker/index.d.ts +22 -0
  450. package/dist/worker/index.d.ts.map +1 -0
  451. package/dist/worker/index.js +110 -0
  452. package/dist/worker/index.js.map +1 -0
  453. package/dist/worker/policy.d.ts +21 -0
  454. package/dist/worker/policy.d.ts.map +1 -0
  455. package/dist/worker/policy.js +42 -0
  456. package/dist/worker/policy.js.map +1 -0
  457. package/dist/worker/proxy.d.ts +14 -0
  458. package/dist/worker/proxy.d.ts.map +1 -0
  459. package/dist/worker/proxy.js +58 -0
  460. package/dist/worker/proxy.js.map +1 -0
  461. package/dist/worker/session.d.ts +24 -0
  462. package/dist/worker/session.d.ts.map +1 -0
  463. package/dist/worker/session.js +72 -0
  464. package/dist/worker/session.js.map +1 -0
  465. package/package.json +52 -7
  466. package/src/app-subpaths.json +9 -1
  467. package/src/components/AppErrorBoundary.tsx +14 -11
  468. package/src/components/app-gate/AppGate.tsx +122 -0
  469. package/src/components/app-gate/AwaitingDatastoreStatus.tsx +35 -0
  470. package/src/components/app-gate/EnterDatastoreRoute.tsx +30 -0
  471. package/src/components/app-gate/ErrorRoute.tsx +43 -0
  472. package/src/components/app-gate/FailureAlert.tsx +15 -0
  473. package/src/components/app-gate/NoDatastoreAccess.tsx +26 -0
  474. package/src/components/app-gate/NotFoundRoute.tsx +20 -0
  475. package/src/components/app-gate/PendingInvitations.tsx +134 -0
  476. package/src/components/app-gate/ServiceError.tsx +27 -0
  477. package/src/components/app-gate/index.ts +2 -0
  478. package/src/components/app-gate/sdk-route-elements.tsx +46 -0
  479. package/src/components/app-shell/AppShell.tsx +22 -0
  480. package/src/components/app-shell/AppShellRoutes.tsx +34 -0
  481. package/src/components/app-shell/GroupDatastores.tsx +28 -0
  482. package/src/components/app-shell/GroupRoute.tsx +34 -0
  483. package/src/components/app-shell/index.ts +2 -0
  484. package/src/components/authenticated-chat/index.tsx +1 -34
  485. package/src/components/chat-view/Chat.tsx +9 -3
  486. package/src/components/chat-view/MessageItem.tsx +10 -2
  487. package/src/components/chat-view/tool-part-rendering.ts +10 -1
  488. package/src/components/chip/index.tsx +8 -1
  489. package/src/components/embedded-chat/index.tsx +2 -1
  490. package/src/components/input/input-date-time.tsx +10 -3
  491. package/src/components/input/input-date.tsx +93 -21
  492. package/src/components/input/input-time.tsx +59 -26
  493. package/src/components/layouts/RouteLayout.tsx +11 -50
  494. package/src/components/layouts/Sidebar.tsx +21 -23
  495. package/src/components/plan-limits/PlanLimitsDialog.tsx +331 -0
  496. package/src/components/plan-limits/index.tsx +3 -0
  497. package/src/components/plan-limits/plan-limits-client.ts +71 -0
  498. package/src/components/plan-limits/plan-limits-model.ts +180 -0
  499. package/src/components/plan-limits/plan-limits-save.ts +68 -0
  500. package/src/components/planning/PlanLimitsAction.tsx +44 -0
  501. package/src/components/slider/index.tsx +2 -1
  502. package/src/datastore-picker/datastore-picker-rows.ts +36 -20
  503. package/src/hooks/use-action-plans-list.ts +20 -12
  504. package/src/hooks/use-activity-feed.ts +30 -14
  505. package/src/hooks/use-entity.ts +11 -6
  506. package/src/hooks/use-manual-actions.ts +11 -6
  507. package/src/hooks/use-unsaved-changes-warning.ts +12 -0
  508. package/src/hooks/useAuth.ts +5 -3
  509. package/src/hooks/useChatPanelSync.ts +2 -3
  510. package/src/hooks/useDatastoreSelection.ts +10 -4
  511. package/src/hooks/useExecuteAction.ts +2 -0
  512. package/src/hooks/useLoginRedirect.ts +66 -0
  513. package/src/hooks/usePlanLimits.ts +97 -0
  514. package/src/ldo-ui.ts +1 -0
  515. package/src/lib/app-tools.ts +63 -0
  516. package/src/lib/chat-types.ts +5 -0
  517. package/src/lib/datastore-route-table.ts +9 -0
  518. package/src/lib/graphql-error.ts +7 -0
  519. package/src/lib/update-notice.ts +12 -2
  520. package/src/providers/ActiveChatProvider.tsx +8 -3
  521. package/src/providers/ActiveDatastoreProvider.tsx +179 -9
  522. package/src/providers/AuthContext.ts +1 -0
  523. package/src/providers/KnowledgeGraphStateContext.ts +2 -2
  524. package/src/providers/KnowledgeGraphStateProvider.tsx +13 -65
  525. package/src/providers/MantaClientProvider.tsx +8 -3
  526. package/src/providers/index.tsx +7 -4
  527. package/src/routes/activity/detail/ActivityDetailRoute.tsx +1 -10
  528. package/src/routes/activity/index.tsx +1 -10
  529. package/src/routes/chat/index.tsx +11 -47
  530. package/src/routes/data-collection/index.tsx +1 -11
  531. package/src/routes/data-explorer/components/DataExplorerLayout.tsx +1 -11
  532. package/src/routes/data-explorer/components/class-detail/UsedByRules.tsx +2 -2
  533. package/src/routes/datastores/index.tsx +3 -9
  534. package/src/routes/explain/index.tsx +1 -11
  535. package/src/routes/integrations/components/connect-forms/DashConnectForm.tsx +0 -1
  536. package/src/routes/integrations/components/connect-forms/GoogleAdsConnectForm.tsx +0 -1
  537. package/src/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.tsx +0 -1
  538. package/src/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.tsx +0 -1
  539. package/src/routes/integrations/components/connect-forms/InferalCredentialConnectForm.tsx +5 -3
  540. package/src/routes/integrations/components/connect-forms/KlaviyoConnectForm.tsx +0 -1
  541. package/src/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.tsx +0 -1
  542. package/src/routes/integrations/components/connect-forms/OAuthSetupConnectForm.tsx +7 -7
  543. package/src/routes/integrations/components/connect-forms/TriplewhaleConnectForm.tsx +0 -1
  544. package/src/routes/integrations/components/connect-forms/WoocommerceConnectForm.tsx +0 -1
  545. package/src/routes/integrations/types.ts +22 -6
  546. package/src/routes/memories/components/DateValueInput.tsx +72 -0
  547. package/src/routes/memories/components/EntityValuePicker.tsx +132 -0
  548. package/src/routes/memories/components/FieldLabel.tsx +49 -0
  549. package/src/routes/memories/components/ImportanceSlider.tsx +5 -1
  550. package/src/routes/memories/components/MemoriesFilters.tsx +2 -2
  551. package/src/routes/memories/components/MemoriesPanel.tsx +7 -3
  552. package/src/routes/memories/components/MemoriesTabPanel.tsx +2 -2
  553. package/src/routes/memories/components/MemoryActions.tsx +26 -2
  554. package/src/routes/memories/components/MemoryFields.tsx +75 -12
  555. package/src/routes/memories/components/MemoryFormDialog.tsx +305 -199
  556. package/src/routes/memories/components/MemoryPropertyFields.tsx +288 -0
  557. package/src/routes/memories/components/RuleDraftDialog.tsx +35 -0
  558. package/src/routes/memories/components/SchemasTab.tsx +481 -118
  559. package/src/routes/memories/components/badges.tsx +16 -4
  560. package/src/routes/memories/hooks/useMemoryColumns.tsx +69 -35
  561. package/src/routes/memories/index.tsx +125 -51
  562. package/src/routes/memories/memory-mutation-input.ts +5 -2
  563. package/src/routes/memories/memory-property-values.ts +83 -0
  564. package/src/routes/memories/schemas/AllowedValuesField.tsx +188 -0
  565. package/src/routes/memories/schemas/MemorySchemaPage.tsx +476 -0
  566. package/src/routes/memories/schemas/SchemaChangeReviewDialog.tsx +290 -0
  567. package/src/routes/memories/schemas/SchemaConfirmDialog.tsx +62 -0
  568. package/src/routes/memories/schemas/SchemaDetailPage.tsx +373 -0
  569. package/src/routes/memories/schemas/SchemaEditorForm.tsx +990 -0
  570. package/src/routes/memories/schemas/SchemaTemplatesDialog.tsx +81 -0
  571. package/src/routes/memories/schemas/ValueTypeSelect.tsx +37 -0
  572. package/src/routes/memories/schemas/schema-form.ts +360 -0
  573. package/src/routes/memories/schemas/schema-impact.ts +66 -0
  574. package/src/routes/memories/schemas/schema-route.ts +30 -0
  575. package/src/routes/memories/schemas/schema-rule-context.ts +103 -0
  576. package/src/routes/memories/schemas/schema-table.ts +54 -0
  577. package/src/routes/memories/schemas/useMemorySchemaMutations.ts +49 -0
  578. package/src/routes/memories/schemas/useSchemaChangeReview.ts +238 -0
  579. package/src/routes/memories/schemas/useSchemaLifecycle.tsx +151 -0
  580. package/src/routes/memories/schemas/useSchemasTab.ts +119 -0
  581. package/src/routes/plans/index.tsx +3 -14
  582. package/src/routes/rules/components/CreateRuleChatModal.tsx +46 -22
  583. package/src/routes/rules/components/RuleValueControls.tsx +3 -35
  584. package/src/routes/rules/components/rule-value-input.ts +34 -0
  585. package/src/routes/rules/components/rules.utils.ts +25 -3
  586. package/src/routes/rules/pages.ts +5 -1
  587. package/src/shared/graph-derived-queries.ts +6 -0
  588. package/src/themes/manta-dark.css +4 -0
  589. package/src/worker/index.ts +175 -0
  590. package/src/worker/policy.ts +62 -0
  591. package/src/worker/proxy.ts +101 -0
  592. package/src/worker/session.ts +111 -0
@@ -0,0 +1,42 @@
1
+ import { isWebSocket } from "@manta-eu/auth/request-origin";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { operationRootFieldsOf } from "@manta-eu/client/shared/operation-root-fields";
4
+ import { parse } from "graphql";
5
+ export const crossOriginBlockedMessage = "Cross-origin requests to this app's proxy are blocked.";
6
+ export const methodBlockedMessage = "This proxy does not allow that method on this path.";
7
+ export const graphqlShapeMessage = "This proxy only forwards GraphQL as a JSON body, with nothing in the query string.";
8
+ export const graphqlBlockedMessage = "This proxy only forwards the SDK's GraphQL operations and the app's own.";
9
+ const maxGraphQLTokens = 5_000;
10
+ const maxGraphQLQueryLength = 100_000;
11
+ export function isJsonGraphQLRequest(request) {
12
+ const mediaType = request.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase();
13
+ return mediaType === "application/json" && !isPresent(new URL(request.url).search);
14
+ }
15
+ export function methodAllowed(route, request) {
16
+ return isWebSocket(request) ? route.websocket === true : route.methods.includes(request.method);
17
+ }
18
+ export function namedOperations(bodyText) {
19
+ try {
20
+ const body = JSON.parse(bodyText);
21
+ if (typeof body !== "object" || body === null || !("query" in body) || typeof body.query !== "string")
22
+ return undefined;
23
+ if (body.query.length > maxGraphQLQueryLength)
24
+ return undefined;
25
+ const operations = operationRootFieldsOf(parse(body.query, { maxTokens: maxGraphQLTokens }));
26
+ return operations.every((operation) => isPresent(operation.name))
27
+ ? operations
28
+ : undefined;
29
+ }
30
+ catch {
31
+ return undefined;
32
+ }
33
+ }
34
+ export function graphqlAllowed(operations, allowlist) {
35
+ if (!isPresent(operations))
36
+ return false;
37
+ return operations.every(({ name, fields }) => {
38
+ const allowed = Object.hasOwn(allowlist, name) ? allowlist[name] : undefined;
39
+ return isPresent(allowed) && fields.every((field) => allowed.includes(field));
40
+ });
41
+ }
42
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/worker/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAA4B,MAAM,+CAA+C,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAahC,MAAM,CAAC,MAAM,yBAAyB,GAAG,wDAAwD,CAAC;AAClG,MAAM,CAAC,MAAM,oBAAoB,GAAG,qDAAqD,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,oFAAoF,CAAC;AACxH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0EAA0E,CAAC;AAEhH,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,SAAS,KAAK,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,OAAgB;IAC/D,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YACnG,OAAO,SAAS,CAAC;QAEnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,qBAAqB;YAAE,OAAO,SAAS,CAAC;QAEhE,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAE7F,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAA+B,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5F,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAwC,EAAE,SAA2B;IAClG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7E,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type SessionCookies, type SessionState } from "./session.js";
2
+ export type ProxyArgs = {
3
+ request: Request;
4
+ agentsUrl: string;
5
+ agents?: {
6
+ fetch: typeof fetch;
7
+ };
8
+ cookies: SessionCookies;
9
+ session?: SessionState;
10
+ body?: string;
11
+ clearSession?: boolean;
12
+ };
13
+ export declare function proxyToAgents(args: ProxyArgs): Promise<Response>;
14
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/worker/proxy.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,KAAK,CAAA;KAAE,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAkEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYtE"}
@@ -0,0 +1,58 @@
1
+ import { isWebSocket } from "@manta-eu/auth/request-origin";
2
+ import { forwardedOriginHeader } from "@manta-eu/client/shared/constants";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { equals } from "ramda";
5
+ import { captureUpstreamCookies, clearSessionSetCookies, readSession, sessionSetCookies, upstreamCookieHeader, } from "./session.js";
6
+ function upstreamRequest(args) {
7
+ const { request, agentsUrl, session, body } = args;
8
+ const incoming = new URL(request.url);
9
+ const url = new URL(`${agentsUrl.replace(/\/+$/, "")}${incoming.pathname}${incoming.search}`);
10
+ const headers = new Headers(request.headers);
11
+ for (const name of ["host", "cookie", "authorization", "referer", "sec-fetch-site"])
12
+ headers.delete(name);
13
+ headers.set("origin", url.origin);
14
+ headers.set(forwardedOriginHeader, incoming.origin);
15
+ if (isPresent(session))
16
+ headers.set("cookie", upstreamCookieHeader(session));
17
+ const sendsBody = !isWebSocket(request) && request.method !== "GET" && request.method !== "HEAD";
18
+ const init = {
19
+ method: request.method,
20
+ headers,
21
+ redirect: "manual",
22
+ ...(sendsBody && { body: body ?? request.body, duplex: "half" }),
23
+ };
24
+ return { url, init };
25
+ }
26
+ function withAppCookies(response, written) {
27
+ const upgraded = response.webSocket;
28
+ if (!isPresent(written) && !isPresent(response.headers.getSetCookie()))
29
+ return response;
30
+ const headers = new Headers(response.headers);
31
+ headers.delete("set-cookie");
32
+ for (const cookie of written)
33
+ headers.append("set-cookie", cookie);
34
+ if (response.status === 101 || isPresent(upgraded)) {
35
+ return new Response(null, { status: response.status, headers, webSocket: upgraded });
36
+ }
37
+ headers.delete("content-encoding");
38
+ headers.delete("content-length");
39
+ return new Response(response.body, { status: response.status, statusText: response.statusText, headers });
40
+ }
41
+ async function cookiesToWrite(args) {
42
+ const { cookies, request, previous, after, clear } = args;
43
+ if (!clear && equals(previous, after))
44
+ return [];
45
+ return clear || !isPresent(after.upstreamCookies)
46
+ ? clearSessionSetCookies(cookies, request)
47
+ : sessionSetCookies({ cookies, state: after, request });
48
+ }
49
+ export async function proxyToAgents(args) {
50
+ const { request, agentsUrl, agents, cookies, session, body, clearSession = false } = args;
51
+ const before = session ?? (await readSession(cookies, request));
52
+ const { url, init } = upstreamRequest({ request, agentsUrl, session: before, body });
53
+ const response = await (agents?.fetch ?? fetch)(url, init);
54
+ const previous = before ?? { upstreamCookies: {} };
55
+ const after = captureUpstreamCookies({ state: previous, response });
56
+ return withAppCookies(response, await cookiesToWrite({ cookies, request, previous, after, clear: clearSession }));
57
+ }
58
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/worker/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,WAAW,CAAC;AAoBnB,SAAS,eAAe,CAAC,IAAyB;IAChD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1G,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7E,MAAM,SAAS,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;IACjG,MAAM,IAAI,GAAsC;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,QAAQ,EAAE,QAAQ;QAClB,GAAG,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAe,EAAE,CAAC;KAC1E,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB,EAAE,OAAiB;IAC3D,MAAM,QAAQ,GAAI,QAA+C,CAAC,SAAS,CAAC;IAE5E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IAExF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7B,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEnE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEjC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAwB;IACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE1D,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC;QAC/C,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAe;IACjD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAE1F,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEpE,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACpH,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type SessionState = {
2
+ upstreamCookies: Record<string, string>;
3
+ };
4
+ export type SessionCookies = {
5
+ prefix: string;
6
+ secret: string;
7
+ };
8
+ type SessionSetCookiesArgs = {
9
+ cookies: SessionCookies;
10
+ state: SessionState;
11
+ request: Request;
12
+ };
13
+ type CaptureArgs = {
14
+ state: SessionState;
15
+ response: Response;
16
+ };
17
+ export declare function sessionSetCookies(args: SessionSetCookiesArgs): Promise<string[]>;
18
+ export declare function clearSessionSetCookies(cookies: SessionCookies, request: Request): string[];
19
+ export declare function readSession(cookies: SessionCookies, request: Request): Promise<SessionState | undefined>;
20
+ export declare function isSignedIn(state: SessionState | undefined): state is SessionState;
21
+ export declare function upstreamCookieHeader(state: SessionState): string;
22
+ export declare function captureUpstreamCookies(args: CaptureArgs): SessionState;
23
+ export {};
24
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/worker/session.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GAAG;IAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,KAAK,qBAAqB,GAAG;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhG,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAU/D,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWtF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAE1F;AAgBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAI9G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,KAAK,IAAI,YAAY,CAEjF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAIhE;AAeD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAoBtE"}
@@ -0,0 +1,72 @@
1
+ import { cookiesOf, expiredChunkCookies, httpOnlyCookie, purposeKey, sealedChunkCookies, sessionMaxAgeSeconds, unsealedChunks, } from "@manta-eu/auth/sealed-cookies";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { identity, memoizeWith } from "ramda";
4
+ import { match } from "ts-pattern";
5
+ const agentsSessionCookie = "auth";
6
+ function setCookieFor(request) {
7
+ return httpOnlyCookie(new URL(request.url).protocol === "https:");
8
+ }
9
+ const keyFor = memoizeWith(identity, (secret) => purposeKey(secret, "agents-session"));
10
+ export async function sessionSetCookies(args) {
11
+ const { cookies, state, request } = args;
12
+ return sealedChunkCookies({
13
+ cookies: cookiesOf(request),
14
+ name: cookies.prefix,
15
+ setCookie: setCookieFor(request),
16
+ key: await keyFor(cookies.secret),
17
+ value: state,
18
+ maxAge: sessionMaxAgeSeconds,
19
+ });
20
+ }
21
+ export function clearSessionSetCookies(cookies, request) {
22
+ return expiredChunkCookies({ cookies: cookiesOf(request), name: cookies.prefix, setCookie: setCookieFor(request) });
23
+ }
24
+ function asSessionState(value) {
25
+ if (typeof value !== "object" || value === null || !("upstreamCookies" in value))
26
+ return undefined;
27
+ const { upstreamCookies } = value;
28
+ if (typeof upstreamCookies !== "object" || upstreamCookies === null)
29
+ return undefined;
30
+ const entries = Object.entries(upstreamCookies).filter((entry) => isPresent(entry[0]) && typeof entry[1] === "string");
31
+ return isPresent(entries) ? { upstreamCookies: Object.fromEntries(entries) } : undefined;
32
+ }
33
+ export async function readSession(cookies, request) {
34
+ const key = await keyFor(cookies.secret);
35
+ return asSessionState(await unsealedChunks({ cookies: cookiesOf(request), name: cookies.prefix, key }));
36
+ }
37
+ export function isSignedIn(state) {
38
+ return isPresent(state?.upstreamCookies[agentsSessionCookie]);
39
+ }
40
+ export function upstreamCookieHeader(state) {
41
+ return Object.entries(state.upstreamCookies)
42
+ .map(([name, value]) => `${name}=${value}`)
43
+ .join("; ");
44
+ }
45
+ function expires(attributes) {
46
+ return attributes.some((attribute) => {
47
+ const [rawName = "", ...rest] = attribute.split("=");
48
+ const value = rest.join("=").trim();
49
+ return match(rawName.trim().toLowerCase())
50
+ .with("max-age", () => isPresent(value) && Number(value) <= 0)
51
+ .with("expires", () => Date.parse(value) <= Date.now())
52
+ .otherwise(() => false);
53
+ });
54
+ }
55
+ export function captureUpstreamCookies(args) {
56
+ const { state, response } = args;
57
+ const jar = { ...state.upstreamCookies };
58
+ for (const header of response.headers.getSetCookie()) {
59
+ const [pair = "", ...attributes] = header.split(";");
60
+ const index = pair.indexOf("=");
61
+ const name = pair.slice(0, Math.max(index, 0)).trim();
62
+ if (!isPresent(name))
63
+ continue;
64
+ const value = pair.slice(index + 1).trim();
65
+ if (!isPresent(value) || expires(attributes))
66
+ delete jar[name];
67
+ else
68
+ jar[name] = value;
69
+ }
70
+ return { upstreamCookies: jar };
71
+ }
72
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/worker/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manta-eu/react",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "The Manta design system, knowledge-graph UI and agent components",
5
5
  "homepage": "https://developers.manta.eu",
6
6
  "keywords": [
@@ -13,6 +13,9 @@
13
13
  ],
14
14
  "license": "MIT",
15
15
  "type": "module",
16
+ "sideEffects": [
17
+ "**/*.css"
18
+ ],
16
19
  "exports": {
17
20
  ".": {
18
21
  "manta-source": "./src/index.ts",
@@ -134,6 +137,16 @@
134
137
  "types": "./dist/components/AppErrorBoundary.d.ts",
135
138
  "import": "./dist/components/AppErrorBoundary.js"
136
139
  },
140
+ "./components/app-gate": {
141
+ "manta-source": "./src/components/app-gate/index.ts",
142
+ "types": "./dist/components/app-gate/index.d.ts",
143
+ "import": "./dist/components/app-gate/index.js"
144
+ },
145
+ "./components/app-shell": {
146
+ "manta-source": "./src/components/app-shell/index.ts",
147
+ "types": "./dist/components/app-shell/index.d.ts",
148
+ "import": "./dist/components/app-shell/index.js"
149
+ },
137
150
  "./components/authenticated-chat": {
138
151
  "manta-source": "./src/components/authenticated-chat/index.tsx",
139
152
  "types": "./dist/components/authenticated-chat/index.d.ts",
@@ -244,6 +257,11 @@
244
257
  "types": "./dist/components/planning/ManualActionCard.d.ts",
245
258
  "import": "./dist/components/planning/ManualActionCard.js"
246
259
  },
260
+ "./components/planning/PlanLimitsAction": {
261
+ "manta-source": "./src/components/planning/PlanLimitsAction.tsx",
262
+ "types": "./dist/components/planning/PlanLimitsAction.d.ts",
263
+ "import": "./dist/components/planning/PlanLimitsAction.js"
264
+ },
247
265
  "./components/planning/ManualActionList": {
248
266
  "manta-source": "./src/components/planning/ManualActionList.tsx",
249
267
  "types": "./dist/components/planning/ManualActionList.d.ts",
@@ -356,6 +374,16 @@
356
374
  "types": "./dist/hooks/useActionPlanExecution.d.ts",
357
375
  "import": "./dist/hooks/useActionPlanExecution.js"
358
376
  },
377
+ "./hooks/usePlanLimits": {
378
+ "manta-source": "./src/hooks/usePlanLimits.ts",
379
+ "types": "./dist/hooks/usePlanLimits.d.ts",
380
+ "import": "./dist/hooks/usePlanLimits.js"
381
+ },
382
+ "./hooks/useExecuteAction": {
383
+ "manta-source": "./src/hooks/useExecuteAction.ts",
384
+ "types": "./dist/hooks/useExecuteAction.d.ts",
385
+ "import": "./dist/hooks/useExecuteAction.js"
386
+ },
359
387
  "./hooks/useResolveManualAction": {
360
388
  "manta-source": "./src/hooks/useResolveManualAction.ts",
361
389
  "types": "./dist/hooks/useResolveManualAction.d.ts",
@@ -471,6 +499,11 @@
471
499
  "types": "./dist/lib/format-date.d.ts",
472
500
  "import": "./dist/lib/format-date.js"
473
501
  },
502
+ "./lib/graphql-error": {
503
+ "manta-source": "./src/lib/graphql-error.ts",
504
+ "types": "./dist/lib/graphql-error.d.ts",
505
+ "import": "./dist/lib/graphql-error.js"
506
+ },
474
507
  "./lib/iri-labels": {
475
508
  "manta-source": "./src/lib/iri-labels.ts",
476
509
  "types": "./dist/lib/iri-labels.d.ts",
@@ -561,6 +594,11 @@
561
594
  "types": "./dist/components/pill/index.d.ts",
562
595
  "import": "./dist/components/pill/index.js"
563
596
  },
597
+ "./plan-limits": {
598
+ "manta-source": "./src/components/plan-limits/index.tsx",
599
+ "types": "./dist/components/plan-limits/index.d.ts",
600
+ "import": "./dist/components/plan-limits/index.js"
601
+ },
564
602
  "./plan-row": {
565
603
  "manta-source": "./src/components/plan-row/index.tsx",
566
604
  "types": "./dist/components/plan-row/index.d.ts",
@@ -1075,6 +1113,11 @@
1075
1113
  "manta-source": "./src/lib/use-toggle-set.ts",
1076
1114
  "types": "./dist/lib/use-toggle-set.d.ts",
1077
1115
  "import": "./dist/lib/use-toggle-set.js"
1116
+ },
1117
+ "./worker": {
1118
+ "manta-source": "./src/worker/index.ts",
1119
+ "types": "./dist/worker/index.d.ts",
1120
+ "import": "./dist/worker/index.js"
1078
1121
  }
1079
1122
  },
1080
1123
  "files": [
@@ -1086,6 +1129,7 @@
1086
1129
  "!src/coverage"
1087
1130
  ],
1088
1131
  "dependencies": {
1132
+ "@ai-sdk/react": "^4.0.101",
1089
1133
  "@cloudflare/think": "0.17.0",
1090
1134
  "@dagrejs/dagre": "^1.1.4",
1091
1135
  "@hookform/resolvers": "^5.7.1",
@@ -1125,6 +1169,7 @@
1125
1169
  "entities": "^6.0.1",
1126
1170
  "fuse.js": "^7.1.0",
1127
1171
  "graphology": "^0.26.0",
1172
+ "graphql": "^16.13.1",
1128
1173
  "graphql-request": "^7.3.1",
1129
1174
  "hono": "^4.9.8",
1130
1175
  "input-otp": "^1.4.2",
@@ -1154,12 +1199,12 @@
1154
1199
  "usehooks-ts": "^3.1.1",
1155
1200
  "zod": "^4.6.7",
1156
1201
  "zustand": "^5.0.2",
1157
- "@manta-eu/client": "0.11.0",
1158
- "@manta-eu/datalog-parser": "0.11.0",
1159
- "@manta-eu/auth": "0.11.0",
1160
- "@manta-eu/ldo": "0.11.0",
1161
- "@manta-eu/lib": "0.11.0",
1162
- "@manta-eu/rdf-lib": "0.11.0"
1202
+ "@manta-eu/auth": "0.13.0",
1203
+ "@manta-eu/client": "0.13.0",
1204
+ "@manta-eu/datalog-parser": "0.13.0",
1205
+ "@manta-eu/lib": "0.13.0",
1206
+ "@manta-eu/rdf-lib": "0.13.0",
1207
+ "@manta-eu/ldo": "0.13.0"
1163
1208
  },
1164
1209
  "peerDependencies": {
1165
1210
  "@ulb-darmstadt/shacl-form": "^2.1.1-rc1",
@@ -13,6 +13,8 @@
13
13
  "./components/AppErrorBoundary",
14
14
  "./components/ErrorBoundary",
15
15
  "./components/ai-elements/conversation",
16
+ "./components/app-gate",
17
+ "./components/app-shell",
16
18
  "./components/authenticated-chat",
17
19
  "./components/chat-view/LoadingView",
18
20
  "./components/datastore-management/tree",
@@ -34,6 +36,7 @@
34
36
  "./components/planning/ExecutionProgressBar",
35
37
  "./components/planning/ManualActionCard",
36
38
  "./components/planning/ManualActionList",
39
+ "./components/planning/PlanLimitsAction",
37
40
  "./components/planning/RunHistoryTable",
38
41
  "./components/planning/TopBar",
39
42
  "./components/planning/actioning-view-utils",
@@ -53,6 +56,8 @@
53
56
  "./hooks/useAuth",
54
57
  "./hooks/useDatastoreSelection",
55
58
  "./hooks/useFittedPagination",
59
+ "./hooks/usePlanLimits",
60
+ "./hooks/useExecuteAction",
56
61
  "./hooks/useResolveManualAction",
57
62
  "./hooks/useSelectedModel",
58
63
  "./hooks/useUserMessageScroller",
@@ -64,6 +69,7 @@
64
69
  "./lib/find-latest-showcase",
65
70
  "./lib/find-latest-staged-rule",
66
71
  "./lib/format-date",
72
+ "./lib/graphql-error",
67
73
  "./lib/message-grouping",
68
74
  "./lib/streamdown-plugins",
69
75
  "./lib/structured-data",
@@ -77,6 +83,7 @@
77
83
  "./modal",
78
84
  "./pagination",
79
85
  "./pill",
86
+ "./plan-limits",
80
87
  "./plan-row",
81
88
  "./popover",
82
89
  "./progress",
@@ -166,5 +173,6 @@
166
173
  "./use-formatted-countdown",
167
174
  "./use-platform",
168
175
  "./use-recent-commands",
169
- "./use-toggle-set"
176
+ "./use-toggle-set",
177
+ "./worker"
170
178
  ]
@@ -2,17 +2,20 @@ import type { ReactNode } from "react";
2
2
  import { ErrorBoundary } from "./ErrorBoundary";
3
3
  import { StatusScreen } from "./layouts/StatusScreen";
4
4
  import { Button } from "#components/button/index";
5
+ import { updateNoticeAppName } from "#lib/update-notice";
5
6
 
6
- const copy = {
7
- staleChunk: {
8
- title: "A new version of Manta is available",
9
- description: "This page is running an older version. Reload when you're ready.",
10
- },
11
- unexpected: {
12
- title: "Something went wrong",
13
- description: "Manta hit an unexpected error.",
14
- },
15
- };
7
+ function copyFor(appName: string) {
8
+ return {
9
+ staleChunk: {
10
+ title: `A new version of ${appName} is available`,
11
+ description: "This page is running an older version. Reload when you're ready.",
12
+ },
13
+ unexpected: {
14
+ title: "Something went wrong",
15
+ description: `${appName} hit an unexpected error.`,
16
+ },
17
+ };
18
+ }
16
19
 
17
20
  export type AppErrorBoundaryProps = {
18
21
  children: ReactNode;
@@ -24,7 +27,7 @@ export function AppErrorBoundary(props: AppErrorBoundaryProps) {
24
27
  fullScreen
25
28
  fallback={({ staleChunk }) => (
26
29
  <div className="h-screen" data-testid={staleChunk ? "update-notice-screen" : "app-error-screen"}>
27
- <StatusScreen {...(staleChunk ? copy.staleChunk : copy.unexpected)} role="alert">
30
+ <StatusScreen {...copyFor(updateNoticeAppName())[staleChunk ? "staleChunk" : "unexpected"]} role="alert">
28
31
  <Button variant="secondary" onClick={() => window.location.reload()}>
29
32
  Reload
30
33
  </Button>
@@ -0,0 +1,122 @@
1
+ import type { ReactNode } from "react";
2
+ import { useLocation } from "react-router";
3
+ import { AwaitingDatastoreStatus } from "./AwaitingDatastoreStatus";
4
+ import { ErrorRoute } from "./ErrorRoute";
5
+ import { NoDatastoreAccess } from "./NoDatastoreAccess";
6
+ import { PendingInvitations } from "./PendingInvitations";
7
+ import { ServiceError } from "./ServiceError";
8
+ import { LoadingView } from "#components/chat-view/LoadingView";
9
+ import { useAuth } from "#hooks/useAuth";
10
+ import { buildLoginUrl, useLoginRedirect } from "#hooks/useLoginRedirect";
11
+ import { enableDatastoreManagement } from "#lib/build-config";
12
+ import { useActiveDatastore } from "#providers/ActiveDatastoreProvider";
13
+ import { AuthContext, type AuthContextValue } from "#providers/AuthContext";
14
+ import { useMantaClient } from "#providers/MantaClientProvider";
15
+ import { errorRoutePath } from "@manta-eu/client/shared/constants";
16
+ import { isPresent } from "@manta-eu/lib/present";
17
+
18
+ export type AppGateProps = {
19
+ children: ReactNode;
20
+ context?: Pick<AuthContextValue, "canDisconnectCustomApps" | "hasProfilePage">;
21
+ };
22
+
23
+ export function AppGate(props: AppGateProps) {
24
+ const { children, context } = props;
25
+
26
+ const { pathname } = useLocation();
27
+
28
+ const auth = useAuth();
29
+
30
+ const { authError } = useLoginRedirect(auth);
31
+
32
+ const { mantaBaseUrl } = useMantaClient();
33
+
34
+ const { datastoreId: routeDatastoreId, enterDatastore } = useActiveDatastore();
35
+
36
+ const {
37
+ isLoading,
38
+ error,
39
+ user,
40
+ datastore,
41
+ datastores,
42
+ isOperator,
43
+ inOrganization,
44
+ logout,
45
+ contextFailed,
46
+ datastoreAccessGranted,
47
+ canManageTeam,
48
+ canManageCustomApps,
49
+ orgRoles,
50
+ canManageIntegrations,
51
+ canManageStreams,
52
+ canManageSharedMemories,
53
+ canSwitchDatastore,
54
+ allowedModels,
55
+ } = auth;
56
+
57
+ if (pathname === errorRoutePath) return <ErrorRoute />;
58
+
59
+ if (isLoading) return <LoadingView />;
60
+
61
+ if (isPresent(error)) return <ServiceError message={error} />;
62
+
63
+ if (isPresent(authError)) {
64
+ return (
65
+ <ServiceError
66
+ title="Sign-in failed"
67
+ message={authError}
68
+ onRetry={() => window.location.replace(buildLoginUrl(mantaBaseUrl))}
69
+ onSignOut={() => void logout()}
70
+ />
71
+ );
72
+ }
73
+
74
+ if (!isPresent(user) || (!isOperator && !isPresent(datastore))) {
75
+ if (contextFailed) return <ServiceError message="Failed to load your account. Please try again." />;
76
+
77
+ if (isPresent(user) && !isOperator) {
78
+ function onSignOut() {
79
+ void logout();
80
+ }
81
+
82
+ return inOrganization ? (
83
+ <AwaitingDatastoreStatus inOrganization onSignOut={onSignOut} />
84
+ ) : (
85
+ <PendingInvitations onSignOut={onSignOut} />
86
+ );
87
+ }
88
+
89
+ return <LoadingView />;
90
+ }
91
+
92
+ if (isPresent(routeDatastoreId) && !datastoreAccessGranted) {
93
+ return (
94
+ <NoDatastoreAccess
95
+ requestedDatastoreId={routeDatastoreId}
96
+ datastore={datastore}
97
+ onEnter={() => isPresent(datastore) && enterDatastore(datastore.id, { replace: true })}
98
+ />
99
+ );
100
+ }
101
+
102
+ const authContextValue: AuthContextValue = {
103
+ datastore,
104
+ datastores,
105
+ user,
106
+ logout,
107
+ isOperator,
108
+ canManageTeam,
109
+ canManageDatastores: isOperator && enableDatastoreManagement,
110
+ canManageCustomApps,
111
+ inOrganization,
112
+ orgRoles,
113
+ canManageIntegrations,
114
+ canManageStreams,
115
+ canManageSharedMemories,
116
+ canSwitchDatastore,
117
+ allowedModels,
118
+ ...context,
119
+ };
120
+
121
+ return <AuthContext.Provider value={authContextValue}>{children}</AuthContext.Provider>;
122
+ }
@@ -0,0 +1,35 @@
1
+ import { FailureAlert } from "./FailureAlert";
2
+ import { Button } from "#components/button/index";
3
+ import { StatusScreen } from "#components/layouts/StatusScreen";
4
+
5
+ export type AwaitingDatastoreStatusProps = { inOrganization: boolean; failure?: string; onSignOut: () => void };
6
+
7
+ const settingUpCopy = {
8
+ title: "We're setting up Manta for you",
9
+ description: "Our team is getting your account ready. This can take a little while.",
10
+ hint: "Still here after a while? Ask your administrator to provision a datastore.",
11
+ };
12
+
13
+ const noOrganizationCopy = {
14
+ title: "You're not in an organization yet",
15
+ description: "Ask your administrator to add you to one. This page picks it up on its own.",
16
+ };
17
+
18
+ export function AwaitingDatastoreStatus(props: AwaitingDatastoreStatusProps) {
19
+ const { inOrganization, failure, onSignOut } = props;
20
+
21
+ const copy = inOrganization ? settingUpCopy : noOrganizationCopy;
22
+
23
+ return (
24
+ <div className="h-screen w-full">
25
+ <StatusScreen {...copy} branded>
26
+ <div className="flex w-88 max-w-full flex-col items-center gap-4">
27
+ <FailureAlert failure={failure} />
28
+ <Button variant="tertiary" rounded="sm" data-testid="awaiting-datastore-sign-out" onClick={onSignOut}>
29
+ Sign out
30
+ </Button>
31
+ </div>
32
+ </StatusScreen>
33
+ </div>
34
+ );
35
+ }
@@ -0,0 +1,30 @@
1
+ import { LoadingView } from "#components/chat-view/LoadingView";
2
+ import { datastoreRelativePath } from "@manta-eu/client/shared/datastore-path";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { useEffect } from "react";
5
+ import { useLocation } from "react-router";
6
+ import { AwaitingDatastoreStatus } from "./AwaitingDatastoreStatus";
7
+ import { useActiveDatastore } from "#providers/ActiveDatastoreProvider";
8
+ import { useAuthContext } from "#providers/AuthContext";
9
+
10
+ export function EnterDatastoreRoute() {
11
+ const { datastore, inOrganization, logout } = useAuthContext();
12
+
13
+ const { enterDatastore } = useActiveDatastore();
14
+
15
+ const { pathname, search, hash } = useLocation();
16
+
17
+ const datastoreId = datastore?.id;
18
+
19
+ useEffect(() => {
20
+ if (!isPresent(datastoreId)) return;
21
+
22
+ enterDatastore(datastoreId, { path: `${datastoreRelativePath(pathname)}${search}${hash}`, replace: true });
23
+ }, [datastoreId, enterDatastore, pathname, search, hash]);
24
+
25
+ if (!isPresent(datastoreId)) {
26
+ return <AwaitingDatastoreStatus inOrganization={inOrganization === true} onSignOut={() => void logout()} />;
27
+ }
28
+
29
+ return <LoadingView />;
30
+ }