@xenosystem/agent-interface-ui 0.1.24 → 0.1.26

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 +344 -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,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+ import { isAgentAuditResult } from '@xenosystem/agent-interface-contract';
4
+ import { getAgentPlatformBridge } from '../../../../platformBridge.js';
5
+ /** Key this component by the exact selected entity so old completions cannot cross scopes. */
6
+ export function ScopedAuditPanel({ entityType, entityId }) {
7
+ const [entries, setEntries] = useState([]);
8
+ const [cursor, setCursor] = useState(null);
9
+ const [error, setError] = useState('');
10
+ const [busy, setBusy] = useState(false);
11
+ const [loaded, setLoaded] = useState(false);
12
+ const active = useRef(false);
13
+ const generation = useRef(0);
14
+ const pending = useRef(false);
15
+ const request = async (operation, more = false) => {
16
+ if (pending.current)
17
+ return;
18
+ pending.current = true;
19
+ const attempt = ++generation.current;
20
+ setBusy(true);
21
+ setError('');
22
+ try {
23
+ const api = getAgentPlatformBridge().audit?.snapshot;
24
+ if (!api)
25
+ throw new Error('Scoped runtime audit is unavailable on this host.');
26
+ const result = await api({ entityType, entityId, operation, ...(operation === 'list' ? { limit: 50 } : {}), ...(more && cursor ? { before: cursor } : {}) });
27
+ if (!active.current || generation.current !== attempt)
28
+ return;
29
+ if (!isAgentAuditResult(result))
30
+ throw new Error('The host returned invalid audit evidence.');
31
+ if (!result.success)
32
+ throw new Error(result.error);
33
+ if (operation === 'export') {
34
+ if (!result.complete || result.nextCursor)
35
+ throw new Error('The host did not provide a complete audit export.');
36
+ const url = URL.createObjectURL(new Blob([JSON.stringify({ entityType, entityId, ...result }, null, 2)], { type: 'application/json' }));
37
+ const link = document.createElement('a');
38
+ link.href = url;
39
+ link.download = 'xeno-scoped-runtime-audit.json';
40
+ link.click();
41
+ setTimeout(() => URL.revokeObjectURL(url), 1000);
42
+ }
43
+ else {
44
+ // Keep one bounded page mounted. Long histories must not grow the DOM
45
+ // on every click; Refresh returns to the newest page.
46
+ setEntries(result.entries);
47
+ setCursor(result.nextCursor);
48
+ setLoaded(true);
49
+ }
50
+ }
51
+ catch (e) {
52
+ if (active.current && generation.current === attempt)
53
+ setError(e instanceof Error ? e.message : 'Unable to load audit evidence.');
54
+ }
55
+ finally {
56
+ if (active.current && generation.current === attempt) {
57
+ pending.current = false;
58
+ setBusy(false);
59
+ }
60
+ }
61
+ };
62
+ useEffect(() => {
63
+ active.current = true;
64
+ pending.current = false;
65
+ void request('list');
66
+ return () => { active.current = false; generation.current++; };
67
+ }, []);
68
+ return _jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-[11px] text-white/50", children: "Persisted runtime events for this entity. This is not an account sign-in audit; prompts, tool arguments and outputs are excluded." }), _jsxs("div", { className: "flex gap-3 text-[11px]", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => void request('list'), children: "Refresh audit" }), _jsx("button", { type: "button", disabled: busy || !loaded, onClick: () => void request('export'), children: "Export runtime audit" })] }), busy && _jsx("p", { role: "status", children: "Loading audit evidence\u2026" }), error && _jsx("p", { role: "alert", className: "text-rose-400 text-[11px]", children: error }), loaded && !entries.length && !error && _jsx("p", { className: "text-[11px] text-white/50", children: "No scoped runtime events recorded." }), _jsx("div", { className: "max-h-80 overflow-auto", children: entries.map(entry => _jsxs("div", { className: "border-b border-white/5 py-2 text-[11px]", children: [_jsx("div", { className: "text-white break-words", children: entry.action }), _jsx("time", { className: "text-white/50", children: entry.timestamp }), _jsxs("div", { className: "text-white/50 break-all", children: [entry.actor, " \u00B7 ", entry.target, " \u00B7 ", entry.details] })] }, entry.id)) }), cursor && _jsx("button", { type: "button", disabled: busy, className: "text-[11px]", onClick: () => void request('list', true), children: "Load older events" })] });
69
+ }
70
+ //# sourceMappingURL=ScopedAuditPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopedAuditPanel.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/ScopedAuditPanel.tsx"],"names":[],"mappings":"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"}
@@ -4,8 +4,9 @@ interface SettingsCardProps {
4
4
  children: React.ReactNode;
5
5
  variant?: 'default' | 'danger';
6
6
  headerRight?: React.ReactNode;
7
+ footerRight?: React.ReactNode;
7
8
  className?: string;
8
9
  }
9
- export declare function SettingsCard({ title, children, variant, headerRight, className }: SettingsCardProps): React.JSX.Element;
10
+ export declare function SettingsCard({ title, children, variant, headerRight, footerRight, className, }: SettingsCardProps): React.JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=SettingsCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/SettingsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAmB,EAAE,WAAW,EAAE,SAAc,EAAE,EAAE,iBAAiB,qBAYpH"}
1
+ {"version":3,"file":"SettingsCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/SettingsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAmB,EACnB,WAAW,EACX,WAAW,EACX,SAAc,GACf,EAAE,iBAAiB,qBA2CnB"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- export function SettingsCard({ title, children, variant = 'default', headerRight, className = '' }) {
3
+ export function SettingsCard({ title, children, variant = 'default', headerRight, footerRight, className = '', }) {
4
4
  const isDanger = variant === 'danger';
5
5
  const isFlex = className.includes('flex');
6
- return (_jsxs("div", { className: `rounded border ${isDanger ? 'border-red-500/20 bg-red-500/[0.02]' : 'border-[#27272a] bg-[#18181b]'} ${isFlex ? 'min-h-0' : ''} ${className}`, children: [_jsxs("div", { className: `px-3 py-1.5 border-b ${isDanger ? 'border-red-500/20' : 'border-[#27272a]'} flex items-center justify-between flex-shrink-0`, children: [_jsx("h2", { className: `text-[9px] font-semibold uppercase tracking-wider ${isDanger ? 'text-red-400/70' : 'text-white/50'}`, children: title }), headerRight] }), _jsx("div", { className: `p-3 ${isFlex ? 'flex-1 flex flex-col min-h-0' : ''}`, children: children })] }));
6
+ return (_jsxs("div", { className: `group flex flex-col bg-[#08080a] border ${isDanger ? 'border-rose-500/25 hover:border-rose-500/40' : 'border-white/[0.06] hover:border-white/[0.14]'} rounded-[6px] p-1 gap-[2px] transition-all duration-150 ${isFlex ? 'min-h-0' : ''} ${className}`, children: [_jsxs("div", { className: `rounded-t-[4px] px-3 py-1.5 flex items-center justify-between flex-shrink-0 ${isDanger ? 'bg-rose-950/20 text-rose-300' : 'bg-[#18181a]'}`, children: [_jsx("h2", { className: `text-[9.5px] font-semibold uppercase tracking-[0.12em] ${isDanger ? 'text-rose-400/90' : 'text-[#7f7f86]'}`, children: title }), headerRight] }), _jsx("div", { className: `bg-[#111113] px-3 py-2.5 ${isFlex ? 'flex-1 flex flex-col min-h-0' : ''} ${!footerRight ? 'rounded-b-[4px]' : ''}`, children: children }), footerRight && (_jsx("div", { className: "bg-[#161618] rounded-b-[4px] px-3 py-1.5 flex items-center justify-end flex-shrink-0", children: footerRight }))] }));
7
7
  }
8
8
  //# sourceMappingURL=SettingsCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCard.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/SettingsCard.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,WAAW,EAAE,SAAS,GAAG,EAAE,EAAqB;IACnH,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,CAAA;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,CACL,eAAK,SAAS,EAAE,kBAAkB,QAAQ,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,+BAA+B,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,aAC5J,eAAK,SAAS,EAAE,wBAAwB,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,kDAAkD,aAC3I,aAAI,SAAS,EAAE,qDAAqD,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,EAAE,YAAG,KAAK,GAAM,EACjI,WAAW,IACR,EACN,cAAK,SAAS,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,EAAE,YAAG,QAAQ,GAAO,IACnF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SettingsCard.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/SettingsCard.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,WAAW,EACX,WAAW,EACX,SAAS,GAAG,EAAE,GACI;IAClB,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,CAAA;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEzC,OAAO,CACL,eACE,SAAS,EAAE,2CACT,QAAQ,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,+CAC7D,4DAA4D,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,aAGlG,eACE,SAAS,EAAE,+EACT,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,cAC9C,EAAE,aAEF,aACE,SAAS,EAAE,0DACT,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAClC,EAAE,YAED,KAAK,GACH,EACJ,WAAW,IACR,EAGN,cACE,SAAS,EAAE,4BACT,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAC5C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,YAE1C,QAAQ,GACL,EAGL,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,sFAAsF,YAClG,WAAW,GACR,CACP,IACG,CACP,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/ToggleSwitch.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAgB,EAAE,EAAE,iBAAiB,+BAmBtF"}
1
+ {"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/ToggleSwitch.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAgB,EAAE,EAAE,iBAAiB,+BAsBtF"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { clsx } from 'clsx';
3
3
  export function ToggleSwitch({ enabled, onChange, disabled = false }) {
4
- return (_jsx("button", { onClick: () => !disabled && onChange(!enabled), disabled: disabled, className: clsx('relative w-10 h-5 rounded transition-colors duration-150 flex-shrink-0', enabled ? 'bg-white' : 'bg-white/[0.1]', disabled && 'opacity-40 cursor-not-allowed'), children: _jsx("span", { className: clsx('absolute top-0.5 left-0.5 w-4 h-4 transition-all duration-150', enabled ? 'translate-x-5 bg-[#08080a] rounded' : 'translate-x-0 bg-white/50 rounded-sm') }) }));
4
+ return (_jsx("button", { type: "button", role: "switch", "aria-checked": enabled, onClick: () => !disabled && onChange(!enabled), disabled: disabled, className: clsx('relative w-10 h-5 rounded transition-colors duration-150 flex-shrink-0', enabled ? 'bg-white' : 'bg-white/[0.1]', disabled && 'opacity-40 cursor-not-allowed'), children: _jsx("span", { className: clsx('absolute top-0.5 left-0.5 w-4 h-4 transition-all duration-150', enabled ? 'translate-x-5 bg-[#08080a] rounded' : 'translate-x-0 bg-white/50 rounded-sm') }) }));
5
5
  }
6
6
  //# sourceMappingURL=ToggleSwitch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleSwitch.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/ToggleSwitch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAQ3B,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAqB;IACrF,OAAO,CACL,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,CACb,wEAAwE,EACxE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,EACvC,QAAQ,IAAI,+BAA+B,CAC5C,YAED,eACE,SAAS,EAAE,IAAI,CACb,+DAA+D,EAC/D,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,sCAAsC,CACxF,GACD,GACK,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ToggleSwitch.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/ToggleSwitch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAQ3B,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAqB;IACrF,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,CACb,wEAAwE,EACxE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,EACvC,QAAQ,IAAI,+BAA+B,CAC5C,YAED,eACE,SAAS,EAAE,IAAI,CACb,+DAA+D,EAC/D,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,sCAAsC,CACxF,GACD,GACK,CACV,CAAA;AACH,CAAC"}
@@ -7,6 +7,16 @@ interface UsageChartProps {
7
7
  height?: number;
8
8
  color?: string;
9
9
  }
10
+ export declare function usageChartPage(data: UsageChartProps['data'], olderPage: number): {
11
+ entries: {
12
+ label: string;
13
+ value: number;
14
+ }[];
15
+ start: number;
16
+ end: number;
17
+ page: number;
18
+ pageCount: number;
19
+ };
10
20
  export declare function UsageChart({ data, height, color }: UsageChartProps): React.JSX.Element | null;
11
21
  export {};
12
22
  //# sourceMappingURL=UsageChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UsageChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/UsageChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,UAAU,eAAe;IACvB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAY,EAAE,KAAgC,EAAE,EAAE,eAAe,4BAyBnG"}
1
+ {"version":3,"file":"UsageChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/UsageChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,UAAU,eAAe;IACvB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM;;eAL9D,MAAM;eAAS,MAAM;;;;;;EAWrC;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAY,EAAE,KAAgC,EAAE,EAAE,eAAe,4BAiCnG"}
@@ -1,16 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
2
+ import React, { useState } from 'react';
3
+ export function usageChartPage(data, olderPage) {
4
+ const pageCount = Math.max(1, Math.ceil(data.length / 30));
5
+ const page = Math.max(0, Math.min(Number.isSafeInteger(olderPage) ? olderPage : 0, pageCount - 1));
6
+ const end = data.length - page * 30;
7
+ const start = Math.max(0, end - 30);
8
+ return { entries: data.slice(start, end), start, end, page, pageCount };
9
+ }
3
10
  export function UsageChart({ data, height = 120, color = 'rgba(255,255,255,0.35)' }) {
11
+ const [olderPage, setOlderPage] = useState(0);
4
12
  if (data.length === 0)
5
13
  return null;
6
- const max = Math.max(...data.map(d => d.value), 1);
7
- const barWidth = Math.max(20, Math.floor((100 / data.length) * 0.6));
8
- const gap = Math.floor((100 / data.length) * 0.4);
9
- return (_jsx("div", { className: "w-full", children: _jsx("svg", { width: "100%", height: height, viewBox: `0 0 ${data.length * (barWidth + gap)} ${height}`, preserveAspectRatio: "none", children: data.map((d, i) => {
10
- const barH = (d.value / max) * (height - 24);
11
- const x = i * (barWidth + gap);
12
- const y = height - barH - 16;
13
- return (_jsxs("g", { children: [_jsx("rect", { x: x, y: y, width: barWidth, height: barH, rx: 3, fill: color, opacity: 0.6 + (d.value / max) * 0.4 }), _jsx("text", { x: x + barWidth / 2, y: height - 2, textAnchor: "middle", fill: "rgba(255,255,255,0.3)", fontSize: "9", fontFamily: "system-ui", children: d.label })] }, i));
14
- }) }) }));
14
+ const { entries, start, end, page, pageCount } = usageChartPage(data, olderPage);
15
+ const max = Math.max(...entries.map(d => Number.isFinite(d.value) && d.value >= 0 ? d.value : 0), 1);
16
+ const plotHeight = Math.max(48, height - 28);
17
+ return (_jsxs("div", { className: "w-full min-w-0", children: [_jsx("div", { className: "overflow-x-auto", role: "group", "aria-label": "Recorded token usage chart", children: _jsx("div", { className: "flex items-end gap-3", style: { height, minWidth: entries.length * 86 }, children: entries.map((d, i) => {
18
+ const value = Number.isFinite(d.value) && d.value >= 0 ? d.value : 0;
19
+ return (_jsxs("div", { className: "flex flex-1 min-w-[74px] flex-col items-center justify-end gap-1", style: { height }, children: [_jsx("div", { className: "flex items-end justify-center w-full", style: { height: plotHeight }, children: _jsx("div", { role: "img", "aria-label": `${d.label}: ${value.toLocaleString()} tokens`, title: `${d.label}: ${value.toLocaleString()} tokens`, style: { width: 40, maxWidth: '75%', height: (value / max) * plotHeight, backgroundColor: color, borderRadius: '3px 3px 0 0' } }) }), _jsx("span", { className: "text-[9px] whitespace-nowrap text-[#7f7f86]", children: d.label })] }, `${start + i}:${d.label}`));
20
+ }) }) }), pageCount > 1 && (_jsxs("div", { className: "flex items-center justify-between gap-2 mt-2 text-[10px] text-[#7f7f86]", children: [_jsx("button", { type: "button", className: "disabled:opacity-40", disabled: page >= pageCount - 1, onClick: () => setOlderPage(page + 1), children: "Earlier periods" }), _jsxs("span", { role: "status", children: [start + 1, "\u2013", end, " of ", data.length] }), _jsx("button", { type: "button", className: "disabled:opacity-40", disabled: page === 0, onClick: () => setOlderPage(page - 1), children: "Later periods" })] }))] }));
15
21
  }
16
22
  //# sourceMappingURL=UsageChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UsageChart.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/UsageChart.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,wBAAwB,EAAmB;IAClG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;IAEjD,OAAO,CACL,cAAK,SAAS,EAAC,QAAQ,YACrB,cAAK,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE,EAAE,mBAAmB,EAAC,MAAM,YACrH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;gBAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAA;gBAC9B,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;gBAC5B,OAAO,CACL,wBACE,eAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,GAAI,EAC7G,eAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAC,IAAI,EAAC,uBAAuB,EAAC,QAAQ,EAAC,GAAG,EAAC,UAAU,EAAC,WAAW,YAC3H,CAAC,CAAC,KAAK,GACH,KAJD,CAAC,CAKL,CACL,CAAA;YACH,CAAC,CAAC,GACE,GACF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"UsageChart.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/UsageChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export { requireRulesAcknowledgement } from './workspaceRulesController.js';
3
+ export declare function WorkspaceRulesControl({ workspaceId, inherited }: {
4
+ workspaceId: string | undefined;
5
+ inherited: boolean;
6
+ }): React.JSX.Element;
7
+ export declare function rulesValidationLabel(bytes: number | undefined, dirty: boolean): string;
8
+ //# sourceMappingURL=WorkspaceRulesControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceRulesControl.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/WorkspaceRulesControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAE3E,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,qBA2BxH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAItF"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { getAgentPlatformBridge } from '../../../../platformBridge.js';
4
+ import { WorkspaceRulesController } from './workspaceRulesController.js';
5
+ export { requireRulesAcknowledgement } from './workspaceRulesController.js';
6
+ export function WorkspaceRulesControl({ workspaceId, inherited }) {
7
+ const inputId = React.useId();
8
+ const controller = React.useMemo(() => new WorkspaceRulesController(workspaceId, inherited, input => {
9
+ const api = getAgentPlatformBridge().workspaceRules;
10
+ if (!api)
11
+ return Promise.reject(new Error('Workspace rules service is unavailable.'));
12
+ return api.request(input);
13
+ }), [workspaceId, inherited]);
14
+ const { result: state, path, dirty, busy, notice } = React.useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);
15
+ React.useEffect(() => {
16
+ void controller.run('get');
17
+ return () => controller.invalidate();
18
+ }, [controller]);
19
+ return _jsxs("div", { children: [_jsx("label", { className: "block text-[10px] font-medium text-[#7f7f86] uppercase tracking-[0.08em] mb-1", htmlFor: inputId, children: "Workspace rules override" }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("input", { id: inputId, "aria-label": "Workspace rules file", value: path, onChange: event => controller.edit(event.target.value), readOnly: inherited, disabled: busy || !state?.success, placeholder: "Default runtime rules (no XENO override)", className: "min-w-0 flex-1 h-8 px-2.5 bg-[#0c0c0e] border border-white/[0.06] rounded-[4px] text-white text-[11.5px] font-mono" }), !inherited && _jsxs(_Fragment, { children: [_jsx("button", { type: "button", disabled: busy || !state?.success || !path.trim(), onClick: () => void controller.run('set'), className: "text-xs disabled:opacity-40", children: "Apply" }), _jsx("button", { type: "button", disabled: busy || !state?.success || state.mode !== 'override', onClick: () => void controller.run('reset'), className: "text-xs disabled:opacity-40", children: "Reset" })] }), _jsx("button", { type: "button", disabled: busy || !workspaceId, onClick: () => void controller.run('get'), className: "text-xs disabled:opacity-40", children: "Reload rules" })] }), _jsxs("p", { className: "text-[10px] text-[#7f7f86] mt-1", children: [inherited ? 'Inherited from the workspace. Change this in workspace settings. ' : '', "Validated UTF-8 file, up to 64 KiB, inside granted workspace roots. SDK and supported structured ACP providers use this override. Native-TUI handoff of selected override files is not yet implemented; interactive providers retain their own AGENTS.md or CLAUDE.md discovery."] }), state?.mode === 'override' && state.valid && _jsx("p", { className: "text-[10px] text-white/50", children: rulesValidationLabel(state.bytes, dirty) }), state?.error && _jsx("p", { role: "alert", className: "text-xs text-red-200", children: state.error }), busy && _jsx("p", { role: "status", className: "text-xs text-white/60", children: "Checking workspace rules\u2026" }), notice && _jsx("p", { role: "status", className: "text-xs text-white/60", children: notice })] });
20
+ }
21
+ export function rulesValidationLabel(bytes, dirty) {
22
+ return dirty
23
+ ? `Saved selection: ${bytes ?? 'Unknown'} bytes · edited path is not validated or saved`
24
+ : `${bytes ?? 'Unknown'} bytes · validated at last check; applied turns recheck the file`;
25
+ }
26
+ //# sourceMappingURL=WorkspaceRulesControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceRulesControl.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/WorkspaceRulesControl.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAE3E,MAAM,UAAU,qBAAqB,CAAC,EAAE,WAAW,EAAE,SAAS,EAA2D;IACvH,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;QAClG,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC,cAAc,CAAA;QACnD,IAAI,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACrF,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IACrJ,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAChB,OAAO,0BACL,gBAAO,SAAS,EAAC,+EAA+E,EAAC,OAAO,EAAE,OAAO,yCAAkC,EACnJ,eAAK,SAAS,EAAC,mCAAmC,aAChD,gBAAO,EAAE,EAAE,OAAO,gBAAa,sBAAsB,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAC/K,WAAW,EAAC,0CAA0C,EAAC,SAAS,EAAC,oHAAoH,GAAG,EACzL,CAAC,SAAS,IAAI,8BAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,6BAA6B,sBAAe,EACzL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,EAAC,6BAA6B,sBAAe,IAAG,EAC9L,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,6BAA6B,6BAAsB,IAC1J,EACN,aAAG,SAAS,EAAC,iCAAiC,aAAE,SAAS,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE,wRAAqR,EACxZ,KAAK,EAAE,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,IAAI,YAAG,SAAS,EAAC,2BAA2B,YAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAK,EACpI,KAAK,EAAE,KAAK,IAAI,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,sBAAsB,YAAE,KAAK,CAAC,KAAK,GAAK,EAClF,IAAI,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,uBAAuB,+CAA8B,EACxF,MAAM,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,uBAAuB,YAAE,MAAM,GAAK,IACtE,CAAA;AACR,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAyB,EAAE,KAAc;IAC5E,OAAO,KAAK;QACV,CAAC,CAAC,oBAAoB,KAAK,IAAI,SAAS,gDAAgD;QACxF,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS,kEAAkE,CAAA;AAC7F,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ /** View-scoped consent is consumed once. The action still checks its canonical
3
+ * target at dispatch; this hook is not a replacement for host authorization. */
4
+ export declare function useScopedConfirmation(scope: unknown, selection: string): {
5
+ requestConfirmation: (title: string, description: string, confirmLabel: string, execute: () => unknown) => void;
6
+ confirmation: React.JSX.Element;
7
+ };
8
+ //# sourceMappingURL=useScopedConfirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScopedConfirmation.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/useScopedConfirmation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAKzE;gFACgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;iCAajC,MAAM,eAAe,MAAM,gBAAgB,MAAM,WAAW,MAAM,OAAO;;EAuB9G"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
3
+ import { ConfirmationController, InAppConfirmationDialog } from './InAppConfirmationDialog.js';
4
+ /** View-scoped consent is consumed once. The action still checks its canonical
5
+ * target at dispatch; this hook is not a replacement for host authorization. */
6
+ export function useScopedConfirmation(scope, selection) {
7
+ const [controller] = useState(() => new ConfirmationController());
8
+ const [prompt, setPrompt] = useState(null);
9
+ const [error, setError] = useState(null);
10
+ const incarnation = useRef(0), mounted = useRef(false), inFlight = useRef(false);
11
+ const owner = useMemo(() => ({}), [scope, selection]);
12
+ const activeOwner = useRef(owner);
13
+ useLayoutEffect(() => {
14
+ activeOwner.current = owner;
15
+ mounted.current = true;
16
+ incarnation.current++;
17
+ controller.invalidate();
18
+ setPrompt(null);
19
+ setError(null);
20
+ return () => { mounted.current = false; incarnation.current++; controller.invalidate(); };
21
+ }, [controller, owner]);
22
+ const requestConfirmation = (title, description, confirmLabel, execute) => {
23
+ if (!mounted.current || inFlight.current || activeOwner.current !== owner)
24
+ return;
25
+ setError(null);
26
+ setPrompt(controller.begin({ authority: String(incarnation.current), title, description, confirmLabel, execute }));
27
+ };
28
+ const confirm = async () => {
29
+ if (!prompt || !mounted.current || inFlight.current)
30
+ return;
31
+ const accepted = controller.confirm(String(incarnation.current), prompt.id);
32
+ if (!accepted)
33
+ return;
34
+ const generation = incarnation.current;
35
+ setPrompt(null);
36
+ inFlight.current = true;
37
+ try {
38
+ if (await accepted.execute() === false)
39
+ throw new Error('The action was refused. Refresh the workspace state before retrying.');
40
+ }
41
+ catch (cause) {
42
+ if (mounted.current && incarnation.current === generation)
43
+ setError(cause instanceof Error ? cause.message : 'The action was not confirmed.');
44
+ }
45
+ finally {
46
+ inFlight.current = false;
47
+ }
48
+ };
49
+ const confirmation = _jsxs(_Fragment, { children: [error && _jsx("p", { role: "alert", className: "text-[12px] text-red-400", children: error }), prompt && _jsx(InAppConfirmationDialog, { prompt: prompt, onConfirm: () => { void confirm(); }, onCancel: () => { if (controller.cancel(prompt.id))
50
+ setPrompt(null); } }, prompt.id)] });
51
+ return { requestConfirmation, confirmation };
52
+ }
53
+ //# sourceMappingURL=useScopedConfirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScopedConfirmation.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/useScopedConfirmation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ /** Settings actions read the selected store scope at invocation. A dialog must
3
+ * therefore retain the exact load generation, not merely an entity ID (ABA). */
4
+ export declare function useSettingsConfirmation(blocked?: boolean, invalidationKey?: string): {
5
+ requestConfirmation: (title: string, description: string, confirmLabel: string, execute: () => unknown) => void;
6
+ confirmation: React.JSX.Element;
7
+ };
8
+ //# sourceMappingURL=useSettingsConfirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSettingsConfirmation.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/useSettingsConfirmation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAA;AAMhE;gFACgF;AAChF,wBAAgB,uBAAuB,CAAC,OAAO,UAAQ,EAAE,eAAe,SAAK;iCAWvC,MAAM,eAAe,MAAM,gBAAgB,MAAM,WAAW,MAAM,OAAO;;EAuB9G"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useLayoutEffect, useRef, useState } from 'react';
3
+ import { useEntitySettingsStore } from '../../../../stores/entitySettingsStore.js';
4
+ import { ConfirmationController, InAppConfirmationDialog } from './InAppConfirmationDialog.js';
5
+ /** Settings actions read the selected store scope at invocation. A dialog must
6
+ * therefore retain the exact load generation, not merely an entity ID (ABA). */
7
+ export function useSettingsConfirmation(blocked = false, invalidationKey = '') {
8
+ const generation = useEntitySettingsStore(state => state.loadGeneration);
9
+ const [controller] = useState(() => new ConfirmationController());
10
+ const [prompt, setPrompt] = useState(null);
11
+ const [error, setError] = useState(null);
12
+ const inFlight = useRef(false), blockedNow = useRef(blocked);
13
+ blockedNow.current = blocked;
14
+ useLayoutEffect(() => {
15
+ controller.invalidate();
16
+ setPrompt(null);
17
+ setError(null);
18
+ return () => controller.invalidate();
19
+ }, [controller, generation, blocked, invalidationKey]);
20
+ const requestConfirmation = (title, description, confirmLabel, execute) => {
21
+ if (blockedNow.current || inFlight.current || useEntitySettingsStore.getState().loadGeneration !== generation)
22
+ return;
23
+ setError(null);
24
+ setPrompt(controller.begin({ authority: String(generation), title, description, confirmLabel, execute }));
25
+ };
26
+ const confirm = async () => {
27
+ if (!prompt)
28
+ return;
29
+ const accepted = controller.confirm(String(useEntitySettingsStore.getState().loadGeneration), prompt.id);
30
+ if (!accepted)
31
+ return;
32
+ setPrompt(null);
33
+ if (blockedNow.current || inFlight.current)
34
+ return;
35
+ inFlight.current = true;
36
+ try {
37
+ await accepted.execute();
38
+ }
39
+ catch (cause) {
40
+ if (useEntitySettingsStore.getState().loadGeneration === generation)
41
+ setError(cause instanceof Error ? cause.message : 'The action was not confirmed.');
42
+ }
43
+ finally {
44
+ inFlight.current = false;
45
+ }
46
+ };
47
+ const confirmation = _jsxs(_Fragment, { children: [error && _jsx("p", { role: "alert", children: error }), prompt && _jsx(InAppConfirmationDialog, { prompt: prompt, onConfirm: () => { void confirm(); }, onCancel: () => { if (controller.cancel(prompt.id))
48
+ setPrompt(null); } }, prompt.id)] });
49
+ return { requestConfirmation, confirmation };
50
+ }
51
+ //# sourceMappingURL=useSettingsConfirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSettingsConfirmation.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/useSettingsConfirmation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { AgentWorkspaceRulesRequest, AgentWorkspaceRulesResult } from '@xenosystem/agent-interface-contract';
2
+ type Request = (input: AgentWorkspaceRulesRequest) => Promise<AgentWorkspaceRulesResult>;
3
+ export interface WorkspaceRulesState {
4
+ result: AgentWorkspaceRulesResult | null;
5
+ path: string;
6
+ dirty: boolean;
7
+ busy: boolean;
8
+ notice: string;
9
+ }
10
+ export declare function requireRulesAcknowledgement(request: Request, input: AgentWorkspaceRulesRequest): Promise<AgentWorkspaceRulesResult>;
11
+ /** Presentation state only: the host owns validation, revisions and project directives. */
12
+ export declare class WorkspaceRulesController {
13
+ private readonly workspaceId;
14
+ private readonly inherited;
15
+ private readonly request;
16
+ private state;
17
+ private generation;
18
+ private listeners;
19
+ constructor(workspaceId: string | undefined, inherited: boolean, request: Request);
20
+ getSnapshot: () => WorkspaceRulesState;
21
+ subscribe: (listener: () => void) => (() => void);
22
+ private set;
23
+ invalidate(): void;
24
+ edit(path: string): void;
25
+ run(action: 'get' | 'set' | 'reset'): Promise<void>;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=workspaceRulesController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceRulesController.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/workspaceRulesController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAEjH,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,0BAA0B,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAA;AACxF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAWzI;AAED,2FAA2F;AAC3F,qBAAa,wBAAwB;IAIvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAsB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAW,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH3H,OAAO,CAAC,KAAK,CAAyF;IACtG,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAwB;gBACZ,WAAW,EAAE,MAAM,GAAG,SAAS,EAAmB,SAAS,EAAE,OAAO,EAAmB,OAAO,EAAE,OAAO;IACpI,WAAW,QAAO,mBAAmB,CAAc;IACnD,SAAS,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAAsF;IACtI,OAAO,CAAC,GAAG;IAIX,UAAU,IAAI,IAAI;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAClB,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B1D"}
@@ -0,0 +1,82 @@
1
+ export async function requireRulesAcknowledgement(request, input) {
2
+ const result = await request(input);
3
+ if (!result?.success)
4
+ throw new Error(result?.error ?? 'Rules selection was not saved. Reload settings before retrying.');
5
+ if (!result.revision || !result.rulesRevision || !['default', 'override'].includes(result.mode ?? '')
6
+ || typeof result.valid !== 'boolean' || (result.mode === 'override' && typeof result.path !== 'string')
7
+ || (input.action !== 'get' && !result.valid)
8
+ || (input.action === 'set' && result.mode !== 'override')
9
+ || (input.action === 'reset' && result.mode !== 'default')) {
10
+ throw new Error('The host returned incomplete rules acknowledgement. Reload before retrying.');
11
+ }
12
+ return result;
13
+ }
14
+ /** Presentation state only: the host owns validation, revisions and project directives. */
15
+ export class WorkspaceRulesController {
16
+ workspaceId;
17
+ inherited;
18
+ request;
19
+ state = { result: null, path: '', dirty: false, busy: false, notice: '' };
20
+ generation = 0;
21
+ listeners = new Set();
22
+ constructor(workspaceId, inherited, request) {
23
+ this.workspaceId = workspaceId;
24
+ this.inherited = inherited;
25
+ this.request = request;
26
+ }
27
+ getSnapshot = () => this.state;
28
+ subscribe = (listener) => { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; };
29
+ set(patch) {
30
+ this.state = { ...this.state, ...patch };
31
+ for (const notify of this.listeners)
32
+ notify();
33
+ }
34
+ invalidate() { this.generation++; this.set({ busy: false }); }
35
+ edit(path) { if (!this.inherited)
36
+ this.set({ path, dirty: path !== (this.state.result?.path ?? '') }); }
37
+ async run(action) {
38
+ if (this.state.busy || (this.inherited && action !== 'get'))
39
+ return;
40
+ if (!this.workspaceId) {
41
+ this.set({ notice: 'Select a workspace to configure project rules.' });
42
+ return;
43
+ }
44
+ const previous = this.state.result;
45
+ if (action !== 'get' && (!previous?.success || !previous.revision || !previous.rulesRevision)) {
46
+ this.set({ notice: 'Reload workspace rules before saving.' });
47
+ return;
48
+ }
49
+ if (action === 'set' && !this.state.path.trim()) {
50
+ this.set({ notice: 'Enter a rules file path.' });
51
+ return;
52
+ }
53
+ const submitted = this.state.path;
54
+ const attempt = ++this.generation;
55
+ // Synchronous admission prevents duplicate events before React paints disabled buttons.
56
+ this.set({ busy: true, notice: '' });
57
+ try {
58
+ const result = await requireRulesAcknowledgement(this.request, {
59
+ workspaceId: this.workspaceId, action,
60
+ ...(action !== 'get' ? { expectedRevision: previous.revision, expectedRulesRevision: previous.rulesRevision } : {}),
61
+ ...(action === 'set' ? { path: submitted } : {}),
62
+ });
63
+ if (attempt !== this.generation)
64
+ return;
65
+ const preserveDraft = action === 'get' ? this.state.dirty : this.state.path !== submitted;
66
+ this.set({ result, ...(preserveDraft ? {} : { path: result.path ?? '', dirty: false }),
67
+ notice: action === 'get' ? (preserveDraft ? 'Rules reloaded; your unsaved path is retained.' : '')
68
+ : action === 'reset' ? 'Override reset; runtime defaults are unchanged.'
69
+ : 'Rules file validated and saved. Changes apply to subsequent supported turns.' });
70
+ }
71
+ catch (error) {
72
+ if (attempt === this.generation)
73
+ this.set({ ...(action === 'get' ? { result: null } : {}),
74
+ notice: error instanceof Error ? error.message.slice(0, 2000) : 'Workspace rules request failed. Reload before retrying.' });
75
+ }
76
+ finally {
77
+ if (attempt === this.generation)
78
+ this.set({ busy: false });
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=workspaceRulesController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceRulesController.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/shared/workspaceRulesController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface SidebarEntityPin {
2
+ type: 'workspace' | 'team' | 'agent';
3
+ workspaceId: string;
4
+ teamId?: string;
5
+ agentId?: string;
6
+ }
7
+ export declare const SIDEBAR_ENTITY_PINS_KEY = "xeno:pinned-entities:v1";
8
+ export declare function entityPinKey(pin: SidebarEntityPin): string;
9
+ export declare function parseEntityPins(raw: string | null): SidebarEntityPin[];
10
+ export declare function toggleEntityPin(pins: SidebarEntityPin[], pin: SidebarEntityPin): SidebarEntityPin[];
11
+ //# sourceMappingURL=sidebarEntityPins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebarEntityPins.d.ts","sourceRoot":"","sources":["../../../src/components/agent/sidebarEntityPins.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAClI,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAA4F;AACvJ,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,EAAE,CAkBtE;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAKnG"}