@solidxai/core-ui 0.1.20-beta.1 → 0.1.21-beta.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 (180) hide show
  1. package/dist/components/common/FileReaderExt.d.ts.map +1 -1
  2. package/dist/components/common/FileReaderExt.js +22 -11
  3. package/dist/components/common/FileReaderExt.js.map +1 -1
  4. package/dist/components/common/FileReaderExt.tsx +27 -14
  5. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  6. package/dist/components/common/SocialMediaLogin.js +1 -1
  7. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  8. package/dist/components/common/SocialMediaLogin.tsx +50 -19
  9. package/dist/components/common/solid-export.css +75 -0
  10. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +71 -0
  11. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  12. package/dist/components/core/form/SolidFormView.js +14 -0
  13. package/dist/components/core/form/SolidFormView.js.map +1 -1
  14. package/dist/components/core/form/SolidFormView.tsx +13 -0
  15. package/dist/components/core/form/fields/SolidMediaMultipleField.js +3 -3
  16. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  17. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +3 -3
  18. package/dist/components/core/form/fields/SolidMediaSingleField.js +2 -2
  19. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  20. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +2 -2
  21. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +2 -2
  22. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  23. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -4
  24. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +1 -1
  25. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  26. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -3
  27. package/dist/components/core/solid-agent/SolidAgentChat.d.ts +3 -1
  28. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  29. package/dist/components/core/solid-agent/SolidAgentChat.js +150 -22
  30. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  31. package/dist/components/core/solid-agent/SolidAgentChat.tsx +76 -15
  32. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +2 -0
  33. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -1
  34. package/dist/components/core/solid-agent/SolidAgentEmbedded.js +4 -4
  35. package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -1
  36. package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +7 -1
  37. package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -1
  38. package/dist/components/core/solid-agent/SolidAgentHost.js +79 -1
  39. package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -1
  40. package/dist/components/core/solid-agent/SolidAgentHost.tsx +69 -2
  41. package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -1
  42. package/dist/components/core/solid-agent/agentEvents.js +1 -3
  43. package/dist/components/core/solid-agent/agentEvents.js.map +1 -1
  44. package/dist/components/core/solid-agent/agentEvents.ts +5 -3
  45. package/dist/components/core/solid-agent/client/agentPublicEvents.d.ts +88 -0
  46. package/dist/components/core/solid-agent/client/agentPublicEvents.d.ts.map +1 -0
  47. package/dist/components/core/solid-agent/client/agentPublicEvents.js +26 -0
  48. package/dist/components/core/solid-agent/client/agentPublicEvents.js.map +1 -0
  49. package/dist/components/core/solid-agent/client/agentPublicEvents.ts +66 -0
  50. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +18 -3
  51. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  52. package/dist/components/core/solid-agent/client/agentRuntime.js +173 -31
  53. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  54. package/dist/components/core/solid-agent/client/agentRuntime.ts +126 -16
  55. package/dist/components/core/solid-agent/client/agentSocket.d.ts +3 -0
  56. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  57. package/dist/components/core/solid-agent/client/agentSocket.js +19 -1
  58. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  59. package/dist/components/core/solid-agent/client/agentSocket.ts +11 -1
  60. package/dist/components/core/solid-agent/client/beforeUserMessageSend.d.ts +9 -0
  61. package/dist/components/core/solid-agent/client/beforeUserMessageSend.d.ts.map +1 -0
  62. package/dist/components/core/solid-agent/client/beforeUserMessageSend.js +53 -0
  63. package/dist/components/core/solid-agent/client/beforeUserMessageSend.js.map +1 -0
  64. package/dist/components/core/solid-agent/client/beforeUserMessageSend.ts +26 -0
  65. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -1
  66. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +4 -3
  67. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  68. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +4 -2
  69. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +29 -0
  70. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  71. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +45 -2
  72. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  73. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +49 -2
  74. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +1 -0
  75. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -1
  76. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +2 -1
  77. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -1
  78. package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +15 -1
  79. package/dist/components/core/solid-agent/types.d.ts +13 -0
  80. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  81. package/dist/components/core/solid-agent/types.js.map +1 -1
  82. package/dist/components/core/solid-agent/types.ts +8 -0
  83. package/dist/components/core/solid-agent/useAgentChat.d.ts +1 -1
  84. package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -1
  85. package/dist/components/core/solid-agent/useAgentChat.js +7 -4
  86. package/dist/components/core/solid-agent/useAgentChat.js.map +1 -1
  87. package/dist/components/core/solid-agent/useAgentChat.ts +9 -5
  88. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -1
  89. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +12 -4
  90. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  91. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +18 -0
  92. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.d.ts +4 -0
  93. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.d.ts.map +1 -0
  94. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.js +30 -0
  95. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.js.map +1 -0
  96. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.tsx +41 -0
  97. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +39 -0
  98. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts +2 -1
  99. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  100. package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -2
  101. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  102. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
  103. package/dist/helpers/adminViewRefresh.d.ts +13 -0
  104. package/dist/helpers/adminViewRefresh.d.ts.map +1 -0
  105. package/dist/helpers/adminViewRefresh.js +14 -0
  106. package/dist/helpers/adminViewRefresh.js.map +1 -0
  107. package/dist/helpers/adminViewRefresh.ts +26 -0
  108. package/dist/helpers/eventBus.d.ts +1 -0
  109. package/dist/helpers/eventBus.d.ts.map +1 -1
  110. package/dist/helpers/eventBus.js +1 -0
  111. package/dist/helpers/eventBus.js.map +1 -1
  112. package/dist/helpers/eventBus.ts +1 -0
  113. package/dist/helpers/fileTypeIcon.d.ts.map +1 -1
  114. package/dist/helpers/fileTypeIcon.js +4 -1
  115. package/dist/helpers/fileTypeIcon.js.map +1 -1
  116. package/dist/helpers/fileTypeIcon.tsx +15 -0
  117. package/dist/helpers/registry.d.ts.map +1 -1
  118. package/dist/helpers/registry.js +2 -0
  119. package/dist/helpers/registry.js.map +1 -1
  120. package/dist/helpers/registry.ts +2 -0
  121. package/dist/helpers/routePaths.d.ts +13 -0
  122. package/dist/helpers/routePaths.d.ts.map +1 -1
  123. package/dist/helpers/routePaths.js +39 -0
  124. package/dist/helpers/routePaths.js.map +1 -1
  125. package/dist/helpers/routePaths.ts +48 -0
  126. package/dist/redux/features/agentSlice.d.ts +2 -1
  127. package/dist/redux/features/agentSlice.d.ts.map +1 -1
  128. package/dist/redux/features/agentSlice.js +2 -2
  129. package/dist/redux/features/agentSlice.js.map +1 -1
  130. package/dist/redux/features/agentSlice.ts +8 -3
  131. package/dist/resources/solid-custom.css +42 -0
  132. package/dist/resources/solid-tailwind-generated.css +1 -1
  133. package/dist/routes/pages/admin/core/AgentHubModuleField.css +15 -0
  134. package/dist/routes/pages/admin/core/AgentHubModuleField.d.ts +22 -0
  135. package/dist/routes/pages/admin/core/AgentHubModuleField.d.ts.map +1 -0
  136. package/dist/routes/pages/admin/core/AgentHubModuleField.js +42 -0
  137. package/dist/routes/pages/admin/core/AgentHubModuleField.js.map +1 -0
  138. package/dist/routes/pages/admin/core/AgentHubModuleField.tsx +54 -0
  139. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +3 -1
  140. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -1
  141. package/dist/routes/pages/admin/core/AgentHubTagsField.js +3 -3
  142. package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -1
  143. package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +7 -3
  144. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  145. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +37 -29
  146. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  147. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +12 -6
  148. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
  149. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +22 -15
  150. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
  151. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +17 -7
  152. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
  153. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +21 -15
  154. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
  155. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +16 -9
  156. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -1
  157. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +149 -37
  158. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -1
  159. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +283 -73
  160. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  161. package/dist/routes/pages/admin/core/CardPage.js +9 -1
  162. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  163. package/dist/routes/pages/admin/core/CardPage.tsx +9 -1
  164. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  165. package/dist/routes/pages/admin/core/KanbanPage.js +9 -1
  166. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  167. package/dist/routes/pages/admin/core/KanbanPage.tsx +9 -1
  168. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  169. package/dist/routes/pages/admin/core/ListPage.js +10 -1
  170. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  171. package/dist/routes/pages/admin/core/ListPage.tsx +10 -1
  172. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -1
  173. package/dist/routes/pages/admin/core/TreePage.js +9 -1
  174. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  175. package/dist/routes/pages/admin/core/TreePage.tsx +9 -1
  176. package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -1
  177. package/dist/routes/pages/embed/AgentEmbedPage.js +67 -4
  178. package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -1
  179. package/dist/routes/pages/embed/AgentEmbedPage.tsx +61 -4
  180. package/package.json +1 -1
@@ -145,9 +145,7 @@ export function applyAgentEvent(state, event, replay, at) {
145
145
  var attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];
146
146
  if (content || attachments.length) {
147
147
  // agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.
148
- var replayEventData = attachments.length
149
- ? { content: content, attachments: attachments, agentEventId: (_h = eventData.agentEventId) !== null && _h !== void 0 ? _h : frame.id }
150
- : { content: content };
148
+ var replayEventData = __assign(__assign({ content: content }, (attachments.length ? { attachments: attachments, agentEventId: (_h = eventData.agentEventId) !== null && _h !== void 0 ? _h : frame.id } : {})), (eventData.message_context ? { message_context: eventData.message_context } : {}));
151
149
  state.items.push({ id: nextItemId("u"), at: at, eventType: eventType, eventData: replayEventData });
152
150
  }
153
151
  state.liveToolId = null;
@@ -1 +1 @@
1
- {"version":3,"file":"agentEvents.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/agentEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { describeToolArgs, isLlmMetadata, parseToolResult } from \"./agentFormat\";\nimport { AgentEventTypes, type AgentChatEvent, type AgentChatItem, type AgentCommand, type AgentWireFrame } from \"./types\";\n\n/**\n * Turns agent events into thread items. Used by agentSlice for live socket frames and by the\n * history loader for stored events, so both render identically.\n *\n * Rule: if `event_data.widget` is present the event becomes (or updates) a widget item rendered\n * by that registered widget; otherwise the `event_type` switch below decides what, if anything,\n * to add, and the thread renders it with the default widget for its type.\n */\n\n/** The slice of chat state this reducer reads and writes (agentSlice state satisfies it). */\nexport type AgentThreadState = {\n items: AgentChatItem[];\n sessionId: string | null;\n historySessionId: string | null;\n commands: AgentCommand[];\n working: boolean;\n thinking: boolean;\n authError: string | null;\n liveToolId: string | null;\n streamingId: string | null;\n turnStreamed: boolean;\n};\n\nexport function createThreadState(): AgentThreadState {\n return {\n items: [],\n sessionId: null,\n historySessionId: null,\n commands: [],\n working: false,\n thinking: false,\n authError: null,\n liveToolId: null,\n streamingId: null,\n turnStreamed: false,\n };\n}\n\n/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */\nexport function normalizeAgentFrame(frame: AgentWireFrame): AgentChatEvent {\n const eventType = frame.event_type ?? frame.type ?? \"\";\n const raw = frame.event_data ?? frame.data ?? {};\n const eventData = typeof raw === \"object\" && raw !== null ? raw : { value: raw };\n return { eventType, eventData, frame };\n}\n\nlet seq = 0;\nexport const nextItemId = (prefix: string) => `${prefix}-${Date.now()}-${++seq}`;\n\nfunction findItem(state: AgentThreadState, id: string | null) {\n return id ? state.items.find((item) => item.id === id) ?? null : null;\n}\n\nfunction freezeLiveTool(state: AgentThreadState) {\n const tool = findItem(state, state.liveToolId);\n if (tool) tool.live = false;\n state.liveToolId = null;\n}\n\nfunction stopStreaming(state: AgentThreadState) {\n const streaming = findItem(state, state.streamingId);\n if (streaming) streaming.live = false;\n state.streamingId = null;\n}\n\nfunction endTurn(state: AgentThreadState) {\n freezeLiveTool(state);\n stopStreaming(state);\n state.working = false;\n state.thinking = false;\n}\n\nfunction lastAssistantText(state: AgentThreadState): string | undefined {\n for (let i = state.items.length - 1; i >= 0; i--) {\n const item = state.items[i];\n if (item.eventType === AgentEventTypes.llmComplete && !item.widget) return item.eventData.content;\n if (item.eventType === AgentEventTypes.userMessage) return undefined;\n }\n return undefined;\n}\n\nfunction pushAssistantText(state: AgentThreadState, content: string, at: number) {\n freezeLiveTool(state);\n state.items.push({ id: nextItemId(\"llm\"), at, eventType: AgentEventTypes.llmComplete, eventData: { content } });\n}\n\n/** Adds or updates the widget item named by `event_data.widget`. */\nfunction applyWidgetEvent(state: AgentThreadState, event: AgentChatEvent, at: number) {\n const { eventType, eventData } = event;\n const widgetId: string = eventData.widgetId ?? eventData.widget_id ?? nextItemId(eventType || \"widget\");\n const existing = state.items.find((item) => item.widgetId === widgetId);\n if (existing) {\n if (existing.final) return;\n existing.eventType = eventType;\n existing.eventData = eventData;\n existing.widget = eventData.widget;\n existing.final = !!eventData.final;\n return;\n }\n freezeLiveTool(state);\n stopStreaming(state);\n state.items.push({ id: nextItemId(\"w\"), at, eventType, eventData, widget: eventData.widget, widgetId, final: !!eventData.final });\n state.thinking = false;\n}\n\n/**\n * Applies one event. `replay` is true when rebuilding from stored history: user messages then\n * come from the event stream (live ones are added locally when the user sends them).\n */\nexport function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent, replay = false, at = Date.now()) {\n const { eventType, eventData, frame } = event;\n const hasWidget = typeof eventData.widget === \"string\" && eventData.widget.length > 0;\n\n if (hasWidget) {\n applyWidgetEvent(state, event, at);\n // Widget events still close the turn when they are end-of-turn events.\n switch (eventType) {\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n endTurn(state);\n break;\n }\n return;\n }\n\n switch (eventType) {\n case AgentEventTypes.sessionStarted: {\n const sessionId = frame.session_id ?? eventData.session_id ?? null;\n state.sessionId = sessionId;\n state.historySessionId = frame.history_session_id ?? eventData.history_session_id ?? sessionId;\n const commands = frame.commands ?? eventData.commands;\n if (Array.isArray(commands)) state.commands = commands;\n state.authError = null;\n break;\n }\n\n case AgentEventTypes.sessionEnded:\n state.sessionId = null;\n break;\n\n case AgentEventTypes.userMessage:\n if (replay) {\n const content = eventData.content ?? frame.content ?? \"\";\n const attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];\n if (content || attachments.length) {\n // agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.\n const replayEventData = attachments.length\n ? { content, attachments, agentEventId: eventData.agentEventId ?? frame.id }\n : { content };\n state.items.push({ id: nextItemId(\"u\"), at, eventType, eventData: replayEventData });\n }\n state.liveToolId = null;\n }\n break;\n\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n if (!replay) {\n state.working = true;\n if (!state.liveToolId) state.thinking = true;\n }\n break;\n\n case AgentEventTypes.stepComplete:\n case AgentEventTypes.agentComplete:\n freezeLiveTool(state);\n break;\n\n case AgentEventTypes.toolCalling: {\n freezeLiveTool(state);\n stopStreaming(state);\n const toolName = eventData.tool_name ?? frame.tool_name ?? \"tool\";\n const args = eventData.arguments ?? {};\n const id = nextItemId(\"tool\");\n state.items.push({\n id,\n at,\n eventType,\n eventData: { tool_name: toolName, arguments: args, summary: describeToolArgs(args, toolName) },\n live: !replay,\n });\n state.liveToolId = id;\n state.thinking = false;\n break;\n }\n\n case AgentEventTypes.toolProgress: {\n const tool = findItem(state, state.liveToolId);\n if (!tool) break;\n const label = eventData.label ?? \"\";\n const status = eventData.status === \"success\" || eventData.status === \"done\" ? \"done\" : \"running\";\n const progress: any[] = tool.eventData.progress ?? [];\n const index = progress.findIndex((step) => step.label === label);\n const step = { label, status, duration_ms: eventData.duration_ms ?? progress[index]?.duration_ms };\n tool.eventData = { ...tool.eventData, progress: index >= 0 ? progress.map((entry, i) => (i === index ? step : entry)) : [...progress, step] };\n break;\n }\n\n case AgentEventTypes.toolResult: {\n const tool = findItem(state, state.liveToolId);\n if (tool) {\n const output = eventData.output ?? frame.content ?? \"\";\n const parsed = output ? parseToolResult(String(output)) : null;\n tool.eventData = {\n ...tool.eventData,\n duration_ms: eventData.duration_ms ?? frame.duration_ms,\n ...(parsed ? { status: parsed.status, output: parsed.text, output_raw: String(output) } : {}),\n };\n }\n freezeLiveTool(state);\n if (!replay) state.thinking = true;\n break;\n }\n\n case AgentEventTypes.llmToken: {\n const delta: string = eventData.delta ?? \"\";\n if (!delta) break;\n freezeLiveTool(state);\n state.thinking = false;\n state.turnStreamed = true;\n const streaming = findItem(state, state.streamingId);\n if (streaming) {\n streaming.eventData = { ...streaming.eventData, content: `${streaming.eventData.content ?? \"\"}${delta}` };\n } else {\n const id = nextItemId(\"stream\");\n state.items.push({ id, at, eventType: AgentEventTypes.llmComplete, eventData: { content: delta }, live: true });\n state.streamingId = id;\n }\n break;\n }\n\n case AgentEventTypes.llmComplete: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n const streamed = findItem(state, state.streamingId);\n stopStreaming(state);\n if (!content || isLlmMetadata(content)) break;\n if (streamed) streamed.eventData = { ...streamed.eventData, content }; // authoritative final text\n else if (lastAssistantText(state) !== content) pushAssistantText(state, content, at);\n break;\n }\n\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n if (content && !state.turnStreamed && !isLlmMetadata(content) && lastAssistantText(state) !== content) {\n pushAssistantText(state, content, at);\n }\n endTurn(state);\n state.turnStreamed = false;\n break;\n }\n\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n endTurn(state);\n state.items.push({ id: nextItemId(\"cancel\"), at, eventType: AgentEventTypes.executionCancelled, eventData: { message: eventData.message ?? \"Stopped.\" } });\n break;\n\n case AgentEventTypes.agentError:\n case AgentEventTypes.error: {\n const message: string = eventData.error ?? frame.content ?? \"Unknown error\";\n endTurn(state);\n if (!replay && /unauthori[sz]ed|access token|lacks required permission/i.test(message)) state.authError = message;\n state.items.push({ id: nextItemId(\"err\"), at, eventType: AgentEventTypes.agentError, eventData: { error: message } });\n break;\n }\n\n default:\n // Bookkeeping events (LlmRequest, SkillActivation, ...) are not rendered without a widget.\n break;\n }\n}\n\n/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */\nexport function historyToItems(rows: any[]): AgentChatItem[] {\n const state = createThreadState();\n for (const row of rows) {\n const frame: AgentWireFrame = { ...row, event_type: row.event_type ?? (row.role === \"user\" ? AgentEventTypes.userMessage : row.role === \"assistant\" ? AgentEventTypes.llmComplete : \"\") };\n const at = row.timestamp ? new Date(row.timestamp).getTime() : Date.now();\n applyAgentEvent(state, normalizeAgentFrame(frame), true, at);\n }\n freezeLiveTool(state);\n stopStreaming(state);\n return state.items;\n}\n"]}
1
+ {"version":3,"file":"agentEvents.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/agentEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { describeToolArgs, isLlmMetadata, parseToolResult } from \"./agentFormat\";\nimport { AgentEventTypes, type AgentChatEvent, type AgentChatItem, type AgentCommand, type AgentWireFrame } from \"./types\";\n\n/**\n * Turns agent events into thread items. Used by agentSlice for live socket frames and by the\n * history loader for stored events, so both render identically.\n *\n * Rule: if `event_data.widget` is present the event becomes (or updates) a widget item rendered\n * by that registered widget; otherwise the `event_type` switch below decides what, if anything,\n * to add, and the thread renders it with the default widget for its type.\n */\n\n/** The slice of chat state this reducer reads and writes (agentSlice state satisfies it). */\nexport type AgentThreadState = {\n items: AgentChatItem[];\n sessionId: string | null;\n historySessionId: string | null;\n commands: AgentCommand[];\n working: boolean;\n thinking: boolean;\n authError: string | null;\n liveToolId: string | null;\n streamingId: string | null;\n turnStreamed: boolean;\n};\n\nexport function createThreadState(): AgentThreadState {\n return {\n items: [],\n sessionId: null,\n historySessionId: null,\n commands: [],\n working: false,\n thinking: false,\n authError: null,\n liveToolId: null,\n streamingId: null,\n turnStreamed: false,\n };\n}\n\n/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */\nexport function normalizeAgentFrame(frame: AgentWireFrame): AgentChatEvent {\n const eventType = frame.event_type ?? frame.type ?? \"\";\n const raw = frame.event_data ?? frame.data ?? {};\n const eventData = typeof raw === \"object\" && raw !== null ? raw : { value: raw };\n return { eventType, eventData, frame };\n}\n\nlet seq = 0;\nexport const nextItemId = (prefix: string) => `${prefix}-${Date.now()}-${++seq}`;\n\nfunction findItem(state: AgentThreadState, id: string | null) {\n return id ? state.items.find((item) => item.id === id) ?? null : null;\n}\n\nfunction freezeLiveTool(state: AgentThreadState) {\n const tool = findItem(state, state.liveToolId);\n if (tool) tool.live = false;\n state.liveToolId = null;\n}\n\nfunction stopStreaming(state: AgentThreadState) {\n const streaming = findItem(state, state.streamingId);\n if (streaming) streaming.live = false;\n state.streamingId = null;\n}\n\nfunction endTurn(state: AgentThreadState) {\n freezeLiveTool(state);\n stopStreaming(state);\n state.working = false;\n state.thinking = false;\n}\n\nfunction lastAssistantText(state: AgentThreadState): string | undefined {\n for (let i = state.items.length - 1; i >= 0; i--) {\n const item = state.items[i];\n if (item.eventType === AgentEventTypes.llmComplete && !item.widget) return item.eventData.content;\n if (item.eventType === AgentEventTypes.userMessage) return undefined;\n }\n return undefined;\n}\n\nfunction pushAssistantText(state: AgentThreadState, content: string, at: number) {\n freezeLiveTool(state);\n state.items.push({ id: nextItemId(\"llm\"), at, eventType: AgentEventTypes.llmComplete, eventData: { content } });\n}\n\n/** Adds or updates the widget item named by `event_data.widget`. */\nfunction applyWidgetEvent(state: AgentThreadState, event: AgentChatEvent, at: number) {\n const { eventType, eventData } = event;\n const widgetId: string = eventData.widgetId ?? eventData.widget_id ?? nextItemId(eventType || \"widget\");\n const existing = state.items.find((item) => item.widgetId === widgetId);\n if (existing) {\n if (existing.final) return;\n existing.eventType = eventType;\n existing.eventData = eventData;\n existing.widget = eventData.widget;\n existing.final = !!eventData.final;\n return;\n }\n freezeLiveTool(state);\n stopStreaming(state);\n state.items.push({ id: nextItemId(\"w\"), at, eventType, eventData, widget: eventData.widget, widgetId, final: !!eventData.final });\n state.thinking = false;\n}\n\n/**\n * Applies one event. `replay` is true when rebuilding from stored history: user messages then\n * come from the event stream (live ones are added locally when the user sends them).\n */\nexport function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent, replay = false, at = Date.now()) {\n const { eventType, eventData, frame } = event;\n const hasWidget = typeof eventData.widget === \"string\" && eventData.widget.length > 0;\n\n if (hasWidget) {\n applyWidgetEvent(state, event, at);\n // Widget events still close the turn when they are end-of-turn events.\n switch (eventType) {\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n endTurn(state);\n break;\n }\n return;\n }\n\n switch (eventType) {\n case AgentEventTypes.sessionStarted: {\n const sessionId = frame.session_id ?? eventData.session_id ?? null;\n state.sessionId = sessionId;\n state.historySessionId = frame.history_session_id ?? eventData.history_session_id ?? sessionId;\n const commands = frame.commands ?? eventData.commands;\n if (Array.isArray(commands)) state.commands = commands;\n state.authError = null;\n break;\n }\n\n case AgentEventTypes.sessionEnded:\n state.sessionId = null;\n break;\n\n case AgentEventTypes.userMessage:\n if (replay) {\n const content = eventData.content ?? frame.content ?? \"\";\n const attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];\n if (content || attachments.length) {\n // agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.\n const replayEventData = {\n content,\n ...(attachments.length ? { attachments, agentEventId: eventData.agentEventId ?? frame.id } : {}),\n ...(eventData.message_context ? { message_context: eventData.message_context } : {}),\n };\n state.items.push({ id: nextItemId(\"u\"), at, eventType, eventData: replayEventData });\n }\n state.liveToolId = null;\n }\n break;\n\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n if (!replay) {\n state.working = true;\n if (!state.liveToolId) state.thinking = true;\n }\n break;\n\n case AgentEventTypes.stepComplete:\n case AgentEventTypes.agentComplete:\n freezeLiveTool(state);\n break;\n\n case AgentEventTypes.toolCalling: {\n freezeLiveTool(state);\n stopStreaming(state);\n const toolName = eventData.tool_name ?? frame.tool_name ?? \"tool\";\n const args = eventData.arguments ?? {};\n const id = nextItemId(\"tool\");\n state.items.push({\n id,\n at,\n eventType,\n eventData: { tool_name: toolName, arguments: args, summary: describeToolArgs(args, toolName) },\n live: !replay,\n });\n state.liveToolId = id;\n state.thinking = false;\n break;\n }\n\n case AgentEventTypes.toolProgress: {\n const tool = findItem(state, state.liveToolId);\n if (!tool) break;\n const label = eventData.label ?? \"\";\n const status = eventData.status === \"success\" || eventData.status === \"done\" ? \"done\" : \"running\";\n const progress: any[] = tool.eventData.progress ?? [];\n const index = progress.findIndex((step) => step.label === label);\n const step = { label, status, duration_ms: eventData.duration_ms ?? progress[index]?.duration_ms };\n tool.eventData = { ...tool.eventData, progress: index >= 0 ? progress.map((entry, i) => (i === index ? step : entry)) : [...progress, step] };\n break;\n }\n\n case AgentEventTypes.toolResult: {\n const tool = findItem(state, state.liveToolId);\n if (tool) {\n const output = eventData.output ?? frame.content ?? \"\";\n const parsed = output ? parseToolResult(String(output)) : null;\n tool.eventData = {\n ...tool.eventData,\n duration_ms: eventData.duration_ms ?? frame.duration_ms,\n ...(parsed ? { status: parsed.status, output: parsed.text, output_raw: String(output) } : {}),\n };\n }\n freezeLiveTool(state);\n if (!replay) state.thinking = true;\n break;\n }\n\n case AgentEventTypes.llmToken: {\n const delta: string = eventData.delta ?? \"\";\n if (!delta) break;\n freezeLiveTool(state);\n state.thinking = false;\n state.turnStreamed = true;\n const streaming = findItem(state, state.streamingId);\n if (streaming) {\n streaming.eventData = { ...streaming.eventData, content: `${streaming.eventData.content ?? \"\"}${delta}` };\n } else {\n const id = nextItemId(\"stream\");\n state.items.push({ id, at, eventType: AgentEventTypes.llmComplete, eventData: { content: delta }, live: true });\n state.streamingId = id;\n }\n break;\n }\n\n case AgentEventTypes.llmComplete: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n const streamed = findItem(state, state.streamingId);\n stopStreaming(state);\n if (!content || isLlmMetadata(content)) break;\n if (streamed) streamed.eventData = { ...streamed.eventData, content }; // authoritative final text\n else if (lastAssistantText(state) !== content) pushAssistantText(state, content, at);\n break;\n }\n\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n if (content && !state.turnStreamed && !isLlmMetadata(content) && lastAssistantText(state) !== content) {\n pushAssistantText(state, content, at);\n }\n endTurn(state);\n state.turnStreamed = false;\n break;\n }\n\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n endTurn(state);\n state.items.push({ id: nextItemId(\"cancel\"), at, eventType: AgentEventTypes.executionCancelled, eventData: { message: eventData.message ?? \"Stopped.\" } });\n break;\n\n case AgentEventTypes.agentError:\n case AgentEventTypes.error: {\n const message: string = eventData.error ?? frame.content ?? \"Unknown error\";\n endTurn(state);\n if (!replay && /unauthori[sz]ed|access token|lacks required permission/i.test(message)) state.authError = message;\n state.items.push({ id: nextItemId(\"err\"), at, eventType: AgentEventTypes.agentError, eventData: { error: message } });\n break;\n }\n\n default:\n // Bookkeeping events (LlmRequest, SkillActivation, ...) are not rendered without a widget.\n break;\n }\n}\n\n/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */\nexport function historyToItems(rows: any[]): AgentChatItem[] {\n const state = createThreadState();\n for (const row of rows) {\n const frame: AgentWireFrame = { ...row, event_type: row.event_type ?? (row.role === \"user\" ? AgentEventTypes.userMessage : row.role === \"assistant\" ? AgentEventTypes.llmComplete : \"\") };\n const at = row.timestamp ? new Date(row.timestamp).getTime() : Date.now();\n applyAgentEvent(state, normalizeAgentFrame(frame), true, at);\n }\n freezeLiveTool(state);\n stopStreaming(state);\n return state.items;\n}\n"]}
@@ -151,9 +151,11 @@ export function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent,
151
151
  const attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];
152
152
  if (content || attachments.length) {
153
153
  // agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.
154
- const replayEventData = attachments.length
155
- ? { content, attachments, agentEventId: eventData.agentEventId ?? frame.id }
156
- : { content };
154
+ const replayEventData = {
155
+ content,
156
+ ...(attachments.length ? { attachments, agentEventId: eventData.agentEventId ?? frame.id } : {}),
157
+ ...(eventData.message_context ? { message_context: eventData.message_context } : {}),
158
+ };
157
159
  state.items.push({ id: nextItemId("u"), at, eventType, eventData: replayEventData });
158
160
  }
159
161
  state.liveToolId = null;
@@ -0,0 +1,88 @@
1
+ import type { AgentConnection, AgentRuntimeType } from "../types";
2
+ export type AgentPublicEventPayloads = {
3
+ onConnectionStateChanged: {
4
+ state: AgentConnection;
5
+ };
6
+ onAfterUserMessageSend: {
7
+ sessionId: string | null;
8
+ source: "composer" | "sdk" | "prefill" | "widget";
9
+ deliveryStage: "sent";
10
+ };
11
+ onUserMessageFailed: {
12
+ stage: "context" | "upload";
13
+ code: string;
14
+ retryable: boolean;
15
+ };
16
+ onUserMessageQueued: {
17
+ source: "composer" | "sdk" | "prefill" | "widget";
18
+ hasAttachments: boolean;
19
+ contextNamespaces: string[];
20
+ };
21
+ onCancelRequested: {
22
+ sessionId: string;
23
+ };
24
+ onNewChatRequested: {
25
+ sessionId: string | null;
26
+ };
27
+ onSessionStarted: {
28
+ sessionId: string | null;
29
+ };
30
+ onSessionResumed: {
31
+ sessionId: string | null;
32
+ };
33
+ onSessionEnded: {
34
+ sessionId: string | null;
35
+ reason: unknown;
36
+ };
37
+ onAgentTurnStarted: {
38
+ sessionId: string | null;
39
+ };
40
+ onAgentResponseStarted: {
41
+ sessionId: string | null;
42
+ };
43
+ onAgentResponseCompleted: {
44
+ sessionId: string | null;
45
+ };
46
+ onAgentTurnCompleted: {
47
+ sessionId: string | null;
48
+ outcome: "completed";
49
+ };
50
+ onAgentNavigationRequested: {
51
+ schemaVersion: 1;
52
+ kind: string;
53
+ domain: string;
54
+ payload: Record<string, unknown>;
55
+ message?: string;
56
+ sessionId: string | null;
57
+ };
58
+ onError: {
59
+ stage: "runtime";
60
+ code: string;
61
+ retryable: boolean;
62
+ };
63
+ onHumanInputRequested: {
64
+ sessionId: string | null;
65
+ requestId: unknown;
66
+ displayPayload?: string;
67
+ };
68
+ onApprovalRequested: {
69
+ sessionId: string | null;
70
+ requestId: unknown;
71
+ displayPayload?: string;
72
+ };
73
+ onTurnCancelled: {
74
+ sessionId: string | null;
75
+ };
76
+ };
77
+ export type AgentPublicEventName = keyof AgentPublicEventPayloads;
78
+ export type AgentPublicEvent = {
79
+ [E in AgentPublicEventName]: {
80
+ event: E;
81
+ payload: AgentPublicEventPayloads[E];
82
+ agentType: AgentRuntimeType;
83
+ };
84
+ }[AgentPublicEventName];
85
+ export type AgentPublicEventListener = (event: AgentPublicEvent) => void;
86
+ export declare function onAgentPublicEvent(listener: AgentPublicEventListener): () => void;
87
+ export declare function emitAgentPublicEvent<E extends AgentPublicEventName>(event: E, payload: AgentPublicEventPayloads[E], agentType: AgentRuntimeType): void;
88
+ //# sourceMappingURL=agentPublicEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentPublicEvents.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/client/agentPublicEvents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ var listeners = new Set();
2
+ export function onAgentPublicEvent(listener) {
3
+ listeners.add(listener);
4
+ return function () {
5
+ listeners.delete(listener);
6
+ };
7
+ }
8
+ export function emitAgentPublicEvent(event, payload, agentType) {
9
+ var notification = { event: event, payload: payload, agentType: agentType };
10
+ for (var _i = 0, _a = Array.from(listeners); _i < _a.length; _i++) {
11
+ var listener = _a[_i];
12
+ try {
13
+ listener(notification);
14
+ }
15
+ catch (error) {
16
+ console.error("[solid-agent] Public event listener failed", error);
17
+ }
18
+ }
19
+ // Preserve the existing same-window event contract while consumers migrate to the typed bus.
20
+ if (typeof window !== "undefined") {
21
+ window.dispatchEvent(new CustomEvent("solid-agent-embed:public-event", {
22
+ detail: { event: event, payload: payload, agentType: agentType },
23
+ }));
24
+ }
25
+ }
26
+ //# sourceMappingURL=agentPublicEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentPublicEvents.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/client/agentPublicEvents.ts"],"names":[],"mappings":"AAoCA,IAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,QAAkC;IACjE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO;QACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,KAAQ,EACR,OAAoC,EACpC,SAA2B;IAE3B,IAAM,YAAY,GAAG,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAsB,CAAC;IACvE,KAAuB,UAAqB,EAArB,KAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAArB,cAAqB,EAArB,IAAqB,EAAE;QAAzC,IAAM,QAAQ,SAAA;QACf,IAAI;YACA,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC1B;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;SACtE;KACJ;IAED,6FAA6F;IAC7F,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gCAAgC,EAAE;YACnE,MAAM,EAAE,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE;SACxC,CAAC,CAAC,CAAC;KACP;AACL,CAAC","sourcesContent":["import type { AgentConnection, AgentRuntimeType } from \"../types\";\n\nexport type AgentPublicEventPayloads = {\n onConnectionStateChanged: { state: AgentConnection };\n onAfterUserMessageSend: { sessionId: string | null; source: \"composer\" | \"sdk\" | \"prefill\" | \"widget\"; deliveryStage: \"sent\" };\n onUserMessageFailed: { stage: \"context\" | \"upload\"; code: string; retryable: boolean };\n onUserMessageQueued: { source: \"composer\" | \"sdk\" | \"prefill\" | \"widget\"; hasAttachments: boolean; contextNamespaces: string[] };\n onCancelRequested: { sessionId: string };\n onNewChatRequested: { sessionId: string | null };\n onSessionStarted: { sessionId: string | null };\n onSessionResumed: { sessionId: string | null };\n onSessionEnded: { sessionId: string | null; reason: unknown };\n onAgentTurnStarted: { sessionId: string | null };\n onAgentResponseStarted: { sessionId: string | null };\n onAgentResponseCompleted: { sessionId: string | null };\n onAgentTurnCompleted: { sessionId: string | null; outcome: \"completed\" };\n onAgentNavigationRequested: {\n schemaVersion: 1;\n kind: string;\n domain: string;\n payload: Record<string, unknown>;\n message?: string;\n sessionId: string | null;\n };\n onError: { stage: \"runtime\"; code: string; retryable: boolean };\n onHumanInputRequested: { sessionId: string | null; requestId: unknown; displayPayload?: string };\n onApprovalRequested: { sessionId: string | null; requestId: unknown; displayPayload?: string };\n onTurnCancelled: { sessionId: string | null };\n};\n\nexport type AgentPublicEventName = keyof AgentPublicEventPayloads;\nexport type AgentPublicEvent = {\n [E in AgentPublicEventName]: { event: E; payload: AgentPublicEventPayloads[E]; agentType: AgentRuntimeType }\n}[AgentPublicEventName];\nexport type AgentPublicEventListener = (event: AgentPublicEvent) => void;\n\nconst listeners = new Set<AgentPublicEventListener>();\n\nexport function onAgentPublicEvent(listener: AgentPublicEventListener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nexport function emitAgentPublicEvent<E extends AgentPublicEventName>(\n event: E,\n payload: AgentPublicEventPayloads[E],\n agentType: AgentRuntimeType,\n) {\n const notification = { event, payload, agentType } as AgentPublicEvent;\n for (const listener of Array.from(listeners)) {\n try {\n listener(notification);\n } catch (error) {\n console.error(\"[solid-agent] Public event listener failed\", error);\n }\n }\n\n // Preserve the existing same-window event contract while consumers migrate to the typed bus.\n if (typeof window !== \"undefined\") {\n window.dispatchEvent(new CustomEvent(\"solid-agent-embed:public-event\", {\n detail: { event, payload, agentType },\n }));\n }\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import type { AgentConnection, AgentRuntimeType } from "../types";
2
+
3
+ export type AgentPublicEventPayloads = {
4
+ onConnectionStateChanged: { state: AgentConnection };
5
+ onAfterUserMessageSend: { sessionId: string | null; source: "composer" | "sdk" | "prefill" | "widget"; deliveryStage: "sent" };
6
+ onUserMessageFailed: { stage: "context" | "upload"; code: string; retryable: boolean };
7
+ onUserMessageQueued: { source: "composer" | "sdk" | "prefill" | "widget"; hasAttachments: boolean; contextNamespaces: string[] };
8
+ onCancelRequested: { sessionId: string };
9
+ onNewChatRequested: { sessionId: string | null };
10
+ onSessionStarted: { sessionId: string | null };
11
+ onSessionResumed: { sessionId: string | null };
12
+ onSessionEnded: { sessionId: string | null; reason: unknown };
13
+ onAgentTurnStarted: { sessionId: string | null };
14
+ onAgentResponseStarted: { sessionId: string | null };
15
+ onAgentResponseCompleted: { sessionId: string | null };
16
+ onAgentTurnCompleted: { sessionId: string | null; outcome: "completed" };
17
+ onAgentNavigationRequested: {
18
+ schemaVersion: 1;
19
+ kind: string;
20
+ domain: string;
21
+ payload: Record<string, unknown>;
22
+ message?: string;
23
+ sessionId: string | null;
24
+ };
25
+ onError: { stage: "runtime"; code: string; retryable: boolean };
26
+ onHumanInputRequested: { sessionId: string | null; requestId: unknown; displayPayload?: string };
27
+ onApprovalRequested: { sessionId: string | null; requestId: unknown; displayPayload?: string };
28
+ onTurnCancelled: { sessionId: string | null };
29
+ };
30
+
31
+ export type AgentPublicEventName = keyof AgentPublicEventPayloads;
32
+ export type AgentPublicEvent = {
33
+ [E in AgentPublicEventName]: { event: E; payload: AgentPublicEventPayloads[E]; agentType: AgentRuntimeType }
34
+ }[AgentPublicEventName];
35
+ export type AgentPublicEventListener = (event: AgentPublicEvent) => void;
36
+
37
+ const listeners = new Set<AgentPublicEventListener>();
38
+
39
+ export function onAgentPublicEvent(listener: AgentPublicEventListener) {
40
+ listeners.add(listener);
41
+ return () => {
42
+ listeners.delete(listener);
43
+ };
44
+ }
45
+
46
+ export function emitAgentPublicEvent<E extends AgentPublicEventName>(
47
+ event: E,
48
+ payload: AgentPublicEventPayloads[E],
49
+ agentType: AgentRuntimeType,
50
+ ) {
51
+ const notification = { event, payload, agentType } as AgentPublicEvent;
52
+ for (const listener of Array.from(listeners)) {
53
+ try {
54
+ listener(notification);
55
+ } catch (error) {
56
+ console.error("[solid-agent] Public event listener failed", error);
57
+ }
58
+ }
59
+
60
+ // Preserve the existing same-window event contract while consumers migrate to the typed bus.
61
+ if (typeof window !== "undefined") {
62
+ window.dispatchEvent(new CustomEvent("solid-agent-embed:public-event", {
63
+ detail: { event, payload, agentType },
64
+ }));
65
+ }
66
+ }
@@ -1,5 +1,5 @@
1
1
  import { type AgentState } from "../../../../redux/features/agentSlice";
2
- import { type AgentRuntimeType, type AgentAttachment, type AgentContext } from "../types";
2
+ import { type AgentRuntimeType, type AgentAttachment, type AgentContext, type AgentMessageContext } from "../types";
3
3
  import { AgentSocket } from "./agentSocket";
4
4
  /**
5
5
  * A live connection to one agent backend. The "solidx" runtime is shared by the floating window and
@@ -21,6 +21,9 @@ export declare class AgentRuntime {
21
21
  private frame;
22
22
  private unsubscribers;
23
23
  private lastContext;
24
+ private responseStarted;
25
+ private hadPriorSession;
26
+ private preparationControllers;
24
27
  private historySessionId;
25
28
  private historyGeneration;
26
29
  private loadingHistoryPages;
@@ -30,9 +33,20 @@ export declare class AgentRuntime {
30
33
  /**
31
34
  * Uploads files into SolidX media storage first, then sends their IDs with the socket message.
32
35
  */
33
- sendMessage(text: string, context?: AgentContext, attachments?: AgentAttachment[], inputs?: Record<string, unknown>): Promise<void>;
36
+ sendMessage(text: string, context?: AgentContext, attachments?: AgentAttachment[], inputs?: Record<string, unknown>, beforeSend?: (request: {
37
+ text: string;
38
+ source: "composer" | "sdk" | "prefill" | "widget";
39
+ attachments: Array<{
40
+ name: string;
41
+ mimeType: string;
42
+ size: number;
43
+ }>;
44
+ }, signal: AbortSignal) => Promise<AgentMessageContext | AgentContext | undefined>, source?: "composer" | "sdk" | "prefill" | "widget", widgetReply?: {
45
+ widgetId: string;
46
+ value: unknown;
47
+ }): Promise<void>;
34
48
  /** Answers a widget. Sent as text too, so agents without widget_reply support still understand it. */
35
- replyToWidget(widgetId: string, widget: string, value: unknown): void;
49
+ replyToWidget(widgetId: string, widget: string, value: unknown, beforeSend?: Parameters<AgentRuntime["sendMessage"]>[4]): Promise<void>;
36
50
  cancel(): void;
37
51
  newChat(): void;
38
52
  resume(sessionId: string): void;
@@ -41,6 +55,7 @@ export declare class AgentRuntime {
41
55
  dispose(): void;
42
56
  private loadHistory;
43
57
  private handleFrame;
58
+ private publish;
44
59
  private emitSdkEvents;
45
60
  private flushTokens;
46
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentRuntime.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/client/agentRuntime.ts"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,UAAU,EAClB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAuB,KAAK,YAAY,EAAuB,MAAM,UAAU,CAAC;AAIrJ,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;;;;;GAMG;AAEH,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;AACrC,KAAK,aAAa,GAAG,MAAM,UAAU,GAAG,SAAS,CAAC;AAyBlD,qBAAa,YAAY;IAcjB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,QAAQ,CAAC,YAAY,EAAE,gBAAgB;IACvC,OAAO,CAAC,cAAc;IAjB1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGvB,QAAQ,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,EACtB,YAAY,GAAE,gBAA2B,EAC1C,cAAc,UAAO;IAYjC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,WAAW,GAAE,eAAe,EAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAyB7H,sGAAsG;IACtG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAa9D,MAAM;IAKN,OAAO;IAQP,MAAM,CAAC,SAAS,EAAE,MAAM;IAOlB,SAAS;IAMf,OAAO,CAAC,iBAAiB;IAOzB,OAAO;YAOO,WAAW;IAqBzB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,WAAW;CAUtB;AAID,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,YAAY,CAK9G;AAED,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,SAIlC"}
1
+ {"version":3,"file":"agentRuntime.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/client/agentRuntime.ts"],"names":[],"mappings":"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"}