@base44/superagent-native 0.0.1 → 0.0.2

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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -20
  3. package/lib/commonjs/AgentSettingsPanel.js +32 -15
  4. package/lib/commonjs/AgentSettingsPanel.js.map +1 -1
  5. package/lib/commonjs/AttachmentPickerStatusModal.js +2 -2
  6. package/lib/commonjs/AttachmentPickerStatusModal.js.map +1 -1
  7. package/lib/commonjs/ConversationChat.js +27 -11
  8. package/lib/commonjs/ConversationChat.js.map +1 -1
  9. package/lib/commonjs/ConversationComposer.js +10 -6
  10. package/lib/commonjs/ConversationComposer.js.map +1 -1
  11. package/lib/commonjs/ConversationScreen.js +2 -0
  12. package/lib/commonjs/ConversationScreen.js.map +1 -1
  13. package/lib/commonjs/MarkdownText.js +1 -1
  14. package/lib/commonjs/MarkdownText.js.map +1 -1
  15. package/lib/commonjs/MessageActionBar.js +10 -3
  16. package/lib/commonjs/MessageActionBar.js.map +1 -1
  17. package/lib/commonjs/SuperagentHomeScreen.js +17 -3
  18. package/lib/commonjs/SuperagentHomeScreen.js.map +1 -1
  19. package/lib/commonjs/ToolApprovalCard.js +1 -1
  20. package/lib/commonjs/ToolApprovalCard.js.map +1 -1
  21. package/lib/commonjs/ToolCallSummary.js +5 -1
  22. package/lib/commonjs/ToolCallSummary.js.map +1 -1
  23. package/lib/commonjs/attachmentUpload.js +2 -1
  24. package/lib/commonjs/attachmentUpload.js.map +1 -1
  25. package/lib/commonjs/conversationRuntime.js +37 -2
  26. package/lib/commonjs/conversationRuntime.js.map +1 -1
  27. package/lib/commonjs/fileTreeUtils.js +7 -0
  28. package/lib/commonjs/fileTreeUtils.js.map +1 -1
  29. package/lib/commonjs/screenParts.js +3 -3
  30. package/lib/commonjs/styles.js +43 -43
  31. package/lib/commonjs/useSuperagentConversation.js +117 -34
  32. package/lib/commonjs/useSuperagentConversation.js.map +1 -1
  33. package/lib/commonjs/useSuperagentRuntime.js +79 -24
  34. package/lib/commonjs/useSuperagentRuntime.js.map +1 -1
  35. package/lib/module/AgentSettingsPanel.js +32 -15
  36. package/lib/module/AgentSettingsPanel.js.map +1 -1
  37. package/lib/module/AttachmentPickerStatusModal.js +2 -2
  38. package/lib/module/AttachmentPickerStatusModal.js.map +1 -1
  39. package/lib/module/ConversationChat.js +27 -11
  40. package/lib/module/ConversationChat.js.map +1 -1
  41. package/lib/module/ConversationComposer.js +10 -6
  42. package/lib/module/ConversationComposer.js.map +1 -1
  43. package/lib/module/ConversationScreen.js +2 -0
  44. package/lib/module/ConversationScreen.js.map +1 -1
  45. package/lib/module/MarkdownText.js +1 -1
  46. package/lib/module/MarkdownText.js.map +1 -1
  47. package/lib/module/MessageActionBar.js +10 -3
  48. package/lib/module/MessageActionBar.js.map +1 -1
  49. package/lib/module/SuperagentHomeScreen.js +18 -4
  50. package/lib/module/SuperagentHomeScreen.js.map +1 -1
  51. package/lib/module/ToolApprovalCard.js +1 -1
  52. package/lib/module/ToolApprovalCard.js.map +1 -1
  53. package/lib/module/ToolCallSummary.js +5 -1
  54. package/lib/module/ToolCallSummary.js.map +1 -1
  55. package/lib/module/attachmentUpload.js +2 -1
  56. package/lib/module/attachmentUpload.js.map +1 -1
  57. package/lib/module/conversationRuntime.js +36 -2
  58. package/lib/module/conversationRuntime.js.map +1 -1
  59. package/lib/module/fileTreeUtils.js +6 -0
  60. package/lib/module/fileTreeUtils.js.map +1 -1
  61. package/lib/module/screenParts.js +3 -3
  62. package/lib/module/styles.js +43 -43
  63. package/lib/module/useSuperagentConversation.js +118 -35
  64. package/lib/module/useSuperagentConversation.js.map +1 -1
  65. package/lib/module/useSuperagentRuntime.js +80 -25
  66. package/lib/module/useSuperagentRuntime.js.map +1 -1
  67. package/lib/typescript/commonjs/AgentSettingsPanel.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/ConversationChat.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/ConversationComposer.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/ConversationScreen.d.ts +1 -1
  71. package/lib/typescript/commonjs/ConversationScreen.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/SuperagentHomeScreen.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/conversationRuntime.d.ts +3 -2
  74. package/lib/typescript/commonjs/conversationRuntime.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/fileTreeUtils.d.ts +1 -0
  76. package/lib/typescript/commonjs/fileTreeUtils.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/types.d.ts +1 -0
  78. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/useSuperagentConversation.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/useSuperagentRuntime.d.ts +3 -1
  81. package/lib/typescript/commonjs/useSuperagentRuntime.d.ts.map +1 -1
  82. package/lib/typescript/module/AgentSettingsPanel.d.ts.map +1 -1
  83. package/lib/typescript/module/ConversationChat.d.ts.map +1 -1
  84. package/lib/typescript/module/ConversationComposer.d.ts.map +1 -1
  85. package/lib/typescript/module/ConversationScreen.d.ts +1 -1
  86. package/lib/typescript/module/ConversationScreen.d.ts.map +1 -1
  87. package/lib/typescript/module/SuperagentHomeScreen.d.ts.map +1 -1
  88. package/lib/typescript/module/conversationRuntime.d.ts +3 -2
  89. package/lib/typescript/module/conversationRuntime.d.ts.map +1 -1
  90. package/lib/typescript/module/fileTreeUtils.d.ts +1 -0
  91. package/lib/typescript/module/fileTreeUtils.d.ts.map +1 -1
  92. package/lib/typescript/module/types.d.ts +1 -0
  93. package/lib/typescript/module/types.d.ts.map +1 -1
  94. package/lib/typescript/module/useSuperagentConversation.d.ts.map +1 -1
  95. package/lib/typescript/module/useSuperagentRuntime.d.ts +3 -1
  96. package/lib/typescript/module/useSuperagentRuntime.d.ts.map +1 -1
  97. package/package.json +13 -11
  98. package/src/AgentSettingsPanel.tsx +28 -9
  99. package/src/AttachmentPickerStatusModal.tsx +2 -2
  100. package/src/ConversationChat.tsx +37 -9
  101. package/src/ConversationComposer.tsx +11 -6
  102. package/src/ConversationScreen.tsx +2 -0
  103. package/src/MarkdownText.tsx +1 -1
  104. package/src/MessageActionBar.tsx +9 -3
  105. package/src/SuperagentHomeScreen.tsx +18 -3
  106. package/src/ToolApprovalCard.tsx +1 -1
  107. package/src/ToolCallSummary.tsx +4 -1
  108. package/src/attachmentUpload.ts +2 -1
  109. package/src/conversationRuntime.ts +48 -4
  110. package/src/fileTreeUtils.ts +13 -0
  111. package/src/screenParts.tsx +3 -3
  112. package/src/styles.ts +43 -43
  113. package/src/types.ts +1 -0
  114. package/src/useSuperagentConversation.ts +116 -31
  115. package/src/useSuperagentRuntime.ts +80 -24
@@ -8,7 +8,7 @@ var _reactNative = require("react-native");
8
8
  const styles = exports.styles = _reactNative.StyleSheet.create({
9
9
  safeArea: {
10
10
  flex: 1,
11
- backgroundColor: '#000000'
11
+ backgroundColor: '#F7F7F8'
12
12
  },
13
13
  container: {
14
14
  paddingBottom: 34,
@@ -17,7 +17,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
17
17
  },
18
18
  homeTopBar: {
19
19
  alignItems: 'center',
20
- borderBottomColor: '#101012',
20
+ borderBottomColor: '#E4E4E7',
21
21
  borderBottomWidth: 1,
22
22
  flexDirection: 'row',
23
23
  minHeight: 62,
@@ -39,7 +39,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
39
39
  minWidth: 0
40
40
  },
41
41
  topBarTitle: {
42
- color: '#F7F7F7',
42
+ color: '#18181B',
43
43
  fontSize: 17,
44
44
  fontWeight: '900',
45
45
  letterSpacing: 0,
@@ -62,20 +62,20 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
62
62
  marginLeft: 12
63
63
  },
64
64
  eyebrow: {
65
- color: '#8E8E93',
65
+ color: '#71717A',
66
66
  fontSize: 12,
67
67
  fontWeight: '800',
68
68
  marginTop: 2
69
69
  },
70
70
  title: {
71
- color: '#F7F7F7',
71
+ color: '#18181B',
72
72
  fontSize: 24,
73
73
  fontWeight: '900',
74
74
  letterSpacing: 0,
75
75
  lineHeight: 29
76
76
  },
77
77
  subtitle: {
78
- color: '#A1A1AA',
78
+ color: '#52525B',
79
79
  fontSize: 14,
80
80
  fontWeight: '600',
81
81
  lineHeight: 20,
@@ -83,8 +83,8 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
83
83
  },
84
84
  headerAvatar: {
85
85
  alignItems: 'center',
86
- backgroundColor: '#151515',
87
- borderColor: '#2A2A2A',
86
+ backgroundColor: '#FFFFFF',
87
+ borderColor: '#E4E4E7',
88
88
  borderRadius: 22,
89
89
  borderWidth: 1,
90
90
  height: 44,
@@ -93,15 +93,15 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
93
93
  },
94
94
  loadingPanel: {
95
95
  alignItems: 'center',
96
- backgroundColor: '#0B0B0C',
97
- borderColor: '#242427',
96
+ backgroundColor: '#FFFFFF',
97
+ borderColor: '#E4E4E7',
98
98
  borderRadius: 18,
99
99
  borderWidth: 1,
100
100
  padding: 32
101
101
  },
102
102
  heroPanel: {
103
- backgroundColor: '#0B0B0C',
104
- borderColor: '#242427',
103
+ backgroundColor: '#FFFFFF',
104
+ borderColor: '#E4E4E7',
105
105
  borderRadius: 22,
106
106
  borderWidth: 1,
107
107
  overflow: 'hidden',
@@ -114,7 +114,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
114
114
  marginBottom: 16
115
115
  },
116
116
  heroLabel: {
117
- color: '#8E8E93',
117
+ color: '#71717A',
118
118
  fontSize: 11,
119
119
  fontWeight: '900',
120
120
  textTransform: 'uppercase'
@@ -126,8 +126,8 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
126
126
  },
127
127
  avatar: {
128
128
  alignItems: 'center',
129
- backgroundColor: '#111111',
130
- borderColor: '#2A2A2A',
129
+ backgroundColor: '#F4F4F5',
130
+ borderColor: '#E4E4E7',
131
131
  borderRadius: 24,
132
132
  borderWidth: 1,
133
133
  height: 52,
@@ -135,7 +135,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
135
135
  width: 52
136
136
  },
137
137
  avatarText: {
138
- color: '#F7F7F7',
138
+ color: '#18181B',
139
139
  fontSize: 18,
140
140
  fontWeight: '900'
141
141
  },
@@ -145,20 +145,20 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
145
145
  minWidth: 0
146
146
  },
147
147
  agentName: {
148
- color: '#F7F7F7',
148
+ color: '#18181B',
149
149
  fontSize: 21,
150
150
  fontWeight: '900',
151
151
  lineHeight: 25
152
152
  },
153
153
  agentDescription: {
154
- color: '#BDBDC2',
154
+ color: '#52525B',
155
155
  fontSize: 14,
156
156
  fontWeight: '600',
157
157
  lineHeight: 20,
158
158
  marginTop: 7
159
159
  },
160
160
  chevron: {
161
- color: '#8E8E93',
161
+ color: '#A1A1AA',
162
162
  fontSize: 20,
163
163
  fontWeight: '900'
164
164
  },
@@ -169,8 +169,8 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
169
169
  marginTop: 14
170
170
  },
171
171
  agentMetaPill: {
172
- backgroundColor: '#151515',
173
- borderColor: '#2A2A2A',
172
+ backgroundColor: '#F4F4F5',
173
+ borderColor: '#E4E4E7',
174
174
  borderRadius: 13,
175
175
  borderWidth: 1,
176
176
  marginRight: 7,
@@ -179,26 +179,26 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
179
179
  paddingVertical: 6
180
180
  },
181
181
  agentMetaText: {
182
- color: '#D4D4D8',
182
+ color: '#3F3F46',
183
183
  fontSize: 12,
184
184
  fontWeight: '800'
185
185
  },
186
186
  emptyPanel: {
187
- backgroundColor: '#0B0B0C',
188
- borderColor: '#242427',
187
+ backgroundColor: '#FFFFFF',
188
+ borderColor: '#E4E4E7',
189
189
  borderRadius: 22,
190
190
  borderWidth: 1,
191
191
  padding: 16
192
192
  },
193
193
  emptyTitle: {
194
- color: '#F7F7F7',
194
+ color: '#18181B',
195
195
  fontSize: 23,
196
196
  fontWeight: '900',
197
197
  lineHeight: 28,
198
198
  marginTop: 15
199
199
  },
200
200
  emptyBody: {
201
- color: '#BDBDC2',
201
+ color: '#52525B',
202
202
  fontSize: 14,
203
203
  fontWeight: '600',
204
204
  lineHeight: 21,
@@ -210,8 +210,8 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
210
210
  marginTop: 14
211
211
  },
212
212
  emptyChip: {
213
- backgroundColor: '#151515',
214
- borderColor: '#2A2A2A',
213
+ backgroundColor: '#F4F4F5',
214
+ borderColor: '#E4E4E7',
215
215
  borderRadius: 15,
216
216
  borderWidth: 1,
217
217
  marginRight: 7,
@@ -220,13 +220,13 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
220
220
  paddingVertical: 7
221
221
  },
222
222
  emptyChipText: {
223
- color: '#D4D4D8',
223
+ color: '#3F3F46',
224
224
  fontSize: 12,
225
225
  fontWeight: '800'
226
226
  },
227
227
  primaryButton: {
228
228
  alignItems: 'center',
229
- backgroundColor: '#F4F4F5',
229
+ backgroundColor: '#18181B',
230
230
  borderRadius: 17,
231
231
  justifyContent: 'center',
232
232
  marginTop: 20,
@@ -234,14 +234,14 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
234
234
  paddingHorizontal: 18
235
235
  },
236
236
  primaryButtonText: {
237
- color: '#111111',
237
+ color: '#FFFFFF',
238
238
  fontSize: 16,
239
239
  fontWeight: '900'
240
240
  },
241
241
  secondaryButton: {
242
242
  alignItems: 'center',
243
- backgroundColor: '#151515',
244
- borderColor: '#2A2A2A',
243
+ backgroundColor: '#FFFFFF',
244
+ borderColor: '#E4E4E7',
245
245
  borderRadius: 16,
246
246
  borderWidth: 1,
247
247
  flexDirection: 'row',
@@ -251,7 +251,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
251
251
  paddingHorizontal: 16
252
252
  },
253
253
  secondaryButtonText: {
254
- color: '#F4F4F5',
254
+ color: '#18181B',
255
255
  fontSize: 14,
256
256
  fontWeight: '900',
257
257
  marginLeft: 7
@@ -266,19 +266,19 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
266
266
  marginBottom: 10
267
267
  },
268
268
  sectionTitle: {
269
- color: '#F4F4F5',
269
+ color: '#18181B',
270
270
  fontSize: 17,
271
271
  fontWeight: '900'
272
272
  },
273
273
  sectionCount: {
274
- color: '#73737A',
274
+ color: '#A1A1AA',
275
275
  fontSize: 12,
276
276
  fontWeight: '900'
277
277
  },
278
278
  agentRow: {
279
279
  alignItems: 'center',
280
- backgroundColor: '#0B0B0C',
281
- borderColor: '#242427',
280
+ backgroundColor: '#FFFFFF',
281
+ borderColor: '#E4E4E7',
282
282
  borderRadius: 17,
283
283
  borderWidth: 1,
284
284
  flexDirection: 'row',
@@ -294,12 +294,12 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
294
294
  minWidth: 0
295
295
  },
296
296
  agentRowName: {
297
- color: '#F4F4F5',
297
+ color: '#18181B',
298
298
  fontSize: 15,
299
299
  fontWeight: '900'
300
300
  },
301
301
  agentRowDescription: {
302
- color: '#8E8E93',
302
+ color: '#71717A',
303
303
  fontSize: 12,
304
304
  fontWeight: '600',
305
305
  lineHeight: 17,
@@ -307,8 +307,8 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
307
307
  },
308
308
  compactAvatar: {
309
309
  alignItems: 'center',
310
- backgroundColor: '#111111',
311
- borderColor: '#2A2A2A',
310
+ backgroundColor: '#F4F4F5',
311
+ borderColor: '#E4E4E7',
312
312
  borderRadius: 15,
313
313
  borderWidth: 1,
314
314
  height: 38,
@@ -330,7 +330,7 @@ const styles = exports.styles = _reactNative.StyleSheet.create({
330
330
  fontWeight: '700'
331
331
  },
332
332
  helperText: {
333
- color: '#73737A',
333
+ color: '#A1A1AA',
334
334
  fontSize: 12,
335
335
  fontWeight: '700',
336
336
  lineHeight: 18,
@@ -25,6 +25,36 @@ function useSuperagentConversation({
25
25
  const [initError, setInitError] = (0, _react.useState)(null);
26
26
  const [hasMoreMessages, setHasMoreMessages] = (0, _react.useState)(false);
27
27
  const sendGenerationRef = (0, _react.useRef)(0);
28
+ const pollIntervalRef = (0, _react.useRef)(null);
29
+ const loadingPreviousRef = (0, _react.useRef)(false);
30
+ const settleTimeoutRef = (0, _react.useRef)(null);
31
+ const messagesRef = (0, _react.useRef)(messages);
32
+ const onAgentMessageDoneRef = (0, _react.useRef)(onAgentMessageDone);
33
+ const onConversationSettledRef = (0, _react.useRef)(onConversationSettled);
34
+ (0, _react.useEffect)(() => {
35
+ messagesRef.current = messages;
36
+ }, [messages]);
37
+ (0, _react.useEffect)(() => {
38
+ onAgentMessageDoneRef.current = onAgentMessageDone;
39
+ onConversationSettledRef.current = onConversationSettled;
40
+ }, [onAgentMessageDone, onConversationSettled]);
41
+
42
+ // Cancel any in-flight poll/settle timers — called on each new send and on unmount.
43
+ const clearPendingSettlers = (0, _react.useCallback)(() => {
44
+ if (pollIntervalRef.current) {
45
+ clearInterval(pollIntervalRef.current);
46
+ pollIntervalRef.current = null;
47
+ }
48
+ if (settleTimeoutRef.current) {
49
+ clearTimeout(settleTimeoutRef.current);
50
+ settleTimeoutRef.current = null;
51
+ }
52
+ }, []);
53
+
54
+ // Clear any active poll interval / settle timeout when the hook unmounts.
55
+ (0, _react.useEffect)(() => {
56
+ return () => clearPendingSettlers();
57
+ }, [clearPendingSettlers]);
28
58
  (0, _react.useEffect)(() => {
29
59
  if (!apiClient) setMessages(fallbackMessages);
30
60
  }, [apiClient, fallbackMessages]);
@@ -69,45 +99,64 @@ function useSuperagentConversation({
69
99
  if (!realtimeClient || !conversationId) return undefined;
70
100
  return realtimeClient.subscribeToConversation(conversationId, {
71
101
  onMessage(message) {
102
+ // Don't clear the sending/stop state on intermediate assistant messages
103
+ // (tool-call steps or streamed content arrive before the turn is done).
104
+ // The turn ends on `agent_done` (onAgentDone) or the 5s settle fallback.
72
105
  setMessages(current => (0, _conversationRuntime.mergeMessage)(current, message));
73
- if (message.role === 'assistant' && (message.content || message.toolCalls?.length || message.tool_calls?.length)) {
74
- setIsSending(false);
75
- }
76
106
  },
77
107
  onConversation(conversation) {
78
108
  if (conversation.id !== conversationId) return;
79
- setMessages((0, _conversationRuntime.normalizeMessages)(conversation.messages ?? []));
109
+ const incoming = (0, _conversationRuntime.normalizeMessages)(conversation.messages ?? []);
110
+ setMessages(current => (0, _conversationRuntime.mergeConversationSnapshot)(current, incoming));
80
111
  },
81
112
  onAgentDone() {
113
+ // Agent finished via realtime — cancel the 5s settle fallback so
114
+ // onConversationSettled doesn't also fire when the timer elapses.
115
+ if (settleTimeoutRef.current) {
116
+ clearTimeout(settleTimeoutRef.current);
117
+ settleTimeoutRef.current = null;
118
+ }
82
119
  setIsSending(false);
83
- onAgentMessageDone?.();
120
+ setQueuedMessages([]);
121
+ onAgentMessageDoneRef.current?.();
84
122
  if (apiClient) {
85
- (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages).then(() => onConversationSettled?.()).catch(() => {});
123
+ (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages).then(() => onConversationSettledRef.current?.()).catch(() => {});
86
124
  } else {
87
- onConversationSettled?.();
125
+ onConversationSettledRef.current?.();
88
126
  }
89
127
  },
90
128
  onReconnect() {
129
+ // A reconnect means the transient socket error cleared — drop the
130
+ // "something went wrong" state so it doesn't linger as a failed load.
131
+ setInitError(null);
91
132
  if (apiClient) (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages).catch(() => {});
92
133
  },
93
134
  onError(error) {
94
135
  setInitError(error instanceof Error ? error.message : 'Realtime connection failed');
95
136
  }
96
137
  });
97
- }, [apiClient, conversationId, onAgentMessageDone, onConversationSettled, realtimeClient]);
138
+ }, [apiClient, conversationId, realtimeClient]);
98
139
  const visibleMessages = (0, _react.useMemo)(() => messages.filter((message, index) => (0, _conversationRuntime.isVisibleMessage)(message, index)), [messages]);
99
140
  const sendMessage = (0, _react.useCallback)(async (content, options = {}) => {
100
141
  const trimmedContent = content.trim();
101
142
  const fileUrls = options.fileUrls?.filter(Boolean) ?? [];
102
143
  if (!trimmedContent && fileUrls.length === 0) return;
103
- const assistantCountBefore = (0, _conversationRuntime.countAssistantResponses)(messages);
144
+
145
+ // A new send supersedes any pending poll/settle timers from the previous one.
146
+ clearPendingSettlers();
147
+ const assistantCountBefore = (0, _conversationRuntime.countAssistantResponses)(messagesRef.current);
104
148
  const userMessage = (0, _conversationRuntime.createUserMessage)(trimmedContent, {
105
149
  fileUrls,
106
150
  replyTo: options.replyTo
107
151
  });
108
152
  setMessages(current => [...current, userMessage]);
109
153
  if (!apiClient || !conversationId) {
110
- if (!onSendMessage) return;
154
+ if (!onSendMessage) {
155
+ // No send path yet (no fallback handler, or the conversation is still
156
+ // loading) — drop the optimistic bubble so the turn doesn't look sent.
157
+ setMessages(current => current.filter(message => message.id !== userMessage.id));
158
+ return;
159
+ }
111
160
  const sendGeneration = sendGenerationRef.current + 1;
112
161
  sendGenerationRef.current = sendGeneration;
113
162
  const setSendingForCurrentSend = value => {
@@ -115,7 +164,7 @@ function useSuperagentConversation({
115
164
  };
116
165
  setIsSending(true);
117
166
  const hasAssistantResponse = await (0, _conversationRuntime.sendWithFallback)(agentId, trimmedContent, fileUrls, options.replyTo, onSendMessage, setMessages, setSendingForCurrentSend);
118
- if (hasAssistantResponse) onAgentMessageDone?.();
167
+ if (hasAssistantResponse) onAgentMessageDoneRef.current?.();
119
168
  return;
120
169
  }
121
170
  const sendGeneration = sendGenerationRef.current + 1;
@@ -125,6 +174,25 @@ function useSuperagentConversation({
125
174
  };
126
175
  setIsSending(true);
127
176
  try {
177
+ // Wait for the turn to complete: poll without realtime, otherwise a 5s
178
+ // fallback in case agent_done never arrives.
179
+ const armSettleFallback = () => {
180
+ if (!realtimeClient) {
181
+ pollIntervalRef.current = (0, _conversationRuntime.pollConversation)(apiClient, conversationId, setMessages, setSendingForCurrentSend, assistantCountBefore, () => {
182
+ setQueuedMessages([]);
183
+ onConversationSettledRef.current?.();
184
+ }, () => onAgentMessageDoneRef.current?.());
185
+ } else {
186
+ settleTimeoutRef.current = setTimeout(() => {
187
+ settleTimeoutRef.current = null;
188
+ (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages).catch(() => {});
189
+ setSendingForCurrentSend(false);
190
+ setQueuedMessages([]);
191
+ onAgentMessageDoneRef.current?.();
192
+ onConversationSettledRef.current?.();
193
+ }, 5000);
194
+ }
195
+ };
128
196
  const response = await apiClient.addMessage(conversationId, userMessage);
129
197
  if ((0, _conversationRuntime.isQueuedResponse)(response)) {
130
198
  setQueuedMessages(current => [...current, {
@@ -132,21 +200,17 @@ function useSuperagentConversation({
132
200
  content: userMessage.content,
133
201
  position: current.length
134
202
  }]);
203
+ // A queued send still needs a settle path, or isSending / the queued strip stick.
204
+ armSettleFallback();
135
205
  } else {
136
206
  const refreshedMessages = await (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages);
137
- if (!realtimeClient) {
138
- if ((0, _conversationRuntime.hasNewAssistantResponse)(refreshedMessages, assistantCountBefore)) {
139
- setSendingForCurrentSend(false);
140
- onAgentMessageDone?.();
141
- onConversationSettled?.();
142
- } else {
143
- (0, _conversationRuntime.pollConversation)(apiClient, conversationId, setMessages, setSendingForCurrentSend, assistantCountBefore, onConversationSettled, onAgentMessageDone);
144
- }
207
+ if (!realtimeClient && (0, _conversationRuntime.hasNewAssistantResponse)(refreshedMessages, assistantCountBefore)) {
208
+ setSendingForCurrentSend(false);
209
+ setQueuedMessages([]);
210
+ onAgentMessageDoneRef.current?.();
211
+ onConversationSettledRef.current?.();
145
212
  } else {
146
- setTimeout(() => {
147
- setSendingForCurrentSend(false);
148
- onConversationSettled?.();
149
- }, 5000);
213
+ armSettleFallback();
150
214
  }
151
215
  }
152
216
  } catch (error) {
@@ -154,7 +218,7 @@ function useSuperagentConversation({
154
218
  setMessages(current => [...current, errorMessage]);
155
219
  setSendingForCurrentSend(false);
156
220
  }
157
- }, [agentId, apiClient, conversationId, messages, onAgentMessageDone, onConversationSettled, onSendMessage, realtimeClient]);
221
+ }, [agentId, apiClient, clearPendingSettlers, conversationId, onSendMessage, realtimeClient]);
158
222
  const deleteMessage = (0, _react.useCallback)(async messageId => {
159
223
  if (!messageId || messageId === 'welcome') return false;
160
224
  if (!apiClient || !conversationId) {
@@ -163,15 +227,22 @@ function useSuperagentConversation({
163
227
  }
164
228
  try {
165
229
  await apiClient.deleteMessage(conversationId, messageId);
230
+ // Remove locally before refreshing: mergeConversationSnapshot keeps rows
231
+ // missing from the server snapshot, so without this the just-deleted
232
+ // message would be resurrected.
233
+ setMessages(current => current.filter(message => message.id !== messageId));
166
234
  await (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages);
167
235
  return true;
168
- } catch (error) {
169
- setInitError(error instanceof Error ? error.message : 'Failed to delete message');
236
+ } catch {
237
+ // A failed delete is not a load failure — don't drive the "something went
238
+ // wrong" panel (it would persist). Signal failure via the return value so
239
+ // the caller can surface it.
170
240
  return false;
171
241
  }
172
242
  }, [apiClient, conversationId]);
173
243
  const stop = (0, _react.useCallback)(async () => {
174
244
  sendGenerationRef.current += 1;
245
+ clearPendingSettlers();
175
246
  if (!apiClient || !conversationId) {
176
247
  setIsSending(false);
177
248
  return;
@@ -180,21 +251,33 @@ function useSuperagentConversation({
180
251
  setQueuedMessages([]);
181
252
  await apiClient.stopConversation(conversationId);
182
253
  await (0, _conversationRuntime.refreshConversation)(apiClient, conversationId, setMessages);
183
- }, [apiClient, conversationId]);
254
+ }, [apiClient, clearPendingSettlers, conversationId]);
184
255
  const loadPrevious = (0, _react.useCallback)(async () => {
256
+ if (loadingPreviousRef.current) return;
185
257
  const before = (0, _conversationRuntime.getMessageCursor)(messages[0]);
186
258
  if (!apiClient || !conversationId || !before) return;
187
- const page = await apiClient.getMessages(conversationId, {
188
- limit: _constants.MESSAGES_PAGE_SIZE,
189
- before
190
- });
191
- setMessages(current => [...(0, _conversationRuntime.normalizeMessages)(page.messages), ...current]);
192
- setHasMoreMessages(Boolean(page.has_more ?? page.hasMore));
259
+ loadingPreviousRef.current = true;
260
+ try {
261
+ const page = await apiClient.getMessages(conversationId, {
262
+ limit: _constants.MESSAGES_PAGE_SIZE,
263
+ before
264
+ });
265
+ setMessages(current => [...(0, _conversationRuntime.normalizeMessages)(page.messages), ...current]);
266
+ setHasMoreMessages(Boolean(page.has_more ?? page.hasMore));
267
+ } catch {
268
+ // Pagination failed — swallow so it isn't an unhandled rejection from the
269
+ // button, and leave hasMoreMessages as-is so the user can retry.
270
+ } finally {
271
+ loadingPreviousRef.current = false;
272
+ }
193
273
  }, [apiClient, conversationId, messages]);
194
274
  const submitToolCallInput = (0, _react.useCallback)(async (toolCallId, approve, extraUserInput, originRequestId) => {
195
275
  if (!apiClient || !conversationId) return null;
196
276
  const updated = await apiClient.submitToolCallInput(conversationId, toolCallId, approve, extraUserInput, originRequestId);
197
- if (updated.messages) setMessages((0, _conversationRuntime.normalizeMessages)(updated.messages));
277
+ if (updated.messages) {
278
+ const incoming = (0, _conversationRuntime.normalizeMessages)(updated.messages);
279
+ setMessages(current => (0, _conversationRuntime.mergeConversationSnapshot)(current, incoming));
280
+ }
198
281
  onConversationSettled?.();
199
282
  return updated;
200
283
  }, [apiClient, conversationId, onConversationSettled]);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_constants","_conversationRuntime","useSuperagentConversation","agentId","apiClient","realtimeClient","fallbackMessages","fallbackSending","onAgentMessageDone","onConversationSettled","onSendMessage","conversationId","setConversationId","useState","messages","setMessages","queuedMessages","setQueuedMessages","isLoading","setIsLoading","isSending","setIsSending","initError","setInitError","hasMoreMessages","setHasMoreMessages","sendGenerationRef","useRef","useEffect","client","cancelled","initConversation","conversations","getConversations","conversation","createConversation","page","getMessages","id","limit","MESSAGES_PAGE_SIZE","normalizeMessages","Boolean","has_more","hasMore","length","addMessage","createUserMessage","AUTO_GREET_MESSAGE","refreshConversation","error","Error","message","undefined","subscribeToConversation","onMessage","current","mergeMessage","role","content","toolCalls","tool_calls","onConversation","onAgentDone","then","catch","onReconnect","onError","visibleMessages","useMemo","filter","index","isVisibleMessage","sendMessage","useCallback","options","trimmedContent","trim","fileUrls","assistantCountBefore","countAssistantResponses","userMessage","replyTo","sendGeneration","setSendingForCurrentSend","value","hasAssistantResponse","sendWithFallback","response","isQueuedResponse","position","refreshedMessages","hasNewAssistantResponse","pollConversation","setTimeout","errorMessage","createErrorMessage","deleteMessage","messageId","stop","stopConversation","loadPrevious","before","getMessageCursor","submitToolCallInput","toolCallId","approve","extraUserInput","originRequestId","updated"],"sourceRoot":"../../src","sources":["useSuperagentConversation.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_constants","_conversationRuntime","useSuperagentConversation","agentId","apiClient","realtimeClient","fallbackMessages","fallbackSending","onAgentMessageDone","onConversationSettled","onSendMessage","conversationId","setConversationId","useState","messages","setMessages","queuedMessages","setQueuedMessages","isLoading","setIsLoading","isSending","setIsSending","initError","setInitError","hasMoreMessages","setHasMoreMessages","sendGenerationRef","useRef","pollIntervalRef","loadingPreviousRef","settleTimeoutRef","messagesRef","onAgentMessageDoneRef","onConversationSettledRef","useEffect","current","clearPendingSettlers","useCallback","clearInterval","clearTimeout","client","cancelled","initConversation","conversations","getConversations","conversation","createConversation","page","getMessages","id","limit","MESSAGES_PAGE_SIZE","normalizeMessages","Boolean","has_more","hasMore","length","addMessage","createUserMessage","AUTO_GREET_MESSAGE","refreshConversation","error","Error","message","undefined","subscribeToConversation","onMessage","mergeMessage","onConversation","incoming","mergeConversationSnapshot","onAgentDone","then","catch","onReconnect","onError","visibleMessages","useMemo","filter","index","isVisibleMessage","sendMessage","content","options","trimmedContent","trim","fileUrls","assistantCountBefore","countAssistantResponses","userMessage","replyTo","sendGeneration","setSendingForCurrentSend","value","hasAssistantResponse","sendWithFallback","armSettleFallback","pollConversation","setTimeout","response","isQueuedResponse","position","refreshedMessages","hasNewAssistantResponse","errorMessage","createErrorMessage","deleteMessage","messageId","stop","stopConversation","loadPrevious","before","getMessageCursor","submitToolCallInput","toolCallId","approve","extraUserInput","originRequestId","updated"],"sourceRoot":"../../src","sources":["useSuperagentConversation.ts"],"mappings":"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","ignoreList":[]}