@ai-matrx/chat 0.6.6 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -1
  3. package/dist/agents/components/agent-widgets/AgentChatHistorySidebar.js +16 -55
  4. package/dist/agents/components/chat/chat-door.d.ts +67 -0
  5. package/dist/agents/components/chat/chat-door.js +100 -0
  6. package/dist/agents/components/conversation-history/AgentConversationList.d.ts +83 -0
  7. package/dist/agents/components/conversation-history/AgentConversationList.js +252 -0
  8. package/dist/agents/components/conversation-history/ConversationArchiveSection.d.ts +5 -1
  9. package/dist/agents/components/conversation-history/ConversationArchiveSection.js +22 -4
  10. package/dist/agents/components/conversation-history/ConversationHistorySidebar.js +20 -65
  11. package/dist/agents/components/inputs/input-components/TextareaInput.js +2 -0
  12. package/dist/agents/components/inputs/input-components/VariableInputComponent.js +7 -6
  13. package/dist/agents/components/inputs/smart-input/ConversationCompanionPills.d.ts +3 -0
  14. package/dist/agents/components/inputs/smart-input/ConversationCompanionPills.js +40 -0
  15. package/dist/agents/components/inputs/smart-input/ConversationContextRail.js +6 -29
  16. package/dist/agents/components/inputs/smart-input/DeviceToolsModeRow.d.ts +3 -0
  17. package/dist/agents/components/inputs/smart-input/DeviceToolsModeRow.js +35 -0
  18. package/dist/agents/components/inputs/smart-input/InboxQueueStrip.js +0 -8
  19. package/dist/agents/components/inputs/smart-input/RunToolPicker.js +15 -11
  20. package/dist/agents/components/inputs/smart-input/composer/ComposerPlusMenu.js +22 -0
  21. package/dist/agents/components/inputs/smart-input/rail-pill.d.ts +35 -0
  22. package/dist/agents/components/inputs/smart-input/rail-pill.js +30 -0
  23. package/dist/agents/components/inputs/variable-input-variations/AgentVariableForm.js +52 -48
  24. package/dist/agents/components/run-controls/panels/shared.d.ts +1 -1
  25. package/dist/agents/components/shared/AgentModeController.js +3 -2
  26. package/dist/agents/components/shell/AgentRunSidebarMenu.js +15 -54
  27. package/dist/agents/components/working-document/documents-workspace/DocumentsListRail.js +1 -2
  28. package/dist/agents/engine.d.ts +15 -0
  29. package/dist/agents/engine.js +17 -0
  30. package/dist/agents/hooks/useModelControls.js +3 -175
  31. package/dist/agents/redux/agent-definition/selectors.d.ts +237 -237
  32. package/dist/agents/redux/agent-shortcut-categories/selectors.d.ts +50 -50
  33. package/dist/agents/redux/agent-shortcuts/selectors.d.ts +147 -147
  34. package/dist/agents/redux/conversation-history/thunks.js +6 -18
  35. package/dist/agents/redux/conversation-list/conversation-list.selectors.d.ts +1 -73
  36. package/dist/agents/redux/conversation-list/conversation-list.selectors.js +2 -36
  37. package/dist/agents/redux/conversation-list/conversation-list.slice.d.ts +7 -22
  38. package/dist/agents/redux/conversation-list/conversation-list.slice.js +7 -62
  39. package/dist/agents/redux/conversation-list/conversation-list.thunks.d.ts +0 -25
  40. package/dist/agents/redux/conversation-list/conversation-list.thunks.js +2 -58
  41. package/dist/agents/redux/conversation-list/conversation-list.types.d.ts +0 -5
  42. package/dist/agents/redux/conversation-list/conversation-rows.d.ts +16 -0
  43. package/dist/agents/redux/conversation-list/conversation-rows.js +24 -0
  44. package/dist/agents/redux/conversation-list/conversation-trash.thunks.d.ts +1 -0
  45. package/dist/agents/redux/conversation-list/conversation-trash.thunks.js +13 -18
  46. package/dist/agents/redux/execution-system/active-requests/active-requests.selectors.d.ts +54 -54
  47. package/dist/agents/redux/execution-system/context-state/context-state.selectors.d.ts +14 -14
  48. package/dist/agents/redux/execution-system/conversations/conversations.selectors.d.ts +5 -5
  49. package/dist/agents/redux/execution-system/instance-context/instance-context.selectors.d.ts +3 -3
  50. package/dist/agents/redux/execution-system/instance-resources/instance-resources.selectors.d.ts +8 -8
  51. package/dist/agents/redux/execution-system/instance-ui-state/instance-ui-state.selectors.d.ts +5 -5
  52. package/dist/agents/redux/execution-system/instance-variable-values/instance-variable-values.selectors.d.ts +7 -7
  53. package/dist/agents/redux/execution-system/messages/messages.selectors.d.ts +1 -1
  54. package/dist/agents/redux/execution-system/observability/observability.selectors.d.ts +7 -7
  55. package/dist/agents/redux/execution-system/observational-memory/observational-memory.selectors.d.ts +1 -1
  56. package/dist/agents/redux/execution-system/selectors/aggregate.selectors.d.ts +14 -14
  57. package/dist/agents/redux/execution-system/thunks/create-instance.thunk.d.ts +10 -1
  58. package/dist/agents/redux/execution-system/thunks/create-instance.thunk.js +114 -265
  59. package/dist/agents/redux/execution-system/thunks/dispatch-matrx-extend-tool.thunk.js +18 -2
  60. package/dist/agents/redux/execution-system/thunks/dispatch-surface-client-tool.thunk.js +10 -28
  61. package/dist/agents/redux/execution-system/thunks/dispatch-surface-write.thunk.js +10 -25
  62. package/dist/agents/redux/execution-system/thunks/execute-instance.thunk.js +20 -0
  63. package/dist/agents/redux/execution-system/thunks/execute-manual-instance.thunk.js +6 -1
  64. package/dist/agents/redux/execution-system/thunks/notify-and-play-dispatcher.d.ts +58 -0
  65. package/dist/agents/redux/execution-system/thunks/notify-and-play-dispatcher.js +62 -0
  66. package/dist/agents/redux/execution-system/thunks/post-delegated-tool-outcome.d.ts +23 -0
  67. package/dist/agents/redux/execution-system/thunks/post-delegated-tool-outcome.js +37 -0
  68. package/dist/agents/redux/execution-system/thunks/resume-instance.thunk.js +10 -2
  69. package/dist/agents/redux/execution-system/utils/build-tool-injection.d.ts +7 -0
  70. package/dist/agents/redux/execution-system/utils/build-tool-injection.js +18 -6
  71. package/dist/agents/redux/execution-system/utils/host-turn.d.ts +45 -0
  72. package/dist/agents/redux/execution-system/utils/host-turn.js +119 -0
  73. package/dist/agents/redux/proposed-directives/proposedDirectivesSlice.d.ts +1 -1
  74. package/dist/agents/scribe-tools/dispatcher/dispatch-scribe-tool.thunk.d.ts +50 -20
  75. package/dist/agents/scribe-tools/dispatcher/dispatch-scribe-tool.thunk.js +9 -101
  76. package/dist/agents/types/tool-injection.types.d.ts +18 -2
  77. package/dist/agents/ui-first-tools/redux/agent-lists.selectors.d.ts +2 -2
  78. package/dist/agents/ui-first-tools/redux/pending-asks.slice.d.ts +2 -1
  79. package/dist/agents/ui-first-tools/redux/resolve-asks-with-input.thunk.js +1 -1
  80. package/dist/agents/ui-first-tools/tools/ask-response.d.ts +29 -0
  81. package/dist/agents/ui-first-tools/tools/ask-response.js +15 -0
  82. package/dist/agents/ui-first-tools/tools/schemas.d.ts +3 -25
  83. package/dist/agents/ui-first-tools/tools/schemas.js +1 -12
  84. package/dist/agents/ui-first-tools/ui/ApprovalCard.js +1 -1
  85. package/dist/agents/ui-first-tools/ui/AskWizard.d.ts +1 -1
  86. package/dist/agents/ui-first-tools/ui/AskWizard.js +1 -1
  87. package/dist/cx-chat/_legacy-stubs.d.ts +5 -5
  88. package/dist/cx-chat/components/SsrSidebarChats.js +13 -15
  89. package/dist/cx-chat/components/messages/UserMessage.d.ts +2 -2
  90. package/dist/cx-chat/types/conversation.d.ts +6 -6
  91. package/dist/cx-chat/utils/buildContentBlocksForSave.d.ts +1 -1
  92. package/dist/cx-chat/utils/cx-content-converter.d.ts +1 -1
  93. package/dist/host/bare-host-chrome.js +9 -3
  94. package/dist/host/composer-extensions.d.ts +75 -0
  95. package/dist/host/composer-extensions.js +92 -0
  96. package/dist/host/configure.js +1 -0
  97. package/dist/host/contract.d.ts +105 -13
  98. package/dist/host/defaults/confirm.d.ts +15 -0
  99. package/dist/host/defaults/confirm.js +25 -0
  100. package/dist/host/defaults/files-ui.d.ts +85 -0
  101. package/dist/host/defaults/files-ui.js +158 -0
  102. package/dist/host/defaults/gates.d.ts +27 -0
  103. package/dist/host/defaults/gates.js +72 -0
  104. package/dist/host/defaults/media-client.d.ts +15 -0
  105. package/dist/host/defaults/media-client.js +40 -0
  106. package/dist/host/defaults/voice.d.ts +81 -0
  107. package/dist/host/defaults/voice.js +239 -0
  108. package/dist/host/device-tool-handoff.d.ts +26 -0
  109. package/dist/host/device-tool-handoff.js +45 -0
  110. package/dist/host/index.d.ts +1 -0
  111. package/dist/host/index.js +4 -1
  112. package/dist/host/microphone.d.ts +11 -0
  113. package/dist/host/microphone.js +17 -0
  114. package/dist/host/ui-slots.d.ts +29 -74
  115. package/dist/host/ui-slots.js +40 -42
  116. package/dist/store/create-chat-store.d.ts +2 -2
  117. package/dist/store/middlewares.d.ts +5 -5
  118. package/dist/store/slices.d.ts +1 -1
  119. package/dist/surfaces/redux/selectors.d.ts +2 -2
  120. package/dist/tool-call-visualization/components/ToolCallVisualization.js +3 -2
  121. package/dist/tool-call-visualization/configured-rows/ConfiguredRowRenderer.d.ts +15 -0
  122. package/dist/tool-call-visualization/configured-rows/ConfiguredRowRenderer.js +36 -0
  123. package/dist/tool-call-visualization/configured-rows/ConfiguredToolRow.d.ts +40 -0
  124. package/dist/tool-call-visualization/configured-rows/ConfiguredToolRow.js +296 -0
  125. package/dist/tool-call-visualization/configured-rows/CopyToolButton.d.ts +23 -0
  126. package/dist/tool-call-visualization/configured-rows/CopyToolButton.js +62 -0
  127. package/dist/tool-call-visualization/configured-rows/ToolProgressView.d.ts +23 -0
  128. package/dist/tool-call-visualization/configured-rows/ToolProgressView.js +147 -0
  129. package/dist/tool-call-visualization/configured-rows/field-components.d.ts +15 -0
  130. package/dist/tool-call-visualization/configured-rows/field-components.js +244 -0
  131. package/dist/tool-call-visualization/configured-rows/helpers.d.ts +39 -0
  132. package/dist/tool-call-visualization/configured-rows/helpers.js +110 -0
  133. package/dist/tool-call-visualization/configured-rows/register.d.ts +25 -0
  134. package/dist/tool-call-visualization/configured-rows/register.js +51 -0
  135. package/dist/tool-call-visualization/configured-rows/registries.d.ts +27 -0
  136. package/dist/tool-call-visualization/configured-rows/registries.js +14 -0
  137. package/dist/tool-call-visualization/configured-rows/to-row-entry.d.ts +8 -0
  138. package/dist/tool-call-visualization/configured-rows/to-row-entry.js +38 -0
  139. package/dist/tool-call-visualization/configured-rows/transforms.d.ts +14 -0
  140. package/dist/tool-call-visualization/configured-rows/transforms.js +30 -0
  141. package/dist/tool-call-visualization/configured-rows/types.d.ts +140 -0
  142. package/dist/tool-call-visualization/redux/selectors.d.ts +1 -1
  143. package/dist/tool-call-visualization/registry/registry.d.ts +1 -1
  144. package/dist/tool-call-visualization/registry/registry.js +8 -1
  145. package/dist/tool-call-visualization/types.d.ts +1 -1
  146. package/dist/ui/chat-protocol-types.d.ts +0 -1
  147. package/dist/ui/ownership.d.ts +25 -0
  148. package/dist/ui/ownership.js +18 -0
  149. package/dist/voice-agent/audio/audioCapture.js +11 -6
  150. package/dist/window-panels/windows/agents/AgentRunHistoryWindow.d.ts +1 -2
  151. package/dist/window-panels/windows/agents/AgentRunHistoryWindow.js +21 -181
  152. package/dist/window-panels/windows/agents/AgentRunWindow.js +26 -13
  153. package/package.json +4627 -125
  154. package/dist/agents/components/agent-widgets/chat-assistant/AssistantMessageCard.d.ts +0 -7
  155. package/dist/agents/components/agent-widgets/chat-assistant/AssistantMessageCard.js +0 -33
  156. package/dist/agents/components/agent-widgets/chat-assistant/StatusCard.d.ts +0 -6
  157. package/dist/agents/components/agent-widgets/chat-assistant/StatusCard.js +0 -21
  158. package/dist/agents/components/agent-widgets/chat-assistant/UserMessageCard.d.ts +0 -6
  159. package/dist/agents/components/agent-widgets/chat-assistant/UserMessageCard.js +0 -11
  160. package/dist/agents/components/agent-widgets/chat-assistant/VariableInputCard.d.ts +0 -12
  161. package/dist/agents/components/agent-widgets/chat-assistant/VariableInputCard.js +0 -7
  162. package/dist/agents/components/agent-widgets/execution-gates/PreExecutionCard.d.ts +0 -4
  163. package/dist/agents/components/agent-widgets/execution-gates/PreExecutionCard.js +0 -81
  164. package/dist/agents/components/run/run-sidebar/SidebarHeader.d.ts +0 -21
  165. package/dist/agents/components/run/run-sidebar/SidebarHeader.js +0 -50
  166. package/dist/agents/components/run-controls/AdvancedRunSettings/index.d.ts +0 -6
  167. package/dist/agents/components/run-controls/AdvancedRunSettings/index.js +0 -32
  168. package/dist/agents/components/run-controls/RunSettingsModal.d.ts +0 -5
  169. package/dist/agents/components/run-controls/RunSettingsModal.js +0 -22
  170. package/dist/agents/components/shell/AgentBuildSidebarExtras.d.ts +0 -6
  171. package/dist/agents/components/shell/AgentBuildSidebarExtras.js +0 -30
  172. package/dist/agents/constants/agent-system-competitors.d.ts +0 -9
  173. package/dist/agents/constants/agent-system-competitors.js +0 -125
  174. package/dist/agents/hooks/message-crud/useMessageActions.d.ts +0 -29
  175. package/dist/agents/hooks/message-crud/useMessageActions.js +0 -119
  176. package/dist/agents/hooks/useConversationPendingCalls.d.ts +0 -30
  177. package/dist/agents/hooks/useConversationPendingCalls.js +0 -42
  178. package/dist/agents/model-registry/model-classes.d.ts +0 -1
  179. package/dist/agents/model-registry/model-classes.js +0 -1
  180. package/dist/agents/redux/conversation-history/index.d.ts +0 -18
  181. package/dist/agents/redux/conversation-history/index.js +0 -4
  182. package/dist/agents/redux/execution-system/instance-variable-values/instance-variable-values.thunks.d.ts +0 -38
  183. package/dist/agents/redux/execution-system/instance-variable-values/instance-variable-values.thunks.js +0 -42
  184. package/dist/agents/redux/execution-system/message-crud/server/compact-turns.thunk.d.ts +0 -58
  185. package/dist/agents/redux/execution-system/message-crud/server/compact-turns.thunk.js +0 -50
  186. package/dist/agents/redux/execution-system/message-crud/server/fork-and-run-server.thunk.d.ts +0 -76
  187. package/dist/agents/redux/execution-system/message-crud/server/fork-and-run-server.thunk.js +0 -101
  188. package/dist/agents/redux/execution-system/thunks/attach-workflow-run.d.ts +0 -38
  189. package/dist/agents/redux/execution-system/thunks/attach-workflow-run.js +0 -25
  190. package/dist/agents/redux/execution-system/utils/source-slice-helpers.d.ts +0 -45
  191. package/dist/agents/redux/execution-system/utils/source-slice-helpers.js +0 -50
  192. package/dist/agents/runtime/realtime/launchRealtimeSession.thunk.d.ts +0 -25
  193. package/dist/agents/runtime/realtime/launchRealtimeSession.thunk.js +0 -15
  194. package/dist/agents/services/agentService.d.ts +0 -12
  195. package/dist/agents/services/agentService.js +0 -92
  196. package/dist/agents/utils/escape-code-fences.d.ts +0 -15
  197. package/dist/agents/utils/escape-code-fences.js +0 -9
  198. package/dist/agents/utils/normalize-managed-options.d.ts +0 -30
  199. package/dist/agents/utils/normalize-managed-options.js +0 -29
  200. package/dist/agents/utils/processedDocumentContext.d.ts +0 -51
  201. package/dist/agents/utils/processedDocumentContext.js +0 -51
  202. package/dist/agents/utils/variable-validation.d.ts +0 -28
  203. package/dist/agents/utils/variable-validation.js +0 -54
  204. package/dist/cx-chat/components/ChatConversationSkeleton.d.ts +0 -9
  205. package/dist/cx-chat/components/ChatConversationSkeleton.js +0 -45
  206. package/dist/cx-chat/components/ChatPanelBackButton.d.ts +0 -1
  207. package/dist/cx-chat/components/ChatPanelBackButton.js +0 -26
  208. package/dist/cx-chat/components/messages/MessageErrorBoundary.d.ts +0 -20
  209. package/dist/cx-chat/components/messages/MessageErrorBoundary.js +0 -40
  210. package/dist/cx-chat/components/variable-inputs/CheckboxGroupInput.d.ts +0 -14
  211. package/dist/cx-chat/components/variable-inputs/CheckboxGroupInput.js +0 -160
  212. package/dist/cx-chat/components/variable-inputs/NumberInput.d.ts +0 -15
  213. package/dist/cx-chat/components/variable-inputs/NumberInput.js +0 -79
  214. package/dist/cx-chat/components/variable-inputs/RadioGroupInput.d.ts +0 -14
  215. package/dist/cx-chat/components/variable-inputs/RadioGroupInput.js +0 -125
  216. package/dist/cx-chat/components/variable-inputs/SelectInput.d.ts +0 -14
  217. package/dist/cx-chat/components/variable-inputs/SelectInput.js +0 -92
  218. package/dist/cx-chat/components/variable-inputs/TextareaInput.d.ts +0 -14
  219. package/dist/cx-chat/components/variable-inputs/TextareaInput.js +0 -46
  220. package/dist/cx-chat/components/variable-inputs/ToggleInput.d.ts +0 -14
  221. package/dist/cx-chat/components/variable-inputs/ToggleInput.js +0 -46
  222. package/dist/cx-chat/hooks/useChatPersistence.d.ts +0 -28
  223. package/dist/cx-chat/hooks/useChatPersistence.js +0 -180
  224. package/dist/cx-chat/hooks/useInstanceBootstrap.d.ts +0 -1
  225. package/dist/cx-chat/hooks/useInstanceBootstrap.js +0 -115
  226. package/dist/cx-chat/types/content.d.ts +0 -184
  227. package/dist/cx-chat/types/content.js +0 -91
  228. package/dist/cx-chat/types/cx-tables.d.ts +0 -176
  229. package/dist/cx-chat/utils/settings-diff.d.ts +0 -13
  230. package/dist/cx-chat/utils/settings-diff.js +0 -25
  231. package/dist/public-chat/components/AgentSelector.d.ts +0 -22
  232. package/dist/public-chat/components/AgentSelector.js +0 -80
  233. package/dist/public-chat/components/GuidedVariableInputs.d.ts +0 -25
  234. package/dist/public-chat/components/GuidedVariableInputs.js +0 -623
  235. package/dist/public-chat/components/PublicVariableInputs.d.ts +0 -29
  236. package/dist/public-chat/components/PublicVariableInputs.js +0 -172
  237. package/dist/public-chat/types/content.d.ts +0 -184
  238. package/dist/public-chat/types/content.js +0 -91
  239. package/dist/tool-call-visualization/renderers/_shared-entity/EntityOpenActions.d.ts +0 -15
  240. package/dist/tool-call-visualization/renderers/_shared-entity/EntityOpenActions.js +0 -31
  241. package/dist/tool-call-visualization/utils/toolCallBlockToLifecycleEntry.d.ts +0 -24
  242. package/dist/tool-call-visualization/utils/toolCallBlockToLifecycleEntry.js +0 -26
  243. package/dist/ui/AudioOutputBlockSkeleton.d.ts +0 -17
  244. package/dist/ui/AudioOutputBlockSkeleton.js +0 -78
  245. package/dist/ui/lazy/PublicChatVariableInputs.d.ts +0 -2
  246. package/dist/ui/lazy/PublicChatVariableInputs.js +0 -16
  247. package/dist/utils/xml/readXmlTag.d.ts +0 -12
  248. package/dist/utils/xml/readXmlTag.js +0 -66
  249. /package/dist/{cx-chat/types/cx-tables.js → tool-call-visualization/configured-rows/types.js} +0 -0
@@ -1,45 +0,0 @@
1
- /**
2
- * Source Slice Helpers
3
- *
4
- * Factory functions that create the standard reducer patterns for
5
- * Layer 1 (source) slices. Every source slice needs:
6
- * - upsert / remove entity
7
- * - mark dirty / clear dirty
8
- * - loading / error state
9
- *
10
- * These helpers eliminate boilerplate while keeping full type safety.
11
- */
12
- import type { Draft, PayloadAction } from "@reduxjs/toolkit";
13
- import type { SourceSliceState } from "../../../types/common.types.js";
14
- /**
15
- * Creates the initial state for a source slice.
16
- */
17
- export declare function createSourceInitialState<T>(): SourceSliceState<T>;
18
- /**
19
- * Standard reducer for upserting an entity into a source slice.
20
- * Does NOT mark as dirty — this is for data coming FROM the server.
21
- */
22
- export declare function upsertEntity<T extends object>(state: Draft<SourceSliceState<T>>, id: string, data: T): void;
23
- /**
24
- * Standard reducer for removing an entity from a source slice.
25
- */
26
- export declare function removeEntity<T>(state: Draft<SourceSliceState<T>>, id: string): void;
27
- /**
28
- * Mark an entity as dirty (has unsaved changes).
29
- */
30
- export declare function markDirty<T>(state: Draft<SourceSliceState<T>>, id: string): void;
31
- /**
32
- * Clear the dirty flag for an entity (after successful save).
33
- */
34
- export declare function clearDirty<T>(state: Draft<SourceSliceState<T>>, id: string): void;
35
- /**
36
- * Creates standard extraReducers for async thunk lifecycle.
37
- * Use in the `extraReducers` builder for fetch/save thunks.
38
- */
39
- export declare function createAsyncHandlers<T>(): {
40
- setPending: (state: Draft<SourceSliceState<T>>) => void;
41
- setFulfilled: (state: Draft<SourceSliceState<T>>) => void;
42
- setRejected: (state: Draft<SourceSliceState<T>>, action: PayloadAction<unknown, string, unknown, {
43
- message: string;
44
- }>) => void;
45
- };
@@ -1,50 +0,0 @@
1
- function createSourceInitialState() {
2
- return {
3
- byId: {},
4
- allIds: [],
5
- dirtyIds: {},
6
- loading: false,
7
- error: null
8
- };
9
- }
10
- function upsertEntity(state, id, data) {
11
- state.byId[id] = data;
12
- if (!state.allIds.includes(id)) {
13
- state.allIds.push(id);
14
- }
15
- }
16
- function removeEntity(state, id) {
17
- delete state.byId[id];
18
- state.allIds = state.allIds.filter((i) => i !== id);
19
- delete state.dirtyIds[id];
20
- }
21
- function markDirty(state, id) {
22
- state.dirtyIds[id] = true;
23
- }
24
- function clearDirty(state, id) {
25
- delete state.dirtyIds[id];
26
- }
27
- function createAsyncHandlers() {
28
- return {
29
- setPending: (state) => {
30
- state.loading = true;
31
- state.error = null;
32
- },
33
- setFulfilled: (state) => {
34
- state.loading = false;
35
- state.error = null;
36
- },
37
- setRejected: (state, action) => {
38
- state.loading = false;
39
- state.error = action.error?.message ?? "Unknown error";
40
- }
41
- };
42
- }
43
- export {
44
- clearDirty,
45
- createAsyncHandlers,
46
- createSourceInitialState,
47
- markDirty,
48
- removeEntity,
49
- upsertEntity
50
- };
@@ -1,25 +0,0 @@
1
- import type { ChatRootState } from "../../../store/root-state.js";
2
- export interface LaunchRealtimeSessionOpts {
3
- /** The `agx_agent.id` whose runtime config drives the realtime session. */
4
- agentId: string;
5
- /** The `ui_surface.name` that triggered the launch (must be a realtime surface). */
6
- surfaceName: string;
7
- /** Optional opaque pass-through — caller can attach a request id, etc. */
8
- meta?: Record<string, unknown>;
9
- }
10
- export interface LaunchRealtimeSessionResult {
11
- /** The voice-agent slice instance key the surface should mount on. */
12
- instanceId: string;
13
- /** The agentId that was resolved — echo for callers. */
14
- agentId: string;
15
- }
16
- export declare const launchRealtimeSession: import("@reduxjs/toolkit").AsyncThunk<LaunchRealtimeSessionResult, LaunchRealtimeSessionOpts, {
17
- dispatch?: import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction>;
18
- extra?: unknown;
19
- rejectValue?: unknown;
20
- serializedErrorType?: unknown;
21
- pendingMeta?: unknown;
22
- fulfilledMeta?: unknown;
23
- rejectedMeta?: unknown;
24
- state: ChatRootState;
25
- }>;
@@ -1,15 +0,0 @@
1
- import { createAsyncThunk } from "@reduxjs/toolkit";
2
- const launchRealtimeSession = createAsyncThunk("agents/runtime/launchRealtimeSession", async (opts) => {
3
- const { agentId, surfaceName } = opts;
4
- const instanceId = `realtime-${agentId}`;
5
- if (process.env.NODE_ENV !== "production") {
6
- console.debug(
7
- "[launchRealtimeSession] resolved",
8
- { agentId, surfaceName, instanceId }
9
- );
10
- }
11
- return { instanceId, agentId };
12
- });
13
- export {
14
- launchRealtimeSession
15
- };
@@ -1,12 +0,0 @@
1
- import type { AgentDetail, AgentVersionInfo, CatalogQuery, CatalogTree, CreateAgentInput, ModelInfo, SchemaGateReport, SkillInfo, ToolInfo, UpdateAgentInput, ValidateSchemaRequest } from "./agentService.types.js";
2
- export declare function listAgents(query?: CatalogQuery): Promise<CatalogTree>;
3
- export declare function getAgent(agentId: string): Promise<AgentDetail>;
4
- export declare function listVersions(agentId: string): Promise<AgentVersionInfo[]>;
5
- export declare function getVersion(versionId: string): Promise<AgentDetail>;
6
- export declare function listModels(includeDeprecated?: boolean): Promise<ModelInfo[]>;
7
- export declare function listTools(query?: CatalogQuery): Promise<ToolInfo[]>;
8
- export declare function listSkills(query?: CatalogQuery): Promise<SkillInfo[]>;
9
- export declare function createAgent(input: CreateAgentInput): Promise<AgentDetail>;
10
- export declare function createStructuredAgent(input: CreateAgentInput): Promise<AgentDetail>;
11
- export declare function updateAgent(agentId: string, input: UpdateAgentInput): Promise<AgentDetail>;
12
- export declare function validateSchema(req: ValidateSchemaRequest): Promise<SchemaGateReport>;
@@ -1,92 +0,0 @@
1
- import { apiGet, apiPatch, apiPost, buildPath } from "../../host/server/typed-client.js";
2
- async function listAgents(query = {}) {
3
- const { data } = await apiGet("/agent-service/agents", {
4
- query: {
5
- category: query.category,
6
- tags: query.tags,
7
- query: query.query,
8
- limit: query.limit
9
- }
10
- });
11
- return data;
12
- }
13
- async function getAgent(agentId) {
14
- const { data } = await apiGet(
15
- buildPath("/agent-service/agents/{agent_id}", { agent_id: agentId })
16
- );
17
- return data;
18
- }
19
- async function listVersions(agentId) {
20
- const { data } = await apiGet(
21
- buildPath("/agent-service/agents/{agent_id}/versions", {
22
- agent_id: agentId
23
- })
24
- );
25
- return data;
26
- }
27
- async function getVersion(versionId) {
28
- const { data } = await apiGet(
29
- buildPath("/agent-service/versions/{version_id}", {
30
- version_id: versionId
31
- })
32
- );
33
- return data;
34
- }
35
- async function listModels(includeDeprecated = false) {
36
- const { data } = await apiGet("/agent-service/models", {
37
- query: { include_deprecated: includeDeprecated ? true : void 0 }
38
- });
39
- return data;
40
- }
41
- async function listTools(query = {}) {
42
- const { data } = await apiGet("/agent-service/tools", {
43
- query: {
44
- category: query.category,
45
- tags: query.tags,
46
- query: query.query
47
- }
48
- });
49
- return data;
50
- }
51
- async function listSkills(query = {}) {
52
- const { data } = await apiGet("/agent-service/skills", {
53
- query: {
54
- category: query.category,
55
- query: query.query,
56
- limit: query.limit
57
- }
58
- });
59
- return data;
60
- }
61
- async function createAgent(input) {
62
- const { data } = await apiPost("/agent-service/agents", input);
63
- return data;
64
- }
65
- async function createStructuredAgent(input) {
66
- const { data } = await apiPost("/agent-service/agents/structured", input);
67
- return data;
68
- }
69
- async function updateAgent(agentId, input) {
70
- const { data } = await apiPatch(
71
- buildPath("/agent-service/agents/{agent_id}", { agent_id: agentId }),
72
- input
73
- );
74
- return data;
75
- }
76
- async function validateSchema(req) {
77
- const { data } = await apiPost("/agent-service/validate-schema", req);
78
- return data;
79
- }
80
- export {
81
- createAgent,
82
- createStructuredAgent,
83
- getAgent,
84
- getVersion,
85
- listAgents,
86
- listModels,
87
- listSkills,
88
- listTools,
89
- listVersions,
90
- updateAgent,
91
- validateSchema
92
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * Escapes triple-backtick code fences embedded in prompt message content
3
- * so they appear as literal text rather than being interpreted as markdown
4
- * code blocks by the rendering pipeline.
5
- *
6
- * This is necessary because prompt templates often include code fence
7
- * examples as part of their instructions (e.g., "respond in ```json ...```").
8
- * When this content is rendered through MarkdownStream, the parser
9
- * (splitContentIntoBlocksV2) treats those fences as real code block
10
- * delimiters, corrupting the display.
11
- *
12
- * Strategy: insert a zero-width space between each backtick to break the
13
- * triple-backtick pattern while keeping the characters visually identical.
14
- */
15
- export declare function escapeEmbeddedCodeFences(text: string): string;
@@ -1,9 +0,0 @@
1
- function escapeEmbeddedCodeFences(text) {
2
- return text.replace(/```(\w*)/g, (_match, lang) => {
3
- const escaped = "`\u200B`\u200B`";
4
- return lang ? `${escaped}${lang}` : escaped;
5
- });
6
- }
7
- export {
8
- escapeEmbeddedCodeFences
9
- };
@@ -1,30 +0,0 @@
1
- /**
2
- * Normalize ManagedAgentOptions into a single canonical shape that the
3
- * execution pipeline consumes. All presentation/behavior config lives
4
- * in `opts.config` (a Partial<AgentExecutionConfig>), and all runtime
5
- * per-call data lives in `opts.runtime` (AgentExecutionRuntime).
6
- */
7
- import type { ManagedAgentOptions } from "../types/instance.types.js";
8
- import { type AgentExecutionConfig, type AgentExecutionRuntime } from "../types/agent-execution-config.types.js";
9
- export interface NormalizedManagedOptions {
10
- identity: {
11
- surfaceKey: string;
12
- sourceFeature: ManagedAgentOptions["sourceFeature"];
13
- agentId?: string;
14
- shortcutId?: string;
15
- manual?: ManagedAgentOptions["manual"];
16
- };
17
- /** Fully-resolved config (all defaults filled in). */
18
- config: AgentExecutionConfig;
19
- /** Runtime payload (all fields optional). */
20
- runtime: AgentExecutionRuntime;
21
- flags: {
22
- ready?: boolean;
23
- isEphemeral?: boolean;
24
- apiEndpointMode?: ManagedAgentOptions["apiEndpointMode"];
25
- jsonExtraction?: ManagedAgentOptions["jsonExtraction"];
26
- showAutoClearToggle?: boolean;
27
- autoClearConversation?: boolean;
28
- };
29
- }
30
- export declare function normalizeManagedOptions(opts: ManagedAgentOptions): NormalizedManagedOptions;
@@ -1,29 +0,0 @@
1
- import {
2
- resolveExecutionConfig
3
- } from "../types/agent-execution-config.types.js";
4
- function normalizeManagedOptions(opts) {
5
- const config = resolveExecutionConfig(opts.config ?? null);
6
- const runtime = { ...opts.runtime ?? {} };
7
- return {
8
- identity: {
9
- surfaceKey: opts.surfaceKey,
10
- sourceFeature: opts.sourceFeature,
11
- agentId: opts.agentId,
12
- shortcutId: opts.shortcutId,
13
- manual: opts.manual
14
- },
15
- config,
16
- runtime,
17
- flags: {
18
- ready: opts.ready,
19
- isEphemeral: opts.isEphemeral,
20
- apiEndpointMode: opts.apiEndpointMode,
21
- jsonExtraction: opts.jsonExtraction,
22
- showAutoClearToggle: opts.showAutoClearToggle,
23
- autoClearConversation: opts.autoClearConversation
24
- }
25
- };
26
- }
27
- export {
28
- normalizeManagedOptions
29
- };
@@ -1,51 +0,0 @@
1
- /**
2
- * Processed-document representation helpers.
3
- *
4
- * A file the user attaches by REFERENCE (an OCR'd → AI-cleaned document) is now a
5
- * durable `platform.associations` edge (`processed_document → conversation` or
6
- * `file → conversation`) — NOT a per-turn `request.context` pointer. The backend
7
- * reads the conversation's association edges at call time and injects the chosen
8
- * representation itself; the FE only creates/removes the edge and renders the
9
- * chip. This module holds the shared source shape + the Clean/Raw representation
10
- * options the chip's pill offers. (The old lazy `request.context` wire builder
11
- * was removed when attachments moved onto associations — see
12
- * `attached-documents.ts` + the chat FEATURE.md.)
13
- */
14
- import type { DocumentRepresentation } from "../types/instance.types.js";
15
- /** What the host's file→document lookup resolves to (only these fields are read here). */
16
- interface FileDocumentLookup {
17
- processed_document_id: string;
18
- derivation_kind: string;
19
- total_pages: number | null;
20
- has_clean_content: boolean;
21
- }
22
- /** The `source` value describing an attached processed document. */
23
- export interface ProcessedDocumentSource {
24
- kind: "processed_document";
25
- processed_document_id: string;
26
- /** The origin binary file id — used by "Attach as file instead". */
27
- file_id: string | null;
28
- derivation_kind: string;
29
- total_pages: number | null;
30
- has_clean_content: boolean;
31
- }
32
- /** One selectable representation option for the chip pill. */
33
- export interface DocumentRepresentationOption {
34
- value: DocumentRepresentation;
35
- label: string;
36
- hint: string;
37
- /** Disabled when the representation isn't ready (e.g. clean still processing). */
38
- disabled?: boolean;
39
- }
40
- export declare function isProcessedDocumentSource(source: unknown): source is ProcessedDocumentSource;
41
- /** Build the `source` value from a resolved file→document lookup. */
42
- export declare function buildProcessedDocumentSource(doc: FileDocumentLookup, fileId: string | null): ProcessedDocumentSource;
43
- /** Processed-document records always have raw text; file refs add PDF fallback. */
44
- export declare function defaultRepresentation(source: ProcessedDocumentSource): DocumentRepresentation;
45
- /**
46
- * The representation options to offer for a document, data-driven so a new
47
- * representation is one entry. "clean" is disabled until AI-cleaning completes.
48
- */
49
- export declare function availableRepresentations(source: ProcessedDocumentSource): DocumentRepresentationOption[];
50
- export declare function representationLabel(rep: DocumentRepresentation): string;
51
- export {};
@@ -1,51 +0,0 @@
1
- function isProcessedDocumentSource(source) {
2
- return typeof source === "object" && source !== null && source.kind === "processed_document" && typeof source.processed_document_id === "string";
3
- }
4
- function buildProcessedDocumentSource(doc, fileId) {
5
- return {
6
- kind: "processed_document",
7
- processed_document_id: doc.processed_document_id,
8
- file_id: fileId,
9
- derivation_kind: doc.derivation_kind,
10
- total_pages: doc.total_pages,
11
- has_clean_content: doc.has_clean_content
12
- };
13
- }
14
- function defaultRepresentation(source) {
15
- return source.has_clean_content ? "clean" : "raw";
16
- }
17
- function availableRepresentations(source) {
18
- return [
19
- {
20
- value: "clean",
21
- label: "Clean text",
22
- hint: "AI-cleaned, readable text (recommended)",
23
- disabled: !source.has_clean_content
24
- },
25
- {
26
- value: "raw",
27
- label: "Raw text",
28
- hint: "Original extracted / OCR text"
29
- },
30
- {
31
- value: "pdf",
32
- label: "Original PDF",
33
- hint: "Physical PDF pages supplied to the model"
34
- }
35
- ];
36
- }
37
- const REPRESENTATION_LABEL = {
38
- clean: "Clean",
39
- raw: "Raw",
40
- pdf: "PDF"
41
- };
42
- function representationLabel(rep) {
43
- return REPRESENTATION_LABEL[rep];
44
- }
45
- export {
46
- availableRepresentations,
47
- buildProcessedDocumentSource,
48
- defaultRepresentation,
49
- isProcessedDocumentSource,
50
- representationLabel
51
- };
@@ -1,28 +0,0 @@
1
- /**
2
- * Pure validator for a single variable definition.
3
- * Returns an array of issues (possibly empty). No side effects.
4
- */
5
- import type { VariableDefinition } from "../types/agent-definition.types.js";
6
- export type VariableValidationIssue = {
7
- field: "name";
8
- code: "empty" | "invalid" | "duplicate";
9
- } | {
10
- field: "options";
11
- code: "empty" | "duplicate";
12
- } | {
13
- field: "range";
14
- code: "min-gte-max";
15
- } | {
16
- field: "youtube";
17
- code: "invalid-url";
18
- };
19
- /**
20
- * Validate a variable against invariants:
21
- * • name must sanitize to non-empty and be unique among otherNames
22
- * • option-requiring types must have at least one (deduped) option
23
- * • slider / number with min >= max is invalid
24
- *
25
- * `otherNames` are the names of *other* variables (excluding this one), used
26
- * only for duplicate detection.
27
- */
28
- export declare function validateVariable(v: VariableDefinition, otherNames: string[]): VariableValidationIssue[];
@@ -1,54 +0,0 @@
1
- import { getComponentTypeMeta } from "../components/inputs/variable-input-variations/variable-input-options.js";
2
- import { sanitizeVariableName } from "./variable-utils.js";
3
- import { readOptions, readMin, readMax } from "./variable-customcomponent.js";
4
- const YOUTUBE_ID = /^[A-Za-z0-9_-]{11}$/;
5
- const YOUTUBE_URL = /(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([A-Za-z0-9_-]{11})/;
6
- function validateVariable(v, otherNames) {
7
- const issues = [];
8
- const sanitized = v.name.trim() ? sanitizeVariableName(v.name) : "";
9
- if (!sanitized) {
10
- issues.push({ field: "name", code: "empty" });
11
- } else if (sanitized !== v.name) {
12
- issues.push({ field: "name", code: "invalid" });
13
- }
14
- if (sanitized && otherNames.includes(sanitized)) {
15
- issues.push({ field: "name", code: "duplicate" });
16
- }
17
- const cc = v.customComponent;
18
- if (cc) {
19
- const meta = getComponentTypeMeta(cc.type);
20
- if (meta.requiresOptions) {
21
- const opts = readOptions(cc);
22
- if (opts.length === 0) {
23
- issues.push({ field: "options", code: "empty" });
24
- }
25
- const seen = /* @__PURE__ */ new Set();
26
- let dupFound = false;
27
- for (const o of opts) {
28
- if (seen.has(o)) {
29
- dupFound = true;
30
- break;
31
- }
32
- seen.add(o);
33
- }
34
- if (dupFound) issues.push({ field: "options", code: "duplicate" });
35
- }
36
- if (meta.requiresMinMax || cc.type === "number") {
37
- const min = readMin(cc);
38
- const max = readMax(cc);
39
- if (min !== void 0 && max !== void 0 && min >= max) {
40
- issues.push({ field: "range", code: "min-gte-max" });
41
- }
42
- }
43
- if (cc.type === "youtube") {
44
- const candidate = typeof v.defaultValue === "string" ? v.defaultValue.trim() : "";
45
- if (candidate && !YOUTUBE_ID.test(candidate) && !YOUTUBE_URL.test(candidate)) {
46
- issues.push({ field: "youtube", code: "invalid-url" });
47
- }
48
- }
49
- }
50
- return issues;
51
- }
52
- export {
53
- validateVariable
54
- };
@@ -1,9 +0,0 @@
1
- /**
2
- * Skeleton shown while ConversationShell dynamic import loads.
3
- * Mimics the ConversationShell layout (messages + input bar).
4
- */
5
- export declare function ConversationShellSkeleton(): import("react").JSX.Element;
6
- /**
7
- * Full-page skeleton shown by Suspense fallback on conversation route.
8
- */
9
- export declare function ChatConversationSkeleton(): import("react").JSX.Element;
@@ -1,45 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Skeleton } from "@ai-matrx/design-system";
4
- function ConversationShellSkeleton() {
5
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full overflow-hidden bg-textured w-full", children: [
6
- /* @__PURE__ */ jsx("div", { className: "flex flex-1 overflow-hidden min-h-0", children: /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto overscroll-contain min-h-0", children: /* @__PURE__ */ jsxs("div", { className: "max-w-[800px] mx-auto w-full px-4 pt-6 space-y-6", children: [
7
- /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-48" }) }),
8
- /* @__PURE__ */ jsx("div", { className: "flex justify-start", children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
9
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-64" }),
10
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-40" })
11
- ] }) })
12
- ] }) }) }),
13
- /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-2 pb-safe", children: /* @__PURE__ */ jsx("div", { className: "max-w-[800px] mx-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0 border border-border rounded-3xl py-2 bg-background", children: [
14
- /* @__PURE__ */ jsx("div", { className: "flex-1 py-[9px] px-3", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-[18px] w-32" }) }),
15
- /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full bg-blue-600/40 mr-1" })
16
- ] }) }) })
17
- ] });
18
- }
19
- function ChatConversationSkeleton() {
20
- return /* @__PURE__ */ jsxs("div", { className: "flex-1 min-h-0 flex flex-col overflow-hidden", children: [
21
- /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden min-h-0", children: /* @__PURE__ */ jsxs("div", { className: "max-w-[800px] mx-auto w-full px-4 pt-6 space-y-6", children: [
22
- /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxs("div", { className: "max-w-[75%] space-y-2", children: [
23
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-48 ml-auto" }),
24
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-32 ml-auto" })
25
- ] }) }),
26
- /* @__PURE__ */ jsx("div", { className: "flex justify-start", children: /* @__PURE__ */ jsxs("div", { className: "max-w-[75%] space-y-2", children: [
27
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-64" }),
28
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-56" }),
29
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-40" })
30
- ] }) }),
31
- /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx("div", { className: "max-w-[75%] space-y-2", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-36 ml-auto" }) }) }),
32
- /* @__PURE__ */ jsx("div", { className: "flex justify-start", children: /* @__PURE__ */ jsxs("div", { className: "max-w-[75%] space-y-2", children: [
33
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-72" }),
34
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-60" }),
35
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-48" }),
36
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-32" })
37
- ] }) })
38
- ] }) }),
39
- /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-2 pb-safe", children: /* @__PURE__ */ jsx("div", { className: "max-w-[800px] mx-auto", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-12 w-full rounded-xl" }) }) })
40
- ] });
41
- }
42
- export {
43
- ChatConversationSkeleton,
44
- ConversationShellSkeleton
45
- };
@@ -1 +0,0 @@
1
- export default function ChatPanelBackButton(): import("react").JSX.Element;
@@ -1,26 +0,0 @@
1
- "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { ChevronLeftTapButton } from "@ai-matrx/design-system/tap-target/buttons";
4
- function ChatPanelBackButton() {
5
- function handleBack() {
6
- const panelCheckbox = document.getElementById(
7
- "shell-panel-mobile"
8
- );
9
- const menuCheckbox = document.getElementById(
10
- "shell-mobile-menu"
11
- );
12
- if (panelCheckbox) panelCheckbox.checked = false;
13
- if (menuCheckbox) menuCheckbox.checked = true;
14
- }
15
- return /* @__PURE__ */ jsx(
16
- ChevronLeftTapButton,
17
- {
18
- variant: "transparent",
19
- onClick: handleBack,
20
- ariaLabel: "Back to main navigation"
21
- }
22
- );
23
- }
24
- export {
25
- ChatPanelBackButton as default
26
- };
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- interface MessageErrorBoundaryProps {
3
- children: React.ReactNode;
4
- messageId?: string;
5
- }
6
- interface MessageErrorBoundaryState {
7
- hasError: boolean;
8
- }
9
- /**
10
- * Per-message error boundary.
11
- * Confines rendering errors to individual messages so the sidebar, header,
12
- * and all other messages remain usable when one message crashes.
13
- */
14
- export declare class MessageErrorBoundary extends React.Component<MessageErrorBoundaryProps, MessageErrorBoundaryState> {
15
- constructor(props: MessageErrorBoundaryProps);
16
- static getDerivedStateFromError(): MessageErrorBoundaryState;
17
- componentDidCatch(error: Error, info: React.ErrorInfo): void;
18
- render(): string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | Iterable<React.ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
19
- }
20
- export default MessageErrorBoundary;