@base44/superagent-native 0.0.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 (465) hide show
  1. package/README.md +132 -0
  2. package/lib/commonjs/AgentSettingsPanel.js +1067 -0
  3. package/lib/commonjs/AgentSettingsPanel.js.map +1 -0
  4. package/lib/commonjs/AgentSphereIcon.js +243 -0
  5. package/lib/commonjs/AgentSphereIcon.js.map +1 -0
  6. package/lib/commonjs/AttachmentPickerStatusModal.js +96 -0
  7. package/lib/commonjs/AttachmentPickerStatusModal.js.map +1 -0
  8. package/lib/commonjs/AttachmentPreviewStrip.js +49 -0
  9. package/lib/commonjs/AttachmentPreviewStrip.js.map +1 -0
  10. package/lib/commonjs/ChannelsPanel.js +733 -0
  11. package/lib/commonjs/ChannelsPanel.js.map +1 -0
  12. package/lib/commonjs/ConversationChat.js +219 -0
  13. package/lib/commonjs/ConversationChat.js.map +1 -0
  14. package/lib/commonjs/ConversationComposer.js +323 -0
  15. package/lib/commonjs/ConversationComposer.js.map +1 -0
  16. package/lib/commonjs/ConversationMessageList.js +105 -0
  17. package/lib/commonjs/ConversationMessageList.js.map +1 -0
  18. package/lib/commonjs/ConversationScreen.js +241 -0
  19. package/lib/commonjs/ConversationScreen.js.map +1 -0
  20. package/lib/commonjs/EditorDrawer.js +1127 -0
  21. package/lib/commonjs/EditorDrawer.js.map +1 -0
  22. package/lib/commonjs/EditorTabPanel.js +28 -0
  23. package/lib/commonjs/EditorTabPanel.js.map +1 -0
  24. package/lib/commonjs/FilesPanel.js +533 -0
  25. package/lib/commonjs/FilesPanel.js.map +1 -0
  26. package/lib/commonjs/MarkdownText.js +313 -0
  27. package/lib/commonjs/MarkdownText.js.map +1 -0
  28. package/lib/commonjs/MessageActionBar.js +90 -0
  29. package/lib/commonjs/MessageActionBar.js.map +1 -0
  30. package/lib/commonjs/RenameAgentModal.js +99 -0
  31. package/lib/commonjs/RenameAgentModal.js.map +1 -0
  32. package/lib/commonjs/ShareAgentModal.js +349 -0
  33. package/lib/commonjs/ShareAgentModal.js.map +1 -0
  34. package/lib/commonjs/ShareAgentModal.styles.js +236 -0
  35. package/lib/commonjs/ShareAgentModal.styles.js.map +1 -0
  36. package/lib/commonjs/SuperagentHomeScreen.js +316 -0
  37. package/lib/commonjs/SuperagentHomeScreen.js.map +1 -0
  38. package/lib/commonjs/ToolApprovalCard.js +542 -0
  39. package/lib/commonjs/ToolApprovalCard.js.map +1 -0
  40. package/lib/commonjs/ToolCallSummary.js +632 -0
  41. package/lib/commonjs/ToolCallSummary.js.map +1 -0
  42. package/lib/commonjs/agentSphereStyles.js +38 -0
  43. package/lib/commonjs/agentSphereStyles.js.map +1 -0
  44. package/lib/commonjs/apiClient.js +158 -0
  45. package/lib/commonjs/apiClient.js.map +1 -0
  46. package/lib/commonjs/attachmentFileHelpers.js +104 -0
  47. package/lib/commonjs/attachmentFileHelpers.js.map +1 -0
  48. package/lib/commonjs/attachmentUpload.js +87 -0
  49. package/lib/commonjs/attachmentUpload.js.map +1 -0
  50. package/lib/commonjs/composerStyles.js +248 -0
  51. package/lib/commonjs/composerStyles.js.map +1 -0
  52. package/lib/commonjs/connectorBrandIcons.js +82 -0
  53. package/lib/commonjs/connectorBrandIcons.js.map +1 -0
  54. package/lib/commonjs/connectorCatalog.js +377 -0
  55. package/lib/commonjs/connectorCatalog.js.map +1 -0
  56. package/lib/commonjs/constants.js +15 -0
  57. package/lib/commonjs/constants.js.map +1 -0
  58. package/lib/commonjs/conversationParts.js +273 -0
  59. package/lib/commonjs/conversationParts.js.map +1 -0
  60. package/lib/commonjs/conversationRuntime.js +144 -0
  61. package/lib/commonjs/conversationRuntime.js.map +1 -0
  62. package/lib/commonjs/conversationStyles.js +758 -0
  63. package/lib/commonjs/conversationStyles.js.map +1 -0
  64. package/lib/commonjs/editorShellStyles.js +1032 -0
  65. package/lib/commonjs/editorShellStyles.js.map +1 -0
  66. package/lib/commonjs/editorTabs.js +42 -0
  67. package/lib/commonjs/editorTabs.js.map +1 -0
  68. package/lib/commonjs/fileTreeUtils.js +133 -0
  69. package/lib/commonjs/fileTreeUtils.js.map +1 -0
  70. package/lib/commonjs/index.js +110 -0
  71. package/lib/commonjs/index.js.map +1 -0
  72. package/lib/commonjs/markdownStyles.js +157 -0
  73. package/lib/commonjs/markdownStyles.js.map +1 -0
  74. package/lib/commonjs/mediaUtils.js +61 -0
  75. package/lib/commonjs/mediaUtils.js.map +1 -0
  76. package/lib/commonjs/messageActionStyles.js +45 -0
  77. package/lib/commonjs/messageActionStyles.js.map +1 -0
  78. package/lib/commonjs/messageUtils.js +55 -0
  79. package/lib/commonjs/messageUtils.js.map +1 -0
  80. package/lib/commonjs/nativeActionSheet.js +21 -0
  81. package/lib/commonjs/nativeActionSheet.js.map +1 -0
  82. package/lib/commonjs/nativeActionSheet.web.js +10 -0
  83. package/lib/commonjs/nativeActionSheet.web.js.map +1 -0
  84. package/lib/commonjs/package.json +1 -0
  85. package/lib/commonjs/paperTheme.js +59 -0
  86. package/lib/commonjs/paperTheme.js.map +1 -0
  87. package/lib/commonjs/realtimeClient.js +99 -0
  88. package/lib/commonjs/realtimeClient.js.map +1 -0
  89. package/lib/commonjs/renameAgentModalStyles.js +83 -0
  90. package/lib/commonjs/renameAgentModalStyles.js.map +1 -0
  91. package/lib/commonjs/screenParts.js +220 -0
  92. package/lib/commonjs/screenParts.js.map +1 -0
  93. package/lib/commonjs/styles.js +343 -0
  94. package/lib/commonjs/styles.js.map +1 -0
  95. package/lib/commonjs/superagentApiClient.js +613 -0
  96. package/lib/commonjs/superagentApiClient.js.map +1 -0
  97. package/lib/commonjs/types.js +6 -0
  98. package/lib/commonjs/types.js.map +1 -0
  99. package/lib/commonjs/useSuperagentAttachmentPicker.js +80 -0
  100. package/lib/commonjs/useSuperagentAttachmentPicker.js.map +1 -0
  101. package/lib/commonjs/useSuperagentConversation.js +216 -0
  102. package/lib/commonjs/useSuperagentConversation.js.map +1 -0
  103. package/lib/commonjs/useSuperagentRuntime.js +1207 -0
  104. package/lib/commonjs/useSuperagentRuntime.js.map +1 -0
  105. package/lib/module/AgentSettingsPanel.js +1062 -0
  106. package/lib/module/AgentSettingsPanel.js.map +1 -0
  107. package/lib/module/AgentSphereIcon.js +237 -0
  108. package/lib/module/AgentSphereIcon.js.map +1 -0
  109. package/lib/module/AttachmentPickerStatusModal.js +91 -0
  110. package/lib/module/AttachmentPickerStatusModal.js.map +1 -0
  111. package/lib/module/AttachmentPreviewStrip.js +44 -0
  112. package/lib/module/AttachmentPreviewStrip.js.map +1 -0
  113. package/lib/module/ChannelsPanel.js +728 -0
  114. package/lib/module/ChannelsPanel.js.map +1 -0
  115. package/lib/module/ConversationChat.js +214 -0
  116. package/lib/module/ConversationChat.js.map +1 -0
  117. package/lib/module/ConversationComposer.js +318 -0
  118. package/lib/module/ConversationComposer.js.map +1 -0
  119. package/lib/module/ConversationMessageList.js +100 -0
  120. package/lib/module/ConversationMessageList.js.map +1 -0
  121. package/lib/module/ConversationScreen.js +236 -0
  122. package/lib/module/ConversationScreen.js.map +1 -0
  123. package/lib/module/EditorDrawer.js +1122 -0
  124. package/lib/module/EditorDrawer.js.map +1 -0
  125. package/lib/module/EditorTabPanel.js +23 -0
  126. package/lib/module/EditorTabPanel.js.map +1 -0
  127. package/lib/module/FilesPanel.js +528 -0
  128. package/lib/module/FilesPanel.js.map +1 -0
  129. package/lib/module/MarkdownText.js +308 -0
  130. package/lib/module/MarkdownText.js.map +1 -0
  131. package/lib/module/MessageActionBar.js +85 -0
  132. package/lib/module/MessageActionBar.js.map +1 -0
  133. package/lib/module/RenameAgentModal.js +94 -0
  134. package/lib/module/RenameAgentModal.js.map +1 -0
  135. package/lib/module/ShareAgentModal.js +344 -0
  136. package/lib/module/ShareAgentModal.js.map +1 -0
  137. package/lib/module/ShareAgentModal.styles.js +232 -0
  138. package/lib/module/ShareAgentModal.styles.js.map +1 -0
  139. package/lib/module/SuperagentHomeScreen.js +311 -0
  140. package/lib/module/SuperagentHomeScreen.js.map +1 -0
  141. package/lib/module/ToolApprovalCard.js +537 -0
  142. package/lib/module/ToolApprovalCard.js.map +1 -0
  143. package/lib/module/ToolCallSummary.js +627 -0
  144. package/lib/module/ToolCallSummary.js.map +1 -0
  145. package/lib/module/agentSphereStyles.js +34 -0
  146. package/lib/module/agentSphereStyles.js.map +1 -0
  147. package/lib/module/apiClient.js +154 -0
  148. package/lib/module/apiClient.js.map +1 -0
  149. package/lib/module/attachmentFileHelpers.js +97 -0
  150. package/lib/module/attachmentFileHelpers.js.map +1 -0
  151. package/lib/module/attachmentUpload.js +82 -0
  152. package/lib/module/attachmentUpload.js.map +1 -0
  153. package/lib/module/composerStyles.js +244 -0
  154. package/lib/module/composerStyles.js.map +1 -0
  155. package/lib/module/connectorBrandIcons.js +76 -0
  156. package/lib/module/connectorBrandIcons.js.map +1 -0
  157. package/lib/module/connectorCatalog.js +373 -0
  158. package/lib/module/connectorCatalog.js.map +1 -0
  159. package/lib/module/constants.js +10 -0
  160. package/lib/module/constants.js.map +1 -0
  161. package/lib/module/conversationParts.js +266 -0
  162. package/lib/module/conversationParts.js.map +1 -0
  163. package/lib/module/conversationRuntime.js +129 -0
  164. package/lib/module/conversationRuntime.js.map +1 -0
  165. package/lib/module/conversationStyles.js +754 -0
  166. package/lib/module/conversationStyles.js.map +1 -0
  167. package/lib/module/editorShellStyles.js +1028 -0
  168. package/lib/module/editorShellStyles.js.map +1 -0
  169. package/lib/module/editorTabs.js +37 -0
  170. package/lib/module/editorTabs.js.map +1 -0
  171. package/lib/module/fileTreeUtils.js +120 -0
  172. package/lib/module/fileTreeUtils.js.map +1 -0
  173. package/lib/module/index.js +17 -0
  174. package/lib/module/index.js.map +1 -0
  175. package/lib/module/markdownStyles.js +153 -0
  176. package/lib/module/markdownStyles.js.map +1 -0
  177. package/lib/module/mediaUtils.js +53 -0
  178. package/lib/module/mediaUtils.js.map +1 -0
  179. package/lib/module/messageActionStyles.js +41 -0
  180. package/lib/module/messageActionStyles.js.map +1 -0
  181. package/lib/module/messageUtils.js +46 -0
  182. package/lib/module/messageUtils.js.map +1 -0
  183. package/lib/module/nativeActionSheet.js +17 -0
  184. package/lib/module/nativeActionSheet.js.map +1 -0
  185. package/lib/module/nativeActionSheet.web.js +6 -0
  186. package/lib/module/nativeActionSheet.web.js.map +1 -0
  187. package/lib/module/package.json +1 -0
  188. package/lib/module/paperTheme.js +55 -0
  189. package/lib/module/paperTheme.js.map +1 -0
  190. package/lib/module/realtimeClient.js +95 -0
  191. package/lib/module/realtimeClient.js.map +1 -0
  192. package/lib/module/renameAgentModalStyles.js +79 -0
  193. package/lib/module/renameAgentModalStyles.js.map +1 -0
  194. package/lib/module/screenParts.js +210 -0
  195. package/lib/module/screenParts.js.map +1 -0
  196. package/lib/module/styles.js +339 -0
  197. package/lib/module/styles.js.map +1 -0
  198. package/lib/module/superagentApiClient.js +609 -0
  199. package/lib/module/superagentApiClient.js.map +1 -0
  200. package/lib/module/types.js +4 -0
  201. package/lib/module/types.js.map +1 -0
  202. package/lib/module/useSuperagentAttachmentPicker.js +75 -0
  203. package/lib/module/useSuperagentAttachmentPicker.js.map +1 -0
  204. package/lib/module/useSuperagentConversation.js +212 -0
  205. package/lib/module/useSuperagentConversation.js.map +1 -0
  206. package/lib/module/useSuperagentRuntime.js +1203 -0
  207. package/lib/module/useSuperagentRuntime.js.map +1 -0
  208. package/lib/typescript/commonjs/AgentSettingsPanel.d.ts +19 -0
  209. package/lib/typescript/commonjs/AgentSettingsPanel.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/AgentSphereIcon.d.ts +15 -0
  211. package/lib/typescript/commonjs/AgentSphereIcon.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/AttachmentPickerStatusModal.d.ts +8 -0
  213. package/lib/typescript/commonjs/AttachmentPickerStatusModal.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/AttachmentPreviewStrip.d.ts +7 -0
  215. package/lib/typescript/commonjs/AttachmentPreviewStrip.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/ChannelsPanel.d.ts +21 -0
  217. package/lib/typescript/commonjs/ChannelsPanel.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/ConversationChat.d.ts +22 -0
  219. package/lib/typescript/commonjs/ConversationChat.d.ts.map +1 -0
  220. package/lib/typescript/commonjs/ConversationComposer.d.ts +24 -0
  221. package/lib/typescript/commonjs/ConversationComposer.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/ConversationMessageList.d.ts +17 -0
  223. package/lib/typescript/commonjs/ConversationMessageList.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/ConversationScreen.d.ts +80 -0
  225. package/lib/typescript/commonjs/ConversationScreen.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/EditorDrawer.d.ts +67 -0
  227. package/lib/typescript/commonjs/EditorDrawer.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/EditorTabPanel.d.ts +6 -0
  229. package/lib/typescript/commonjs/EditorTabPanel.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/FilesPanel.d.ts +14 -0
  231. package/lib/typescript/commonjs/FilesPanel.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/MarkdownText.d.ts +10 -0
  233. package/lib/typescript/commonjs/MarkdownText.d.ts.map +1 -0
  234. package/lib/typescript/commonjs/MessageActionBar.d.ts +8 -0
  235. package/lib/typescript/commonjs/MessageActionBar.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/RenameAgentModal.d.ts +10 -0
  237. package/lib/typescript/commonjs/RenameAgentModal.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/ShareAgentModal.d.ts +15 -0
  239. package/lib/typescript/commonjs/ShareAgentModal.d.ts.map +1 -0
  240. package/lib/typescript/commonjs/ShareAgentModal.styles.d.ts +229 -0
  241. package/lib/typescript/commonjs/ShareAgentModal.styles.d.ts.map +1 -0
  242. package/lib/typescript/commonjs/SuperagentHomeScreen.d.ts +4 -0
  243. package/lib/typescript/commonjs/SuperagentHomeScreen.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/ToolApprovalCard.d.ts +13 -0
  245. package/lib/typescript/commonjs/ToolApprovalCard.d.ts.map +1 -0
  246. package/lib/typescript/commonjs/ToolCallSummary.d.ts +16 -0
  247. package/lib/typescript/commonjs/ToolCallSummary.d.ts.map +1 -0
  248. package/lib/typescript/commonjs/agentSphereStyles.d.ts +31 -0
  249. package/lib/typescript/commonjs/agentSphereStyles.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/apiClient.d.ts +4 -0
  251. package/lib/typescript/commonjs/apiClient.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/attachmentFileHelpers.d.ts +6 -0
  253. package/lib/typescript/commonjs/attachmentFileHelpers.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/attachmentUpload.d.ts +12 -0
  255. package/lib/typescript/commonjs/attachmentUpload.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/composerStyles.d.ts +241 -0
  257. package/lib/typescript/commonjs/composerStyles.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/connectorBrandIcons.d.ts +7 -0
  259. package/lib/typescript/commonjs/connectorBrandIcons.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/connectorCatalog.d.ts +3 -0
  261. package/lib/typescript/commonjs/connectorCatalog.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/constants.d.ts +4 -0
  263. package/lib/typescript/commonjs/constants.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/conversationParts.d.ts +29 -0
  265. package/lib/typescript/commonjs/conversationParts.d.ts.map +1 -0
  266. package/lib/typescript/commonjs/conversationRuntime.d.ts +67 -0
  267. package/lib/typescript/commonjs/conversationRuntime.d.ts.map +1 -0
  268. package/lib/typescript/commonjs/conversationStyles.d.ts +742 -0
  269. package/lib/typescript/commonjs/conversationStyles.d.ts.map +1 -0
  270. package/lib/typescript/commonjs/editorShellStyles.d.ts +1025 -0
  271. package/lib/typescript/commonjs/editorShellStyles.d.ts.map +1 -0
  272. package/lib/typescript/commonjs/editorTabs.d.ts +11 -0
  273. package/lib/typescript/commonjs/editorTabs.d.ts.map +1 -0
  274. package/lib/typescript/commonjs/fileTreeUtils.d.ts +17 -0
  275. package/lib/typescript/commonjs/fileTreeUtils.d.ts.map +1 -0
  276. package/lib/typescript/commonjs/index.d.ts +20 -0
  277. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  278. package/lib/typescript/commonjs/markdownStyles.d.ts +150 -0
  279. package/lib/typescript/commonjs/markdownStyles.d.ts.map +1 -0
  280. package/lib/typescript/commonjs/mediaUtils.d.ts +9 -0
  281. package/lib/typescript/commonjs/mediaUtils.d.ts.map +1 -0
  282. package/lib/typescript/commonjs/messageActionStyles.d.ts +38 -0
  283. package/lib/typescript/commonjs/messageActionStyles.d.ts.map +1 -0
  284. package/lib/typescript/commonjs/messageUtils.d.ts +8 -0
  285. package/lib/typescript/commonjs/messageUtils.d.ts.map +1 -0
  286. package/lib/typescript/commonjs/nativeActionSheet.d.ts +6 -0
  287. package/lib/typescript/commonjs/nativeActionSheet.d.ts.map +1 -0
  288. package/lib/typescript/commonjs/nativeActionSheet.web.d.ts +3 -0
  289. package/lib/typescript/commonjs/nativeActionSheet.web.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/package.json +1 -0
  291. package/lib/typescript/commonjs/paperTheme.d.ts +3 -0
  292. package/lib/typescript/commonjs/paperTheme.d.ts.map +1 -0
  293. package/lib/typescript/commonjs/realtimeClient.d.ts +16 -0
  294. package/lib/typescript/commonjs/realtimeClient.d.ts.map +1 -0
  295. package/lib/typescript/commonjs/renameAgentModalStyles.d.ts +76 -0
  296. package/lib/typescript/commonjs/renameAgentModalStyles.d.ts.map +1 -0
  297. package/lib/typescript/commonjs/screenParts.d.ts +31 -0
  298. package/lib/typescript/commonjs/screenParts.d.ts.map +1 -0
  299. package/lib/typescript/commonjs/styles.d.ts +336 -0
  300. package/lib/typescript/commonjs/styles.d.ts.map +1 -0
  301. package/lib/typescript/commonjs/superagentApiClient.d.ts +66 -0
  302. package/lib/typescript/commonjs/superagentApiClient.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/types.d.ts +437 -0
  304. package/lib/typescript/commonjs/types.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/useSuperagentAttachmentPicker.d.ts +30 -0
  306. package/lib/typescript/commonjs/useSuperagentAttachmentPicker.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/useSuperagentConversation.d.ts +36 -0
  308. package/lib/typescript/commonjs/useSuperagentConversation.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/useSuperagentRuntime.d.ts +163 -0
  310. package/lib/typescript/commonjs/useSuperagentRuntime.d.ts.map +1 -0
  311. package/lib/typescript/module/AgentSettingsPanel.d.ts +19 -0
  312. package/lib/typescript/module/AgentSettingsPanel.d.ts.map +1 -0
  313. package/lib/typescript/module/AgentSphereIcon.d.ts +15 -0
  314. package/lib/typescript/module/AgentSphereIcon.d.ts.map +1 -0
  315. package/lib/typescript/module/AttachmentPickerStatusModal.d.ts +8 -0
  316. package/lib/typescript/module/AttachmentPickerStatusModal.d.ts.map +1 -0
  317. package/lib/typescript/module/AttachmentPreviewStrip.d.ts +7 -0
  318. package/lib/typescript/module/AttachmentPreviewStrip.d.ts.map +1 -0
  319. package/lib/typescript/module/ChannelsPanel.d.ts +21 -0
  320. package/lib/typescript/module/ChannelsPanel.d.ts.map +1 -0
  321. package/lib/typescript/module/ConversationChat.d.ts +22 -0
  322. package/lib/typescript/module/ConversationChat.d.ts.map +1 -0
  323. package/lib/typescript/module/ConversationComposer.d.ts +24 -0
  324. package/lib/typescript/module/ConversationComposer.d.ts.map +1 -0
  325. package/lib/typescript/module/ConversationMessageList.d.ts +17 -0
  326. package/lib/typescript/module/ConversationMessageList.d.ts.map +1 -0
  327. package/lib/typescript/module/ConversationScreen.d.ts +80 -0
  328. package/lib/typescript/module/ConversationScreen.d.ts.map +1 -0
  329. package/lib/typescript/module/EditorDrawer.d.ts +67 -0
  330. package/lib/typescript/module/EditorDrawer.d.ts.map +1 -0
  331. package/lib/typescript/module/EditorTabPanel.d.ts +6 -0
  332. package/lib/typescript/module/EditorTabPanel.d.ts.map +1 -0
  333. package/lib/typescript/module/FilesPanel.d.ts +14 -0
  334. package/lib/typescript/module/FilesPanel.d.ts.map +1 -0
  335. package/lib/typescript/module/MarkdownText.d.ts +10 -0
  336. package/lib/typescript/module/MarkdownText.d.ts.map +1 -0
  337. package/lib/typescript/module/MessageActionBar.d.ts +8 -0
  338. package/lib/typescript/module/MessageActionBar.d.ts.map +1 -0
  339. package/lib/typescript/module/RenameAgentModal.d.ts +10 -0
  340. package/lib/typescript/module/RenameAgentModal.d.ts.map +1 -0
  341. package/lib/typescript/module/ShareAgentModal.d.ts +15 -0
  342. package/lib/typescript/module/ShareAgentModal.d.ts.map +1 -0
  343. package/lib/typescript/module/ShareAgentModal.styles.d.ts +229 -0
  344. package/lib/typescript/module/ShareAgentModal.styles.d.ts.map +1 -0
  345. package/lib/typescript/module/SuperagentHomeScreen.d.ts +4 -0
  346. package/lib/typescript/module/SuperagentHomeScreen.d.ts.map +1 -0
  347. package/lib/typescript/module/ToolApprovalCard.d.ts +13 -0
  348. package/lib/typescript/module/ToolApprovalCard.d.ts.map +1 -0
  349. package/lib/typescript/module/ToolCallSummary.d.ts +16 -0
  350. package/lib/typescript/module/ToolCallSummary.d.ts.map +1 -0
  351. package/lib/typescript/module/agentSphereStyles.d.ts +31 -0
  352. package/lib/typescript/module/agentSphereStyles.d.ts.map +1 -0
  353. package/lib/typescript/module/apiClient.d.ts +4 -0
  354. package/lib/typescript/module/apiClient.d.ts.map +1 -0
  355. package/lib/typescript/module/attachmentFileHelpers.d.ts +6 -0
  356. package/lib/typescript/module/attachmentFileHelpers.d.ts.map +1 -0
  357. package/lib/typescript/module/attachmentUpload.d.ts +12 -0
  358. package/lib/typescript/module/attachmentUpload.d.ts.map +1 -0
  359. package/lib/typescript/module/composerStyles.d.ts +241 -0
  360. package/lib/typescript/module/composerStyles.d.ts.map +1 -0
  361. package/lib/typescript/module/connectorBrandIcons.d.ts +7 -0
  362. package/lib/typescript/module/connectorBrandIcons.d.ts.map +1 -0
  363. package/lib/typescript/module/connectorCatalog.d.ts +3 -0
  364. package/lib/typescript/module/connectorCatalog.d.ts.map +1 -0
  365. package/lib/typescript/module/constants.d.ts +4 -0
  366. package/lib/typescript/module/constants.d.ts.map +1 -0
  367. package/lib/typescript/module/conversationParts.d.ts +29 -0
  368. package/lib/typescript/module/conversationParts.d.ts.map +1 -0
  369. package/lib/typescript/module/conversationRuntime.d.ts +67 -0
  370. package/lib/typescript/module/conversationRuntime.d.ts.map +1 -0
  371. package/lib/typescript/module/conversationStyles.d.ts +742 -0
  372. package/lib/typescript/module/conversationStyles.d.ts.map +1 -0
  373. package/lib/typescript/module/editorShellStyles.d.ts +1025 -0
  374. package/lib/typescript/module/editorShellStyles.d.ts.map +1 -0
  375. package/lib/typescript/module/editorTabs.d.ts +11 -0
  376. package/lib/typescript/module/editorTabs.d.ts.map +1 -0
  377. package/lib/typescript/module/fileTreeUtils.d.ts +17 -0
  378. package/lib/typescript/module/fileTreeUtils.d.ts.map +1 -0
  379. package/lib/typescript/module/index.d.ts +20 -0
  380. package/lib/typescript/module/index.d.ts.map +1 -0
  381. package/lib/typescript/module/markdownStyles.d.ts +150 -0
  382. package/lib/typescript/module/markdownStyles.d.ts.map +1 -0
  383. package/lib/typescript/module/mediaUtils.d.ts +9 -0
  384. package/lib/typescript/module/mediaUtils.d.ts.map +1 -0
  385. package/lib/typescript/module/messageActionStyles.d.ts +38 -0
  386. package/lib/typescript/module/messageActionStyles.d.ts.map +1 -0
  387. package/lib/typescript/module/messageUtils.d.ts +8 -0
  388. package/lib/typescript/module/messageUtils.d.ts.map +1 -0
  389. package/lib/typescript/module/nativeActionSheet.d.ts +6 -0
  390. package/lib/typescript/module/nativeActionSheet.d.ts.map +1 -0
  391. package/lib/typescript/module/nativeActionSheet.web.d.ts +3 -0
  392. package/lib/typescript/module/nativeActionSheet.web.d.ts.map +1 -0
  393. package/lib/typescript/module/package.json +1 -0
  394. package/lib/typescript/module/paperTheme.d.ts +3 -0
  395. package/lib/typescript/module/paperTheme.d.ts.map +1 -0
  396. package/lib/typescript/module/realtimeClient.d.ts +16 -0
  397. package/lib/typescript/module/realtimeClient.d.ts.map +1 -0
  398. package/lib/typescript/module/renameAgentModalStyles.d.ts +76 -0
  399. package/lib/typescript/module/renameAgentModalStyles.d.ts.map +1 -0
  400. package/lib/typescript/module/screenParts.d.ts +31 -0
  401. package/lib/typescript/module/screenParts.d.ts.map +1 -0
  402. package/lib/typescript/module/styles.d.ts +336 -0
  403. package/lib/typescript/module/styles.d.ts.map +1 -0
  404. package/lib/typescript/module/superagentApiClient.d.ts +66 -0
  405. package/lib/typescript/module/superagentApiClient.d.ts.map +1 -0
  406. package/lib/typescript/module/types.d.ts +437 -0
  407. package/lib/typescript/module/types.d.ts.map +1 -0
  408. package/lib/typescript/module/useSuperagentAttachmentPicker.d.ts +30 -0
  409. package/lib/typescript/module/useSuperagentAttachmentPicker.d.ts.map +1 -0
  410. package/lib/typescript/module/useSuperagentConversation.d.ts +36 -0
  411. package/lib/typescript/module/useSuperagentConversation.d.ts.map +1 -0
  412. package/lib/typescript/module/useSuperagentRuntime.d.ts +163 -0
  413. package/lib/typescript/module/useSuperagentRuntime.d.ts.map +1 -0
  414. package/package.json +87 -0
  415. package/src/AgentSettingsPanel.tsx +1122 -0
  416. package/src/AgentSphereIcon.tsx +170 -0
  417. package/src/AttachmentPickerStatusModal.tsx +80 -0
  418. package/src/AttachmentPreviewStrip.tsx +38 -0
  419. package/src/ChannelsPanel.tsx +705 -0
  420. package/src/ConversationChat.tsx +245 -0
  421. package/src/ConversationComposer.tsx +368 -0
  422. package/src/ConversationMessageList.tsx +140 -0
  423. package/src/ConversationScreen.tsx +320 -0
  424. package/src/EditorDrawer.tsx +1297 -0
  425. package/src/EditorTabPanel.tsx +19 -0
  426. package/src/FilesPanel.tsx +577 -0
  427. package/src/MarkdownText.tsx +317 -0
  428. package/src/MessageActionBar.tsx +126 -0
  429. package/src/RenameAgentModal.tsx +107 -0
  430. package/src/ShareAgentModal.styles.ts +95 -0
  431. package/src/ShareAgentModal.tsx +320 -0
  432. package/src/SuperagentHomeScreen.tsx +318 -0
  433. package/src/ToolApprovalCard.tsx +592 -0
  434. package/src/ToolCallSummary.tsx +599 -0
  435. package/src/agentSphereStyles.ts +25 -0
  436. package/src/apiClient.ts +189 -0
  437. package/src/attachmentFileHelpers.ts +109 -0
  438. package/src/attachmentUpload.ts +112 -0
  439. package/src/composerStyles.ts +167 -0
  440. package/src/connectorBrandIcons.tsx +69 -0
  441. package/src/connectorCatalog.ts +414 -0
  442. package/src/constants.ts +9 -0
  443. package/src/conversationParts.tsx +307 -0
  444. package/src/conversationRuntime.ts +171 -0
  445. package/src/conversationStyles.ts +412 -0
  446. package/src/editorShellStyles.ts +1023 -0
  447. package/src/editorTabs.ts +26 -0
  448. package/src/fileTreeUtils.ts +165 -0
  449. package/src/index.ts +110 -0
  450. package/src/markdownStyles.ts +64 -0
  451. package/src/mediaUtils.ts +75 -0
  452. package/src/messageActionStyles.ts +26 -0
  453. package/src/messageUtils.ts +58 -0
  454. package/src/nativeActionSheet.ts +25 -0
  455. package/src/nativeActionSheet.web.ts +5 -0
  456. package/src/paperTheme.ts +52 -0
  457. package/src/realtimeClient.ts +149 -0
  458. package/src/renameAgentModalStyles.ts +77 -0
  459. package/src/screenParts.tsx +185 -0
  460. package/src/styles.ts +190 -0
  461. package/src/superagentApiClient.ts +895 -0
  462. package/src/types.ts +514 -0
  463. package/src/useSuperagentAttachmentPicker.tsx +117 -0
  464. package/src/useSuperagentConversation.ts +242 -0
  465. package/src/useSuperagentRuntime.ts +1371 -0
@@ -0,0 +1,1122 @@
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
+ import {
3
+ ActivityIndicator,
4
+ Modal,
5
+ Pressable,
6
+ ScrollView,
7
+ StyleSheet,
8
+ Switch,
9
+ Text,
10
+ TextInput,
11
+ View,
12
+ } from 'react-native';
13
+ import {
14
+ AlertCircle,
15
+ Check,
16
+ ChevronDown,
17
+ Copy,
18
+ Eye,
19
+ EyeOff,
20
+ KeyRound,
21
+ Plug,
22
+ Plus,
23
+ RefreshCcw,
24
+ Settings2,
25
+ Share2,
26
+ ShieldCheck,
27
+ Sparkles,
28
+ Trash2,
29
+ type LucideIcon,
30
+ } from 'lucide-react-native';
31
+
32
+ import { ConnectorBrandIcon, hasConnectorBrandIcon } from './connectorBrandIcons';
33
+ import { editorShellStyles } from './editorShellStyles';
34
+ import { showNativeActionSheet } from './nativeActionSheet';
35
+ import { styles as sharedStyles } from './styles';
36
+ import type {
37
+ SuperagentAgent,
38
+ SuperagentConnector,
39
+ SuperagentHomeScreenProps,
40
+ SuperagentModelChoice,
41
+ SuperagentSecret,
42
+ SuperagentToolPermissionConfig,
43
+ } from './types';
44
+
45
+ type ModelOption = {
46
+ description: string;
47
+ id: SuperagentModelChoice;
48
+ label: string;
49
+ };
50
+
51
+ const MODEL_OPTIONS: ModelOption[] = [
52
+ { id: 'default', label: 'Auto', description: 'Use the Superagent default model.' },
53
+ { id: 'claude_sonnet_4_6', label: 'Claude Sonnet 4.6', description: 'Balanced coding and reasoning.' },
54
+ { id: 'claude_opus_4_6', label: 'Claude Opus 4.6', description: 'Highest quality for complex work.' },
55
+ { id: 'gemini_3_1_pro', label: 'Gemini 3.1 Pro', description: 'Large-context Google model.' },
56
+ { id: 'gemini_2_5_flash', label: 'Gemini 2.5 Flash', description: 'Fast lower-cost responses.' },
57
+ { id: 'gpt_5_4', label: 'GPT-5.4', description: 'OpenAI reasoning model.' },
58
+ { id: 'gpt_5', label: 'GPT-5', description: 'General OpenAI model.' },
59
+ { id: 'kimi_k2p5', label: 'Kimi K2.5', description: 'Open-source model when enabled.' },
60
+ { id: 'deepseek_v3', label: 'DeepSeek V3', description: 'Open-source text model.' },
61
+ ];
62
+
63
+ const TOOL_OPERATIONS = [
64
+ {
65
+ body: 'Allow the agent to update app data without asking every time.',
66
+ id: 'update_entities',
67
+ title: 'Update data',
68
+ },
69
+ {
70
+ body: 'Allow the agent to delete app data without asking every time.',
71
+ id: 'delete_entities',
72
+ title: 'Delete data',
73
+ },
74
+ ];
75
+
76
+ type PendingAction =
77
+ | 'clone'
78
+ | 'delete-agent'
79
+ | 'delete-secret'
80
+ | 'model'
81
+ | 'refresh'
82
+ | 'save-guards'
83
+ | 'save-secret'
84
+ | 'share'
85
+ | 'toggle-permission'
86
+ | null;
87
+
88
+ export function AgentSettingsPanel({
89
+ agent,
90
+ collaborators = [],
91
+ connectedConnectors = [],
92
+ isLoading,
93
+ isLoadingCollaborators,
94
+ onCloneAgent,
95
+ onDeleteAgent,
96
+ onDeleteSecret,
97
+ onRefreshAgentSettings,
98
+ onSaveSecret,
99
+ onShareAgentLink,
100
+ onUpdateAgentModel,
101
+ onUpdateToolPermissions,
102
+ secrets = [],
103
+ }: {
104
+ agent: SuperagentAgent;
105
+ collaborators?: SuperagentHomeScreenProps['collaborators'];
106
+ connectedConnectors?: SuperagentConnector[];
107
+ isLoading?: boolean;
108
+ isLoadingCollaborators?: boolean;
109
+ onCloneAgent?: SuperagentHomeScreenProps['onCloneAgent'];
110
+ onDeleteAgent?: SuperagentHomeScreenProps['onDeleteAgent'];
111
+ onDeleteSecret?: SuperagentHomeScreenProps['onDeleteSecret'];
112
+ onRefreshAgentSettings?: SuperagentHomeScreenProps['onRefreshAgentSettings'];
113
+ onSaveSecret?: SuperagentHomeScreenProps['onSaveSecret'];
114
+ onShareAgentLink?: SuperagentHomeScreenProps['onShareAgentLink'];
115
+ onUpdateAgentModel?: SuperagentHomeScreenProps['onUpdateAgentModel'];
116
+ onUpdateToolPermissions?: SuperagentHomeScreenProps['onUpdateToolPermissions'];
117
+ secrets?: SuperagentSecret[];
118
+ }) {
119
+ const [guardDrafts, setGuardDrafts] = useState<Record<string, string>>({});
120
+ const [newSecretName, setNewSecretName] = useState('');
121
+ const [newSecretValue, setNewSecretValue] = useState('');
122
+ const [isModelPickerOpen, setIsModelPickerOpen] = useState(false);
123
+ const [pendingAction, setPendingAction] = useState<PendingAction>(null);
124
+ const [visibleSecrets, setVisibleSecrets] = useState<Set<string>>(new Set());
125
+
126
+ const permissions = normalizePermissions(agent.toolsPermissionConfig);
127
+ const selectedModel = useMemo(
128
+ () => MODEL_OPTIONS.find((model) => model.id === (agent.model || 'default')) ?? MODEL_OPTIONS[0],
129
+ [agent.model],
130
+ );
131
+ const activeConnectorIds = useMemo(
132
+ () => connectedConnectors
133
+ .filter((connector) => connector.status !== 'expired' && connector.status !== 'disconnected')
134
+ .map((connector) => connector.id),
135
+ [connectedConnectors],
136
+ );
137
+ const guardDraftsDirty = useMemo(
138
+ () => JSON.stringify(cleanGuards(guardDrafts)) !== JSON.stringify(permissions.connector_guards),
139
+ [guardDrafts, permissions.connector_guards],
140
+ );
141
+
142
+ useEffect(() => {
143
+ setGuardDrafts(permissions.connector_guards);
144
+ }, [agent.id, permissions.connector_guards]);
145
+
146
+ const runAction = async (action: Exclude<PendingAction, null>, handler: () => Promise<void> | void) => {
147
+ if (pendingAction) {
148
+ return;
149
+ }
150
+
151
+ setPendingAction(action);
152
+ try {
153
+ await handler();
154
+ } finally {
155
+ setPendingAction(null);
156
+ }
157
+ };
158
+
159
+ const updatePermissions = async (
160
+ nextConfig: SuperagentToolPermissionConfig,
161
+ action: Exclude<PendingAction, null> = 'toggle-permission',
162
+ ) => {
163
+ if (!onUpdateToolPermissions) {
164
+ return;
165
+ }
166
+
167
+ await runAction(action, () => onUpdateToolPermissions({
168
+ agentId: agent.id,
169
+ config: {
170
+ auto_approved_operations: nextConfig.auto_approved_operations ?? [],
171
+ connector_guards: cleanGuards(nextConfig.connector_guards ?? {}),
172
+ },
173
+ }));
174
+ };
175
+
176
+ const selectModel = (model: ModelOption) => {
177
+ if (!onUpdateAgentModel || pendingAction === 'model') {
178
+ return;
179
+ }
180
+
181
+ setIsModelPickerOpen(false);
182
+ if (model.id === selectedModel.id) {
183
+ return;
184
+ }
185
+
186
+ runAction('model', () => onUpdateAgentModel({ agentId: agent.id, model: model.id }));
187
+ };
188
+
189
+ const openModelPicker = () => {
190
+ if (!onUpdateAgentModel || pendingAction === 'model') {
191
+ return;
192
+ }
193
+
194
+ const didOpenNativePicker = showNativeActionSheet(
195
+ 'Select model',
196
+ MODEL_OPTIONS.map((model) => ({
197
+ label: `${model.id === selectedModel.id ? '✓ ' : ''}${model.label}`,
198
+ onPress: () => selectModel(model),
199
+ })),
200
+ );
201
+
202
+ if (!didOpenNativePicker) {
203
+ setIsModelPickerOpen(true);
204
+ }
205
+ };
206
+
207
+ const addSecret = async () => {
208
+ const name = newSecretName.trim().toUpperCase();
209
+ const value = newSecretValue.trim();
210
+ if (!name || !value || !onSaveSecret) {
211
+ return;
212
+ }
213
+
214
+ await runAction('save-secret', async () => {
215
+ await onSaveSecret({ agentId: agent.id, name, value });
216
+ setNewSecretName('');
217
+ setNewSecretValue('');
218
+ });
219
+ };
220
+
221
+ const deleteSecret = async (secret: SuperagentSecret) => {
222
+ if (!onDeleteSecret) {
223
+ return;
224
+ }
225
+
226
+ await runAction('delete-secret', () => onDeleteSecret({ agentId: agent.id, name: secret.name }));
227
+ };
228
+
229
+ return (
230
+ <View style={editorShellStyles.settingsStack}>
231
+ <SettingsSection
232
+ icon={Sparkles}
233
+ right={onRefreshAgentSettings ? (
234
+ <HeaderAction
235
+ icon={RefreshCcw}
236
+ isLoading={pendingAction === 'refresh'}
237
+ label="Refresh"
238
+ onPress={() => runAction('refresh', () => onRefreshAgentSettings(agent.id))}
239
+ />
240
+ ) : null}
241
+ subtitle="Same model field the web builder saves on the app."
242
+ title="Model"
243
+ >
244
+ <Pressable
245
+ accessibilityLabel={`Current model: ${selectedModel.label}`}
246
+ accessibilityRole="button"
247
+ disabled={!onUpdateAgentModel || pendingAction === 'model'}
248
+ onPress={openModelPicker}
249
+ style={({ pressed }) => [
250
+ localStyles.modelDropdown,
251
+ (!onUpdateAgentModel || pendingAction === 'model') && localStyles.disabledButton,
252
+ pressed && sharedStyles.pressed,
253
+ ]}
254
+ >
255
+ <Text style={localStyles.modelDropdownLabel}>Model</Text>
256
+ <Text numberOfLines={1} style={localStyles.modelDropdownValue}>{selectedModel.label}</Text>
257
+ <View style={localStyles.modelDropdownIcon}>
258
+ {pendingAction === 'model' ? (
259
+ <ActivityIndicator color="#F4F4F5" size="small" />
260
+ ) : (
261
+ <ChevronDown color="#F4F4F5" size={20} strokeWidth={2.5} />
262
+ )}
263
+ </View>
264
+ </Pressable>
265
+ <ModelPickerModal
266
+ isVisible={isModelPickerOpen}
267
+ options={MODEL_OPTIONS}
268
+ selectedModelId={selectedModel.id}
269
+ onClose={() => setIsModelPickerOpen(false)}
270
+ onSelect={selectModel}
271
+ />
272
+ </SettingsSection>
273
+
274
+ <SettingsSection
275
+ icon={KeyRound}
276
+ isLoading={isLoading}
277
+ subtitle="Environment variables available inside this agent."
278
+ title="Secrets"
279
+ >
280
+ {secrets.length > 0 ? (
281
+ <View style={localStyles.secretList}>
282
+ {secrets.map((secret) => {
283
+ const isVisible = visibleSecrets.has(secret.name);
284
+ return (
285
+ <View key={secret.name} style={localStyles.secretRow}>
286
+ <View style={localStyles.secretText}>
287
+ <Text numberOfLines={1} style={localStyles.secretName}>{secret.name}</Text>
288
+ <Text numberOfLines={1} style={localStyles.secretValue}>
289
+ {isVisible ? secret.value : '••••••••••••'}
290
+ </Text>
291
+ </View>
292
+ <Pressable
293
+ accessibilityLabel={isVisible ? 'Hide secret' : 'Show secret'}
294
+ accessibilityRole="button"
295
+ onPress={() => setVisibleSecrets((current) => toggleSecretVisibility(current, secret.name))}
296
+ style={({ pressed }) => [localStyles.iconButton, pressed && sharedStyles.pressed]}
297
+ >
298
+ {isVisible ? (
299
+ <EyeOff color="#E4E4E7" size={16} strokeWidth={2.4} />
300
+ ) : (
301
+ <Eye color="#E4E4E7" size={16} strokeWidth={2.4} />
302
+ )}
303
+ </Pressable>
304
+ <Pressable
305
+ accessibilityLabel={`Delete ${secret.name}`}
306
+ accessibilityRole="button"
307
+ disabled={!onDeleteSecret || pendingAction === 'delete-secret'}
308
+ onPress={() => deleteSecret(secret)}
309
+ style={({ pressed }) => [localStyles.iconButtonDanger, pressed && sharedStyles.pressed]}
310
+ >
311
+ {pendingAction === 'delete-secret' ? (
312
+ <ActivityIndicator color="#FCA5A5" size="small" />
313
+ ) : (
314
+ <Trash2 color="#FCA5A5" size={16} strokeWidth={2.4} />
315
+ )}
316
+ </Pressable>
317
+ </View>
318
+ );
319
+ })}
320
+ </View>
321
+ ) : (
322
+ <Text style={localStyles.mutedText}>No secrets yet.</Text>
323
+ )}
324
+
325
+ <View style={localStyles.addSecretBox}>
326
+ <TextInput
327
+ autoCapitalize="characters"
328
+ onChangeText={(value) => setNewSecretName(value.toUpperCase())}
329
+ placeholder="SECRET_NAME"
330
+ placeholderTextColor="#71717A"
331
+ style={localStyles.textInput}
332
+ value={newSecretName}
333
+ />
334
+ <TextInput
335
+ onChangeText={setNewSecretValue}
336
+ placeholder="Value"
337
+ placeholderTextColor="#71717A"
338
+ secureTextEntry
339
+ style={localStyles.textInput}
340
+ value={newSecretValue}
341
+ />
342
+ <Pressable
343
+ accessibilityLabel="Add secret"
344
+ accessibilityRole="button"
345
+ disabled={!onSaveSecret || pendingAction === 'save-secret' || !newSecretName.trim() || !newSecretValue.trim()}
346
+ onPress={addSecret}
347
+ style={({ pressed }) => [
348
+ localStyles.primaryButton,
349
+ (!onSaveSecret || !newSecretName.trim() || !newSecretValue.trim()) && localStyles.disabledButton,
350
+ pressed && sharedStyles.pressed,
351
+ ]}
352
+ >
353
+ {pendingAction === 'save-secret' ? (
354
+ <ActivityIndicator color="#111111" size="small" />
355
+ ) : (
356
+ <Plus color="#111111" size={16} strokeWidth={2.6} />
357
+ )}
358
+ <Text style={localStyles.primaryButtonText}>Add</Text>
359
+ </Pressable>
360
+ </View>
361
+ </SettingsSection>
362
+
363
+ <SettingsSection
364
+ icon={ShieldCheck}
365
+ subtitle="Matches the web tool permission controls."
366
+ title="Tool Permissions"
367
+ >
368
+ {TOOL_OPERATIONS.map((operation) => {
369
+ const isEnabled = permissions.auto_approved_operations.includes(operation.id);
370
+ return (
371
+ <View key={operation.id} style={localStyles.permissionRow}>
372
+ <View style={localStyles.permissionText}>
373
+ <Text style={localStyles.rowTitle}>{operation.title}</Text>
374
+ <Text style={localStyles.rowBody}>{operation.body}</Text>
375
+ </View>
376
+ <Switch
377
+ disabled={!onUpdateToolPermissions || pendingAction === 'toggle-permission'}
378
+ ios_backgroundColor="#2A2A2A"
379
+ onValueChange={(enabled) => {
380
+ const nextOps = new Set(permissions.auto_approved_operations);
381
+ if (enabled) {
382
+ nextOps.add(operation.id);
383
+ } else {
384
+ nextOps.delete(operation.id);
385
+ }
386
+ updatePermissions({
387
+ ...permissions,
388
+ auto_approved_operations: Array.from(nextOps),
389
+ });
390
+ }}
391
+ thumbColor="#F4F4F5"
392
+ trackColor={{ false: '#2A2A2A', true: '#246B43' }}
393
+ value={isEnabled}
394
+ />
395
+ </View>
396
+ );
397
+ })}
398
+ </SettingsSection>
399
+
400
+ <SettingsSection
401
+ icon={Plug}
402
+ subtitle="Per-connector guardrails injected before tool use."
403
+ title="Connector Guards"
404
+ >
405
+ {activeConnectorIds.length > 0 ? (
406
+ activeConnectorIds.map((connectorId) => {
407
+ const connector = connectedConnectors.find((item) => item.id === connectorId);
408
+ return (
409
+ <View key={connectorId} style={localStyles.connectorGuard}>
410
+ <View style={localStyles.connectorHeader}>
411
+ <View style={localStyles.connectorIcon}>
412
+ {hasConnectorBrandIcon(connectorId) ? (
413
+ <ConnectorBrandIcon connectorId={connectorId} size={22} />
414
+ ) : (
415
+ <Text style={localStyles.connectorFallback}>{connector?.iconFallbackLabel ?? connectorId.slice(0, 2).toUpperCase()}</Text>
416
+ )}
417
+ </View>
418
+ <View style={localStyles.connectorTitleWrap}>
419
+ <Text style={localStyles.rowTitle}>{connector?.name ?? connectorId}</Text>
420
+ <Text numberOfLines={1} style={localStyles.rowBody}>
421
+ {connector?.accountIdentifier || 'Connected'}
422
+ </Text>
423
+ </View>
424
+ </View>
425
+ <TextInput
426
+ multiline
427
+ onChangeText={(value) => {
428
+ setGuardDrafts((current) => ({
429
+ ...current,
430
+ [connectorId]: value.slice(0, 500),
431
+ }));
432
+ }}
433
+ placeholder="Example: ask before sending email outside my domain."
434
+ placeholderTextColor="#71717A"
435
+ style={[localStyles.textInput, localStyles.guardInput]}
436
+ value={guardDrafts[connectorId] ?? ''}
437
+ />
438
+ </View>
439
+ );
440
+ })
441
+ ) : (
442
+ <Text style={localStyles.mutedText}>Connect a tool to add connector-specific rules.</Text>
443
+ )}
444
+ {activeConnectorIds.length > 0 ? (
445
+ <Pressable
446
+ accessibilityLabel="Save connector guards"
447
+ accessibilityRole="button"
448
+ disabled={!onUpdateToolPermissions || !guardDraftsDirty || pendingAction === 'save-guards'}
449
+ onPress={() => updatePermissions({
450
+ auto_approved_operations: permissions.auto_approved_operations,
451
+ connector_guards: guardDrafts,
452
+ }, 'save-guards')}
453
+ style={({ pressed }) => [
454
+ localStyles.secondaryButton,
455
+ (!guardDraftsDirty || !onUpdateToolPermissions) && localStyles.disabledButton,
456
+ pressed && sharedStyles.pressed,
457
+ ]}
458
+ >
459
+ {pendingAction === 'save-guards' ? (
460
+ <ActivityIndicator color="#F4F4F5" size="small" />
461
+ ) : (
462
+ <Check color="#F4F4F5" size={16} strokeWidth={2.6} />
463
+ )}
464
+ <Text style={localStyles.secondaryButtonText}>Save rules</Text>
465
+ </Pressable>
466
+ ) : null}
467
+ </SettingsSection>
468
+
469
+ <SettingsSection
470
+ icon={Settings2}
471
+ subtitle="Agent-level account actions."
472
+ title="Actions"
473
+ >
474
+ <ShareMembersSummary
475
+ collaborators={collaborators}
476
+ isLoading={isLoadingCollaborators}
477
+ isSharing={pendingAction === 'share'}
478
+ onShare={onShareAgentLink ? () => runAction('share', () => onShareAgentLink({ agentId: agent.id })) : undefined}
479
+ />
480
+ <ActionRow
481
+ body="Open the clone flow for this Superagent."
482
+ icon={Copy}
483
+ isLoading={pendingAction === 'clone'}
484
+ onPress={onCloneAgent ? () => runAction('clone', () => onCloneAgent({ agentId: agent.id })) : undefined}
485
+ title="Clone agent"
486
+ />
487
+ </SettingsSection>
488
+
489
+ <SettingsSection
490
+ icon={AlertCircle}
491
+ subtitle="Permanent controls for this agent."
492
+ title="Danger Zone"
493
+ tone="danger"
494
+ >
495
+ <ActionRow
496
+ body="Permanently delete this Superagent and leave this screen."
497
+ icon={Trash2}
498
+ isLoading={pendingAction === 'delete-agent'}
499
+ onPress={onDeleteAgent ? () => runAction('delete-agent', () => onDeleteAgent({ agentId: agent.id })) : undefined}
500
+ title="Delete agent"
501
+ tone="danger"
502
+ />
503
+ </SettingsSection>
504
+ </View>
505
+ );
506
+ }
507
+
508
+ function SettingsSection({
509
+ children,
510
+ icon: Icon,
511
+ isLoading,
512
+ right,
513
+ subtitle,
514
+ title,
515
+ tone = 'default',
516
+ }: {
517
+ children: React.ReactNode;
518
+ icon: LucideIcon;
519
+ isLoading?: boolean;
520
+ right?: React.ReactNode;
521
+ subtitle: string;
522
+ title: string;
523
+ tone?: 'default' | 'danger';
524
+ }) {
525
+ const isDanger = tone === 'danger';
526
+ return (
527
+ <View style={[localStyles.sectionCard, isDanger && localStyles.dangerSectionCard]}>
528
+ <View style={localStyles.sectionHeader}>
529
+ <View style={[localStyles.sectionIcon, isDanger && localStyles.sectionIconDanger]}>
530
+ <Icon color={isDanger ? '#FCA5A5' : '#F4F4F5'} size={19} strokeWidth={2.35} />
531
+ </View>
532
+ <View style={localStyles.sectionTitleWrap}>
533
+ <Text style={localStyles.sectionTitle}>{title}</Text>
534
+ <Text style={localStyles.sectionSubtitle}>{subtitle}</Text>
535
+ </View>
536
+ {right}
537
+ </View>
538
+ {isLoading ? (
539
+ <View style={localStyles.loadingRow}>
540
+ <ActivityIndicator color="#FF5A1F" />
541
+ <Text style={localStyles.mutedText}>Loading...</Text>
542
+ </View>
543
+ ) : children}
544
+ </View>
545
+ );
546
+ }
547
+
548
+ function HeaderAction({
549
+ icon: Icon,
550
+ isLoading,
551
+ label,
552
+ onPress,
553
+ }: {
554
+ icon: LucideIcon;
555
+ isLoading?: boolean;
556
+ label: string;
557
+ onPress: () => void;
558
+ }) {
559
+ return (
560
+ <Pressable
561
+ accessibilityLabel={label}
562
+ accessibilityRole="button"
563
+ disabled={isLoading}
564
+ onPress={onPress}
565
+ style={({ pressed }) => [localStyles.headerAction, pressed && sharedStyles.pressed]}
566
+ >
567
+ {isLoading ? (
568
+ <ActivityIndicator color="#F4F4F5" size="small" />
569
+ ) : (
570
+ <Icon color="#F4F4F5" size={16} strokeWidth={2.4} />
571
+ )}
572
+ </Pressable>
573
+ );
574
+ }
575
+
576
+ function ModelPickerModal({
577
+ isVisible,
578
+ options,
579
+ selectedModelId,
580
+ onClose,
581
+ onSelect,
582
+ }: {
583
+ isVisible: boolean;
584
+ options: ModelOption[];
585
+ selectedModelId: SuperagentModelChoice;
586
+ onClose: () => void;
587
+ onSelect: (model: ModelOption) => void;
588
+ }) {
589
+ return (
590
+ <Modal animationType="fade" transparent visible={isVisible} onRequestClose={onClose}>
591
+ <Pressable accessibilityRole="button" onPress={onClose} style={localStyles.modelModalBackdrop}>
592
+ <Pressable accessibilityRole="none" onPress={() => undefined} style={localStyles.modelModalCard}>
593
+ <View style={localStyles.modelModalHeader}>
594
+ <Text style={localStyles.modelModalTitle}>Select model</Text>
595
+ <Pressable accessibilityRole="button" onPress={onClose} style={({ pressed }) => [localStyles.modelModalClose, pressed && sharedStyles.pressed]}>
596
+ <Text style={localStyles.modelModalCloseText}>Done</Text>
597
+ </Pressable>
598
+ </View>
599
+ <ScrollView style={localStyles.modelModalList}>
600
+ {options.map((model) => {
601
+ const isSelected = selectedModelId === model.id;
602
+ return (
603
+ <Pressable
604
+ accessibilityRole="button"
605
+ key={model.id}
606
+ onPress={() => onSelect(model)}
607
+ style={({ pressed }) => [
608
+ localStyles.modelModalOption,
609
+ isSelected && localStyles.modelModalOptionActive,
610
+ pressed && sharedStyles.pressed,
611
+ ]}
612
+ >
613
+ <View style={localStyles.modelModalOptionText}>
614
+ <Text style={localStyles.modelModalOptionLabel}>{model.label}</Text>
615
+ <Text numberOfLines={2} style={localStyles.modelDescription}>{model.description}</Text>
616
+ </View>
617
+ {isSelected ? <Check color="#34D399" size={18} strokeWidth={2.7} /> : null}
618
+ </Pressable>
619
+ );
620
+ })}
621
+ </ScrollView>
622
+ </Pressable>
623
+ </Pressable>
624
+ </Modal>
625
+ );
626
+ }
627
+
628
+ function ActionRow({
629
+ body,
630
+ icon: Icon,
631
+ isLoading,
632
+ onPress,
633
+ title,
634
+ tone = 'default',
635
+ }: {
636
+ body: string;
637
+ icon: LucideIcon;
638
+ isLoading?: boolean;
639
+ onPress?: () => void;
640
+ title: string;
641
+ tone?: 'default' | 'danger';
642
+ }) {
643
+ const isDanger = tone === 'danger';
644
+ return (
645
+ <Pressable
646
+ accessibilityRole="button"
647
+ disabled={!onPress || isLoading}
648
+ onPress={onPress}
649
+ style={({ pressed }) => [
650
+ localStyles.actionRow,
651
+ isDanger && localStyles.actionRowDanger,
652
+ !onPress && localStyles.disabledButton,
653
+ pressed && sharedStyles.pressed,
654
+ ]}
655
+ >
656
+ <View style={[localStyles.actionIcon, isDanger && localStyles.actionIconDanger]}>
657
+ {isLoading ? (
658
+ <ActivityIndicator color={isDanger ? '#FCA5A5' : '#F4F4F5'} size="small" />
659
+ ) : (
660
+ <Icon color={isDanger ? '#FCA5A5' : '#F4F4F5'} size={18} strokeWidth={2.35} />
661
+ )}
662
+ </View>
663
+ <View style={localStyles.actionText}>
664
+ <Text style={[localStyles.rowTitle, isDanger && localStyles.dangerText]}>{title}</Text>
665
+ <Text style={localStyles.rowBody}>{body}</Text>
666
+ </View>
667
+ </Pressable>
668
+ );
669
+ }
670
+
671
+ function ShareMembersSummary({
672
+ collaborators,
673
+ isLoading,
674
+ isSharing,
675
+ onShare,
676
+ }: {
677
+ collaborators?: SuperagentHomeScreenProps['collaborators'];
678
+ isLoading?: boolean;
679
+ isSharing?: boolean;
680
+ onShare?: () => void;
681
+ }) {
682
+ const memberCount = collaborators?.length ?? 0;
683
+ const pendingCount = collaborators?.filter((collaborator) => collaborator.is_pending).length ?? 0;
684
+ const body = isLoading
685
+ ? 'Loading shared chat members...'
686
+ : `${memberCount} ${memberCount === 1 ? 'person has' : 'people have'} access${pendingCount ? `, ${pendingCount} pending` : ''}. Share the Superagent link.`;
687
+
688
+ return (
689
+ <Pressable
690
+ accessibilityLabel="Share Superagent link"
691
+ accessibilityRole="button"
692
+ disabled={!onShare || isLoading || isSharing}
693
+ onPress={onShare}
694
+ style={({ pressed }) => [
695
+ localStyles.actionRow,
696
+ (!onShare || isLoading || isSharing) && localStyles.disabledButton,
697
+ pressed && sharedStyles.pressed,
698
+ ]}
699
+ >
700
+ <View style={localStyles.actionIcon}>
701
+ {isLoading || isSharing ? (
702
+ <ActivityIndicator color="#F4F4F5" size="small" />
703
+ ) : (
704
+ <Share2 color="#F4F4F5" size={18} strokeWidth={2.35} />
705
+ )}
706
+ </View>
707
+ <View style={localStyles.actionText}>
708
+ <Text style={localStyles.rowTitle}>Share agent</Text>
709
+ <Text style={localStyles.rowBody}>{body}</Text>
710
+ </View>
711
+ </Pressable>
712
+ );
713
+ }
714
+
715
+ function normalizePermissions(config?: SuperagentToolPermissionConfig): Required<SuperagentToolPermissionConfig> {
716
+ return {
717
+ auto_approved_operations: config?.auto_approved_operations ?? [],
718
+ connector_guards: config?.connector_guards ?? {},
719
+ };
720
+ }
721
+
722
+ function cleanGuards(guards: Record<string, string>) {
723
+ return Object.fromEntries(
724
+ Object.entries(guards)
725
+ .map(([key, value]) => [key, value.trim()])
726
+ .filter(([, value]) => value),
727
+ );
728
+ }
729
+
730
+ function toggleSecretVisibility(current: Set<string>, name: string) {
731
+ const next = new Set(current);
732
+ if (next.has(name)) {
733
+ next.delete(name);
734
+ } else {
735
+ next.add(name);
736
+ }
737
+ return next;
738
+ }
739
+
740
+ const localStyles = StyleSheet.create({
741
+ actionIcon: {
742
+ alignItems: 'center',
743
+ backgroundColor: '#1F1F23',
744
+ borderRadius: 12,
745
+ height: 38,
746
+ justifyContent: 'center',
747
+ marginRight: 11,
748
+ width: 38,
749
+ },
750
+ actionIconDanger: {
751
+ backgroundColor: '#351516',
752
+ },
753
+ actionRow: {
754
+ alignItems: 'center',
755
+ backgroundColor: '#151515',
756
+ borderColor: '#2A2A2A',
757
+ borderRadius: 13,
758
+ borderWidth: 1,
759
+ flexDirection: 'row',
760
+ marginTop: 9,
761
+ minHeight: 62,
762
+ paddingHorizontal: 11,
763
+ paddingVertical: 10,
764
+ },
765
+ actionRowDanger: {
766
+ backgroundColor: '#1C0F10',
767
+ borderColor: '#552022',
768
+ },
769
+ actionText: {
770
+ flex: 1,
771
+ minWidth: 0,
772
+ },
773
+ addSecretBox: {
774
+ gap: 8,
775
+ marginTop: 11,
776
+ },
777
+ connectorFallback: {
778
+ color: '#F4F4F5',
779
+ fontSize: 10,
780
+ fontWeight: '900',
781
+ },
782
+ connectorGuard: {
783
+ marginTop: 10,
784
+ },
785
+ connectorHeader: {
786
+ alignItems: 'center',
787
+ flexDirection: 'row',
788
+ marginBottom: 8,
789
+ },
790
+ connectorIcon: {
791
+ alignItems: 'center',
792
+ backgroundColor: '#F4F4F5',
793
+ borderRadius: 10,
794
+ height: 34,
795
+ justifyContent: 'center',
796
+ marginRight: 10,
797
+ overflow: 'hidden',
798
+ width: 34,
799
+ },
800
+ connectorTitleWrap: {
801
+ flex: 1,
802
+ minWidth: 0,
803
+ },
804
+ dangerSectionCard: {
805
+ borderColor: '#552022',
806
+ },
807
+ dangerText: {
808
+ color: '#FCA5A5',
809
+ },
810
+ disabledButton: {
811
+ opacity: 0.55,
812
+ },
813
+ guardInput: {
814
+ minHeight: 74,
815
+ paddingTop: 10,
816
+ textAlignVertical: 'top',
817
+ },
818
+ headerAction: {
819
+ alignItems: 'center',
820
+ backgroundColor: '#1F1F23',
821
+ borderColor: '#2A2A2A',
822
+ borderRadius: 11,
823
+ borderWidth: 1,
824
+ height: 34,
825
+ justifyContent: 'center',
826
+ marginLeft: 10,
827
+ width: 34,
828
+ },
829
+ iconButton: {
830
+ alignItems: 'center',
831
+ backgroundColor: '#242427',
832
+ borderRadius: 10,
833
+ height: 34,
834
+ justifyContent: 'center',
835
+ marginLeft: 7,
836
+ width: 34,
837
+ },
838
+ iconButtonDanger: {
839
+ alignItems: 'center',
840
+ backgroundColor: '#351516',
841
+ borderRadius: 10,
842
+ height: 34,
843
+ justifyContent: 'center',
844
+ marginLeft: 7,
845
+ width: 34,
846
+ },
847
+ loadingRow: {
848
+ alignItems: 'center',
849
+ flexDirection: 'row',
850
+ gap: 9,
851
+ paddingVertical: 12,
852
+ },
853
+ modelDescription: {
854
+ color: '#A1A1AA',
855
+ fontSize: 11,
856
+ fontWeight: '700',
857
+ lineHeight: 15,
858
+ marginTop: 4,
859
+ },
860
+ modelDropdown: {
861
+ alignItems: 'center',
862
+ backgroundColor: '#151515',
863
+ borderColor: '#2A2A2A',
864
+ borderRadius: 13,
865
+ borderWidth: 1,
866
+ flexDirection: 'row',
867
+ minHeight: 54,
868
+ paddingLeft: 14,
869
+ paddingRight: 9,
870
+ paddingVertical: 9,
871
+ },
872
+ modelDropdownIcon: {
873
+ alignItems: 'center',
874
+ backgroundColor: '#242427',
875
+ borderRadius: 11,
876
+ height: 34,
877
+ justifyContent: 'center',
878
+ marginLeft: 10,
879
+ width: 34,
880
+ },
881
+ modelDropdownLabel: {
882
+ color: '#A1A1AA',
883
+ flexShrink: 0,
884
+ fontSize: 13,
885
+ fontWeight: '900',
886
+ marginRight: 12,
887
+ },
888
+ modelDropdownValue: {
889
+ color: '#F4F4F5',
890
+ flex: 1,
891
+ fontSize: 16,
892
+ fontWeight: '900',
893
+ minWidth: 0,
894
+ textAlign: 'right',
895
+ },
896
+ modelModalBackdrop: {
897
+ backgroundColor: 'rgba(0, 0, 0, 0.58)',
898
+ flex: 1,
899
+ justifyContent: 'flex-end',
900
+ padding: 12,
901
+ },
902
+ modelModalCard: {
903
+ backgroundColor: '#101012',
904
+ borderColor: '#2A2A2A',
905
+ borderRadius: 22,
906
+ borderWidth: 1,
907
+ maxHeight: '74%',
908
+ overflow: 'hidden',
909
+ },
910
+ modelModalClose: {
911
+ backgroundColor: '#242427',
912
+ borderRadius: 12,
913
+ paddingHorizontal: 12,
914
+ paddingVertical: 7,
915
+ },
916
+ modelModalCloseText: {
917
+ color: '#F4F4F5',
918
+ fontSize: 12,
919
+ fontWeight: '900',
920
+ },
921
+ modelModalHeader: {
922
+ alignItems: 'center',
923
+ borderBottomColor: '#242427',
924
+ borderBottomWidth: 1,
925
+ flexDirection: 'row',
926
+ justifyContent: 'space-between',
927
+ paddingHorizontal: 14,
928
+ paddingVertical: 12,
929
+ },
930
+ modelModalList: {
931
+ maxHeight: 430,
932
+ },
933
+ modelModalOption: {
934
+ alignItems: 'center',
935
+ borderBottomColor: '#1F1F23',
936
+ borderBottomWidth: 1,
937
+ flexDirection: 'row',
938
+ minHeight: 64,
939
+ paddingHorizontal: 14,
940
+ paddingVertical: 10,
941
+ },
942
+ modelModalOptionActive: {
943
+ backgroundColor: '#13231D',
944
+ },
945
+ modelModalOptionLabel: {
946
+ color: '#F4F4F5',
947
+ fontSize: 14,
948
+ fontWeight: '900',
949
+ },
950
+ modelModalOptionText: {
951
+ flex: 1,
952
+ minWidth: 0,
953
+ paddingRight: 12,
954
+ },
955
+ modelModalTitle: {
956
+ color: '#F4F4F5',
957
+ fontSize: 16,
958
+ fontWeight: '900',
959
+ },
960
+ mutedText: {
961
+ color: '#A1A1AA',
962
+ fontSize: 12,
963
+ fontWeight: '700',
964
+ lineHeight: 17,
965
+ },
966
+ permissionRow: {
967
+ alignItems: 'center',
968
+ backgroundColor: '#151515',
969
+ borderColor: '#2A2A2A',
970
+ borderRadius: 13,
971
+ borderWidth: 1,
972
+ flexDirection: 'row',
973
+ marginBottom: 9,
974
+ minHeight: 70,
975
+ paddingHorizontal: 12,
976
+ paddingVertical: 10,
977
+ },
978
+ permissionText: {
979
+ flex: 1,
980
+ marginRight: 10,
981
+ minWidth: 0,
982
+ },
983
+ primaryButton: {
984
+ alignItems: 'center',
985
+ alignSelf: 'flex-start',
986
+ backgroundColor: '#F4F4F5',
987
+ borderRadius: 12,
988
+ flexDirection: 'row',
989
+ minHeight: 38,
990
+ paddingHorizontal: 12,
991
+ },
992
+ primaryButtonText: {
993
+ color: '#111111',
994
+ fontSize: 13,
995
+ fontWeight: '900',
996
+ marginLeft: 6,
997
+ },
998
+ rowBody: {
999
+ color: '#A1A1AA',
1000
+ fontSize: 12,
1001
+ fontWeight: '700',
1002
+ lineHeight: 17,
1003
+ marginTop: 3,
1004
+ },
1005
+ rowTitle: {
1006
+ color: '#F4F4F5',
1007
+ fontSize: 14,
1008
+ fontWeight: '900',
1009
+ },
1010
+ secondaryButton: {
1011
+ alignItems: 'center',
1012
+ alignSelf: 'flex-start',
1013
+ backgroundColor: '#242427',
1014
+ borderColor: '#353539',
1015
+ borderRadius: 12,
1016
+ borderWidth: 1,
1017
+ flexDirection: 'row',
1018
+ marginTop: 11,
1019
+ minHeight: 38,
1020
+ paddingHorizontal: 12,
1021
+ },
1022
+ secondaryButtonText: {
1023
+ color: '#F4F4F5',
1024
+ fontSize: 13,
1025
+ fontWeight: '900',
1026
+ marginLeft: 6,
1027
+ },
1028
+ secretList: {
1029
+ gap: 8,
1030
+ },
1031
+ secretName: {
1032
+ color: '#F4F4F5',
1033
+ fontFamily: 'Courier',
1034
+ fontSize: 12,
1035
+ fontWeight: '900',
1036
+ },
1037
+ secretRow: {
1038
+ alignItems: 'center',
1039
+ backgroundColor: '#151515',
1040
+ borderColor: '#2A2A2A',
1041
+ borderRadius: 13,
1042
+ borderWidth: 1,
1043
+ flexDirection: 'row',
1044
+ minHeight: 58,
1045
+ paddingHorizontal: 11,
1046
+ paddingVertical: 9,
1047
+ },
1048
+ secretText: {
1049
+ flex: 1,
1050
+ minWidth: 0,
1051
+ },
1052
+ secretValue: {
1053
+ color: '#A1A1AA',
1054
+ fontSize: 12,
1055
+ fontWeight: '700',
1056
+ marginTop: 3,
1057
+ },
1058
+ summaryRow: {
1059
+ alignItems: 'center',
1060
+ backgroundColor: '#151515',
1061
+ borderColor: '#2A2A2A',
1062
+ borderRadius: 14,
1063
+ borderWidth: 1,
1064
+ flexDirection: 'row',
1065
+ marginBottom: 8,
1066
+ minHeight: 64,
1067
+ paddingHorizontal: 12,
1068
+ paddingVertical: 10,
1069
+ },
1070
+ sectionCard: {
1071
+ backgroundColor: '#0B0B0C',
1072
+ borderColor: '#242427',
1073
+ borderRadius: 18,
1074
+ borderWidth: 1,
1075
+ marginBottom: 14,
1076
+ padding: 12,
1077
+ },
1078
+ sectionHeader: {
1079
+ alignItems: 'center',
1080
+ flexDirection: 'row',
1081
+ marginBottom: 12,
1082
+ },
1083
+ sectionIcon: {
1084
+ alignItems: 'center',
1085
+ backgroundColor: '#1F1F23',
1086
+ borderRadius: 13,
1087
+ height: 40,
1088
+ justifyContent: 'center',
1089
+ marginRight: 11,
1090
+ width: 40,
1091
+ },
1092
+ sectionIconDanger: {
1093
+ backgroundColor: '#351516',
1094
+ },
1095
+ sectionSubtitle: {
1096
+ color: '#8E8E93',
1097
+ fontSize: 12,
1098
+ fontWeight: '700',
1099
+ lineHeight: 16,
1100
+ marginTop: 2,
1101
+ },
1102
+ sectionTitle: {
1103
+ color: '#F4F4F5',
1104
+ fontSize: 16,
1105
+ fontWeight: '900',
1106
+ },
1107
+ sectionTitleWrap: {
1108
+ flex: 1,
1109
+ minWidth: 0,
1110
+ },
1111
+ textInput: {
1112
+ backgroundColor: '#151515',
1113
+ borderColor: '#2A2A2A',
1114
+ borderRadius: 12,
1115
+ borderWidth: 1,
1116
+ color: '#F4F4F5',
1117
+ fontSize: 13,
1118
+ fontWeight: '700',
1119
+ minHeight: 42,
1120
+ paddingHorizontal: 11,
1121
+ },
1122
+ });