@xenosystem/agent-interface-ui 0.1.25 → 0.1.27

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 (380) hide show
  1. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
  2. package/dist/adapters/agentHostPlatformBridge.js +96 -16
  3. package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
  4. package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -1
  5. package/dist/adapters/hubAgentPlatformBridge.js +2 -0
  6. package/dist/adapters/hubAgentPlatformBridge.js.map +1 -1
  7. package/dist/adapters/scopedBackupBridge.d.ts +4 -0
  8. package/dist/adapters/scopedBackupBridge.d.ts.map +1 -0
  9. package/dist/adapters/scopedBackupBridge.js +49 -0
  10. package/dist/adapters/scopedBackupBridge.js.map +1 -0
  11. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -1
  12. package/dist/adapters/xenoAgentCompatibilityBridge.js +9 -1
  13. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -1
  14. package/dist/agent.css +13227 -0
  15. package/dist/components/agent/AgentIdentityGenerator.d.ts +16 -0
  16. package/dist/components/agent/AgentIdentityGenerator.d.ts.map +1 -0
  17. package/dist/components/agent/AgentIdentityGenerator.js +80 -0
  18. package/dist/components/agent/AgentIdentityGenerator.js.map +1 -0
  19. package/dist/components/agent/AgentInterface.d.ts +1 -0
  20. package/dist/components/agent/AgentInterface.d.ts.map +1 -1
  21. package/dist/components/agent/AgentInterface.js +1816 -643
  22. package/dist/components/agent/AgentInterface.js.map +1 -1
  23. package/dist/components/agent/AgentNotificationBanner.d.ts +10 -0
  24. package/dist/components/agent/AgentNotificationBanner.d.ts.map +1 -0
  25. package/dist/components/agent/AgentNotificationBanner.js +28 -0
  26. package/dist/components/agent/AgentNotificationBanner.js.map +1 -0
  27. package/dist/components/agent/AgentOnboarding.d.ts +16 -2
  28. package/dist/components/agent/AgentOnboarding.d.ts.map +1 -1
  29. package/dist/components/agent/AgentOnboarding.js +93 -201
  30. package/dist/components/agent/AgentOnboarding.js.map +1 -1
  31. package/dist/components/agent/AgentView.d.ts.map +1 -1
  32. package/dist/components/agent/AgentView.js +533 -308
  33. package/dist/components/agent/AgentView.js.map +1 -1
  34. package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -1
  35. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
  36. package/dist/components/agent/AgentWorkbenchPanel.js +3 -2
  37. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
  38. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +4 -1
  39. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -1
  40. package/dist/components/agent/AgentWorkspaceBrowserPanel.js +23 -195
  41. package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -1
  42. package/dist/components/agent/AgentsWorkspaceView.d.ts +12 -0
  43. package/dist/components/agent/AgentsWorkspaceView.d.ts.map +1 -0
  44. package/dist/components/agent/AgentsWorkspaceView.js +129 -0
  45. package/dist/components/agent/AgentsWorkspaceView.js.map +1 -0
  46. package/dist/components/agent/DevelopmentCoordinationPanel.d.ts +7 -0
  47. package/dist/components/agent/DevelopmentCoordinationPanel.d.ts.map +1 -1
  48. package/dist/components/agent/DevelopmentCoordinationPanel.js +57 -49
  49. package/dist/components/agent/DevelopmentCoordinationPanel.js.map +1 -1
  50. package/dist/components/agent/KnowledgePanel.d.ts.map +1 -1
  51. package/dist/components/agent/KnowledgePanel.js +17 -67
  52. package/dist/components/agent/KnowledgePanel.js.map +1 -1
  53. package/dist/components/agent/LiveConversationCollaboration.d.ts +27 -0
  54. package/dist/components/agent/LiveConversationCollaboration.d.ts.map +1 -0
  55. package/dist/components/agent/LiveConversationCollaboration.js +127 -0
  56. package/dist/components/agent/LiveConversationCollaboration.js.map +1 -0
  57. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -1
  58. package/dist/components/agent/MonacoDiffWorkbenchEditor.js +1 -1
  59. package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -1
  60. package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -1
  61. package/dist/components/agent/MonacoWorkbenchEditor.js +3 -3
  62. package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -1
  63. package/dist/components/agent/OwnedBrowserController.d.ts +55 -0
  64. package/dist/components/agent/OwnedBrowserController.d.ts.map +1 -0
  65. package/dist/components/agent/OwnedBrowserController.js +166 -0
  66. package/dist/components/agent/OwnedBrowserController.js.map +1 -0
  67. package/dist/components/agent/OwnedWorkforceView.d.ts +10 -0
  68. package/dist/components/agent/OwnedWorkforceView.d.ts.map +1 -0
  69. package/dist/components/agent/OwnedWorkforceView.js +256 -0
  70. package/dist/components/agent/OwnedWorkforceView.js.map +1 -0
  71. package/dist/components/agent/PluginManager.d.ts +34 -0
  72. package/dist/components/agent/PluginManager.d.ts.map +1 -1
  73. package/dist/components/agent/PluginManager.js +187 -126
  74. package/dist/components/agent/PluginManager.js.map +1 -1
  75. package/dist/components/agent/ProjectsWorkspaceView.d.ts +14 -0
  76. package/dist/components/agent/ProjectsWorkspaceView.d.ts.map +1 -0
  77. package/dist/components/agent/ProjectsWorkspaceView.js +176 -0
  78. package/dist/components/agent/ProjectsWorkspaceView.js.map +1 -0
  79. package/dist/components/agent/RunReviewPanel.d.ts +8 -13
  80. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
  81. package/dist/components/agent/RunReviewPanel.js +120 -106
  82. package/dist/components/agent/RunReviewPanel.js.map +1 -1
  83. package/dist/components/agent/ScheduledWorkspaceView.d.ts +19 -0
  84. package/dist/components/agent/ScheduledWorkspaceView.d.ts.map +1 -0
  85. package/dist/components/agent/ScheduledWorkspaceView.js +150 -0
  86. package/dist/components/agent/ScheduledWorkspaceView.js.map +1 -0
  87. package/dist/components/agent/SdkSessionPanel.d.ts +25 -0
  88. package/dist/components/agent/SdkSessionPanel.d.ts.map +1 -0
  89. package/dist/components/agent/SdkSessionPanel.js +15 -0
  90. package/dist/components/agent/SdkSessionPanel.js.map +1 -0
  91. package/dist/components/agent/SlashCommandAutocomplete.d.ts +12 -0
  92. package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +1 -0
  93. package/dist/components/agent/SlashCommandAutocomplete.js +33 -0
  94. package/dist/components/agent/SlashCommandAutocomplete.js.map +1 -0
  95. package/dist/components/agent/TeamsWorkspaceView.d.ts +12 -0
  96. package/dist/components/agent/TeamsWorkspaceView.d.ts.map +1 -0
  97. package/dist/components/agent/TeamsWorkspaceView.js +127 -0
  98. package/dist/components/agent/TeamsWorkspaceView.js.map +1 -0
  99. package/dist/components/agent/WorkspacePersistenceNotice.d.ts +3 -0
  100. package/dist/components/agent/WorkspacePersistenceNotice.d.ts.map +1 -0
  101. package/dist/components/agent/WorkspacePersistenceNotice.js +23 -0
  102. package/dist/components/agent/WorkspacePersistenceNotice.js.map +1 -0
  103. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +1 -0
  104. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -1
  105. package/dist/components/agent/acp/AcpAgentConfigForm.js +47 -14
  106. package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -1
  107. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +1 -1
  108. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -1
  109. package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -1
  110. package/dist/components/agent/acp/AcpAgentManager.js +18 -18
  111. package/dist/components/agent/acp/AcpAgentManager.js.map +1 -1
  112. package/dist/components/agent/acp/AcpAgentTestResultPanel.js +1 -1
  113. package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -1
  114. package/dist/components/agent/acp/AcpApprovalPanel.js +2 -2
  115. package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -1
  116. package/dist/components/agent/acp/AcpCertificationPanel.js +1 -1
  117. package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -1
  118. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +1 -1
  119. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -1
  120. package/dist/components/agent/acp/AcpProviderManagerPanel.js +1 -1
  121. package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -1
  122. package/dist/components/agent/acp/AcpProviderModelsPanel.js +1 -1
  123. package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -1
  124. package/dist/components/agent/acp/AcpSupportBundlePanel.js +1 -1
  125. package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -1
  126. package/dist/components/agent/collaborationWindow.d.ts +11 -0
  127. package/dist/components/agent/collaborationWindow.d.ts.map +1 -0
  128. package/dist/components/agent/collaborationWindow.js +10 -0
  129. package/dist/components/agent/collaborationWindow.js.map +1 -0
  130. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +25 -0
  131. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +1 -0
  132. package/dist/components/agent/conversationCollaborationAppendJournal.js +118 -0
  133. package/dist/components/agent/conversationCollaborationAppendJournal.js.map +1 -0
  134. package/dist/components/agent/conversationCollaborationController.d.ts +96 -0
  135. package/dist/components/agent/conversationCollaborationController.d.ts.map +1 -0
  136. package/dist/components/agent/conversationCollaborationController.js +597 -0
  137. package/dist/components/agent/conversationCollaborationController.js.map +1 -0
  138. package/dist/components/agent/destructiveConfirmation.d.ts +76 -0
  139. package/dist/components/agent/destructiveConfirmation.d.ts.map +1 -0
  140. package/dist/components/agent/destructiveConfirmation.js +231 -0
  141. package/dist/components/agent/destructiveConfirmation.js.map +1 -0
  142. package/dist/components/agent/developmentCoordinationController.d.ts +43 -0
  143. package/dist/components/agent/developmentCoordinationController.d.ts.map +1 -0
  144. package/dist/components/agent/developmentCoordinationController.js +94 -0
  145. package/dist/components/agent/developmentCoordinationController.js.map +1 -0
  146. package/dist/components/agent/developmentCoordinationProjection.d.ts +24 -0
  147. package/dist/components/agent/developmentCoordinationProjection.d.ts.map +1 -1
  148. package/dist/components/agent/developmentCoordinationProjection.js +34 -5
  149. package/dist/components/agent/developmentCoordinationProjection.js.map +1 -1
  150. package/dist/components/agent/editorOperationAuthority.d.ts +29 -0
  151. package/dist/components/agent/editorOperationAuthority.d.ts.map +1 -0
  152. package/dist/components/agent/editorOperationAuthority.js +73 -0
  153. package/dist/components/agent/editorOperationAuthority.js.map +1 -0
  154. package/dist/components/agent/knowledgePagination.d.ts +7 -0
  155. package/dist/components/agent/knowledgePagination.d.ts.map +1 -0
  156. package/dist/components/agent/knowledgePagination.js +7 -0
  157. package/dist/components/agent/knowledgePagination.js.map +1 -0
  158. package/dist/components/agent/knowledgePanelController.d.ts +32 -0
  159. package/dist/components/agent/knowledgePanelController.d.ts.map +1 -0
  160. package/dist/components/agent/knowledgePanelController.js +119 -0
  161. package/dist/components/agent/knowledgePanelController.js.map +1 -0
  162. package/dist/components/agent/monacoWorkbenchShared.js +1 -1
  163. package/dist/components/agent/onboardingModels.d.ts +31 -0
  164. package/dist/components/agent/onboardingModels.d.ts.map +1 -0
  165. package/dist/components/agent/onboardingModels.js +107 -0
  166. package/dist/components/agent/onboardingModels.js.map +1 -0
  167. package/dist/components/agent/personalConversationScope.d.ts +26 -0
  168. package/dist/components/agent/personalConversationScope.d.ts.map +1 -0
  169. package/dist/components/agent/personalConversationScope.js +43 -0
  170. package/dist/components/agent/personalConversationScope.js.map +1 -0
  171. package/dist/components/agent/reviewRequestScope.d.ts +16 -0
  172. package/dist/components/agent/reviewRequestScope.d.ts.map +1 -0
  173. package/dist/components/agent/reviewRequestScope.js +101 -0
  174. package/dist/components/agent/reviewRequestScope.js.map +1 -0
  175. package/dist/components/agent/scheduleCreationAttempt.d.ts +12 -0
  176. package/dist/components/agent/scheduleCreationAttempt.d.ts.map +1 -0
  177. package/dist/components/agent/scheduleCreationAttempt.js +30 -0
  178. package/dist/components/agent/scheduleCreationAttempt.js.map +1 -0
  179. package/dist/components/agent/settings/EntitySettingsLayout.d.ts +1 -1
  180. package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -1
  181. package/dist/components/agent/settings/EntitySettingsLayout.js +64 -44
  182. package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -1
  183. package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -1
  184. package/dist/components/agent/settings/SettingsNavigation.js +17 -17
  185. package/dist/components/agent/settings/SettingsNavigation.js.map +1 -1
  186. package/dist/components/agent/settings/entityArchiveState.d.ts +24 -0
  187. package/dist/components/agent/settings/entityArchiveState.d.ts.map +1 -0
  188. package/dist/components/agent/settings/entityArchiveState.js +12 -0
  189. package/dist/components/agent/settings/entityArchiveState.js.map +1 -0
  190. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -1
  191. package/dist/components/agent/settings/sections/AccessMembersSection.js +10 -25
  192. package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -1
  193. package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts +16 -0
  194. package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts.map +1 -0
  195. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js +265 -0
  196. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js.map +1 -0
  197. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
  198. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +47 -32
  199. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
  200. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -1
  201. package/dist/components/agent/settings/sections/DangerZoneSection.js +30 -6
  202. package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -1
  203. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -1
  204. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +47 -37
  205. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -1
  206. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -1
  207. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +30 -43
  208. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -1
  209. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -1
  210. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -1
  211. package/dist/components/agent/settings/sections/ExportBackupSection.js +14 -12
  212. package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -1
  213. package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -1
  214. package/dist/components/agent/settings/sections/GeneralSection.js +47 -4
  215. package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -1
  216. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -1
  217. package/dist/components/agent/settings/sections/IntegrationsSection.js +14 -21
  218. package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -1
  219. package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -1
  220. package/dist/components/agent/settings/sections/NotificationsSection.js +125 -20
  221. package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -1
  222. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -1
  223. package/dist/components/agent/settings/sections/ResourceLimitsSection.js +7 -7
  224. package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -1
  225. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -1
  226. package/dist/components/agent/settings/sections/SecurityComplianceSection.js +5 -4
  227. package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -1
  228. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -1
  229. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +2 -3
  230. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -1
  231. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -1
  232. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +39 -26
  233. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -1
  234. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts +6 -0
  235. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts.map +1 -0
  236. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js +205 -0
  237. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js.map +1 -0
  238. package/dist/components/agent/settings/sections/environmentDraftAction.d.ts +3 -0
  239. package/dist/components/agent/settings/sections/environmentDraftAction.d.ts.map +1 -0
  240. package/dist/components/agent/settings/sections/environmentDraftAction.js +6 -0
  241. package/dist/components/agent/settings/sections/environmentDraftAction.js.map +1 -0
  242. package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts +3 -0
  243. package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts.map +1 -0
  244. package/dist/components/agent/settings/sections/membershipOperationProjection.js +9 -0
  245. package/dist/components/agent/settings/sections/membershipOperationProjection.js.map +1 -0
  246. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts +6 -0
  247. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts.map +1 -0
  248. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js +8 -0
  249. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js.map +1 -0
  250. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +25 -0
  251. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +1 -0
  252. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +89 -0
  253. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +1 -0
  254. package/dist/components/agent/settings/shared/InputField.d.ts +1 -1
  255. package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -1
  256. package/dist/components/agent/settings/shared/InputField.js +4 -3
  257. package/dist/components/agent/settings/shared/InputField.js.map +1 -1
  258. package/dist/components/agent/settings/shared/MembersTable.d.ts +3 -3
  259. package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -1
  260. package/dist/components/agent/settings/shared/MembersTable.js +1 -1
  261. package/dist/components/agent/settings/shared/MembersTable.js.map +1 -1
  262. package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts +5 -0
  263. package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts.map +1 -0
  264. package/dist/components/agent/settings/shared/ScopedAuditPanel.js +70 -0
  265. package/dist/components/agent/settings/shared/ScopedAuditPanel.js.map +1 -0
  266. package/dist/components/agent/settings/shared/SettingsCard.d.ts +2 -1
  267. package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -1
  268. package/dist/components/agent/settings/shared/SettingsCard.js +2 -2
  269. package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -1
  270. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -1
  271. package/dist/components/agent/settings/shared/ToggleSwitch.js +1 -1
  272. package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -1
  273. package/dist/components/agent/settings/shared/UsageChart.d.ts +10 -0
  274. package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -1
  275. package/dist/components/agent/settings/shared/UsageChart.js +16 -10
  276. package/dist/components/agent/settings/shared/UsageChart.js.map +1 -1
  277. package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts +8 -0
  278. package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts.map +1 -0
  279. package/dist/components/agent/settings/shared/WorkspaceRulesControl.js +26 -0
  280. package/dist/components/agent/settings/shared/WorkspaceRulesControl.js.map +1 -0
  281. package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts +8 -0
  282. package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts.map +1 -0
  283. package/dist/components/agent/settings/shared/useScopedConfirmation.js +53 -0
  284. package/dist/components/agent/settings/shared/useScopedConfirmation.js.map +1 -0
  285. package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts +8 -0
  286. package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts.map +1 -0
  287. package/dist/components/agent/settings/shared/useSettingsConfirmation.js +51 -0
  288. package/dist/components/agent/settings/shared/useSettingsConfirmation.js.map +1 -0
  289. package/dist/components/agent/settings/shared/workspaceRulesController.d.ts +28 -0
  290. package/dist/components/agent/settings/shared/workspaceRulesController.d.ts.map +1 -0
  291. package/dist/components/agent/settings/shared/workspaceRulesController.js +82 -0
  292. package/dist/components/agent/settings/shared/workspaceRulesController.js.map +1 -0
  293. package/dist/components/agent/sidebarEntityPins.d.ts +11 -0
  294. package/dist/components/agent/sidebarEntityPins.d.ts.map +1 -0
  295. package/dist/components/agent/sidebarEntityPins.js +37 -0
  296. package/dist/components/agent/sidebarEntityPins.js.map +1 -0
  297. package/dist/components/agent/workspaceHierarchy.d.ts +24 -0
  298. package/dist/components/agent/workspaceHierarchy.d.ts.map +1 -0
  299. package/dist/components/agent/workspaceHierarchy.js +50 -0
  300. package/dist/components/agent/workspaceHierarchy.js.map +1 -0
  301. package/dist/components/product/XenoAgentProductHeader.d.ts +4 -2
  302. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -1
  303. package/dist/components/product/XenoAgentProductHeader.js +22 -4
  304. package/dist/components/product/XenoAgentProductHeader.js.map +1 -1
  305. package/dist/components/product/XenoAgentSessionTabs.js +1 -1
  306. package/dist/components/product/XenoAgentSessionTabs.js.map +1 -1
  307. package/dist/components/product/XenoAgentWorkspaceSelector.d.ts +7 -0
  308. package/dist/components/product/XenoAgentWorkspaceSelector.d.ts.map +1 -0
  309. package/dist/components/product/XenoAgentWorkspaceSelector.js +237 -0
  310. package/dist/components/product/XenoAgentWorkspaceSelector.js.map +1 -0
  311. package/dist/components/workspace/WorkspaceCreationWizard.d.ts +6 -0
  312. package/dist/components/workspace/WorkspaceCreationWizard.d.ts.map +1 -0
  313. package/dist/components/workspace/WorkspaceCreationWizard.js +48 -0
  314. package/dist/components/workspace/WorkspaceCreationWizard.js.map +1 -0
  315. package/dist/hooks/useSidebarLayoutPreference.d.ts +29 -0
  316. package/dist/hooks/useSidebarLayoutPreference.d.ts.map +1 -0
  317. package/dist/hooks/useSidebarLayoutPreference.js +83 -0
  318. package/dist/hooks/useSidebarLayoutPreference.js.map +1 -0
  319. package/dist/hooks/useWorkspaceCreation.d.ts +8 -0
  320. package/dist/hooks/useWorkspaceCreation.d.ts.map +1 -0
  321. package/dist/hooks/useWorkspaceCreation.js +40 -0
  322. package/dist/hooks/useWorkspaceCreation.js.map +1 -0
  323. package/dist/index.d.ts +3 -0
  324. package/dist/index.d.ts.map +1 -1
  325. package/dist/index.js +3 -0
  326. package/dist/index.js.map +1 -1
  327. package/dist/platformApiTypes.d.ts +77 -36
  328. package/dist/platformApiTypes.d.ts.map +1 -1
  329. package/dist/platformBridge.d.ts +4 -0
  330. package/dist/platformBridge.d.ts.map +1 -1
  331. package/dist/platformBridge.js +10 -0
  332. package/dist/platformBridge.js.map +1 -1
  333. package/dist/stores/agentChatStore.d.ts +120 -2
  334. package/dist/stores/agentChatStore.d.ts.map +1 -1
  335. package/dist/stores/agentChatStore.js +329 -35
  336. package/dist/stores/agentChatStore.js.map +1 -1
  337. package/dist/stores/agentCreationDefaults.d.ts +25 -0
  338. package/dist/stores/agentCreationDefaults.d.ts.map +1 -0
  339. package/dist/stores/agentCreationDefaults.js +11 -0
  340. package/dist/stores/agentCreationDefaults.js.map +1 -0
  341. package/dist/stores/entitySettingsStore.d.ts +37 -12
  342. package/dist/stores/entitySettingsStore.d.ts.map +1 -1
  343. package/dist/stores/entitySettingsStore.js +558 -585
  344. package/dist/stores/entitySettingsStore.js.map +1 -1
  345. package/dist/stores/suggestionStore.d.ts +9 -2
  346. package/dist/stores/suggestionStore.d.ts.map +1 -1
  347. package/dist/stores/suggestionStore.js +51 -24
  348. package/dist/stores/suggestionStore.js.map +1 -1
  349. package/dist/stores/workspaceCreationAttempt.d.ts +14 -0
  350. package/dist/stores/workspaceCreationAttempt.d.ts.map +1 -0
  351. package/dist/stores/workspaceCreationAttempt.js +35 -0
  352. package/dist/stores/workspaceCreationAttempt.js.map +1 -0
  353. package/dist/stores/workspaceReconciliation.d.ts +6 -0
  354. package/dist/stores/workspaceReconciliation.d.ts.map +1 -0
  355. package/dist/stores/workspaceReconciliation.js +33 -0
  356. package/dist/stores/workspaceReconciliation.js.map +1 -0
  357. package/dist/stores/workspaceStore.d.ts +44 -9
  358. package/dist/stores/workspaceStore.d.ts.map +1 -1
  359. package/dist/stores/workspaceStore.js +238 -99
  360. package/dist/stores/workspaceStore.js.map +1 -1
  361. package/dist/types/agentEditor.d.ts +1 -0
  362. package/dist/types/agentEditor.d.ts.map +1 -1
  363. package/dist/utils/advertisedReasoning.d.ts +25 -0
  364. package/dist/utils/advertisedReasoning.d.ts.map +1 -0
  365. package/dist/utils/advertisedReasoning.js +62 -0
  366. package/dist/utils/advertisedReasoning.js.map +1 -0
  367. package/dist/utils/clipboardCopy.d.ts +4 -0
  368. package/dist/utils/clipboardCopy.d.ts.map +1 -0
  369. package/dist/utils/clipboardCopy.js +27 -0
  370. package/dist/utils/clipboardCopy.js.map +1 -0
  371. package/dist/utils/providerCommandArgs.d.ts +11 -0
  372. package/dist/utils/providerCommandArgs.d.ts.map +1 -0
  373. package/dist/utils/providerCommandArgs.js +18 -0
  374. package/dist/utils/providerCommandArgs.js.map +1 -0
  375. package/dist/utils/rendererTeardown.d.ts +6 -0
  376. package/dist/utils/rendererTeardown.d.ts.map +1 -0
  377. package/dist/utils/rendererTeardown.js +18 -0
  378. package/dist/utils/rendererTeardown.js.map +1 -0
  379. package/package.json +20 -8
  380. package/src/agent.css +39 -9
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { AcpNotification } from '@xenosystem/agent-interface-contract';
3
+ interface AgentNotificationBannerProps {
4
+ notifications: AcpNotification[];
5
+ onDismiss: (notificationId: string) => void;
6
+ onAction?: (action: string, command?: string, url?: string) => void;
7
+ }
8
+ export declare const AgentNotificationBanner: React.FC<AgentNotificationBannerProps>;
9
+ export {};
10
+ //# sourceMappingURL=AgentNotificationBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentNotificationBanner.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentNotificationBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AAE3E,UAAU,4BAA4B;IACpC,aAAa,EAAE,eAAe,EAAE,CAAA;IAChC,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACpE;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAyF1E,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { AlertTriangle, AlertCircle, Info, X, ExternalLink, Terminal } from 'lucide-react';
4
+ export const AgentNotificationBanner = ({ notifications, onDismiss, onAction, }) => {
5
+ if (!notifications || notifications.length === 0)
6
+ return null;
7
+ return (_jsx("div", { className: "mb-2.5 flex flex-col gap-2", children: notifications.map((notif) => {
8
+ const isError = notif.severity === 'error';
9
+ const isWarning = notif.severity === 'warning' || notif.category === 'rate_limit';
10
+ const borderClass = isError
11
+ ? 'border-red-500/30 bg-red-500/[0.08] text-red-200'
12
+ : isWarning
13
+ ? 'border-amber-400/30 bg-amber-400/[0.08] text-amber-100'
14
+ : 'border-blue-400/30 bg-blue-400/[0.08] text-blue-100';
15
+ const iconColor = isError
16
+ ? 'text-red-400'
17
+ : isWarning
18
+ ? 'text-amber-400'
19
+ : 'text-blue-400';
20
+ const actionBtnClass = isError
21
+ ? 'bg-red-500/20 hover:bg-red-500/30 text-red-100 border border-red-500/30'
22
+ : isWarning
23
+ ? 'bg-amber-400/20 hover:bg-amber-400/30 text-amber-100 border border-amber-400/30'
24
+ : 'bg-blue-400/20 hover:bg-blue-400/30 text-blue-100 border border-blue-400/30';
25
+ return (_jsxs("div", { className: `relative flex items-start gap-2.5 rounded-md border px-3 py-2.5 text-[12px] shadow-sm transition-all duration-200 ${borderClass}`, role: "alert", children: [_jsx("div", { className: `mt-0.5 shrink-0 ${iconColor}`, children: isError ? (_jsx(AlertCircle, { className: "h-4 w-4" })) : isWarning ? (_jsx(AlertTriangle, { className: "h-4 w-4" })) : (_jsx(Info, { className: "h-4 w-4" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [notif.title && (_jsx("div", { className: "font-medium tracking-tight mb-0.5 opacity-95", children: notif.title })), _jsx("div", { className: "leading-relaxed opacity-90 break-words", children: notif.message }), notif.actions && notif.actions.length > 0 && (_jsx("div", { className: "mt-2 flex flex-wrap items-center gap-1.5", children: notif.actions.map((act) => (_jsxs("button", { type: "button", onClick: () => onAction?.(act.action, act.command, act.url), className: `inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/40 ${actionBtnClass}`, children: [act.action === 'command' && _jsx(Terminal, { className: "h-3 w-3 opacity-70" }), act.action === 'link' && _jsx(ExternalLink, { className: "h-3 w-3 opacity-70" }), _jsx("span", { children: act.label })] }, act.id))) }))] }), _jsx("button", { type: "button", onClick: () => onDismiss(notif.deduplicationKey || notif.id), className: "shrink-0 rounded p-0.5 opacity-60 hover:opacity-100 transition-opacity cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/40", "aria-label": "Dismiss notification", title: "Dismiss", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }, notif.id));
26
+ }) }));
27
+ };
28
+ //# sourceMappingURL=AgentNotificationBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentNotificationBanner.js","sourceRoot":"","sources":["../../../src/components/agent/AgentNotificationBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAS1F,MAAM,CAAC,MAAM,uBAAuB,GAA2C,CAAC,EAC9E,aAAa,EACb,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE7D,OAAO,CACL,cAAK,SAAS,EAAC,4BAA4B,YACxC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAA;YAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAA;YAEjF,MAAM,WAAW,GAAG,OAAO;gBACzB,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,SAAS;oBACT,CAAC,CAAC,wDAAwD;oBAC1D,CAAC,CAAC,qDAAqD,CAAA;YAE3D,MAAM,SAAS,GAAG,OAAO;gBACvB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS;oBACT,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,eAAe,CAAA;YAErB,MAAM,cAAc,GAAG,OAAO;gBAC5B,CAAC,CAAC,yEAAyE;gBAC3E,CAAC,CAAC,SAAS;oBACT,CAAC,CAAC,iFAAiF;oBACnF,CAAC,CAAC,6EAA6E,CAAA;YAEnF,OAAO,CACL,eAEE,SAAS,EAAE,qHAAqH,WAAW,EAAE,EAC7I,IAAI,EAAC,OAAO,aAEZ,cAAK,SAAS,EAAE,mBAAmB,SAAS,EAAE,YAC3C,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG,CACpC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,GAAG,CACtC,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,CAC7B,GACG,EAEN,eAAK,SAAS,EAAC,gBAAgB,aAC5B,KAAK,CAAC,KAAK,IAAI,CACd,cAAK,SAAS,EAAC,8CAA8C,YAC1D,KAAK,CAAC,KAAK,GACR,CACP,EACD,cAAK,SAAS,EAAC,wCAAwC,YACpD,KAAK,CAAC,OAAO,GACV,EAEL,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5C,cAAK,SAAS,EAAC,0CAA0C,YACtD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC1B,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAC3D,SAAS,EAAE,4LAA4L,cAAc,EAAE,aAEtN,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,QAAQ,IAAC,SAAS,EAAC,oBAAoB,GAAG,EACvE,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,KAAC,YAAY,IAAC,SAAS,EAAC,oBAAoB,GAAG,EACzE,yBAAO,GAAG,CAAC,KAAK,GAAQ,KAPnB,GAAG,CAAC,EAAE,CAQJ,CACV,CAAC,GACE,CACP,IACG,EAEN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,EAAE,CAAC,EAC5D,SAAS,EAAC,oKAAoK,gBACnK,sBAAsB,EACjC,KAAK,EAAC,SAAS,YAEf,KAAC,CAAC,IAAC,SAAS,EAAC,aAAa,GAAG,GACtB,KAlDJ,KAAK,CAAC,EAAE,CAmDT,CACP,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -1,16 +1,30 @@
1
+ import { type OnboardingModel } from './onboardingModels.js';
2
+ import type { HubAgentRuntimeSelection } from '../../types/agentRuntimeProvider.js';
1
3
  import type { Workspace } from './AgentInterface.js';
2
4
  export interface AgentSetupData {
5
+ submissionId: string;
3
6
  name: string;
4
7
  template: string;
5
8
  customInstructions: string;
6
9
  model: string;
10
+ runtimeSelection?: HubAgentRuntimeSelection;
7
11
  workspace: string;
8
12
  team: string;
9
13
  workspaceName?: string;
10
14
  teamName?: string;
11
15
  }
12
- export declare function AgentOnboarding({ onComplete, workspaces }: {
13
- onComplete: (data: AgentSetupData) => void;
16
+ export declare function StageModel({ model, setModel, modelSource, models, loading, error, onRefresh }: {
17
+ model: string;
18
+ setModel: (model: string) => void;
19
+ modelSource: OnboardingModel['source'];
20
+ models: OnboardingModel[];
21
+ loading: boolean;
22
+ error?: string;
23
+ onRefresh: () => void;
24
+ }): import("react").JSX.Element;
25
+ export declare function AgentOnboarding({ onComplete, onCreated, workspaces }: {
26
+ onComplete: (data: AgentSetupData) => Promise<string>;
27
+ onCreated: (agentId: string) => void;
14
28
  workspaces: Workspace[];
15
29
  }): import("react").JSX.Element;
16
30
  //# sourceMappingURL=AgentOnboarding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentOnboarding.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAOpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAm1BD,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,+BAiNlI"}
1
+ {"version":3,"file":"AgentOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentOnboarding.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAoG,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC9J,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAEnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAOpD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAmLD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAC9F,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IACxF,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,IAAI,CAAA;CACnF,+BAoCA;AA2RD,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,+BAuP9L"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { getAgentPlatformBridge } from '../../platformBridge.js';
2
+ import { getAuxiliaryInferenceBridge } from '../../platformBridge.js';
3
+ import { WorkspaceCreationError } from '../../stores/workspaceCreationAttempt.js';
3
4
  /*
4
5
  * AgentOnboarding.tsx - 3-Stage Agent Creation Wizard
5
6
  *
@@ -8,7 +9,9 @@ import { getAgentPlatformBridge } from '../../platformBridge.js';
8
9
  * Stage 3: Placement & Review — workspace/team + summary + deploy
9
10
  */
10
11
  import { useState, useEffect, useRef } from 'react';
11
- import { Code2, Search, Lightbulb, BarChart3, Sparkles, Info, ArrowRight, ArrowLeft, Rocket, ChevronDown, Plus, Pencil, HardDrive } from 'lucide-react';
12
+ import { onboardingModelKey, onboardingRuntimeSelection, useOnboardingModels, validateOnboardingPlacement } from './onboardingModels.js';
13
+ import { AgentIdentityGenerator } from './AgentIdentityGenerator.js';
14
+ import { Code2, Search, Lightbulb, BarChart3, Sparkles, Info, ArrowRight, ArrowLeft, Rocket, ChevronDown, Plus, Pencil } from 'lucide-react';
12
15
  // =============================================================================
13
16
  // DATA
14
17
  // =============================================================================
@@ -49,111 +52,10 @@ const templates = [
49
52
  preview: '',
50
53
  },
51
54
  ];
52
- const models = [
53
- {
54
- id: 'claude-opus-4-6', name: 'Claude Opus 4.6', provider: 'Anthropic', badge: 'Most Capable',
55
- description: 'Highest-end reasoning and planning for difficult multi-step work', recommended: true,
56
- context: '200K tokens', pricing: '$15 / 1M tokens',
57
- benchmarks: [
58
- { label: 'Reasoning', score: 97, max: 100 },
59
- { label: 'Coding', score: 95, max: 100 },
60
- { label: 'Knowledge', score: 94, max: 100 },
61
- { label: 'Speed', score: 62, max: 100 },
62
- ],
63
- },
64
- {
65
- id: 'claude-sonnet-4-6', name: 'Claude Sonnet 4.6', provider: 'Anthropic', badge: 'Balanced',
66
- description: 'Fast, strong general-purpose model for most agent tasks',
67
- context: '200K tokens', pricing: '$3 / 1M tokens',
68
- benchmarks: [
69
- { label: 'Reasoning', score: 89, max: 100 },
70
- { label: 'Coding', score: 90, max: 100 },
71
- { label: 'Knowledge', score: 88, max: 100 },
72
- { label: 'Speed', score: 90, max: 100 },
73
- ],
74
- },
75
- {
76
- id: 'composer-2.5', name: 'Composer 2.5', provider: 'XENO', badge: 'Product Builder',
77
- description: 'XENO Composer model for planning, product work, and agent execution through the XENO API',
78
- context: '128K tokens', pricing: 'Usage-based',
79
- benchmarks: [
80
- { label: 'Reasoning', score: 92, max: 100 },
81
- { label: 'Coding', score: 89, max: 100 },
82
- { label: 'Knowledge', score: 88, max: 100 },
83
- { label: 'Speed', score: 82, max: 100 },
84
- ],
85
- },
86
- {
87
- id: 'gpt-5.3-codex', name: 'GPT-5.3 Codex', provider: 'OpenAI', badge: 'Code Expert',
88
- description: 'Specialized coding model for implementation, editing, and debugging',
89
- context: '128K tokens', pricing: '$12 / 1M tokens',
90
- benchmarks: [
91
- { label: 'Reasoning', score: 91, max: 100 },
92
- { label: 'Coding', score: 97, max: 100 },
93
- { label: 'Knowledge', score: 88, max: 100 },
94
- { label: 'Speed', score: 72, max: 100 },
95
- ],
96
- },
97
- {
98
- id: 'gpt-5.4', name: 'GPT-5.4', provider: 'OpenAI', badge: 'Frontier',
99
- description: 'Frontier general model for reasoning-heavy agent work',
100
- context: '128K tokens', pricing: '$15 / 1M tokens',
101
- benchmarks: [
102
- { label: 'Reasoning', score: 95, max: 100 },
103
- { label: 'Coding', score: 92, max: 100 },
104
- { label: 'Knowledge', score: 92, max: 100 },
105
- { label: 'Speed', score: 74, max: 100 },
106
- ],
107
- },
108
- {
109
- id: 'gpt-5.4-mini', name: 'GPT-5.4 Mini', provider: 'OpenAI', badge: 'Efficient',
110
- description: 'Smaller GPT-5.4 variant for fast general agent work with lower cost',
111
- context: '128K tokens', pricing: '$3 / 1M tokens',
112
- benchmarks: [
113
- { label: 'Reasoning', score: 88, max: 100 },
114
- { label: 'Coding', score: 86, max: 100 },
115
- { label: 'Knowledge', score: 86, max: 100 },
116
- { label: 'Speed', score: 92, max: 100 },
117
- ],
118
- },
119
- {
120
- id: 'claude-haiku-4-5-20251001', name: 'Claude Haiku 4.5', provider: 'Anthropic', badge: 'Fastest',
121
- description: 'Fastest cloud option for lightweight agents and quick interactions',
122
- context: '200K tokens', pricing: '$1 / 1M tokens',
123
- benchmarks: [
124
- { label: 'Reasoning', score: 81, max: 100 },
125
- { label: 'Coding', score: 78, max: 100 },
126
- { label: 'Knowledge', score: 82, max: 100 },
127
- { label: 'Speed', score: 98, max: 100 },
128
- ],
129
- },
130
- {
131
- id: 'kimi-k2.5', name: 'Kimi K2.5', provider: 'Moonshot', badge: 'Efficient',
132
- description: 'Efficient cloud model with strong reasoning and lower cost',
133
- context: '128K tokens', pricing: '$2 / 1M tokens',
134
- benchmarks: [
135
- { label: 'Reasoning', score: 87, max: 100 },
136
- { label: 'Coding', score: 85, max: 100 },
137
- { label: 'Knowledge', score: 84, max: 100 },
138
- { label: 'Speed', score: 82, max: 100 },
139
- ],
140
- },
141
- {
142
- id: 'gpt-5.1-codex-mini', name: 'GPT-5.1 Codex Mini', provider: 'OpenAI', badge: 'Fast Code',
143
- description: 'Lower-cost coding model for quick edits and smaller tasks',
144
- context: '128K tokens', pricing: '$3 / 1M tokens',
145
- benchmarks: [
146
- { label: 'Reasoning', score: 84, max: 100 },
147
- { label: 'Coding', score: 90, max: 100 },
148
- { label: 'Knowledge', score: 79, max: 100 },
149
- { label: 'Speed', score: 90, max: 100 },
150
- ],
151
- },
152
- ];
153
55
  // =============================================================================
154
56
  // STAGE 1 — PURPOSE & IDENTITY
155
57
  // =============================================================================
156
- function StageIdentity({ template, setTemplate, customInstructions, setCustomInstructions, }) {
58
+ function StageIdentity({ template, setTemplate, customInstructions, setCustomInstructions, models, }) {
157
59
  const isCustom = template === 'custom';
158
60
  const selectedTemplate = templates.find(t => t.id === template);
159
61
  const [showHint, setShowHint] = useState(false);
@@ -184,73 +86,19 @@ function StageIdentity({ template, setTemplate, customInstructions, setCustomIns
184
86
  `, style: { animationDelay: `${i * 50}ms` }, children: [_jsx("div", { className: `w-7 h-7 rounded-md flex items-center justify-center flex-shrink-0 ${isSelected ? 'bg-white/[0.1] text-white' : 'bg-white/[0.04] text-white/40'}`, children: _jsx(Icon, { className: "w-3.5 h-3.5", strokeWidth: 1.5 }) }), _jsxs("div", { children: [_jsx("div", { className: `text-[11px] font-medium ${isSelected ? 'text-white' : 'text-white/60'}`, children: t.name }), _jsx("div", { className: "text-[8px] text-white/25", children: t.description })] })] }, t.id));
185
87
  }) }), _jsx("div", { className: "stage-enter-item flex flex-col", style: { animationDelay: '200ms' }, children: _jsxs("div", { className: "flex-1 flex flex-col min-h-[280px] bg-black/30 border border-white/[0.08] rounded-lg overflow-hidden focus-within:border-white/[0.15] transition-colors", children: [_jsx("textarea", { value: isCustom ? customInstructions : (selectedTemplate?.preview || ''), onChange: (e) => isCustom && setCustomInstructions(e.target.value), readOnly: !isCustom && !!selectedTemplate, placeholder: isCustom
186
88
  ? "I want an agent that...\n\n• Reviews pull requests and suggests improvements\n• Follows our team's coding standards\n• Explains changes clearly for junior developers\n• Flags security concerns automatically"
187
- : 'Select a template to see instructions...', className: `flex-1 w-full px-4 py-3 bg-transparent text-[13px] leading-relaxed placeholder-white/15 focus:outline-none resize-none font-mono hide-scrollbar ${isCustom ? 'text-white' : 'text-white/50'}` }), isCustom && (_jsx("div", { className: "flex justify-end px-3 py-2", children: _jsxs("button", { className: "flex items-center gap-1.5 text-white/35 hover:text-white/60 text-[11px] transition-colors", children: [_jsx(Sparkles, { className: "w-3 h-3" }), "Generate Identity"] }) }))] }) })] })] }));
188
- }
189
- function formatSize(bytes) {
190
- const gb = bytes / (1024 * 1024 * 1024);
191
- return gb >= 1 ? `${gb.toFixed(1)} GB` : `${(bytes / (1024 * 1024)).toFixed(0)} MB`;
89
+ : 'Select a template to see instructions...', className: `flex-1 w-full px-4 py-3 bg-transparent text-[13px] leading-relaxed placeholder-white/15 focus:outline-none resize-none font-mono hide-scrollbar ${isCustom ? 'text-white' : 'text-white/50'}` }), isCustom && (_jsx(AgentIdentityGenerator, { models: models, instructions: customInstructions, onApply: setCustomInstructions }))] }) })] })] }));
192
90
  }
193
- function StageModel({ model, setModel, modelSource, }) {
194
- const [infoModel, setInfoModel] = useState(null);
195
- const benchmarkOpened = useRef(false);
196
- const inspected = models.find(m => m.id === infoModel);
197
- const [localModels, setLocalModels] = useState([]);
198
- const [localLoading, setLocalLoading] = useState(true);
199
- useEffect(() => {
200
- if (getAgentPlatformBridge()?.llm) {
201
- getAgentPlatformBridge().llm.localModels().then(res => {
202
- if (res.success)
203
- setLocalModels(res.models);
204
- setLocalLoading(false);
205
- }).catch(() => setLocalLoading(false));
206
- }
207
- else {
208
- setLocalLoading(false);
209
- }
210
- }, []);
211
- const handleSelectModel = (id) => {
212
- setModel(id);
213
- if (benchmarkOpened.current && !id.startsWith('local:')) {
214
- setInfoModel(id);
215
- }
216
- else if (id.startsWith('local:')) {
217
- setInfoModel(null);
218
- benchmarkOpened.current = false;
219
- }
220
- };
221
- const handleToggleBenchmark = (id) => {
222
- if (infoModel === id) {
223
- setInfoModel(null);
224
- benchmarkOpened.current = false;
225
- }
226
- else {
227
- setInfoModel(id);
228
- benchmarkOpened.current = true;
229
- }
230
- };
231
- const selectedLocal = model.startsWith('local:') ? localModels.find(m => m.id === model) : null;
232
- return (_jsxs("div", { className: `grid gap-6 transition-all duration-300 ${(modelSource === 'cloud' && inspected) || (modelSource === 'local' && selectedLocal) ? 'grid-cols-[1.4fr,0.6fr]' : 'grid-cols-1'}`, children: [_jsxs("div", { className: "space-y-1.5", children: [modelSource === 'cloud' && models.map((m, i) => {
233
- const isSelected = model === m.id;
234
- return (_jsx("button", { onClick: () => handleSelectModel(m.id), className: `
235
- stage-enter-item w-full px-4 py-3 rounded-lg border text-left transition-all duration-200
236
- ${isSelected
237
- ? 'border-white/20 bg-white/[0.06]'
238
- : 'border-white/[0.06] bg-white/[0.02] hover:border-white/[0.1] hover:bg-white/[0.04]'}
239
- `, style: { animationDelay: `${i * 40}ms` }, children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: `w-1.5 h-5 rounded-sm flex-shrink-0 transition-colors ${isSelected ? 'bg-white' : 'bg-white/[0.08]'}` }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: `text-[12px] font-medium ${isSelected ? 'text-white' : 'text-white/60'}`, children: m.name }), _jsx("span", { className: "text-[9px] text-white/20", children: m.provider }), m.recommended && (_jsx("span", { className: "text-[8px] px-1.5 py-0.5 rounded bg-white/[0.08] text-white/50 uppercase tracking-wider font-medium", children: "Recommended" }))] }), _jsx("p", { className: `text-[10px] mt-0.5 ${isSelected ? 'text-white/35' : 'text-white/20'}`, children: m.description })] })] }), _jsxs("div", { className: "flex items-center gap-2 flex-shrink-0", children: [_jsx("span", { className: `text-[9px] px-2 py-0.5 rounded-md ${isSelected ? 'bg-white/[0.1] text-white/60' : 'bg-white/[0.04] text-white/25'}`, children: m.badge }), _jsx("div", { role: "button", onClick: (e) => {
240
- e.stopPropagation();
241
- handleToggleBenchmark(m.id);
242
- }, className: `w-5 h-5 rounded-[3px] border flex items-center justify-center transition-colors ${infoModel === m.id
243
- ? 'border-white/20 bg-white/[0.08] text-white/50'
244
- : 'border-white/[0.06] text-white/20 hover:text-white/40 hover:border-white/[0.12]'}`, children: _jsx(BarChart3, { className: "w-2.5 h-2.5" }) })] })] }) }, m.id));
245
- }), modelSource === 'local' && (_jsxs(_Fragment, { children: [localLoading && (_jsx("div", { className: "flex items-center justify-center py-12", children: _jsx("span", { className: "text-[12px] text-white/25", children: "Scanning xeno-rt model directories..." }) })), !localLoading && localModels.length === 0 && (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 gap-3", children: [_jsx(HardDrive, { className: "w-8 h-8 text-white/10" }), _jsxs("div", { className: "text-center", children: [_jsx("p", { className: "text-[12px] text-white/30", children: "No local models found" }), _jsx("p", { className: "text-[10px] text-white/15 mt-1", children: "Add GGUF models to the xeno-rt cache or .xeno/models to use local inference" })] })] })), !localLoading && localModels.map((m, i) => {
246
- const isSelected = model === m.id;
247
- return (_jsx("button", { onClick: () => handleSelectModel(m.id), className: `
248
- stage-enter-item w-full px-4 py-3 rounded-lg border text-left transition-all duration-200
249
- ${isSelected
250
- ? 'border-white/20 bg-white/[0.06]'
251
- : 'border-white/[0.06] bg-white/[0.02] hover:border-white/[0.1] hover:bg-white/[0.04]'}
252
- `, style: { animationDelay: `${i * 40}ms` }, children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: `w-1.5 h-5 rounded-sm flex-shrink-0 transition-colors ${isSelected ? 'bg-white' : 'bg-white/[0.08]'}` }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: `text-[12px] font-medium ${isSelected ? 'text-white' : 'text-white/60'}`, children: m.name }), _jsx("span", { className: "text-[9px] text-white/20", children: m.tag }), m.parameterSize && (_jsx("span", { className: "text-[8px] px-1.5 py-0.5 rounded bg-white/[0.08] text-white/50 font-medium", children: m.parameterSize }))] }), _jsxs("p", { className: `text-[10px] mt-0.5 ${isSelected ? 'text-white/35' : 'text-white/20'}`, children: [m.family ? `${m.family} · ` : '', formatSize(m.size), " \u00C2\u00B7 Runs locally"] })] })] }), _jsx("span", { className: `text-[9px] px-2 py-0.5 rounded-md flex-shrink-0 ${isSelected ? 'bg-white/[0.1] text-white/60' : 'bg-white/[0.04] text-white/25'}`, children: "Local" })] }) }, m.id));
253
- })] }))] }), modelSource === 'cloud' && inspected && (_jsxs("div", { className: "rounded-lg border border-white/[0.06] bg-white/[0.02] p-4 flex flex-col gap-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { className: "text-[12px] font-medium text-white", children: inspected.name }), _jsx("span", { className: "text-[9px] text-white/25", children: inspected.provider })] }), _jsx("p", { className: "text-[10px] text-white/30 mt-1", children: inspected.description })] }), _jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("span", { className: "text-[9px] text-white/25 uppercase tracking-wider font-medium", children: "Benchmarks" }), inspected.benchmarks.map((b) => (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-1", children: [_jsx("span", { className: "text-[10px] text-white/40", children: b.label }), _jsx("span", { className: "text-[10px] text-white/50 font-medium", children: b.score })] }), _jsx("div", { className: "h-1 rounded-full bg-white/[0.06] overflow-hidden", children: _jsx("div", { className: "h-full rounded-full bg-white/20 transition-all duration-500", style: { width: `${(b.score / b.max) * 100}%` } }) })] }, b.label)))] }), _jsxs("div", { className: "flex flex-col gap-2 pt-2 border-t border-white/[0.06]", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Context" }), _jsx("span", { className: "text-[10px] text-white/50", children: inspected.context })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Pricing" }), _jsx("span", { className: "text-[10px] text-white/50", children: inspected.pricing })] })] })] })), modelSource === 'local' && selectedLocal && (_jsxs("div", { className: "rounded-lg border border-white/[0.06] bg-white/[0.02] p-4 flex flex-col gap-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { className: "text-[12px] font-medium text-white", children: selectedLocal.name }), _jsx("span", { className: "text-[9px] text-white/25", children: selectedLocal.tag })] }), _jsx("p", { className: "text-[10px] text-white/30 mt-1", children: "Local model via xeno-rt" })] }), _jsxs("div", { className: "flex flex-col gap-2 pt-2 border-t border-white/[0.06]", children: [selectedLocal.family && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Family" }), _jsx("span", { className: "text-[10px] text-white/50", children: selectedLocal.family })] })), selectedLocal.parameterSize && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Parameters" }), _jsx("span", { className: "text-[10px] text-white/50", children: selectedLocal.parameterSize })] })), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Size" }), _jsx("span", { className: "text-[10px] text-white/50", children: formatSize(selectedLocal.size) })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] text-white/30", children: "Pricing" }), _jsx("span", { className: "text-[10px] text-green-400/60", children: "Free (local)" })] })] })] }))] }));
91
+ // =============================================================================
92
+ // STAGE 2 — MODEL SELECTION
93
+ // =============================================================================
94
+ export function StageModel({ model, setModel, modelSource, models, loading, error, onRefresh }) {
95
+ const [acpProvider, setAcpProvider] = useState(() => models.find(entry => onboardingModelKey(entry) === model)?.acpAgentConfigId ?? '');
96
+ const sourceModels = models.filter(entry => entry.source === modelSource);
97
+ const providers = [...new Map(sourceModels.filter(entry => entry.acpAgentConfigId).map(entry => [entry.acpAgentConfigId, entry.provider])).entries()];
98
+ const visible = sourceModels.filter(entry => modelSource !== 'acp' || entry.acpAgentConfigId === acpProvider);
99
+ return (_jsxs("div", { className: "space-y-3", "aria-busy": loading, children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("p", { className: "text-[11px] text-white/45", children: "Available models reported by the connected host." }), _jsx("button", { type: "button", onClick: onRefresh, disabled: loading, className: "text-[11px] text-white/65 disabled:opacity-40", children: "Refresh models" })] }), loading && _jsx("p", { role: "status", children: "Loading available models..." }), error && _jsx("p", { role: "alert", className: "text-[11px] text-amber-300", children: error }), modelSource === 'acp' && _jsxs("label", { className: "block text-[11px] text-white/65", children: ["ACP provider", _jsxs("select", { "aria-label": "ACP provider", value: acpProvider, disabled: loading, onChange: event => { setAcpProvider(event.target.value); setModel(''); }, className: "mt-1 w-full rounded border border-white/10 bg-[#111114] p-2", children: [_jsx("option", { value: "", children: "Select a provider..." }), providers.map(([id, label]) => _jsx("option", { value: id, children: label }, id))] })] }), !loading && modelSource === 'acp' && providers.length > 0 && !acpProvider
100
+ ? _jsx("p", { className: "text-[12px] text-white/45", children: "Select an ACP provider to see its available models." })
101
+ : !loading && !visible.length && _jsxs("p", { className: "text-[12px] text-white/45", children: ["No available ", modelSource, " models. Check the provider connection and refresh."] }), model && !visible.some(entry => onboardingModelKey(entry) === model) && _jsx("p", { role: "alert", children: "The selected model is no longer available. Select another model." }), _jsx("div", { className: "max-h-[50vh] overflow-auto space-y-2", "aria-label": "Available models", children: visible.map(entry => (_jsxs("button", { type: "button", "aria-pressed": model === onboardingModelKey(entry), onClick: () => setModel(onboardingModelKey(entry)), className: `w-full rounded-md border p-3 text-left focus-visible:outline focus-visible:outline-2 ${model === onboardingModelKey(entry) ? 'border-white/25 bg-white/10' : 'border-white/10 bg-white/[0.02]'}`, children: [_jsx("span", { className: "block text-[12px] text-white", children: entry.name }), _jsxs("span", { className: "block text-[10px] text-white/50", children: [entry.id, " \u00B7 ", entry.provider] }), _jsx("span", { className: "block text-[10px] text-white/40", children: entry.contextWindowTokens ? `Context: ${entry.contextWindowTokens.toLocaleString()} tokens` : 'Context not reported' })] }, onboardingModelKey(entry)))) }), _jsx("p", { className: "text-[10px] text-white/35", children: "Pricing and benchmark measurements are not supplied by this catalog." })] }));
254
102
  }
255
103
  function Dropdown({ label, value, options, onChange, customName, onCustomNameChange, }) {
256
104
  const [open, setOpen] = useState(false);
@@ -282,9 +130,9 @@ function Dropdown({ label, value, options, onChange, customName, onCustomNameCha
282
130
  // =============================================================================
283
131
  // STAGE 3 — PLACEMENT & REVIEW
284
132
  // =============================================================================
285
- function StagePlacement({ workspace, setWorkspace, team, setTeam, agentName, template, model, workspaces, workspaceName, setWorkspaceName, teamName, setTeamName, }) {
133
+ function StagePlacement({ workspace, setWorkspace, team, setTeam, agentName, template, model, models, workspaces, workspaceName, setWorkspaceName, teamName, setTeamName, }) {
286
134
  const templateData = templates.find(t => t.id === template);
287
- const modelData = models.find(m => m.id === model);
135
+ const modelData = models.find(m => onboardingModelKey(m) === model);
288
136
  const modelDisplay = modelData
289
137
  ? { name: modelData.name, sub: modelData.provider }
290
138
  : model.startsWith('local:')
@@ -343,14 +191,20 @@ function ProgressSteps({ current }) {
343
191
  // =============================================================================
344
192
  // MAIN ONBOARDING COMPONENT
345
193
  // =============================================================================
346
- export function AgentOnboarding({ onComplete, workspaces }) {
194
+ export function AgentOnboarding({ onComplete, onCreated, workspaces }) {
347
195
  const [stage, setStage] = useState(1);
196
+ const mounted = useRef(false);
197
+ const deploying = useRef(false);
198
+ const submitted = useRef(null);
199
+ const [awaitingSave, setAwaitingSave] = useState(false);
200
+ useEffect(() => { mounted.current = true; return () => { mounted.current = false; }; }, []);
348
201
  // Stage 1
349
202
  const [template, setTemplate] = useState(null);
350
203
  const [name, setName] = useState('');
351
204
  const [customInstructions, setCustomInstructions] = useState('');
352
205
  // Stage 2
353
- const [model, setModel] = useState('claude-opus-4-6');
206
+ const [model, setModel] = useState('');
207
+ const { models, loading: modelsLoading, errors: modelErrors, refresh: refreshModels } = useOnboardingModels();
354
208
  const [modelSource, setModelSource] = useState('cloud');
355
209
  // Stage 3
356
210
  const [workspace, setWorkspace] = useState('');
@@ -361,16 +215,19 @@ export function AgentOnboarding({ onComplete, workspaces }) {
361
215
  const [deployStatus, setDeployStatus] = useState('');
362
216
  const [deployError, setDeployError] = useState(null);
363
217
  const canAdvance = () => {
218
+ if (submitted.current)
219
+ return stage === 3;
364
220
  if (stage === 1)
365
221
  return template !== null && name.trim().length > 0;
366
222
  if (stage === 2)
367
- return model.length > 0;
223
+ return !modelsLoading && models.some(entry => onboardingModelKey(entry) === model && entry.source === modelSource);
368
224
  if (stage === 3)
369
- return true;
225
+ return !modelsLoading && models.some(entry => onboardingModelKey(entry) === model && entry.source === modelSource)
226
+ && validateOnboardingPlacement(workspaces, workspace, team, workspaceName, teamName);
370
227
  return false;
371
228
  };
372
229
  const handleNext = async () => {
373
- if (isDeploying)
230
+ if (deploying.current || !canAdvance())
374
231
  return;
375
232
  if (stage < 3) {
376
233
  setDeployError(null);
@@ -378,46 +235,81 @@ export function AgentOnboarding({ onComplete, workspaces }) {
378
235
  }
379
236
  else {
380
237
  setDeployError(null);
381
- if (model.startsWith('local:')) {
382
- setIsDeploying(true);
383
- setDeployStatus('Preparing local model...');
384
- try {
385
- if (!getAgentPlatformBridge()?.llm?.localWarmup) {
386
- setDeployError('Local model warmup bridge is unavailable. Restart the app and try again.');
387
- return;
238
+ deploying.current = true;
239
+ setIsDeploying(true);
240
+ try {
241
+ if (submitted.current) {
242
+ setDeployStatus('Retrying workspace save...');
243
+ const agentId = await onComplete(submitted.current);
244
+ if (mounted.current)
245
+ onCreated(agentId);
246
+ return;
247
+ }
248
+ const currentModels = await refreshModels(true);
249
+ if (!mounted.current)
250
+ return;
251
+ const selectedModel = currentModels.find(entry => onboardingModelKey(entry) === model && entry.source === modelSource);
252
+ if (!selectedModel) {
253
+ setDeployError('The selected model is no longer available. Return to Model and choose an available model.');
254
+ return;
255
+ }
256
+ if (modelSource === 'local') {
257
+ setDeployStatus('Preparing local model...');
258
+ try {
259
+ if (!getAuxiliaryInferenceBridge()?.localWarmup) {
260
+ setDeployError('Local model warmup bridge is unavailable. Restart the app and try again.');
261
+ return;
262
+ }
263
+ const warmup = await getAuxiliaryInferenceBridge().localWarmup({ model: selectedModel.id, timeoutMs: 120000 });
264
+ if (!mounted.current)
265
+ return;
266
+ if (!warmup.success) {
267
+ setDeployError(warmup.error || 'Failed to warm up local model.');
268
+ return;
269
+ }
270
+ setDeployStatus('Local model ready. Finalizing deployment...');
388
271
  }
389
- const warmup = await getAgentPlatformBridge().llm.localWarmup({ model, timeoutMs: 120000 });
390
- if (!warmup.success) {
391
- setDeployError(warmup.error || 'Failed to warm up local model.');
272
+ catch (err) {
273
+ setDeployError(err instanceof Error ? err.message : 'Failed to warm up local model.');
392
274
  return;
393
275
  }
394
- setDeployStatus('Local model ready. Finalizing deployment...');
395
276
  }
396
- catch (err) {
397
- setDeployError(err instanceof Error ? err.message : 'Failed to warm up local model.');
398
- return;
277
+ const submission = { submissionId: crypto.randomUUID(), name, template: template || 'custom', customInstructions: customInstructions || templates.find(t => t.id === template)?.preview || '', model: selectedModel.id, runtimeSelection: onboardingRuntimeSelection(selectedModel), workspace, team, workspaceName: workspaceName || undefined, teamName: teamName || undefined };
278
+ submitted.current = submission;
279
+ setAwaitingSave(true);
280
+ setDeployStatus('Saving agent and placement...');
281
+ const agentId = await onComplete(submission);
282
+ if (mounted.current)
283
+ onCreated(agentId);
284
+ }
285
+ catch (error) {
286
+ if (error instanceof WorkspaceCreationError && !error.pendingCreation) {
287
+ submitted.current = null;
288
+ if (mounted.current)
289
+ setAwaitingSave(false);
399
290
  }
400
- finally {
291
+ if (mounted.current)
292
+ setDeployError(error instanceof Error ? error.message : 'Agent deployment failed.');
293
+ }
294
+ finally {
295
+ deploying.current = false;
296
+ if (mounted.current)
401
297
  setIsDeploying(false);
402
- }
403
298
  }
404
- onComplete({ name, template: template || 'custom', customInstructions: customInstructions || templates.find(t => t.id === template)?.preview || '', model, workspace, team, workspaceName: workspaceName || undefined, teamName: teamName || undefined });
405
299
  }
406
300
  };
407
301
  const handleBack = () => {
408
- if (isDeploying)
302
+ if (isDeploying || awaitingSave)
409
303
  return;
410
304
  if (stage > 1)
411
305
  setStage(stage - 1);
412
306
  };
413
- return (_jsxs("div", { className: "flex-1 flex flex-col bg-[#0a0a0c]", children: [_jsx("div", { className: "flex-1 flex items-start justify-center overflow-auto pt-[12vh] pb-16", children: _jsxs("div", { className: `w-full transition-all duration-500 ease-out ${stage === 2 ? 'px-3 max-w-[860px]' : stage === 3 ? 'px-6 max-w-[560px]' : 'px-6 max-w-[720px]'}`, children: [_jsxs("div", { className: "mb-8 text-center", children: [_jsxs("h1", { className: "stage-enter-header text-[20px] font-semibold text-white tracking-tight", children: [stage === 1 && 'Purpose & Identity', stage === 2 && 'Select Model', stage === 3 && 'Placement & Review'] }), _jsxs("p", { className: "stage-enter-header text-[12px] text-white/35 mt-1", style: { animationDelay: '60ms' }, children: [stage === 1 && 'Choose a template or describe your own agent', stage === 2 && 'Pick the AI model that powers your agent', stage === 3 && 'Place your agent and confirm setup'] }), stage === 2 && (_jsxs("div", { className: "stage-enter-item flex items-center justify-center gap-1 mt-4", style: { animationDelay: '90ms' }, children: [_jsx("button", { onClick: () => { setModelSource('cloud'); if (model.startsWith('local:'))
414
- setModel('claude-opus-4-6'); }, className: `px-4 py-1.5 rounded-l-md text-[11px] font-medium transition-all ${modelSource === 'cloud'
307
+ return (_jsxs("div", { className: "flex-1 flex flex-col bg-[#0a0a0c]", children: [_jsx("div", { className: "flex-1 flex items-start justify-center overflow-auto pt-[12vh] pb-16", children: _jsxs("div", { className: `w-full transition-all duration-500 ease-out ${stage === 2 ? 'px-3 max-w-[860px]' : stage === 3 ? 'px-6 max-w-[560px]' : 'px-6 max-w-[720px]'}`, children: [_jsxs("div", { className: "mb-8 text-center", children: [_jsxs("h1", { className: "stage-enter-header text-[20px] font-semibold text-white tracking-tight", children: [stage === 1 && 'Purpose & Identity', stage === 2 && 'Select Model', stage === 3 && 'Placement & Review'] }), _jsxs("p", { className: "stage-enter-header text-[12px] text-white/35 mt-1", style: { animationDelay: '60ms' }, children: [stage === 1 && 'Choose a template or describe your own agent', stage === 2 && 'Pick the AI model that powers your agent', stage === 3 && 'Place your agent and confirm setup'] }), stage === 2 && (_jsxs("div", { className: "stage-enter-item flex items-center justify-center gap-1 mt-4", style: { animationDelay: '90ms' }, children: [_jsx("button", { onClick: () => { setModelSource('cloud'); setModel(''); }, className: `px-4 py-1.5 rounded-l-md text-[11px] font-medium transition-all ${modelSource === 'cloud'
415
308
  ? 'bg-white/[0.12] text-white'
416
- : 'bg-white/[0.03] text-white/30 hover:text-white/50'}`, children: "Cloud" }), _jsx("button", { onClick: () => { setModelSource('local'); if (!model.startsWith('local:'))
417
- setModel(''); }, className: `px-4 py-1.5 rounded-r-md text-[11px] font-medium transition-all ${modelSource === 'local'
309
+ : 'bg-white/[0.03] text-white/30 hover:text-white/50'}`, children: "Cloud" }), _jsx("button", { onClick: () => { setModelSource('local'); setModel(''); }, className: `px-4 py-1.5 rounded-r-md text-[11px] font-medium transition-all ${modelSource === 'local'
418
310
  ? 'bg-white/[0.12] text-white'
419
- : 'bg-white/[0.03] text-white/30 hover:text-white/50'}`, children: "Local" })] })), stage === 1 && (_jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Agent name...", className: "stage-enter-item mt-5 w-full max-w-[320px] mx-auto px-3 py-2.5 bg-black/30 border border-white/[0.08] rounded-md text-white text-[13px] text-center placeholder-white/20 focus:outline-none focus:border-white/[0.15] transition-colors", style: { animationDelay: '120ms' } }))] }, `header-${stage}`), _jsxs("div", { className: "stage-enter-item", style: { animationDelay: '150ms' }, children: [stage === 1 && (_jsx(StageIdentity, { template: template, setTemplate: setTemplate, customInstructions: customInstructions, setCustomInstructions: setCustomInstructions })), stage === 2 && (_jsx(StageModel, { model: model, setModel: setModel, modelSource: modelSource })), stage === 3 && (_jsx(StagePlacement, { workspace: workspace, setWorkspace: setWorkspace, team: team, setTeam: setTeam, agentName: name, template: template, model: model, workspaces: workspaces, workspaceName: workspaceName, setWorkspaceName: setWorkspaceName, teamName: teamName, setTeamName: setTeamName }))] }, `content-${stage}`)] }) }), _jsxs("footer", { className: "h-[48px] border-t border-white/[0.06] bg-[#09090b] flex items-center px-5", children: [_jsx("div", { className: "flex-1 flex justify-start", children: stage > 1 ? (_jsxs("button", { onClick: handleBack, className: "flex items-center gap-1.5 px-3 py-1.5 text-white/40 hover:text-white/70 text-[12px] transition-colors", children: [_jsx(ArrowLeft, { className: "w-3.5 h-3.5" }), "Back"] })) : (_jsx("div", {})) }), _jsx("div", { className: "flex-1 flex justify-center", children: _jsx(ProgressSteps, { current: stage }) }), _jsxs("div", { className: "flex-1 flex justify-end", children: [stage === 3 && (isDeploying || deployError) && (_jsx("div", { className: "mr-3 flex items-center", children: isDeploying ? (_jsx("span", { className: "text-[11px] text-white/40", children: deployStatus || 'Preparing local model...' })) : deployError ? (_jsx("span", { className: "text-[11px] text-red-400/80", children: deployError })) : null })), _jsx("button", { onClick: () => { void handleNext(); }, disabled: !canAdvance() || isDeploying, className: `flex items-center gap-2 px-5 py-2 rounded-md text-[12px] font-semibold transition-all ${stage === 3
311
+ : 'bg-white/[0.03] text-white/30 hover:text-white/50'}`, children: "Local" }), _jsx("button", { onClick: () => { setModelSource('acp'); setModel(''); }, className: `px-4 py-1.5 rounded-md text-[11px] font-medium ${modelSource === 'acp' ? 'bg-white/[0.12] text-white' : 'bg-white/[0.03] text-white/30'}`, children: "ACP" })] })), stage === 1 && (_jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Agent name...", className: "stage-enter-item mt-5 w-full max-w-[320px] mx-auto px-3 py-2.5 bg-black/30 border border-white/[0.08] rounded-md text-white text-[13px] text-center placeholder-white/20 focus:outline-none focus:border-white/[0.15] transition-colors", style: { animationDelay: '120ms' } }))] }, `header-${stage}`), _jsxs("fieldset", { disabled: isDeploying || awaitingSave, className: "min-w-0 stage-enter-item", style: { animationDelay: '150ms' }, children: [stage === 1 && (_jsx(StageIdentity, { template: template, setTemplate: setTemplate, customInstructions: customInstructions, setCustomInstructions: setCustomInstructions, models: models })), stage === 2 && (_jsx(StageModel, { model: model, setModel: setModel, modelSource: modelSource, models: models, loading: modelsLoading, error: modelErrors[modelSource], onRefresh: () => { void refreshModels(true); } })), stage === 3 && (_jsx(StagePlacement, { workspace: workspace, setWorkspace: setWorkspace, team: team, setTeam: setTeam, agentName: name, template: template, model: model, models: models, workspaces: workspaces, workspaceName: workspaceName, setWorkspaceName: setWorkspaceName, teamName: teamName, setTeamName: setTeamName }))] }, `content-${stage}`)] }) }), _jsxs("footer", { className: "h-[48px] border-t border-white/[0.06] bg-[#09090b] flex items-center px-5", children: [_jsx("div", { className: "flex-1 flex justify-start", children: stage > 1 ? (_jsxs("button", { onClick: handleBack, disabled: isDeploying || awaitingSave, className: "flex items-center gap-1.5 px-3 py-1.5 text-white/40 hover:text-white/70 text-[12px] transition-colors", children: [_jsx(ArrowLeft, { className: "w-3.5 h-3.5" }), "Back"] })) : (_jsx("div", {})) }), _jsx("div", { className: "flex-1 flex justify-center", children: _jsx(ProgressSteps, { current: stage }) }), _jsxs("div", { className: "flex-1 flex justify-end", children: [stage === 3 && (isDeploying || deployError) && (_jsx("div", { className: "mr-3 flex items-center", children: isDeploying ? (_jsx("span", { className: "text-[11px] text-white/40", children: deployStatus || 'Verifying available model...' })) : deployError ? (_jsxs("span", { role: "alert", className: "text-[11px] text-red-400/80", children: [deployError, awaitingSave ? ' Retry saves this same agent.' : ''] })) : null })), _jsx("button", { onClick: () => { void handleNext(); }, disabled: !canAdvance() || isDeploying, className: `flex items-center gap-2 px-5 py-2 rounded-md text-[12px] font-semibold transition-all ${stage === 3
420
312
  ? 'bg-white text-black hover:bg-white/90 disabled:bg-white/[0.08] disabled:text-white/25'
421
- : 'bg-white/[0.1] text-white hover:bg-white/[0.15] disabled:bg-white/[0.04] disabled:text-white/20'}`, children: stage === 3 ? (_jsxs(_Fragment, { children: [isDeploying ? 'Preparing Local Model...' : 'Deploy Agent', _jsx(Rocket, { className: "w-3.5 h-3.5" })] })) : (_jsxs(_Fragment, { children: ["Next", _jsx(ArrowRight, { className: "w-3.5 h-3.5" })] })) })] })] })] }));
313
+ : 'bg-white/[0.1] text-white hover:bg-white/[0.15] disabled:bg-white/[0.04] disabled:text-white/20'}`, children: stage === 3 ? (_jsxs(_Fragment, { children: [isDeploying ? 'Preparing agent...' : awaitingSave ? 'Retry saving agent' : 'Deploy Agent', _jsx(Rocket, { className: "w-3.5 h-3.5" })] })) : (_jsxs(_Fragment, { children: ["Next", _jsx(ArrowRight, { className: "w-3.5 h-3.5" })] })) })] })] })] }));
422
314
  }
423
315
  //# sourceMappingURL=AgentOnboarding.js.map