@xenosystem/agent-interface-ui 0.1.3

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 (384) hide show
  1. package/LICENSE +67 -0
  2. package/dist/adapters/agentHostPlatformBridge.d.ts +24 -0
  3. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -0
  4. package/dist/adapters/agentHostPlatformBridge.js +1244 -0
  5. package/dist/adapters/agentHostPlatformBridge.js.map +1 -0
  6. package/dist/adapters/hubAgentPlatformBridge.d.ts +17 -0
  7. package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -0
  8. package/dist/adapters/hubAgentPlatformBridge.js +109 -0
  9. package/dist/adapters/hubAgentPlatformBridge.js.map +1 -0
  10. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +14 -0
  11. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -0
  12. package/dist/adapters/xenoAgentCompatibilityBridge.js +237 -0
  13. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -0
  14. package/dist/adapters/xenoAgentHostCatalog.d.ts +40 -0
  15. package/dist/adapters/xenoAgentHostCatalog.d.ts.map +1 -0
  16. package/dist/adapters/xenoAgentHostCatalog.js +228 -0
  17. package/dist/adapters/xenoAgentHostCatalog.js.map +1 -0
  18. package/dist/components/agent/AIStatusIndicator.d.ts +25 -0
  19. package/dist/components/agent/AIStatusIndicator.d.ts.map +1 -0
  20. package/dist/components/agent/AIStatusIndicator.js +85 -0
  21. package/dist/components/agent/AIStatusIndicator.js.map +1 -0
  22. package/dist/components/agent/AgentInterface.d.ts +21 -0
  23. package/dist/components/agent/AgentInterface.d.ts.map +1 -0
  24. package/dist/components/agent/AgentInterface.js +7586 -0
  25. package/dist/components/agent/AgentInterface.js.map +1 -0
  26. package/dist/components/agent/AgentOnboarding.d.ts +16 -0
  27. package/dist/components/agent/AgentOnboarding.d.ts.map +1 -0
  28. package/dist/components/agent/AgentOnboarding.js +423 -0
  29. package/dist/components/agent/AgentOnboarding.js.map +1 -0
  30. package/dist/components/agent/AgentPtyTerminalPanel.d.ts +13 -0
  31. package/dist/components/agent/AgentPtyTerminalPanel.d.ts.map +1 -0
  32. package/dist/components/agent/AgentPtyTerminalPanel.js +129 -0
  33. package/dist/components/agent/AgentPtyTerminalPanel.js.map +1 -0
  34. package/dist/components/agent/AgentView.d.ts +143 -0
  35. package/dist/components/agent/AgentView.d.ts.map +1 -0
  36. package/dist/components/agent/AgentView.js +7250 -0
  37. package/dist/components/agent/AgentView.js.map +1 -0
  38. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts +15 -0
  39. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts.map +1 -0
  40. package/dist/components/agent/AgentWorkbenchCliPanel.js +275 -0
  41. package/dist/components/agent/AgentWorkbenchCliPanel.js.map +1 -0
  42. package/dist/components/agent/AgentWorkbenchPanel.d.ts +791 -0
  43. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -0
  44. package/dist/components/agent/AgentWorkbenchPanel.js +584 -0
  45. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -0
  46. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +11 -0
  47. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -0
  48. package/dist/components/agent/AgentWorkspaceBrowserPanel.js +198 -0
  49. package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -0
  50. package/dist/components/agent/AssistantTurnStatusNotice.d.ts +16 -0
  51. package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +1 -0
  52. package/dist/components/agent/AssistantTurnStatusNotice.js +54 -0
  53. package/dist/components/agent/AssistantTurnStatusNotice.js.map +1 -0
  54. package/dist/components/agent/CommandToolCard.d.ts +11 -0
  55. package/dist/components/agent/CommandToolCard.d.ts.map +1 -0
  56. package/dist/components/agent/CommandToolCard.js +29 -0
  57. package/dist/components/agent/CommandToolCard.js.map +1 -0
  58. package/dist/components/agent/FleetPanel.d.ts +28 -0
  59. package/dist/components/agent/FleetPanel.d.ts.map +1 -0
  60. package/dist/components/agent/FleetPanel.js +175 -0
  61. package/dist/components/agent/FleetPanel.js.map +1 -0
  62. package/dist/components/agent/GhostTextArea.d.ts +13 -0
  63. package/dist/components/agent/GhostTextArea.d.ts.map +1 -0
  64. package/dist/components/agent/GhostTextArea.js +21 -0
  65. package/dist/components/agent/GhostTextArea.js.map +1 -0
  66. package/dist/components/agent/IntakePanel.d.ts +29 -0
  67. package/dist/components/agent/IntakePanel.d.ts.map +1 -0
  68. package/dist/components/agent/IntakePanel.js +81 -0
  69. package/dist/components/agent/IntakePanel.js.map +1 -0
  70. package/dist/components/agent/KnowledgePanel.d.ts +25 -0
  71. package/dist/components/agent/KnowledgePanel.d.ts.map +1 -0
  72. package/dist/components/agent/KnowledgePanel.js +99 -0
  73. package/dist/components/agent/KnowledgePanel.js.map +1 -0
  74. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts +9 -0
  75. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -0
  76. package/dist/components/agent/MonacoDiffWorkbenchEditor.js +204 -0
  77. package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -0
  78. package/dist/components/agent/MonacoWorkbenchEditor.d.ts +15 -0
  79. package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -0
  80. package/dist/components/agent/MonacoWorkbenchEditor.js +380 -0
  81. package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -0
  82. package/dist/components/agent/PermissionDialog.d.ts +34 -0
  83. package/dist/components/agent/PermissionDialog.d.ts.map +1 -0
  84. package/dist/components/agent/PermissionDialog.js +67 -0
  85. package/dist/components/agent/PermissionDialog.js.map +1 -0
  86. package/dist/components/agent/PluginManager.d.ts +20 -0
  87. package/dist/components/agent/PluginManager.d.ts.map +1 -0
  88. package/dist/components/agent/PluginManager.js +506 -0
  89. package/dist/components/agent/PluginManager.js.map +1 -0
  90. package/dist/components/agent/RunReviewPanel.d.ts +52 -0
  91. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -0
  92. package/dist/components/agent/RunReviewPanel.js +236 -0
  93. package/dist/components/agent/RunReviewPanel.js.map +1 -0
  94. package/dist/components/agent/SessionsPanel.d.ts +30 -0
  95. package/dist/components/agent/SessionsPanel.d.ts.map +1 -0
  96. package/dist/components/agent/SessionsPanel.js +247 -0
  97. package/dist/components/agent/SessionsPanel.js.map +1 -0
  98. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +19 -0
  99. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -0
  100. package/dist/components/agent/acp/AcpAgentConfigForm.js +85 -0
  101. package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -0
  102. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts +10 -0
  103. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts.map +1 -0
  104. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +80 -0
  105. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -0
  106. package/dist/components/agent/acp/AcpAgentManager.d.ts +3 -0
  107. package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -0
  108. package/dist/components/agent/acp/AcpAgentManager.js +152 -0
  109. package/dist/components/agent/acp/AcpAgentManager.js.map +1 -0
  110. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts +9 -0
  111. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts.map +1 -0
  112. package/dist/components/agent/acp/AcpAgentTestResultPanel.js +24 -0
  113. package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -0
  114. package/dist/components/agent/acp/AcpApprovalPanel.d.ts +29 -0
  115. package/dist/components/agent/acp/AcpApprovalPanel.d.ts.map +1 -0
  116. package/dist/components/agent/acp/AcpApprovalPanel.js +37 -0
  117. package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -0
  118. package/dist/components/agent/acp/AcpCertificationPanel.d.ts +10 -0
  119. package/dist/components/agent/acp/AcpCertificationPanel.d.ts.map +1 -0
  120. package/dist/components/agent/acp/AcpCertificationPanel.js +41 -0
  121. package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -0
  122. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts +11 -0
  123. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts.map +1 -0
  124. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +32 -0
  125. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -0
  126. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts +7 -0
  127. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts.map +1 -0
  128. package/dist/components/agent/acp/AcpProviderManagerPanel.js +69 -0
  129. package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -0
  130. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts +7 -0
  131. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts.map +1 -0
  132. package/dist/components/agent/acp/AcpProviderModelsPanel.js +108 -0
  133. package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -0
  134. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts +8 -0
  135. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts.map +1 -0
  136. package/dist/components/agent/acp/AcpSupportBundlePanel.js +56 -0
  137. package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -0
  138. package/dist/components/agent/compactionSummary.d.ts +28 -0
  139. package/dist/components/agent/compactionSummary.d.ts.map +1 -0
  140. package/dist/components/agent/compactionSummary.js +41 -0
  141. package/dist/components/agent/compactionSummary.js.map +1 -0
  142. package/dist/components/agent/monacoWorkbenchShared.d.ts +13 -0
  143. package/dist/components/agent/monacoWorkbenchShared.d.ts.map +1 -0
  144. package/dist/components/agent/monacoWorkbenchShared.js +226 -0
  145. package/dist/components/agent/monacoWorkbenchShared.js.map +1 -0
  146. package/dist/components/agent/settings/EntitySettingsLayout.d.ts +61 -0
  147. package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -0
  148. package/dist/components/agent/settings/EntitySettingsLayout.js +72 -0
  149. package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -0
  150. package/dist/components/agent/settings/SettingsNavigation.d.ts +8 -0
  151. package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -0
  152. package/dist/components/agent/settings/SettingsNavigation.js +39 -0
  153. package/dist/components/agent/settings/SettingsNavigation.js.map +1 -0
  154. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts +3 -0
  155. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -0
  156. package/dist/components/agent/settings/sections/AccessMembersSection.js +31 -0
  157. package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -0
  158. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts +25 -0
  159. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -0
  160. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +56 -0
  161. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -0
  162. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts +3 -0
  163. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -0
  164. package/dist/components/agent/settings/sections/DangerZoneSection.js +19 -0
  165. package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -0
  166. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts +3 -0
  167. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -0
  168. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +66 -0
  169. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -0
  170. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts +3 -0
  171. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -0
  172. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +87 -0
  173. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -0
  174. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -0
  175. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -0
  176. package/dist/components/agent/settings/sections/ExportBackupSection.js +23 -0
  177. package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -0
  178. package/dist/components/agent/settings/sections/GeneralSection.d.ts +3 -0
  179. package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -0
  180. package/dist/components/agent/settings/sections/GeneralSection.js +15 -0
  181. package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -0
  182. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts +3 -0
  183. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -0
  184. package/dist/components/agent/settings/sections/IntegrationsSection.js +40 -0
  185. package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -0
  186. package/dist/components/agent/settings/sections/NotificationsSection.d.ts +3 -0
  187. package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -0
  188. package/dist/components/agent/settings/sections/NotificationsSection.js +28 -0
  189. package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -0
  190. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts +3 -0
  191. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -0
  192. package/dist/components/agent/settings/sections/ResourceLimitsSection.js +17 -0
  193. package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -0
  194. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts +3 -0
  195. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -0
  196. package/dist/components/agent/settings/sections/SecurityComplianceSection.js +28 -0
  197. package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -0
  198. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts +3 -0
  199. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -0
  200. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +17 -0
  201. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -0
  202. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts +54 -0
  203. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -0
  204. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +333 -0
  205. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -0
  206. package/dist/components/agent/settings/shared/CheckboxField.d.ts +13 -0
  207. package/dist/components/agent/settings/shared/CheckboxField.d.ts.map +1 -0
  208. package/dist/components/agent/settings/shared/CheckboxField.js +8 -0
  209. package/dist/components/agent/settings/shared/CheckboxField.js.map +1 -0
  210. package/dist/components/agent/settings/shared/InputField.d.ts +15 -0
  211. package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -0
  212. package/dist/components/agent/settings/shared/InputField.js +7 -0
  213. package/dist/components/agent/settings/shared/InputField.js.map +1 -0
  214. package/dist/components/agent/settings/shared/MembersTable.d.ts +11 -0
  215. package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -0
  216. package/dist/components/agent/settings/shared/MembersTable.js +7 -0
  217. package/dist/components/agent/settings/shared/MembersTable.js.map +1 -0
  218. package/dist/components/agent/settings/shared/SettingRow.d.ts +11 -0
  219. package/dist/components/agent/settings/shared/SettingRow.d.ts.map +1 -0
  220. package/dist/components/agent/settings/shared/SettingRow.js +6 -0
  221. package/dist/components/agent/settings/shared/SettingRow.js.map +1 -0
  222. package/dist/components/agent/settings/shared/SettingsCard.d.ts +11 -0
  223. package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -0
  224. package/dist/components/agent/settings/shared/SettingsCard.js +8 -0
  225. package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -0
  226. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts +8 -0
  227. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -0
  228. package/dist/components/agent/settings/shared/ToggleSwitch.js +6 -0
  229. package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -0
  230. package/dist/components/agent/settings/shared/UsageChart.d.ts +12 -0
  231. package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -0
  232. package/dist/components/agent/settings/shared/UsageChart.js +16 -0
  233. package/dist/components/agent/settings/shared/UsageChart.js.map +1 -0
  234. package/dist/components/agent/toolCardDisplay.d.ts +24 -0
  235. package/dist/components/agent/toolCardDisplay.d.ts.map +1 -0
  236. package/dist/components/agent/toolCardDisplay.js +85 -0
  237. package/dist/components/agent/toolCardDisplay.js.map +1 -0
  238. package/dist/components/product/XenoAgentProductHeader.d.ts +18 -0
  239. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -0
  240. package/dist/components/product/XenoAgentProductHeader.js +25 -0
  241. package/dist/components/product/XenoAgentProductHeader.js.map +1 -0
  242. package/dist/components/product/XenoAgentSessionTabs.d.ts +18 -0
  243. package/dist/components/product/XenoAgentSessionTabs.d.ts.map +1 -0
  244. package/dist/components/product/XenoAgentSessionTabs.js +103 -0
  245. package/dist/components/product/XenoAgentSessionTabs.js.map +1 -0
  246. package/dist/components/ui/CodeBlock.d.ts +8 -0
  247. package/dist/components/ui/CodeBlock.d.ts.map +1 -0
  248. package/dist/components/ui/CodeBlock.js +89 -0
  249. package/dist/components/ui/CodeBlock.js.map +1 -0
  250. package/dist/components/ui/XenoLogo.d.ts +11 -0
  251. package/dist/components/ui/XenoLogo.d.ts.map +1 -0
  252. package/dist/components/ui/XenoLogo.js +9 -0
  253. package/dist/components/ui/XenoLogo.js.map +1 -0
  254. package/dist/index.d.ts +50 -0
  255. package/dist/index.d.ts.map +1 -0
  256. package/dist/index.js +127 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/platformApiTypes.d.ts +3992 -0
  259. package/dist/platformApiTypes.d.ts.map +1 -0
  260. package/dist/platformApiTypes.js +2 -0
  261. package/dist/platformApiTypes.js.map +1 -0
  262. package/dist/platformBridge.d.ts +9 -0
  263. package/dist/platformBridge.d.ts.map +1 -0
  264. package/dist/platformBridge.js +19 -0
  265. package/dist/platformBridge.js.map +1 -0
  266. package/dist/providerSelector.d.ts +28 -0
  267. package/dist/providerSelector.d.ts.map +1 -0
  268. package/dist/providerSelector.js +104 -0
  269. package/dist/providerSelector.js.map +1 -0
  270. package/dist/services/connectionMode.d.ts +13 -0
  271. package/dist/services/connectionMode.d.ts.map +1 -0
  272. package/dist/services/connectionMode.js +31 -0
  273. package/dist/services/connectionMode.js.map +1 -0
  274. package/dist/sessionTabs.d.ts +48 -0
  275. package/dist/sessionTabs.d.ts.map +1 -0
  276. package/dist/sessionTabs.js +106 -0
  277. package/dist/sessionTabs.js.map +1 -0
  278. package/dist/stores/acpAgentStore.d.ts +264 -0
  279. package/dist/stores/acpAgentStore.d.ts.map +1 -0
  280. package/dist/stores/acpAgentStore.js +825 -0
  281. package/dist/stores/acpAgentStore.js.map +1 -0
  282. package/dist/stores/agentChatStore.d.ts +529 -0
  283. package/dist/stores/agentChatStore.d.ts.map +1 -0
  284. package/dist/stores/agentChatStore.js +5309 -0
  285. package/dist/stores/agentChatStore.js.map +1 -0
  286. package/dist/stores/agentIdeStore.d.ts +9 -0
  287. package/dist/stores/agentIdeStore.d.ts.map +1 -0
  288. package/dist/stores/agentIdeStore.js +8 -0
  289. package/dist/stores/agentIdeStore.js.map +1 -0
  290. package/dist/stores/agentSearchStore.d.ts +174 -0
  291. package/dist/stores/agentSearchStore.d.ts.map +1 -0
  292. package/dist/stores/agentSearchStore.js +305 -0
  293. package/dist/stores/agentSearchStore.js.map +1 -0
  294. package/dist/stores/authStore.d.ts +26 -0
  295. package/dist/stores/authStore.d.ts.map +1 -0
  296. package/dist/stores/authStore.js +163 -0
  297. package/dist/stores/authStore.js.map +1 -0
  298. package/dist/stores/entitySettingsStore.d.ts +236 -0
  299. package/dist/stores/entitySettingsStore.d.ts.map +1 -0
  300. package/dist/stores/entitySettingsStore.js +916 -0
  301. package/dist/stores/entitySettingsStore.js.map +1 -0
  302. package/dist/stores/permissionStore.d.ts +25 -0
  303. package/dist/stores/permissionStore.d.ts.map +1 -0
  304. package/dist/stores/permissionStore.js +58 -0
  305. package/dist/stores/permissionStore.js.map +1 -0
  306. package/dist/stores/suggestionStore.d.ts +29 -0
  307. package/dist/stores/suggestionStore.d.ts.map +1 -0
  308. package/dist/stores/suggestionStore.js +160 -0
  309. package/dist/stores/suggestionStore.js.map +1 -0
  310. package/dist/stores/tabStore.d.ts +30 -0
  311. package/dist/stores/tabStore.d.ts.map +1 -0
  312. package/dist/stores/tabStore.js +252 -0
  313. package/dist/stores/tabStore.js.map +1 -0
  314. package/dist/stores/themeStore.d.ts +13 -0
  315. package/dist/stores/themeStore.d.ts.map +1 -0
  316. package/dist/stores/themeStore.js +77 -0
  317. package/dist/stores/themeStore.js.map +1 -0
  318. package/dist/stores/workspaceStore.d.ts +175 -0
  319. package/dist/stores/workspaceStore.d.ts.map +1 -0
  320. package/dist/stores/workspaceStore.js +694 -0
  321. package/dist/stores/workspaceStore.js.map +1 -0
  322. package/dist/stores/xenoChatStore.d.ts +88 -0
  323. package/dist/stores/xenoChatStore.d.ts.map +1 -0
  324. package/dist/stores/xenoChatStore.js +572 -0
  325. package/dist/stores/xenoChatStore.js.map +1 -0
  326. package/dist/toolCardProjection.d.ts +33 -0
  327. package/dist/toolCardProjection.d.ts.map +1 -0
  328. package/dist/toolCardProjection.js +62 -0
  329. package/dist/toolCardProjection.js.map +1 -0
  330. package/dist/types/agentEditor.d.ts +39 -0
  331. package/dist/types/agentEditor.d.ts.map +1 -0
  332. package/dist/types/agentEditor.js +2 -0
  333. package/dist/types/agentEditor.js.map +1 -0
  334. package/dist/types/agentRuntimeProvider.d.ts +2 -0
  335. package/dist/types/agentRuntimeProvider.d.ts.map +1 -0
  336. package/dist/types/agentRuntimeProvider.js +2 -0
  337. package/dist/types/agentRuntimeProvider.js.map +1 -0
  338. package/dist/utils/acpExecutionAuthority.d.ts +18 -0
  339. package/dist/utils/acpExecutionAuthority.d.ts.map +1 -0
  340. package/dist/utils/acpExecutionAuthority.js +22 -0
  341. package/dist/utils/acpExecutionAuthority.js.map +1 -0
  342. package/dist/utils/agentAttachedContextPrompt.d.ts +2 -0
  343. package/dist/utils/agentAttachedContextPrompt.d.ts.map +1 -0
  344. package/dist/utils/agentAttachedContextPrompt.js +2 -0
  345. package/dist/utils/agentAttachedContextPrompt.js.map +1 -0
  346. package/dist/utils/agentModelContext.d.ts +2 -0
  347. package/dist/utils/agentModelContext.d.ts.map +1 -0
  348. package/dist/utils/agentModelContext.js +2 -0
  349. package/dist/utils/agentModelContext.js.map +1 -0
  350. package/dist/utils/agentReasoningEffort.d.ts +3 -0
  351. package/dist/utils/agentReasoningEffort.d.ts.map +1 -0
  352. package/dist/utils/agentReasoningEffort.js +2 -0
  353. package/dist/utils/agentReasoningEffort.js.map +1 -0
  354. package/dist/utils/agentRuntimeProvider.d.ts +3 -0
  355. package/dist/utils/agentRuntimeProvider.d.ts.map +1 -0
  356. package/dist/utils/agentRuntimeProvider.js +2 -0
  357. package/dist/utils/agentRuntimeProvider.js.map +1 -0
  358. package/dist/utils/cloudModels.d.ts +3 -0
  359. package/dist/utils/cloudModels.d.ts.map +1 -0
  360. package/dist/utils/cloudModels.js +181 -0
  361. package/dist/utils/cloudModels.js.map +1 -0
  362. package/dist/utils/conversationRuntime.d.ts +3 -0
  363. package/dist/utils/conversationRuntime.d.ts.map +1 -0
  364. package/dist/utils/conversationRuntime.js +2 -0
  365. package/dist/utils/conversationRuntime.js.map +1 -0
  366. package/dist/utils/fileCreateIntent.d.ts +16 -0
  367. package/dist/utils/fileCreateIntent.d.ts.map +1 -0
  368. package/dist/utils/fileCreateIntent.js +123 -0
  369. package/dist/utils/fileCreateIntent.js.map +1 -0
  370. package/dist/utils/legacyAgentRuntimeEvents.d.ts +2 -0
  371. package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +1 -0
  372. package/dist/utils/legacyAgentRuntimeEvents.js +2 -0
  373. package/dist/utils/legacyAgentRuntimeEvents.js.map +1 -0
  374. package/dist/utils/markdownWindowsPaths.d.ts +2 -0
  375. package/dist/utils/markdownWindowsPaths.d.ts.map +1 -0
  376. package/dist/utils/markdownWindowsPaths.js +2 -0
  377. package/dist/utils/markdownWindowsPaths.js.map +1 -0
  378. package/dist/utils/workspaceSelectionContinuation.d.ts +2 -0
  379. package/dist/utils/workspaceSelectionContinuation.d.ts.map +1 -0
  380. package/dist/utils/workspaceSelectionContinuation.js +2 -0
  381. package/dist/utils/workspaceSelectionContinuation.js.map +1 -0
  382. package/package.json +53 -0
  383. package/src/agent.css +1156 -0
  384. package/src/foundation.css +62 -0
@@ -0,0 +1,916 @@
1
+ import { getAgentPlatformBridge } from '../platformBridge';
2
+ import { create } from 'zustand';
3
+ import { useWorkspaceStore } from './workspaceStore';
4
+ import { useAgentChatStore } from './agentChatStore';
5
+ import { useAuthStore } from './authStore';
6
+ export const SETTINGS_SECTIONS = [
7
+ { id: 'general', label: 'General', icon: 'settings', availableFor: ['workspace', 'team', 'agent'] },
8
+ { id: 'directoryAccess', label: 'Directory Access', icon: 'folder', availableFor: ['workspace', 'team', 'agent'] },
9
+ { id: 'defaultAgentConfig', label: 'Default Agent Config', icon: 'cpu', availableFor: ['workspace', 'team'] },
10
+ { id: 'access', label: 'Access & Members', icon: 'users', availableFor: ['workspace', 'team', 'agent'] },
11
+ { id: 'resourceLimits', label: 'Resource Limits', icon: 'gauge', availableFor: ['workspace', 'team', 'agent'] },
12
+ { id: 'usage', label: 'Usage & Analytics', icon: 'barChart', availableFor: ['workspace', 'team', 'agent'] },
13
+ { id: 'integrations', label: 'Integrations', icon: 'plug', availableFor: ['workspace', 'team'] },
14
+ { id: 'environment', label: 'Environment & Secrets', icon: 'key', availableFor: ['workspace', 'team'] },
15
+ { id: 'notifications', label: 'Notifications', icon: 'bell', availableFor: ['workspace', 'team', 'agent'] },
16
+ { id: 'security', label: 'Security & Compliance', icon: 'shield', availableFor: ['workspace', 'team'] },
17
+ { id: 'exportBackup', label: 'Export & Backup', icon: 'download', availableFor: ['workspace', 'team'] },
18
+ { id: 'dangerZone', label: 'Danger Zone', icon: 'alertTriangle', availableFor: ['workspace', 'team', 'agent'] },
19
+ ];
20
+ export function getSectionsForEntity(entityType) {
21
+ return SETTINGS_SECTIONS.filter(s => s.availableFor.includes(entityType));
22
+ }
23
+ // =============================================================================
24
+ // MOCK DATA GENERATOR
25
+ // =============================================================================
26
+ function generateId() {
27
+ return `${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
28
+ }
29
+ function generateMockSettings(entityId, entityType, entityName, extra) {
30
+ const now = new Date().toISOString();
31
+ const thirtyDaysAgo = new Date(Date.now() - 30 * 86400000).toISOString();
32
+ const owner = {
33
+ id: 'user_owner_1',
34
+ name: 'You',
35
+ email: 'you@example.com',
36
+ role: 'owner',
37
+ joinedAt: thirtyDaysAgo,
38
+ };
39
+ const members = [
40
+ owner,
41
+ { id: 'user_2', name: 'Alice Chen', email: 'alice@example.com', role: 'admin', joinedAt: thirtyDaysAgo },
42
+ { id: 'user_3', name: 'Bob Smith', email: 'bob@example.com', role: 'editor', joinedAt: now },
43
+ ];
44
+ const dailyUsage = Array.from({ length: 7 }, (_, i) => ({
45
+ label: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][i],
46
+ value: Math.floor(Math.random() * 50000) + 5000,
47
+ }));
48
+ const weeklyUsage = Array.from({ length: 4 }, (_, i) => ({
49
+ label: `Week ${i + 1}`,
50
+ value: Math.floor(Math.random() * 200000) + 50000,
51
+ }));
52
+ const monthlyUsage = Array.from({ length: 6 }, (_, i) => ({
53
+ label: ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan'][i],
54
+ value: Math.floor(Math.random() * 800000) + 100000,
55
+ }));
56
+ const workspaceQuotas = [
57
+ { label: 'Teams', current: 3, limit: 10, unit: 'teams' },
58
+ { label: 'Tokens / month', current: 425000, limit: 1000000, unit: 'tokens' },
59
+ { label: 'Storage', current: 2.4, limit: 10, unit: 'GB' },
60
+ ];
61
+ const teamQuotas = [
62
+ { label: 'Agents', current: 5, limit: 20, unit: 'agents' },
63
+ { label: 'Tokens / month', current: 180000, limit: 500000, unit: 'tokens' },
64
+ ];
65
+ const agentQuotas = [
66
+ { label: 'Tokens / month', current: 42000, limit: 100000, unit: 'tokens' },
67
+ ];
68
+ const quotas = entityType === 'workspace' ? workspaceQuotas : entityType === 'team' ? teamQuotas : agentQuotas;
69
+ return {
70
+ entityId,
71
+ entityType,
72
+ entityName,
73
+ workspaceId: extra?.workspaceId,
74
+ workspaceName: extra?.workspaceName,
75
+ teamId: extra?.teamId,
76
+ teamName: extra?.teamName,
77
+ general: {
78
+ name: entityName,
79
+ description: `A ${entityType} for managing AI operations.`,
80
+ icon: entityType === 'workspace' ? 'building' : entityType === 'team' ? 'users' : 'bot',
81
+ slug: entityName.toLowerCase().replace(/\s+/g, '-'),
82
+ createdAt: thirtyDaysAgo,
83
+ updatedAt: now,
84
+ },
85
+ defaultAgentConfig: entityType !== 'agent' ? {
86
+ defaultModel: 'claude-sonnet-4-6',
87
+ systemInstructions: 'You are a helpful AI assistant.',
88
+ enabledTools: ['web-search', 'code-execution', 'file-read'],
89
+ availableTools: ['web-search', 'code-execution', 'file-read', 'file-write', 'image-generation', 'data-analysis'],
90
+ } : undefined,
91
+ access: {
92
+ owner,
93
+ members: entityType === 'agent' ? [owner] : members,
94
+ pendingInvites: entityType === 'agent' ? [] : [
95
+ { id: 'inv_1', email: 'carol@example.com', role: 'viewer', sentAt: now, expiresAt: new Date(Date.now() + 7 * 86400000).toISOString() },
96
+ ],
97
+ publicAccess: false,
98
+ allowGuestViewing: false,
99
+ },
100
+ resourceLimits: {
101
+ quotas,
102
+ rateLimitRpm: entityType === 'workspace' ? 1000 : entityType === 'team' ? 500 : 100,
103
+ rateLimitTpd: entityType === 'workspace' ? 1000000 : entityType === 'team' ? 500000 : 100000,
104
+ },
105
+ usage: {
106
+ totalTokens: 425000,
107
+ totalCost: 12.50,
108
+ totalRequests: 1842,
109
+ dailyUsage,
110
+ weeklyUsage,
111
+ monthlyUsage,
112
+ costByModel: [
113
+ { model: 'Opus 4.5', cost: 8.20, tokens: 280000 },
114
+ { model: 'GPT 5.3 Codex', cost: 3.10, tokens: 105000 },
115
+ { model: 'Flash 3.0', cost: 1.20, tokens: 40000 },
116
+ ],
117
+ topAgents: [
118
+ { name: 'Code Reviewer', tokens: 120000, cost: 3.60 },
119
+ { name: 'Research Bot', tokens: 95000, cost: 2.85 },
120
+ { name: 'Doc Writer', tokens: 72000, cost: 2.16 },
121
+ ],
122
+ },
123
+ integrations: {
124
+ integrations: [
125
+ { id: 'int_1', type: 'github', name: 'GitHub', enabled: true, connectedAt: thirtyDaysAgo, status: 'connected' },
126
+ { id: 'int_2', type: 'slack', name: 'Slack', enabled: false, connectedAt: '', status: 'disconnected' },
127
+ { id: 'int_3', type: 'discord', name: 'Discord', enabled: false, connectedAt: '', status: 'disconnected' },
128
+ { id: 'int_4', type: 'webhook', name: 'Custom Webhook', enabled: true, connectedAt: thirtyDaysAgo, status: 'connected', config: { url: 'https://api.example.com/webhook' } },
129
+ ],
130
+ apiKeys: [
131
+ { id: 'key_1', name: 'Production Key', prefix: 'xk_prod_...a3f2', createdAt: thirtyDaysAgo, lastUsed: now },
132
+ { id: 'key_2', name: 'Development Key', prefix: 'xk_dev_...b1c4', createdAt: now, lastUsed: now },
133
+ ],
134
+ webhookEndpoints: [
135
+ { id: 'wh_1', url: 'https://api.example.com/webhook', events: ['agent.started', 'agent.completed'], enabled: true, secret: 'whsec_...x9y2', createdAt: thirtyDaysAgo },
136
+ ],
137
+ },
138
+ environment: {
139
+ variables: [
140
+ { id: 'env_1', key: 'API_BASE_URL', value: 'https://api.example.com', isSecret: false, updatedAt: now },
141
+ { id: 'env_2', key: 'DATABASE_URL', value: '••••••••••••', isSecret: true, updatedAt: thirtyDaysAgo },
142
+ { id: 'env_3', key: 'OPENAI_API_KEY', value: '••••••••••••', isSecret: true, updatedAt: thirtyDaysAgo },
143
+ ],
144
+ },
145
+ notifications: {
146
+ emailEnabled: true,
147
+ slackEnabled: false,
148
+ discordEnabled: false,
149
+ webhookEnabled: true,
150
+ rules: [
151
+ { id: 'rule_1', event: 'Agent Error', channel: 'email', enabled: true, description: 'Notify when an agent encounters an error' },
152
+ { id: 'rule_2', event: 'Task Completed', channel: 'webhook', enabled: true, description: 'Webhook on task completion' },
153
+ { id: 'rule_3', event: 'Quota Warning', channel: 'email', enabled: true, description: 'Alert when approaching usage limits' },
154
+ ],
155
+ digestFrequency: 'daily',
156
+ },
157
+ security: {
158
+ auditLog: [
159
+ { id: 'log_1', action: 'member.added', actor: 'You', target: 'Alice Chen', timestamp: now, details: 'Added as admin' },
160
+ { id: 'log_2', action: 'settings.updated', actor: 'You', target: 'General Settings', timestamp: thirtyDaysAgo, details: 'Updated workspace name' },
161
+ { id: 'log_3', action: 'agent.created', actor: 'Alice Chen', target: 'Code Reviewer', timestamp: thirtyDaysAgo, details: 'Created new agent' },
162
+ { id: 'log_4', action: 'apikey.created', actor: 'You', target: 'Production Key', timestamp: thirtyDaysAgo, details: 'Created API key' },
163
+ { id: 'log_5', action: 'member.role_changed', actor: 'You', target: 'Bob Smith', timestamp: now, details: 'Changed role to editor' },
164
+ ],
165
+ ipAllowlist: [],
166
+ require2FA: false,
167
+ requireApiKeyAuth: true,
168
+ sessionTimeout: 30,
169
+ },
170
+ exportBackup: {
171
+ autoBackupEnabled: true,
172
+ backupFrequency: 'weekly',
173
+ retentionDays: 30,
174
+ availableBackups: [
175
+ { id: 'bk_1', name: 'Auto Backup', size: '2.4 MB', createdAt: now, type: 'auto' },
176
+ { id: 'bk_2', name: 'Pre-migration Backup', size: '1.8 MB', createdAt: thirtyDaysAgo, type: 'manual' },
177
+ ],
178
+ availableExports: [
179
+ { format: 'json', label: 'JSON Export' },
180
+ { format: 'csv', label: 'CSV Export' },
181
+ { format: 'yaml', label: 'YAML Export' },
182
+ ],
183
+ },
184
+ dangerZone: {
185
+ canArchive: true,
186
+ canTransferOwnership: true,
187
+ canDelete: true,
188
+ },
189
+ };
190
+ }
191
+ function normalizeBackupFrequency(value, fallback) {
192
+ return value === 'daily' || value === 'weekly' || value === 'monthly' ? value : fallback;
193
+ }
194
+ // Async load real data for IPC-backed sections (export, usage, security)
195
+ async function loadAsyncSectionData(entityId, entityType) {
196
+ const store = useEntitySettingsStore;
197
+ // Load real backup data
198
+ try {
199
+ const [backupList, backupSettings] = await Promise.all([
200
+ getAgentPlatformBridge()?.exportBackup?.listBackups?.(),
201
+ getAgentPlatformBridge()?.exportBackup?.getSettings?.(),
202
+ ]);
203
+ const current = store.getState().settings;
204
+ if (current?.entityId === entityId) {
205
+ const normalizedBackupFrequency = normalizeBackupFrequency(backupSettings?.settings?.frequency, current.exportBackup.backupFrequency);
206
+ store.setState({
207
+ settings: {
208
+ ...current,
209
+ exportBackup: {
210
+ ...current.exportBackup,
211
+ autoBackupEnabled: backupSettings?.settings?.autoBackupEnabled ?? current.exportBackup.autoBackupEnabled,
212
+ backupFrequency: normalizedBackupFrequency,
213
+ retentionDays: backupSettings?.settings?.retentionDays ?? current.exportBackup.retentionDays,
214
+ availableBackups: (backupList?.backups || []).map((b) => ({
215
+ id: b.id,
216
+ name: b.name,
217
+ size: formatBytes(b.size),
218
+ createdAt: b.createdAt,
219
+ type: 'manual',
220
+ })),
221
+ },
222
+ },
223
+ });
224
+ }
225
+ }
226
+ catch { /* silent */ }
227
+ // Load real usage data
228
+ try {
229
+ const [summary, byModel, topAgents] = await Promise.all([
230
+ getAgentPlatformBridge()?.usage?.summary?.(entityType, entityId, 'daily'),
231
+ getAgentPlatformBridge()?.usage?.byModel?.(),
232
+ getAgentPlatformBridge()?.usage?.topAgents?.(),
233
+ ]);
234
+ const current = store.getState().settings;
235
+ if (current?.entityId === entityId) {
236
+ const usageSummary = (summary || {});
237
+ const usageByModel = (byModel || {});
238
+ const usageTopAgents = (topAgents || {});
239
+ store.setState({
240
+ settings: {
241
+ ...current,
242
+ usage: {
243
+ totalTokens: usageSummary.totalTokens ?? 0,
244
+ totalCost: usageSummary.totalCost ?? 0,
245
+ totalRequests: usageSummary.totalRequests ?? 0,
246
+ dailyUsage: usageSummary.dataPoints || [],
247
+ weeklyUsage: [],
248
+ monthlyUsage: [],
249
+ costByModel: usageByModel.costByModel || [],
250
+ topAgents: usageTopAgents.topAgents || [],
251
+ },
252
+ },
253
+ });
254
+ }
255
+ }
256
+ catch { /* silent */ }
257
+ // Load real audit log
258
+ try {
259
+ const result = await getAgentPlatformBridge()?.audit?.list?.(20);
260
+ const current = store.getState().settings;
261
+ if (current?.entityId === entityId) {
262
+ const auditEntries = (result || {}).entries || [];
263
+ store.setState({
264
+ settings: {
265
+ ...current,
266
+ security: {
267
+ ...current.security,
268
+ auditLog: auditEntries.map((e, i) => ({
269
+ id: `audit_${i}`,
270
+ action: e.action,
271
+ actor: e.user || 'You',
272
+ target: e.entity || '',
273
+ timestamp: e.timestamp,
274
+ details: e.details || '',
275
+ })),
276
+ },
277
+ },
278
+ });
279
+ }
280
+ }
281
+ catch { /* silent */ }
282
+ }
283
+ function formatBytes(bytes) {
284
+ if (bytes < 1024)
285
+ return `${bytes} B`;
286
+ if (bytes < 1048576)
287
+ return `${(bytes / 1024).toFixed(1)} KB`;
288
+ return `${(bytes / 1048576).toFixed(1)} MB`;
289
+ }
290
+ // Sync notifications from settings back to workspace store
291
+ function syncNotificationsToWorkspaceStore(settings, notif) {
292
+ if (settings.entityType !== 'workspace')
293
+ return;
294
+ useWorkspaceStore.getState().updateWorkspace(settings.entityId, {
295
+ notifications: {
296
+ emailEnabled: notif.emailEnabled,
297
+ slackEnabled: notif.slackEnabled,
298
+ discordEnabled: notif.discordEnabled,
299
+ webhookEnabled: notif.webhookEnabled,
300
+ digestFrequency: notif.digestFrequency,
301
+ rules: notif.rules.map(r => ({ id: r.id, event: r.event, channel: r.channel, enabled: r.enabled })),
302
+ },
303
+ });
304
+ }
305
+ // Sync env vars from settings back to workspace store
306
+ function syncEnvVarsToWorkspaceStore(settings, vars) {
307
+ const envVars = vars.map(v => ({ key: v.key, value: v.value, isSecret: v.isSecret }));
308
+ const ws = useWorkspaceStore.getState();
309
+ if (settings.entityType === 'workspace') {
310
+ ws.updateWorkspace(settings.entityId, { envVars });
311
+ }
312
+ else if (settings.entityType === 'team' && settings.workspaceId) {
313
+ ws.updateTeam(settings.workspaceId, settings.entityId, { envVars });
314
+ }
315
+ }
316
+ export const useEntitySettingsStore = create((set, get) => ({
317
+ settings: null,
318
+ activeSection: 'general',
319
+ isLoading: false,
320
+ isDirty: false,
321
+ loadSettings: (entityId, entityType, entityName, extra) => {
322
+ set({ isLoading: true });
323
+ // Start with mock structure, then overlay real data from workspace store
324
+ const settings = generateMockSettings(entityId, entityType, entityName, extra);
325
+ const wsStore = useWorkspaceStore.getState();
326
+ // Get current user from auth store for real owner info
327
+ const authUser = useAuthStore.getState().user;
328
+ if (entityType === 'workspace') {
329
+ const ws = wsStore.workspaces.find(w => w.id === entityId);
330
+ if (ws) {
331
+ // General — all real
332
+ const slug = ws.name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
333
+ settings.general.name = ws.name;
334
+ settings.general.description = ws.description || '';
335
+ settings.general.slug = slug;
336
+ settings.general.icon = 'building';
337
+ settings.general.createdAt = ws.createdAt ? new Date(ws.createdAt).toISOString() : settings.general.createdAt;
338
+ settings.general.updatedAt = ws.updatedAt ? new Date(ws.updatedAt).toISOString() : settings.general.createdAt;
339
+ // Resource limits — real quotas from hierarchy
340
+ const teamCount = ws.teams.length;
341
+ const agentCount = ws.teams.reduce((sum, t) => sum + t.agents.length, 0);
342
+ settings.resourceLimits.quotas = [
343
+ { label: 'Teams', current: teamCount, limit: 50, unit: 'teams' },
344
+ { label: 'Agents', current: agentCount, limit: 200, unit: 'agents' },
345
+ { label: 'Directories', current: ws.directories.length, limit: 100, unit: 'dirs' },
346
+ ];
347
+ settings.resourceLimits.rateLimitRpm = ws.rateLimits?.requestsPerMinute ?? 1000;
348
+ settings.resourceLimits.rateLimitTpd = ws.rateLimits?.tokensPerDay ?? 1000000;
349
+ // Environment
350
+ settings.environment = {
351
+ variables: (ws.envVars || []).map((v, i) => ({
352
+ id: `env_${i}`,
353
+ ...v,
354
+ updatedAt: new Date().toISOString(),
355
+ })),
356
+ };
357
+ // Notifications
358
+ if (ws.notifications) {
359
+ settings.notifications = {
360
+ emailEnabled: ws.notifications.emailEnabled,
361
+ slackEnabled: ws.notifications.slackEnabled,
362
+ discordEnabled: ws.notifications.discordEnabled,
363
+ webhookEnabled: ws.notifications.webhookEnabled,
364
+ digestFrequency: ws.notifications.digestFrequency,
365
+ rules: ws.notifications.rules.map(r => ({
366
+ ...r,
367
+ description: r.event,
368
+ })),
369
+ };
370
+ }
371
+ // Access — real current user as owner, no fake members
372
+ const ownerName = authUser?.display_name || authUser?.username || 'You';
373
+ const ownerEmail = authUser?.email || '';
374
+ settings.access = {
375
+ owner: { id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt },
376
+ members: [{ id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt }],
377
+ pendingInvites: [],
378
+ publicAccess: ws.access?.publicAccess ?? false,
379
+ allowGuestViewing: ws.access?.allowGuestViewing ?? false,
380
+ };
381
+ // Security
382
+ if (ws.security) {
383
+ settings.security.require2FA = ws.security.require2FA;
384
+ settings.security.requireApiKeyAuth = ws.security.requireApiKeyAuth;
385
+ settings.security.sessionTimeout = ws.security.sessionTimeout;
386
+ settings.security.ipAllowlist = [...ws.security.ipAllowlist];
387
+ }
388
+ // Integrations — mark as not connected (no OAuth yet)
389
+ settings.integrations.integrations = settings.integrations.integrations.map(i => ({
390
+ ...i, enabled: false, status: 'disconnected', connectedAt: '',
391
+ }));
392
+ settings.integrations.apiKeys = [];
393
+ settings.integrations.webhookEndpoints = [];
394
+ }
395
+ }
396
+ else if (entityType === 'team' && extra?.workspaceId) {
397
+ const ws = wsStore.workspaces.find(w => w.id === extra.workspaceId);
398
+ const team = ws?.teams.find(t => t.id === entityId);
399
+ if (team) {
400
+ settings.general.name = team.name;
401
+ settings.general.description = team.description || '';
402
+ settings.general.slug = team.name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
403
+ settings.general.icon = 'users';
404
+ settings.resourceLimits.quotas = [
405
+ { label: 'Agents', current: team.agents.length, limit: 50, unit: 'agents' },
406
+ ];
407
+ settings.resourceLimits.rateLimitRpm = team.rateLimits?.requestsPerMinute ?? 500;
408
+ settings.resourceLimits.rateLimitTpd = team.rateLimits?.tokensPerDay ?? 500000;
409
+ settings.environment = {
410
+ variables: (team.envVars || []).map((v, i) => ({
411
+ id: `env_${i}`,
412
+ ...v,
413
+ updatedAt: new Date().toISOString(),
414
+ })),
415
+ };
416
+ // Real owner
417
+ const ownerName = authUser?.display_name || authUser?.username || 'You';
418
+ const ownerEmail = authUser?.email || '';
419
+ settings.access = {
420
+ owner: { id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt },
421
+ members: [{ id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt }],
422
+ pendingInvites: [],
423
+ publicAccess: false,
424
+ allowGuestViewing: false,
425
+ };
426
+ }
427
+ }
428
+ else if (entityType === 'agent' && extra?.workspaceId && extra?.teamId) {
429
+ const ws = wsStore.workspaces.find(w => w.id === extra.workspaceId);
430
+ const team = ws?.teams.find(t => t.id === extra.teamId);
431
+ const agent = team?.agents.find(a => a.id === entityId);
432
+ if (agent) {
433
+ settings.general.name = agent.name;
434
+ settings.general.description = agent.description || '';
435
+ settings.general.slug = agent.name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
436
+ settings.general.icon = 'bot';
437
+ settings.resourceLimits.quotas = [
438
+ { label: 'Conversations', current: Object.values(useAgentChatStore.getState().conversations).filter(c => c.agentId === entityId).length, limit: 1000, unit: 'convs' },
439
+ ];
440
+ // Real owner
441
+ const ownerName = authUser?.display_name || authUser?.username || 'You';
442
+ const ownerEmail = authUser?.email || '';
443
+ settings.access = {
444
+ owner: { id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt },
445
+ members: [{ id: 'self', name: ownerName, email: ownerEmail, role: 'owner', joinedAt: settings.general.createdAt }],
446
+ pendingInvites: [],
447
+ publicAccess: false,
448
+ allowGuestViewing: false,
449
+ };
450
+ if (settings.defaultAgentConfig) {
451
+ settings.defaultAgentConfig.defaultModel = agent.model || 'claude-sonnet-4-6';
452
+ settings.defaultAgentConfig.systemInstructions = agent.systemPrompt || '';
453
+ settings.defaultAgentConfig.enabledTools = agent.tools || ['web-search', 'code-execution', 'file-read'];
454
+ }
455
+ settings.resourceLimits.rateLimitRpm = agent.rateLimits?.requestsPerMinute ?? settings.resourceLimits.rateLimitRpm;
456
+ settings.resourceLimits.rateLimitTpd = agent.rateLimits?.tokensPerDay ?? settings.resourceLimits.rateLimitTpd;
457
+ }
458
+ }
459
+ set({ settings, isLoading: false, activeSection: 'general', isDirty: false });
460
+ // Async: load real data for IPC-backed sections
461
+ loadAsyncSectionData(entityId, entityType);
462
+ },
463
+ setActiveSection: (section) => set({ activeSection: section }),
464
+ clearSettings: () => set({ settings: null, activeSection: 'general', isDirty: false }),
465
+ updateGeneral: (updates) => {
466
+ const { settings } = get();
467
+ if (!settings)
468
+ return;
469
+ set({
470
+ settings: { ...settings, general: { ...settings.general, ...updates, updatedAt: new Date().toISOString() } },
471
+ isDirty: true,
472
+ });
473
+ // Persist to workspace store
474
+ const ws = useWorkspaceStore.getState();
475
+ if (settings.entityType === 'workspace') {
476
+ ws.updateWorkspace(settings.entityId, {
477
+ name: updates.name || settings.general.name,
478
+ description: updates.description ?? settings.general.description,
479
+ });
480
+ }
481
+ else if (settings.entityType === 'team' && settings.workspaceId) {
482
+ ws.updateTeam(settings.workspaceId, settings.entityId, {
483
+ name: updates.name || settings.general.name,
484
+ description: updates.description ?? settings.general.description,
485
+ });
486
+ }
487
+ else if (settings.entityType === 'agent' && settings.workspaceId && settings.teamId) {
488
+ ws.updateAgent(settings.workspaceId, settings.teamId, settings.entityId, {
489
+ name: updates.name || settings.general.name,
490
+ description: updates.description ?? settings.general.description,
491
+ });
492
+ }
493
+ },
494
+ updateDefaultAgentConfig: (updates) => {
495
+ const { settings } = get();
496
+ if (!settings || !settings.defaultAgentConfig)
497
+ return;
498
+ set({
499
+ settings: { ...settings, defaultAgentConfig: { ...settings.defaultAgentConfig, ...updates } },
500
+ isDirty: true,
501
+ });
502
+ // Persist to workspace store — for agents, update model/prompt/tools
503
+ if (settings.entityType === 'agent' && settings.workspaceId && settings.teamId) {
504
+ const agentUpdates = {};
505
+ if (updates.defaultModel !== undefined)
506
+ agentUpdates.model = updates.defaultModel;
507
+ if (updates.systemInstructions !== undefined)
508
+ agentUpdates.systemPrompt = updates.systemInstructions;
509
+ if (updates.enabledTools !== undefined)
510
+ agentUpdates.tools = updates.enabledTools;
511
+ useWorkspaceStore.getState().updateAgent(settings.workspaceId, settings.teamId, settings.entityId, agentUpdates);
512
+ }
513
+ },
514
+ updateAccess: (updates) => {
515
+ const { settings } = get();
516
+ if (!settings)
517
+ return;
518
+ set({
519
+ settings: { ...settings, access: { ...settings.access, ...updates } },
520
+ isDirty: true,
521
+ });
522
+ // Persist access settings to workspace store
523
+ if (settings.entityType === 'workspace') {
524
+ useWorkspaceStore.getState().updateWorkspace(settings.entityId, {
525
+ access: {
526
+ publicAccess: updates.publicAccess ?? settings.access.publicAccess,
527
+ allowGuestViewing: updates.allowGuestViewing ?? settings.access.allowGuestViewing,
528
+ },
529
+ });
530
+ }
531
+ },
532
+ updateResourceLimits: (updates) => {
533
+ const { settings } = get();
534
+ if (!settings)
535
+ return;
536
+ set({
537
+ settings: { ...settings, resourceLimits: { ...settings.resourceLimits, ...updates } },
538
+ isDirty: true,
539
+ });
540
+ // Persist rate limits to workspace store
541
+ const rateLimits = {
542
+ requestsPerMinute: updates.rateLimitRpm ?? settings.resourceLimits.rateLimitRpm,
543
+ tokensPerDay: updates.rateLimitTpd ?? settings.resourceLimits.rateLimitTpd,
544
+ };
545
+ const ws = useWorkspaceStore.getState();
546
+ if (settings.entityType === 'workspace') {
547
+ ws.updateWorkspace(settings.entityId, { rateLimits });
548
+ }
549
+ else if (settings.entityType === 'team' && settings.workspaceId) {
550
+ ws.updateTeam(settings.workspaceId, settings.entityId, { rateLimits });
551
+ }
552
+ else if (settings.entityType === 'agent' && settings.workspaceId && settings.teamId) {
553
+ ws.updateAgent(settings.workspaceId, settings.teamId, settings.entityId, { rateLimits });
554
+ }
555
+ },
556
+ updateNotifications: (updates) => {
557
+ const { settings } = get();
558
+ if (!settings)
559
+ return;
560
+ const merged = { ...settings.notifications, ...updates };
561
+ set({
562
+ settings: { ...settings, notifications: merged },
563
+ isDirty: true,
564
+ });
565
+ // Persist to workspace store
566
+ if (settings.entityType === 'workspace') {
567
+ useWorkspaceStore.getState().updateWorkspace(settings.entityId, {
568
+ notifications: {
569
+ emailEnabled: merged.emailEnabled,
570
+ slackEnabled: merged.slackEnabled,
571
+ discordEnabled: merged.discordEnabled,
572
+ webhookEnabled: merged.webhookEnabled,
573
+ digestFrequency: merged.digestFrequency,
574
+ rules: merged.rules.map(r => ({ id: r.id, event: r.event, channel: r.channel, enabled: r.enabled })),
575
+ },
576
+ });
577
+ }
578
+ },
579
+ updateSecurity: (updates) => {
580
+ const { settings } = get();
581
+ if (!settings)
582
+ return;
583
+ const merged = { ...settings.security, ...updates };
584
+ set({
585
+ settings: { ...settings, security: merged },
586
+ isDirty: true,
587
+ });
588
+ // Persist security settings to workspace store
589
+ if (settings.entityType === 'workspace') {
590
+ useWorkspaceStore.getState().updateWorkspace(settings.entityId, {
591
+ security: {
592
+ require2FA: merged.require2FA,
593
+ requireApiKeyAuth: merged.requireApiKeyAuth,
594
+ sessionTimeout: merged.sessionTimeout,
595
+ ipAllowlist: [...merged.ipAllowlist],
596
+ },
597
+ });
598
+ }
599
+ },
600
+ updateExportBackup: (updates) => {
601
+ const { settings } = get();
602
+ if (!settings)
603
+ return;
604
+ set({
605
+ settings: { ...settings, exportBackup: { ...settings.exportBackup, ...updates } },
606
+ isDirty: true,
607
+ });
608
+ // Persist backup settings
609
+ getAgentPlatformBridge()?.exportBackup?.updateSettings?.({
610
+ autoBackupEnabled: updates.autoBackupEnabled ?? settings.exportBackup.autoBackupEnabled,
611
+ frequency: updates.backupFrequency ?? settings.exportBackup.backupFrequency,
612
+ retentionDays: updates.retentionDays ?? settings.exportBackup.retentionDays,
613
+ }).catch(() => { });
614
+ },
615
+ addMember: (member) => {
616
+ const { settings } = get();
617
+ if (!settings)
618
+ return;
619
+ const newMember = { ...member, id: `user_${generateId()}`, joinedAt: new Date().toISOString() };
620
+ set({
621
+ settings: { ...settings, access: { ...settings.access, members: [...settings.access.members, newMember] } },
622
+ isDirty: true,
623
+ });
624
+ },
625
+ removeMember: (memberId) => {
626
+ const { settings } = get();
627
+ if (!settings)
628
+ return;
629
+ set({
630
+ settings: {
631
+ ...settings,
632
+ access: { ...settings.access, members: settings.access.members.filter(m => m.id !== memberId) },
633
+ },
634
+ isDirty: true,
635
+ });
636
+ },
637
+ updateMemberRole: (memberId, role) => {
638
+ const { settings } = get();
639
+ if (!settings)
640
+ return;
641
+ set({
642
+ settings: {
643
+ ...settings,
644
+ access: {
645
+ ...settings.access,
646
+ members: settings.access.members.map(m => m.id === memberId ? { ...m, role } : m),
647
+ },
648
+ },
649
+ isDirty: true,
650
+ });
651
+ },
652
+ addIntegration: (integration) => {
653
+ const { settings } = get();
654
+ if (!settings)
655
+ return;
656
+ const newInt = { ...integration, id: `int_${generateId()}` };
657
+ set({
658
+ settings: {
659
+ ...settings,
660
+ integrations: { ...settings.integrations, integrations: [...settings.integrations.integrations, newInt] },
661
+ },
662
+ isDirty: true,
663
+ });
664
+ },
665
+ removeIntegration: (integrationId) => {
666
+ const { settings } = get();
667
+ if (!settings)
668
+ return;
669
+ set({
670
+ settings: {
671
+ ...settings,
672
+ integrations: {
673
+ ...settings.integrations,
674
+ integrations: settings.integrations.integrations.filter(i => i.id !== integrationId),
675
+ },
676
+ },
677
+ isDirty: true,
678
+ });
679
+ },
680
+ toggleIntegration: (integrationId) => {
681
+ const { settings } = get();
682
+ if (!settings)
683
+ return;
684
+ set({
685
+ settings: {
686
+ ...settings,
687
+ integrations: {
688
+ ...settings.integrations,
689
+ integrations: settings.integrations.integrations.map(i => i.id === integrationId ? { ...i, enabled: !i.enabled, status: !i.enabled ? 'connected' : 'disconnected' } : i),
690
+ },
691
+ },
692
+ isDirty: true,
693
+ });
694
+ },
695
+ addEnvironmentVariable: (variable) => {
696
+ const { settings } = get();
697
+ if (!settings)
698
+ return;
699
+ const newVar = { ...variable, id: `env_${generateId()}`, updatedAt: new Date().toISOString() };
700
+ const nextVars = [...settings.environment.variables, newVar];
701
+ set({
702
+ settings: { ...settings, environment: { variables: nextVars } },
703
+ isDirty: true,
704
+ });
705
+ syncEnvVarsToWorkspaceStore(settings, nextVars);
706
+ },
707
+ updateEnvironmentVariable: (variableId, updates) => {
708
+ const { settings } = get();
709
+ if (!settings)
710
+ return;
711
+ const nextVars = settings.environment.variables.map(v => v.id === variableId ? { ...v, ...updates, updatedAt: new Date().toISOString() } : v);
712
+ set({
713
+ settings: { ...settings, environment: { variables: nextVars } },
714
+ isDirty: true,
715
+ });
716
+ syncEnvVarsToWorkspaceStore(settings, nextVars);
717
+ },
718
+ deleteEnvironmentVariable: (variableId) => {
719
+ const { settings } = get();
720
+ if (!settings)
721
+ return;
722
+ const nextVars = settings.environment.variables.filter(v => v.id !== variableId);
723
+ set({
724
+ settings: { ...settings, environment: { variables: nextVars } },
725
+ isDirty: true,
726
+ });
727
+ syncEnvVarsToWorkspaceStore(settings, nextVars);
728
+ },
729
+ addNotificationRule: (rule) => {
730
+ const { settings } = get();
731
+ if (!settings)
732
+ return;
733
+ const newRule = { ...rule, id: `rule_${generateId()}` };
734
+ const nextRules = [...settings.notifications.rules, newRule];
735
+ set({
736
+ settings: { ...settings, notifications: { ...settings.notifications, rules: nextRules } },
737
+ isDirty: true,
738
+ });
739
+ syncNotificationsToWorkspaceStore(settings, { ...settings.notifications, rules: nextRules });
740
+ },
741
+ updateNotificationRule: (ruleId, updates) => {
742
+ const { settings } = get();
743
+ if (!settings)
744
+ return;
745
+ const nextRules = settings.notifications.rules.map(r => r.id === ruleId ? { ...r, ...updates } : r);
746
+ set({
747
+ settings: { ...settings, notifications: { ...settings.notifications, rules: nextRules } },
748
+ isDirty: true,
749
+ });
750
+ syncNotificationsToWorkspaceStore(settings, { ...settings.notifications, rules: nextRules });
751
+ },
752
+ deleteNotificationRule: (ruleId) => {
753
+ const { settings } = get();
754
+ if (!settings)
755
+ return;
756
+ const nextRules = settings.notifications.rules.filter(r => r.id !== ruleId);
757
+ set({
758
+ settings: { ...settings, notifications: { ...settings.notifications, rules: nextRules } },
759
+ isDirty: true,
760
+ });
761
+ syncNotificationsToWorkspaceStore(settings, { ...settings.notifications, rules: nextRules });
762
+ },
763
+ addApiKey: (key) => {
764
+ const { settings } = get();
765
+ if (!settings)
766
+ return;
767
+ const now = new Date().toISOString();
768
+ const newKey = { ...key, id: `key_${generateId()}`, createdAt: now, lastUsed: now };
769
+ set({
770
+ settings: {
771
+ ...settings,
772
+ integrations: { ...settings.integrations, apiKeys: [...settings.integrations.apiKeys, newKey] },
773
+ },
774
+ isDirty: true,
775
+ });
776
+ },
777
+ removeApiKey: (keyId) => {
778
+ const { settings } = get();
779
+ if (!settings)
780
+ return;
781
+ set({
782
+ settings: {
783
+ ...settings,
784
+ integrations: { ...settings.integrations, apiKeys: settings.integrations.apiKeys.filter(k => k.id !== keyId) },
785
+ },
786
+ isDirty: true,
787
+ });
788
+ },
789
+ addWebhook: (webhook) => {
790
+ const { settings } = get();
791
+ if (!settings)
792
+ return;
793
+ const newWh = { ...webhook, id: `wh_${generateId()}`, createdAt: new Date().toISOString() };
794
+ set({
795
+ settings: {
796
+ ...settings,
797
+ integrations: { ...settings.integrations, webhookEndpoints: [...settings.integrations.webhookEndpoints, newWh] },
798
+ },
799
+ isDirty: true,
800
+ });
801
+ },
802
+ removeWebhook: (webhookId) => {
803
+ const { settings } = get();
804
+ if (!settings)
805
+ return;
806
+ set({
807
+ settings: {
808
+ ...settings,
809
+ integrations: {
810
+ ...settings.integrations,
811
+ webhookEndpoints: settings.integrations.webhookEndpoints.filter(w => w.id !== webhookId),
812
+ },
813
+ },
814
+ isDirty: true,
815
+ });
816
+ },
817
+ toggleWebhook: (webhookId) => {
818
+ const { settings } = get();
819
+ if (!settings)
820
+ return;
821
+ set({
822
+ settings: {
823
+ ...settings,
824
+ integrations: {
825
+ ...settings.integrations,
826
+ webhookEndpoints: settings.integrations.webhookEndpoints.map(w => w.id === webhookId ? { ...w, enabled: !w.enabled } : w),
827
+ },
828
+ },
829
+ isDirty: true,
830
+ });
831
+ },
832
+ createBackup: async (name) => {
833
+ const { settings } = get();
834
+ if (!settings)
835
+ return;
836
+ const result = await getAgentPlatformBridge()?.exportBackup?.createBackup?.(name);
837
+ if (result?.success && result.backup) {
838
+ const backup = result.backup;
839
+ const newBackup = {
840
+ id: backup.id || `backup_${Date.now()}`,
841
+ name: backup.name || name || 'Backup',
842
+ size: formatBytes(backup.size || 0),
843
+ createdAt: backup.createdAt || new Date().toISOString(),
844
+ type: 'manual',
845
+ };
846
+ set({
847
+ settings: {
848
+ ...settings,
849
+ exportBackup: {
850
+ ...settings.exportBackup,
851
+ availableBackups: [newBackup, ...settings.exportBackup.availableBackups],
852
+ },
853
+ },
854
+ });
855
+ }
856
+ },
857
+ deleteBackup: async (backupId) => {
858
+ const { settings } = get();
859
+ if (!settings)
860
+ return;
861
+ await getAgentPlatformBridge()?.exportBackup?.deleteBackup?.(backupId);
862
+ set({
863
+ settings: {
864
+ ...settings,
865
+ exportBackup: {
866
+ ...settings.exportBackup,
867
+ availableBackups: settings.exportBackup.availableBackups.filter(b => b.id !== backupId),
868
+ },
869
+ },
870
+ });
871
+ },
872
+ archiveEntity: () => {
873
+ const { settings } = get();
874
+ if (!settings)
875
+ return;
876
+ const ws = useWorkspaceStore.getState();
877
+ if (settings.entityType === 'workspace') {
878
+ ws.archiveWorkspace(settings.entityId);
879
+ }
880
+ },
881
+ transferOwnership: (newOwnerId) => {
882
+ const { settings } = get();
883
+ if (!settings)
884
+ return;
885
+ const newOwner = settings.access.members.find(m => m.id === newOwnerId);
886
+ if (!newOwner)
887
+ return;
888
+ set({
889
+ settings: {
890
+ ...settings,
891
+ access: {
892
+ ...settings.access,
893
+ owner: { ...newOwner, role: 'owner' },
894
+ members: settings.access.members.map(m => m.id === newOwnerId ? { ...m, role: 'owner' } : m.id === settings.access.owner.id ? { ...m, role: 'admin' } : m),
895
+ },
896
+ },
897
+ isDirty: true,
898
+ });
899
+ },
900
+ deleteEntity: () => {
901
+ const { settings } = get();
902
+ if (!settings)
903
+ return;
904
+ const ws = useWorkspaceStore.getState();
905
+ if (settings.entityType === 'workspace') {
906
+ ws.deleteWorkspace(settings.entityId);
907
+ }
908
+ else if (settings.entityType === 'team' && settings.workspaceId) {
909
+ ws.deleteTeam(settings.workspaceId, settings.entityId);
910
+ }
911
+ else if (settings.entityType === 'agent' && settings.workspaceId && settings.teamId) {
912
+ ws.deleteAgent(settings.workspaceId, settings.teamId, settings.entityId);
913
+ }
914
+ },
915
+ }));
916
+ //# sourceMappingURL=entitySettingsStore.js.map