@xenosystem/agent-interface-ui 0.1.35 → 0.1.37

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 (244) hide show
  1. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
  2. package/dist/adapters/agentHostPlatformBridge.js +21 -1
  3. package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
  4. package/dist/agent.css +2180 -7
  5. package/dist/components/agent/AgentAuthGate.d.ts +86 -0
  6. package/dist/components/agent/AgentAuthGate.d.ts.map +1 -0
  7. package/dist/components/agent/AgentAuthGate.js +189 -0
  8. package/dist/components/agent/AgentAuthGate.js.map +1 -0
  9. package/dist/components/agent/AgentInterface.d.ts +8 -1
  10. package/dist/components/agent/AgentInterface.d.ts.map +1 -1
  11. package/dist/components/agent/AgentInterface.js +27 -8
  12. package/dist/components/agent/AgentInterface.js.map +1 -1
  13. package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts.map +1 -1
  14. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js +37 -6
  15. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js.map +1 -1
  16. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -1
  17. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +1 -0
  18. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -1
  19. package/dist/components/product/XenoAgentProductHeader.d.ts +2 -1
  20. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -1
  21. package/dist/components/product/XenoAgentProductHeader.js +2 -2
  22. package/dist/components/product/XenoAgentProductHeader.js.map +1 -1
  23. package/dist/index.d.ts +10 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +27 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/stores/workspaceStore.d.ts.map +1 -1
  28. package/dist/stores/workspaceStore.js +1 -0
  29. package/dist/stores/workspaceStore.js.map +1 -1
  30. package/package.json +8 -7
  31. package/src/agent.css +5 -0
  32. package/src/fonts/inter/OFL.txt +92 -0
  33. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2 +0 -0
  34. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2 +0 -0
  35. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2 +0 -0
  36. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2 +0 -0
  37. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2 +0 -0
  38. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2 +0 -0
  39. package/src/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2 +0 -0
  40. package/src/fonts/inter.css +75 -0
  41. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +0 -14
  42. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +0 -1
  43. package/dist/adapters/xenoAgentCompatibilityBridge.js +0 -247
  44. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +0 -1
  45. package/dist/adapters/xenoAgentHostCatalog.d.ts +0 -40
  46. package/dist/adapters/xenoAgentHostCatalog.d.ts.map +0 -1
  47. package/dist/adapters/xenoAgentHostCatalog.js +0 -231
  48. package/dist/adapters/xenoAgentHostCatalog.js.map +0 -1
  49. package/dist/components/agent/AIStatusIndicator.d.ts +0 -25
  50. package/dist/components/agent/AIStatusIndicator.d.ts.map +0 -1
  51. package/dist/components/agent/AIStatusIndicator.js +0 -85
  52. package/dist/components/agent/AIStatusIndicator.js.map +0 -1
  53. package/dist/components/agent/AgentNotificationBanner.d.ts +0 -10
  54. package/dist/components/agent/AgentNotificationBanner.d.ts.map +0 -1
  55. package/dist/components/agent/AgentNotificationBanner.js +0 -28
  56. package/dist/components/agent/AgentNotificationBanner.js.map +0 -1
  57. package/dist/components/agent/AgentView.d.ts +0 -185
  58. package/dist/components/agent/AgentView.d.ts.map +0 -1
  59. package/dist/components/agent/AgentView.js +0 -7850
  60. package/dist/components/agent/AgentView.js.map +0 -1
  61. package/dist/components/agent/AssistantTurnStatusNotice.d.ts +0 -16
  62. package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +0 -1
  63. package/dist/components/agent/AssistantTurnStatusNotice.js +0 -54
  64. package/dist/components/agent/AssistantTurnStatusNotice.js.map +0 -1
  65. package/dist/components/agent/CommandToolCard.d.ts +0 -11
  66. package/dist/components/agent/CommandToolCard.d.ts.map +0 -1
  67. package/dist/components/agent/CommandToolCard.js +0 -29
  68. package/dist/components/agent/CommandToolCard.js.map +0 -1
  69. package/dist/components/agent/GhostTextArea.d.ts +0 -13
  70. package/dist/components/agent/GhostTextArea.d.ts.map +0 -1
  71. package/dist/components/agent/GhostTextArea.js +0 -21
  72. package/dist/components/agent/GhostTextArea.js.map +0 -1
  73. package/dist/components/agent/LiveConversationCollaboration.d.ts +0 -27
  74. package/dist/components/agent/LiveConversationCollaboration.d.ts.map +0 -1
  75. package/dist/components/agent/LiveConversationCollaboration.js +0 -127
  76. package/dist/components/agent/LiveConversationCollaboration.js.map +0 -1
  77. package/dist/components/agent/SdkSessionPanel.d.ts +0 -25
  78. package/dist/components/agent/SdkSessionPanel.d.ts.map +0 -1
  79. package/dist/components/agent/SdkSessionPanel.js +0 -15
  80. package/dist/components/agent/SdkSessionPanel.js.map +0 -1
  81. package/dist/components/agent/SlashCommandAutocomplete.d.ts +0 -12
  82. package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +0 -1
  83. package/dist/components/agent/SlashCommandAutocomplete.js +0 -33
  84. package/dist/components/agent/SlashCommandAutocomplete.js.map +0 -1
  85. package/dist/components/agent/collaborationWindow.d.ts +0 -11
  86. package/dist/components/agent/collaborationWindow.d.ts.map +0 -1
  87. package/dist/components/agent/collaborationWindow.js +0 -10
  88. package/dist/components/agent/collaborationWindow.js.map +0 -1
  89. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +0 -25
  90. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +0 -1
  91. package/dist/components/agent/conversationCollaborationAppendJournal.js +0 -118
  92. package/dist/components/agent/conversationCollaborationAppendJournal.js.map +0 -1
  93. package/dist/components/agent/conversationCollaborationController.d.ts +0 -96
  94. package/dist/components/agent/conversationCollaborationController.d.ts.map +0 -1
  95. package/dist/components/agent/conversationCollaborationController.js +0 -597
  96. package/dist/components/agent/conversationCollaborationController.js.map +0 -1
  97. package/dist/components/agent/destructiveConfirmation.d.ts +0 -76
  98. package/dist/components/agent/destructiveConfirmation.d.ts.map +0 -1
  99. package/dist/components/agent/destructiveConfirmation.js +0 -231
  100. package/dist/components/agent/destructiveConfirmation.js.map +0 -1
  101. package/dist/components/agent/editorOperationAuthority.d.ts +0 -29
  102. package/dist/components/agent/editorOperationAuthority.d.ts.map +0 -1
  103. package/dist/components/agent/editorOperationAuthority.js +0 -73
  104. package/dist/components/agent/editorOperationAuthority.js.map +0 -1
  105. package/dist/components/agent/mainAssistant.d.ts +0 -24
  106. package/dist/components/agent/mainAssistant.d.ts.map +0 -1
  107. package/dist/components/agent/mainAssistant.js +0 -24
  108. package/dist/components/agent/mainAssistant.js.map +0 -1
  109. package/dist/components/agent/nativeTuiComposerInput.d.ts +0 -42
  110. package/dist/components/agent/nativeTuiComposerInput.d.ts.map +0 -1
  111. package/dist/components/agent/nativeTuiComposerInput.js +0 -51
  112. package/dist/components/agent/nativeTuiComposerInput.js.map +0 -1
  113. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +0 -25
  114. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +0 -1
  115. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +0 -89
  116. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +0 -1
  117. package/dist/components/agent/toolCardDisplay.d.ts +0 -24
  118. package/dist/components/agent/toolCardDisplay.d.ts.map +0 -1
  119. package/dist/components/agent/toolCardDisplay.js +0 -85
  120. package/dist/components/agent/toolCardDisplay.js.map +0 -1
  121. package/dist/components/agent/webJobProgressView.d.ts +0 -90
  122. package/dist/components/agent/webJobProgressView.d.ts.map +0 -1
  123. package/dist/components/agent/webJobProgressView.js +0 -104
  124. package/dist/components/agent/webJobProgressView.js.map +0 -1
  125. package/dist/components/ui/CodeBlock.d.ts +0 -8
  126. package/dist/components/ui/CodeBlock.d.ts.map +0 -1
  127. package/dist/components/ui/CodeBlock.js +0 -89
  128. package/dist/components/ui/CodeBlock.js.map +0 -1
  129. package/dist/platformApiTypes.d.ts +0 -4176
  130. package/dist/platformApiTypes.d.ts.map +0 -1
  131. package/dist/platformApiTypes.js +0 -2
  132. package/dist/platformApiTypes.js.map +0 -1
  133. package/dist/platformBridge.d.ts +0 -43
  134. package/dist/platformBridge.d.ts.map +0 -1
  135. package/dist/platformBridge.js +0 -67
  136. package/dist/platformBridge.js.map +0 -1
  137. package/dist/providerSelector.d.ts +0 -28
  138. package/dist/providerSelector.d.ts.map +0 -1
  139. package/dist/providerSelector.js +0 -104
  140. package/dist/providerSelector.js.map +0 -1
  141. package/dist/services/connectionMode.d.ts +0 -13
  142. package/dist/services/connectionMode.d.ts.map +0 -1
  143. package/dist/services/connectionMode.js +0 -31
  144. package/dist/services/connectionMode.js.map +0 -1
  145. package/dist/sessionTabs.d.ts +0 -48
  146. package/dist/sessionTabs.d.ts.map +0 -1
  147. package/dist/sessionTabs.js +0 -106
  148. package/dist/sessionTabs.js.map +0 -1
  149. package/dist/stores/acpAgentStore.d.ts +0 -264
  150. package/dist/stores/acpAgentStore.d.ts.map +0 -1
  151. package/dist/stores/acpAgentStore.js +0 -825
  152. package/dist/stores/acpAgentStore.js.map +0 -1
  153. package/dist/stores/agentChatStore.d.ts +0 -693
  154. package/dist/stores/agentChatStore.d.ts.map +0 -1
  155. package/dist/stores/agentChatStore.js +0 -5876
  156. package/dist/stores/agentChatStore.js.map +0 -1
  157. package/dist/stores/authStore.d.ts +0 -26
  158. package/dist/stores/authStore.d.ts.map +0 -1
  159. package/dist/stores/authStore.js +0 -163
  160. package/dist/stores/authStore.js.map +0 -1
  161. package/dist/stores/suggestionStore.d.ts +0 -36
  162. package/dist/stores/suggestionStore.d.ts.map +0 -1
  163. package/dist/stores/suggestionStore.js +0 -187
  164. package/dist/stores/suggestionStore.js.map +0 -1
  165. package/dist/stores/tabStore.d.ts +0 -30
  166. package/dist/stores/tabStore.d.ts.map +0 -1
  167. package/dist/stores/tabStore.js +0 -252
  168. package/dist/stores/tabStore.js.map +0 -1
  169. package/dist/stores/xenoChatStore.d.ts +0 -88
  170. package/dist/stores/xenoChatStore.d.ts.map +0 -1
  171. package/dist/stores/xenoChatStore.js +0 -583
  172. package/dist/stores/xenoChatStore.js.map +0 -1
  173. package/dist/types/agentEditor.d.ts +0 -40
  174. package/dist/types/agentEditor.d.ts.map +0 -1
  175. package/dist/types/agentEditor.js +0 -2
  176. package/dist/types/agentEditor.js.map +0 -1
  177. package/dist/types/agentRuntimeProvider.d.ts +0 -2
  178. package/dist/types/agentRuntimeProvider.d.ts.map +0 -1
  179. package/dist/types/agentRuntimeProvider.js +0 -2
  180. package/dist/types/agentRuntimeProvider.js.map +0 -1
  181. package/dist/utils/acpExecutionAuthority.d.ts +0 -26
  182. package/dist/utils/acpExecutionAuthority.d.ts.map +0 -1
  183. package/dist/utils/acpExecutionAuthority.js +0 -46
  184. package/dist/utils/acpExecutionAuthority.js.map +0 -1
  185. package/dist/utils/advertisedReasoning.d.ts +0 -25
  186. package/dist/utils/advertisedReasoning.d.ts.map +0 -1
  187. package/dist/utils/advertisedReasoning.js +0 -62
  188. package/dist/utils/advertisedReasoning.js.map +0 -1
  189. package/dist/utils/agentAttachedContextPrompt.d.ts +0 -2
  190. package/dist/utils/agentAttachedContextPrompt.d.ts.map +0 -1
  191. package/dist/utils/agentAttachedContextPrompt.js +0 -2
  192. package/dist/utils/agentAttachedContextPrompt.js.map +0 -1
  193. package/dist/utils/agentModelContext.d.ts +0 -2
  194. package/dist/utils/agentModelContext.d.ts.map +0 -1
  195. package/dist/utils/agentModelContext.js +0 -2
  196. package/dist/utils/agentModelContext.js.map +0 -1
  197. package/dist/utils/agentReasoningEffort.d.ts +0 -3
  198. package/dist/utils/agentReasoningEffort.d.ts.map +0 -1
  199. package/dist/utils/agentReasoningEffort.js +0 -2
  200. package/dist/utils/agentReasoningEffort.js.map +0 -1
  201. package/dist/utils/agentRuntimeProvider.d.ts +0 -3
  202. package/dist/utils/agentRuntimeProvider.d.ts.map +0 -1
  203. package/dist/utils/agentRuntimeProvider.js +0 -2
  204. package/dist/utils/agentRuntimeProvider.js.map +0 -1
  205. package/dist/utils/clipboardCopy.d.ts +0 -4
  206. package/dist/utils/clipboardCopy.d.ts.map +0 -1
  207. package/dist/utils/clipboardCopy.js +0 -27
  208. package/dist/utils/clipboardCopy.js.map +0 -1
  209. package/dist/utils/cloudModels.d.ts +0 -3
  210. package/dist/utils/cloudModels.d.ts.map +0 -1
  211. package/dist/utils/cloudModels.js +0 -181
  212. package/dist/utils/cloudModels.js.map +0 -1
  213. package/dist/utils/conversationRuntime.d.ts +0 -3
  214. package/dist/utils/conversationRuntime.d.ts.map +0 -1
  215. package/dist/utils/conversationRuntime.js +0 -2
  216. package/dist/utils/conversationRuntime.js.map +0 -1
  217. package/dist/utils/fileCreateIntent.d.ts +0 -16
  218. package/dist/utils/fileCreateIntent.d.ts.map +0 -1
  219. package/dist/utils/fileCreateIntent.js +0 -123
  220. package/dist/utils/fileCreateIntent.js.map +0 -1
  221. package/dist/utils/legacyAgentRuntimeEvents.d.ts +0 -2
  222. package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +0 -1
  223. package/dist/utils/legacyAgentRuntimeEvents.js +0 -2
  224. package/dist/utils/legacyAgentRuntimeEvents.js.map +0 -1
  225. package/dist/utils/markdownWindowsPaths.d.ts +0 -2
  226. package/dist/utils/markdownWindowsPaths.d.ts.map +0 -1
  227. package/dist/utils/markdownWindowsPaths.js +0 -2
  228. package/dist/utils/markdownWindowsPaths.js.map +0 -1
  229. package/dist/utils/modelAvailability.d.ts +0 -11
  230. package/dist/utils/modelAvailability.d.ts.map +0 -1
  231. package/dist/utils/modelAvailability.js +0 -10
  232. package/dist/utils/modelAvailability.js.map +0 -1
  233. package/dist/utils/providerAvailability.d.ts +0 -8
  234. package/dist/utils/providerAvailability.d.ts.map +0 -1
  235. package/dist/utils/providerAvailability.js +0 -13
  236. package/dist/utils/providerAvailability.js.map +0 -1
  237. package/dist/utils/providerCommandArgs.d.ts +0 -11
  238. package/dist/utils/providerCommandArgs.d.ts.map +0 -1
  239. package/dist/utils/providerCommandArgs.js +0 -18
  240. package/dist/utils/providerCommandArgs.js.map +0 -1
  241. package/dist/utils/workspaceSelectionContinuation.d.ts +0 -2
  242. package/dist/utils/workspaceSelectionContinuation.d.ts.map +0 -1
  243. package/dist/utils/workspaceSelectionContinuation.js +0 -2
  244. package/dist/utils/workspaceSelectionContinuation.js.map +0 -1
@@ -1,16 +0,0 @@
1
- import type { AssistantTurnStatus } from '../../stores/agentChatStore.js';
2
- export declare function assistantTurnStatusLabel(status: AssistantTurnStatus): string;
3
- export declare function AssistantTurnStatusNotice({ status, onResume, }: {
4
- status: AssistantTurnStatus;
5
- /**
6
- * Offered ONLY for an interrupted turn. A cancelled turn was stopped on
7
- * purpose, and inviting the user to restart it would read as the product
8
- * second-guessing a decision they made.
9
- */
10
- onResume?: (() => void) | undefined;
11
- }): import("react").JSX.Element;
12
- export declare function AssistantTurnErrorNotice({ text, isCredits, }: {
13
- text: string;
14
- isCredits?: boolean;
15
- }): import("react").JSX.Element;
16
- //# sourceMappingURL=AssistantTurnStatusNotice.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantTurnStatusNotice.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AssistantTurnStatusNotice.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAE5E;AA2FD,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;CACpC,+BA+BA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,SAAiB,GAClB,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,+BAwBA"}
@@ -1,54 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AlertTriangle, X } from 'lucide-react';
3
- export function assistantTurnStatusLabel(status) {
4
- return status === 'interrupted' ? 'Response interrupted' : 'Response cancelled';
5
- }
6
- const ASSISTANT_TURN_STATE_TONES = {
7
- neutral: {
8
- card: 'border-white/[0.05] bg-[var(--xeno-tool-expanded-bg)]',
9
- marker: 'border-white/10 bg-white/[0.03]',
10
- icon: 'text-white/32',
11
- eyebrow: 'text-white/32',
12
- message: 'text-white/55',
13
- },
14
- error: {
15
- card: 'border-[#e25f57]/20 bg-[#e25f57]/[0.04]',
16
- marker: 'border-[#e25f57]/25 bg-[#e25f57]/10',
17
- icon: 'text-[#ff8d86]',
18
- eyebrow: 'text-[#ff8d86]/70',
19
- message: 'text-red-300/75',
20
- },
21
- warning: {
22
- card: 'border-amber-500/20 bg-amber-500/[0.04]',
23
- marker: 'border-amber-400/25 bg-amber-400/[0.08]',
24
- icon: 'text-amber-300/80',
25
- eyebrow: 'text-amber-300/65',
26
- message: 'text-amber-200/75',
27
- },
28
- };
29
- function AssistantTurnStateCard({ state, tone, eyebrow, message, role, status, action, }) {
30
- const styles = ASSISTANT_TURN_STATE_TONES[tone];
31
- const ariaLabel = `${eyebrow} ${message}`.trim();
32
- const MarkerIcon = tone === 'warning' ? AlertTriangle : X;
33
- return (_jsxs("div", { role: role, "aria-live": role === 'status' ? 'polite' : undefined, "aria-atomic": "true", "aria-label": ariaLabel, "data-agent-turn-state-card": true, "data-agent-turn-state": state, "data-agent-turn-status": status, className: `relative z-10 -ml-[24px] flex min-h-[26px] w-[calc(100%+32px)] min-w-0 items-center overflow-hidden rounded-[3px] border text-left ${styles.card}`, children: [_jsx("span", { "data-agent-turn-state-marker": true, className: "relative z-20 ml-[6px] inline-flex min-h-[24px] w-3 flex-none items-center justify-center self-stretch", children: _jsx("span", { className: `inline-flex h-3 w-3 items-center justify-center rounded-[2px] border ${styles.marker}`, children: _jsx(MarkerIcon, { className: `h-2 w-2 ${styles.icon}`, strokeWidth: 2, "aria-hidden": "true" }) }) }), _jsx("span", { "data-agent-turn-state-label": true, className: `ml-1.5 flex-none text-[10px] uppercase tracking-[0.14em] ${styles.eyebrow}`, children: eyebrow }), _jsx("span", { "data-agent-turn-state-message": true, className: `ml-2 min-w-0 flex-1 whitespace-pre-wrap break-words py-1 text-[12px] leading-4 ${styles.message}`, children: message }), action] }));
34
- }
35
- export function AssistantTurnStatusNotice({ status, onResume, }) {
36
- const message = status === 'interrupted' ? 'Interrupted' : 'Cancelled';
37
- const canResume = status === 'interrupted' && !!onResume;
38
- return (_jsx(AssistantTurnStateCard, { state: status, status: status, tone: "neutral", eyebrow: "Response", message: message, role: "status", ...(canResume
39
- ? {
40
- action: (_jsx("button", { type: "button", onClick: onResume,
41
- // "Run again", not "Resume": nothing continues from where it
42
- // stopped. The host reports `restarted` for the same reason, and
43
- // the label must not promise more than the host delivers.
44
- title: "Run this turn again from the start", className: "inline-flex h-[18px] items-center justify-center rounded-[2px] border border-white/[0.09] bg-[#18181b] px-2 text-[10px] font-medium leading-none text-white/66 transition-colors hover:border-transparent hover:bg-[#222226] hover:text-white", children: "Run again" })),
45
- }
46
- : {}) }));
47
- }
48
- export function AssistantTurnErrorNotice({ text, isCredits = false, }) {
49
- const message = isCredits
50
- ? "You've run out of credits. Top up to continue using cloud models."
51
- : (text.trim() || 'The response failed.');
52
- return (_jsx(AssistantTurnStateCard, { state: isCredits ? 'credits' : 'error', tone: isCredits ? 'warning' : 'error', eyebrow: isCredits ? 'Credits' : 'Error', message: message, role: "alert", action: isCredits ? (_jsx("a", { href: "https://xenostudio.ai/account", target: "_blank", rel: "noopener noreferrer", className: "mr-1.5 ml-2 flex h-5 flex-none items-center rounded-[2px] bg-amber-500/10 px-2 text-[10px] font-medium text-amber-300/75 transition-colors hover:bg-amber-500/15 hover:text-amber-200", children: "Get credits" })) : undefined }));
53
- }
54
- //# sourceMappingURL=AssistantTurnStatusNotice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantTurnStatusNotice.js","sourceRoot":"","sources":["../../../src/components/agent/AssistantTurnStatusNotice.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { type ToolInteractionState } from './toolCardDisplay.js';
2
- export interface CommandToolCardProps {
3
- command: string;
4
- toolName: string;
5
- state: ToolInteractionState;
6
- isExpanded: boolean;
7
- canExpand: boolean;
8
- onToggle: (trigger: HTMLButtonElement) => void;
9
- }
10
- export declare function CommandToolCard({ command, toolName, state, isExpanded, canExpand, onToggle, }: CommandToolCardProps): import("react").JSX.Element;
11
- //# sourceMappingURL=CommandToolCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandToolCard.d.ts","sourceRoot":"","sources":["../../../src/components/agent/CommandToolCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAEpF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,oBAAoB,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC/C;AAkCD,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,+BA+DtB"}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronRight, X } from 'lucide-react';
3
- import { commandPreviewText } from './toolCardDisplay.js';
4
- function CommandStatusMarker({ state }) {
5
- if (state === 'failed' || state === 'cancelled') {
6
- return (_jsx("span", { className: `inline-flex h-3 w-3 items-center justify-center rounded-[2px] border ${state === 'failed'
7
- ? 'border-[#e25f57]/25 bg-[#e25f57]/10'
8
- : 'border-white/10 bg-white/[0.03]'}`, children: _jsx(X, { className: `h-2 w-2 ${state === 'failed' ? 'text-[#ff8d86]' : 'text-white/32'}`, strokeWidth: 2, "aria-hidden": "true" }) }));
9
- }
10
- return (_jsx("span", { className: `block h-1.5 w-1.5 rounded-[2px] ${state === 'awaiting_user'
11
- ? 'bg-[var(--xeno-marker-accent-solid)] animate-pulse'
12
- : state === 'running'
13
- ? 'bg-[var(--xeno-marker-solid)] animate-pulse'
14
- : 'bg-[var(--xeno-marker-solid)]'}` }));
15
- }
16
- export function CommandToolCard({ command, toolName, state, isExpanded, canExpand, onToggle, }) {
17
- const preview = commandPreviewText(command) || 'Waiting for command…';
18
- const failed = state === 'failed';
19
- return (_jsxs("button", { type: "button", "data-command-tool-card": true, "data-command-state": state, "data-command-tool-name": toolName, onClick: (event) => {
20
- if (canExpand)
21
- onToggle(event.currentTarget);
22
- }, "aria-expanded": canExpand ? isExpanded : undefined, "aria-label": `${isExpanded ? 'Collapse' : 'Expand'} ${toolName || 'terminal'} command details`, title: preview, className: `group/command relative z-10 -ml-[24px] flex h-[26px] w-[calc(100%+32px)] min-w-0 items-center overflow-hidden border text-left transition-colors ${isExpanded ? 'rounded-t-[3px] rounded-b-none' : 'rounded-[3px]'} ${failed
23
- ? 'border-[#e25f57]/20 bg-[#e25f57]/[0.04] hover:bg-[#e25f57]/[0.06]'
24
- : 'border-white/[0.05] bg-[var(--xeno-tool-expanded-bg)] hover:bg-[var(--xeno-tool-expanded-active)]'} ${canExpand ? 'cursor-pointer' : 'cursor-default'}`, children: [_jsx("span", { "data-command-status-marker": true, "data-command-status": state, className: "relative z-20 ml-[6px] inline-flex h-full w-3 flex-none items-center justify-center self-stretch", title: state.replace('_', ' '), children: _jsx(CommandStatusMarker, { state: state }) }), _jsx("span", { "data-command-tool-label": true, className: `ml-1.5 flex-none text-[10px] uppercase tracking-[0.14em] ${failed ? 'text-[#ff8d86]/60' : 'text-white/32'}`, children: "Command" }), _jsx("span", { "data-command-preview": true, "data-command-preview-fade": true, className: `ml-2 min-w-0 flex-1 overflow-hidden whitespace-nowrap font-mono text-[12px] leading-none ${failed ? 'text-red-300/75' : 'text-white/55'}`, style: {
25
- WebkitMaskImage: 'linear-gradient(to right, #000 calc(100% - 48px), transparent calc(100% - 16px))',
26
- maskImage: 'linear-gradient(to right, #000 calc(100% - 48px), transparent calc(100% - 16px))',
27
- }, children: preview }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-1 z-20 inline-flex w-5 items-center justify-center", children: _jsx(ChevronRight, { className: `h-3 w-3 text-white/22 transition-transform ${canExpand ? 'group-hover/command:text-white/40' : ''} ${isExpanded ? 'rotate-90' : ''}`, "aria-hidden": "true" }) })] }));
28
- }
29
- //# sourceMappingURL=CommandToolCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandToolCard.js","sourceRoot":"","sources":["../../../src/components/agent/CommandToolCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAA6B,MAAM,sBAAsB,CAAA;AAWpF,SAAS,mBAAmB,CAAC,EAAE,KAAK,EAAmC;IACrE,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,CACL,eACE,SAAS,EAAE,wEACT,KAAK,KAAK,QAAQ;gBAChB,CAAC,CAAC,qCAAqC;gBACvC,CAAC,CAAC,iCACN,EAAE,YAEF,KAAC,CAAC,IACA,SAAS,EAAE,WAAW,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,EAAE,EAC/E,WAAW,EAAE,CAAC,iBACF,MAAM,GAClB,GACG,CACR,CAAA;IACH,CAAC;IAED,OAAO,CACL,eACE,SAAS,EAAE,mCACT,KAAK,KAAK,eAAe;YACvB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,KAAK,KAAK,SAAS;gBACnB,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,+BACR,EAAE,GACF,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,GACa;IACrB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,sBAAsB,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAA;IAEjC,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,wDAEO,KAAK,4BACD,QAAQ,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,SAAS;gBAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC9C,CAAC,mBACc,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,gBACrC,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,UAAU,kBAAkB,EAC7F,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,oJACT,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,eAClD,IACE,MAAM;YACJ,CAAC,CAAC,mEAAmE;YACrE,CAAC,CAAC,mGACN,IAAI,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAErD,0EAEuB,KAAK,EAC1B,SAAS,EAAC,kGAAkG,EAC5G,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,YAE9B,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,GAAI,GAChC,EACP,gDAEE,SAAS,EAAE,4DACT,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eACjC,EAAE,wBAGG,EACP,gFAGE,SAAS,EAAE,4FACT,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAC/B,EAAE,EACF,KAAK,EAAE;oBACL,eAAe,EAAE,kFAAkF;oBACnG,SAAS,EAAE,kFAAkF;iBAC9F,YAEA,OAAO,GACH,EACP,eAAM,SAAS,EAAC,iGAAiG,YAC/G,KAAC,YAAY,IACX,SAAS,EAAE,8CACT,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EACpD,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,iBACvB,MAAM,GAClB,GACG,IACA,CACV,CAAA;AACH,CAAC"}
@@ -1,13 +0,0 @@
1
- interface GhostTextAreaProps {
2
- value: string;
3
- onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
4
- onKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
5
- disabled?: boolean;
6
- placeholder?: string;
7
- rows?: number;
8
- effectiveGhostText: string;
9
- onAcceptGhost: () => void;
10
- }
11
- export declare const GhostTextArea: import("react").ForwardRefExoticComponent<GhostTextAreaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
12
- export {};
13
- //# sourceMappingURL=GhostTextArea.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GhostTextArea.d.ts","sourceRoot":"","sources":["../../../src/components/agent/GhostTextArea.tsx"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IAC7D,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,eAAO,MAAM,aAAa,oHAiDzB,CAAA"}
@@ -1,21 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { forwardRef, useRef } from 'react';
3
- export const GhostTextArea = forwardRef(function GhostTextArea({ value, onChange, onKeyDown, disabled, placeholder, rows, effectiveGhostText, onAcceptGhost }, ref) {
4
- const overlayRef = useRef(null);
5
- const minRows = Math.max(rows ?? 1, 1);
6
- const minHeightClass = minRows >= 2 ? 'min-h-[56px]' : 'min-h-[40px]';
7
- const textAreaChromeClass = `w-full px-2 py-1.5 text-[13px] leading-relaxed ${minHeightClass}`;
8
- const handleKeyDown = (e) => {
9
- if (e.key === 'Tab' && !e.shiftKey && !e.ctrlKey && !e.altKey && effectiveGhostText) {
10
- e.preventDefault();
11
- onAcceptGhost();
12
- return;
13
- }
14
- onKeyDown(e);
15
- };
16
- return (_jsxs("div", { className: "relative", children: [effectiveGhostText && (_jsxs("div", { ref: overlayRef, "aria-hidden": true, className: `absolute inset-0 ${textAreaChromeClass} pointer-events-none whitespace-pre-wrap break-words overflow-hidden`, children: [_jsx("span", { className: "invisible", children: value }), _jsx("span", { className: "text-white/15", children: effectiveGhostText })] })), _jsx("textarea", { ref: ref, rows: rows, value: value, onChange: onChange, onKeyDown: handleKeyDown, onScroll: (event) => {
17
- if (overlayRef.current)
18
- overlayRef.current.scrollTop = event.currentTarget.scrollTop;
19
- }, disabled: disabled, placeholder: placeholder, "aria-label": "Message input", className: `${textAreaChromeClass} bg-transparent text-white placeholder-white/20 focus:outline-none resize-none hide-scrollbar disabled:opacity-30 disabled:cursor-not-allowed relative z-10` })] }));
20
- });
21
- //# sourceMappingURL=GhostTextArea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GhostTextArea.js","sourceRoot":"","sources":["../../../src/components/agent/GhostTextArea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAa1C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CACpB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAC9F,GAAG;IAEH,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAA;IACrE,MAAM,mBAAmB,GAAG,kDAAkD,cAAc,EAAE,CAAA;IAE9F,MAAM,aAAa,GAAG,CAAC,CAA2C,EAAE,EAAE;QACpE,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACpF,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,aAAa,EAAE,CAAA;YACf,OAAM;QACR,CAAC;QACD,SAAS,CAAC,CAAC,CAAC,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aAEtB,kBAAkB,IAAI,CACrB,eACE,GAAG,EAAE,UAAU,uBAEf,SAAS,EAAE,oBAAoB,mBAAmB,sEAAsE,aAExH,eAAM,SAAS,EAAC,WAAW,YAAE,KAAK,GAAQ,EAC1C,eAAM,SAAS,EAAC,eAAe,YAAE,kBAAkB,GAAQ,IACvD,CACP,EACD,mBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,UAAU,CAAC,OAAO;wBAAE,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAA;gBACtF,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,gBACb,eAAe,EAC1B,SAAS,EAAE,GAAG,mBAAmB,6JAA6J,GAC9L,IACE,CACP,CAAA;AACH,CAAC,CACF,CAAA"}
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import type { AgentAccountRequest, AgentAccountResult } from '@xenosystem/agent-interface-contract';
3
- import { type CollaborationAccess, type CollaborationStorage } from './conversationCollaborationController.js';
4
- interface OwnerMessage {
5
- id: string;
6
- role: string;
7
- content: string;
8
- isStreaming?: boolean;
9
- toolCalls?: Array<{
10
- id: string;
11
- toolName: string;
12
- status?: string;
13
- }>;
14
- }
15
- export interface LiveConversationCollaborationProps {
16
- localConversationId: string;
17
- title: string;
18
- modelId?: string;
19
- ownerMessages?: OwnerMessage[];
20
- request?: (input: AgentAccountRequest) => Promise<AgentAccountResult>;
21
- storage?: CollaborationStorage;
22
- onNavigateConversation?: (conversationId: string) => void;
23
- onAccessChange?: (access: CollaborationAccess | null) => void;
24
- }
25
- export declare function LiveConversationCollaboration(props: LiveConversationCollaborationProps): React.JSX.Element;
26
- export {};
27
- //# sourceMappingURL=LiveConversationCollaboration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveConversationCollaboration.d.ts","sourceRoot":"","sources":["../../../src/components/agent/LiveConversationCollaboration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqE,MAAM,OAAO,CAAA;AAEzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAwD,MAAM,sCAAsC,CAAA;AAGzJ,OAAO,EAA6D,KAAK,mBAAmB,EAA2B,KAAK,oBAAoB,EAAE,MAAM,0CAA0C,CAAA;AAElM,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrE;AACD,MAAM,WAAW,kCAAkC;IACjD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrE,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAA;CAC9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,kCAAkC,qBAoGtF"}
@@ -1,127 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React, { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';
3
- import { Copy, RefreshCw, Share2, UserRoundX, Users, X } from 'lucide-react';
4
- import { copyTextWithFallback } from '../../utils/clipboardCopy.js';
5
- import { collaborationWindow, COLLABORATION_WINDOW_SIZE } from './collaborationWindow.js';
6
- import { ConversationCollaborationController, collaborationEntries } from './conversationCollaborationController.js';
7
- export function LiveConversationCollaboration(props) {
8
- const request = props.request;
9
- const storage = props.storage ?? browserStorage();
10
- const controller = useMemo(() => new ConversationCollaborationController(request, storage), [request, storage]);
11
- const state = useSyncExternalStore(controller.subscribe, controller.snapshot, controller.snapshot);
12
- const [open, setOpen] = useState(false);
13
- const [copyError, setCopyError] = useState(null);
14
- const [joinInput, setJoinInput] = useState('');
15
- const [draft, setDraft] = useState('');
16
- const [entryKind, setEntryKind] = useState('comment');
17
- const [role, setRole] = useState('viewer');
18
- const [expiry, setExpiry] = useState(7);
19
- const firstFocus = useRef(null);
20
- const entryFlight = useRef(false);
21
- const joinFlight = useRef(false);
22
- useEffect(() => { setDraft(''); setEntryKind('comment'); controller.load(props.localConversationId); }, [controller, props.localConversationId]);
23
- useEffect(() => { props.onAccessChange?.(state.access); }, [props.onAccessChange, state.access]);
24
- useEffect(() => { if (state.access?.kind === 'participant')
25
- void controller.restorePendingAppend(); }, [controller, state.access?.conversationId, state.access?.kind]);
26
- useEffect(() => { if (state.pendingAppend) {
27
- setEntryKind(state.pendingAppend.kind);
28
- setDraft(current => current || state.pendingAppend.content);
29
- } }, [state.pendingAppend]);
30
- useEffect(() => {
31
- if (!state.access)
32
- return;
33
- if (state.access.kind === 'owner')
34
- void controller.loadParticipants();
35
- return controller.startLive();
36
- }, [controller, state.access?.conversationId, state.access?.kind]);
37
- useEffect(() => {
38
- if (state.access?.kind !== 'owner' || !props.ownerMessages)
39
- return;
40
- const events = props.ownerMessages.flatMap(message => {
41
- const synced = [];
42
- if ((message.role === 'user' || message.role === 'assistant') && message.content.trim())
43
- synced.push({ eventId: stableEventId('message', message.id), logicalMessageId: stableEventId('message', message.id), kind: message.role, content: message.content, state: message.isStreaming ? 'streaming' : 'complete' });
44
- for (const tool of message.toolCalls || []) {
45
- const status = tool.status === 'done' ? 'completed' : tool.status === 'failed' || tool.status === 'error' ? 'failed' : 'started';
46
- synced.push({ eventId: stableEventId(`tool-${status}`, tool.id), kind: 'tool', tool: { name: tool.toolName, status } });
47
- }
48
- return synced;
49
- });
50
- void controller.ownerSync(events);
51
- }, [controller, props.ownerMessages, state.access?.conversationId, state.access?.kind]);
52
- useEffect(() => {
53
- if (!open)
54
- return;
55
- const prior = document.activeElement;
56
- firstFocus.current?.focus();
57
- const key = (event) => {
58
- if (event.key === 'Escape') {
59
- event.preventDefault();
60
- setOpen(false);
61
- }
62
- if (event.key !== 'Tab')
63
- return;
64
- const modal = document.querySelector('[data-testid="live-collaboration-dialog"]');
65
- const focusable = Array.from(modal?.querySelectorAll('button,input,textarea,[tabindex]:not([tabindex="-1"])') || []).filter(element => !element.hasAttribute('disabled'));
66
- if (!focusable.length)
67
- return;
68
- const first = focusable[0], last = focusable.at(-1);
69
- if (event.shiftKey && document.activeElement === first) {
70
- event.preventDefault();
71
- last.focus();
72
- }
73
- else if (!event.shiftKey && document.activeElement === last) {
74
- event.preventDefault();
75
- first.focus();
76
- }
77
- };
78
- window.addEventListener('keydown', key);
79
- return () => { window.removeEventListener('keydown', key); prior?.focus(); };
80
- }, [open]);
81
- if (state.access?.kind === 'participant') {
82
- const canComment = state.access.role !== 'viewer';
83
- const canMessage = state.access.role === 'contributor';
84
- return (_jsxs("section", { "data-testid": "live-collaboration-participant", className: "xeno-app-shell flex h-full min-h-0 flex-1 flex-col bg-[#08080a] text-white", children: [_jsxs("header", { className: "flex h-[34px] items-center justify-between gap-3 border-b border-white/[0.08] bg-[#111111] px-3", children: [_jsxs("span", { className: "inline-flex items-center gap-2 text-[10px] uppercase tracking-[0.12em] text-white/60", children: [_jsx(Users, { className: "h-3.5 w-3.5" }), " Live collaboration"] }), _jsx("span", { "data-testid": "collaboration-role", className: "rounded-[2px] bg-white/[0.06] px-1.5 py-0.5 text-[10px] text-white/45", children: state.access.role })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-4", children: _jsx("div", { className: "mx-auto flex w-full max-w-[820px] flex-col gap-2", children: _jsx(CollaborationEntries, { state: state }, state.access.conversationId) }) }), _jsx("div", { className: "border-t border-white/[0.08] bg-[#111111] px-6 py-3", children: _jsxs("div", { className: "mx-auto flex w-full max-w-[820px] flex-col gap-2", children: [_jsx(CollaborationStatus, { status: state.status, error: copyError || state.error }), (canComment || canMessage) ? _jsxs(_Fragment, { children: [_jsxs("div", { className: "flex gap-1", children: [canComment && _jsx(ModeButton, { active: entryKind === 'comment', onClick: () => setEntryKind('comment'), children: "Comment" }), canMessage && _jsx(ModeButton, { active: entryKind === 'message', onClick: () => setEntryKind('message'), children: "Contribute message" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx("textarea", { "aria-label": "Collaboration entry", value: draft, onChange: event => setDraft(event.target.value), className: "min-h-[56px] flex-1 cursor-text resize-y rounded-[4px] border border-white/[0.08] bg-black/30 px-2 py-1.5 text-[12px] text-white/80 outline-none focus:border-white/[0.15]" }), _jsx("button", { type: "button", disabled: !draft.trim() || ['loading', 'revoked', 'unavailable'].includes(state.status), onClick: () => { if (entryFlight.current)
85
- return; entryFlight.current = true; const value = draft; void controller.append(entryKind, value).then(confirmed => { if (confirmed)
86
- setDraft(current => current === value ? '' : current); }).finally(() => { entryFlight.current = false; }); }, className: "h-7 cursor-pointer self-end rounded-[4px] bg-white/[0.15] px-4 text-[11px] text-white disabled:cursor-not-allowed disabled:opacity-30", children: "Send" })] })] }) : _jsx("p", { className: "text-[11px] text-white/40", children: "Viewer access is read-only. Provider, terminal, workspace, key and execution controls are not available." })] }) })] }));
87
- }
88
- const ensureOwner = async () => state.access?.kind === 'owner' || controller.registerOwner(props.localConversationId, props.title, props.modelId);
89
- return _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", "data-testid": "open-live-collaboration", onClick: () => setOpen(true), className: "inline-flex h-7 cursor-pointer items-center gap-1.5 rounded-[4px] bg-white/[0.04] px-2.5 text-[10px] text-white/40 hover:bg-white/[0.08] hover:text-white/65", children: [_jsx(Share2, { className: "h-3 w-3" }), " Share"] }), open && _jsx("div", { className: "fixed inset-0 z-[100] flex items-center justify-center bg-black/70", onMouseDown: event => { if (event.target === event.currentTarget)
90
- setOpen(false); }, children: _jsxs("section", { role: "dialog", "aria-modal": "true", "aria-labelledby": "live-collaboration-title", "data-testid": "live-collaboration-dialog", className: "flex w-[520px] max-w-[calc(100vw-32px)] flex-col gap-0 rounded-[6px] border border-white/[0.10] bg-[#111115]", children: [_jsxs("header", { className: "flex h-[34px] items-center justify-between px-3", children: [_jsx("h2", { id: "live-collaboration-title", className: "text-[10px] uppercase tracking-[0.12em] text-white/55", children: "Live conversation collaboration" }), _jsx("button", { type: "button", "aria-label": "Close collaboration", onClick: () => setOpen(false), className: "flex h-6 w-6 cursor-pointer items-center justify-center rounded-[4px] bg-white/[0.04] text-white/35 hover:bg-white/[0.10]", children: _jsx(X, { className: "h-3 w-3" }) })] }), _jsxs("div", { className: "flex flex-col gap-4 border-y border-white/[0.08] p-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("span", { className: "text-[9px] uppercase tracking-[0.12em] text-white/30", children: "Create link" }), _jsx("div", { className: "flex gap-1", children: ['viewer', 'commenter', 'contributor'].map(value => _jsx(ModeButton, { active: role === value, onClick: () => setRole(value), children: value }, value)) }), _jsx("div", { className: "flex gap-1", children: [1, 7, 30].map(value => _jsxs(ModeButton, { active: expiry === value, onClick: () => setExpiry(value), children: [value, " day", value === 1 ? '' : 's'] }, value)) }), _jsx("button", { type: "button", disabled: state.status === 'loading', onClick: () => { void ensureOwner().then(async (ok) => { if (ok)
91
- await controller.createShare(role, expiry); }); }, className: "h-7 cursor-pointer self-start rounded-[4px] bg-white/[0.15] px-4 text-[11px] text-white disabled:cursor-not-allowed disabled:opacity-30", children: "Create live link" }), state.transientShare?.shareUrl && _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { "data-testid": "live-share-url", className: "min-w-0 flex-1 truncate rounded-[4px] border border-white/[0.08] bg-black/30 px-2 py-1.5 text-[10px] text-white/55", children: state.transientShare.shareUrl }), _jsx("button", { type: "button", onClick: () => { setCopyError(null); void copyTextWithFallback(state.transientShare.shareUrl).then(() => controller.clearTransientShare()).catch(() => setCopyError('Clipboard access was denied. The link is still available to copy manually.')); }, className: "flex h-7 w-7 cursor-pointer items-center justify-center rounded-[4px] bg-white/[0.08] text-white/55", "aria-label": "Copy live link", children: _jsx(Copy, { className: "h-3 w-3" }) })] })] }), _jsxs("div", { className: "flex flex-col gap-2 border-t border-white/[0.08] pt-3", children: [_jsx("span", { className: "text-[9px] uppercase tracking-[0.12em] text-white/30", children: "Join original conversation" }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { ref: firstFocus, "aria-label": "Live collaboration link", value: joinInput, onChange: event => setJoinInput(event.target.value), className: "h-7 flex-1 cursor-text rounded-[4px] border border-white/[0.08] bg-black/30 px-2 text-[11px] text-white/75 outline-none focus:border-white/[0.15]" }), _jsx("button", { type: "button", onClick: () => { void controller.preview(joinInput); }, className: "h-7 cursor-pointer rounded-[4px] bg-white/[0.08] px-3 text-[11px] text-white/60", children: "Preview" })] }), state.preview && _jsxs("div", { className: "rounded-[6px] border border-white/[0.10] bg-[#060608] p-2", children: [_jsx("p", { className: "text-[12px] text-white/75", children: state.preview.title || 'Shared conversation' }), _jsxs("p", { className: "text-[10px] text-white/35", children: [state.preview.role, " access \u00B7 ", state.preview.messages.length, " visible messages"] }), _jsx("button", { type: "button", onClick: () => { if (joinFlight.current)
92
- return; joinFlight.current = true; void controller.accept().then(id => { if (id) {
93
- setOpen(false);
94
- props.onNavigateConversation?.(id);
95
- } }).finally(() => { joinFlight.current = false; }); }, className: "mt-2 h-7 cursor-pointer rounded-[4px] bg-white/[0.15] px-4 text-[11px] text-white", children: "Join live conversation" })] })] }), state.access?.kind === 'owner' && _jsxs("div", { className: "flex flex-col gap-2 border-t border-white/[0.08] pt-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-[9px] uppercase tracking-[0.12em] text-white/30", children: "Participants" }), _jsx("button", { type: "button", "aria-label": "Refresh participants", onClick: () => { void controller.loadParticipants(); }, className: "flex h-6 w-6 cursor-pointer items-center justify-center rounded-[4px] bg-white/[0.04] text-white/35", children: _jsx(RefreshCw, { className: "h-3 w-3" }) })] }), state.participants.length ? state.participants.map(participant => _jsxs("div", { className: "flex items-center gap-2 rounded-[4px] border border-white/[0.06] bg-black/20 px-2 py-1.5", children: [_jsx("span", { className: "min-w-0 flex-1 truncate text-[11px] text-white/60", children: participant.name || participant.email || participant.userId }), _jsx("span", { className: "text-[10px] text-white/35", children: participant.role }), _jsx("button", { type: "button", "aria-label": `Revoke ${participant.userId}`, onClick: () => { void controller.revokeParticipant(participant.userId); }, className: "flex h-6 w-6 cursor-pointer items-center justify-center rounded-[4px] border border-red-500/30 text-red-400/70 hover:bg-red-500/10", children: _jsx(UserRoundX, { className: "h-3 w-3" }) })] }, participant.id)) : _jsx("p", { className: "text-[11px] text-white/30", children: "No active participants." })] }), state.access?.kind === 'owner' && state.events.length > 0 && _jsx("section", { "aria-label": "Live conversation activity", className: "max-h-[240px] overflow-y-auto", children: _jsx(CollaborationEntries, { state: state }, state.access.conversationId) }), _jsx(CollaborationStatus, { status: state.status, error: copyError || state.error })] }), _jsx("footer", { className: "flex h-[34px] items-center justify-end px-3", children: _jsx("button", { type: "button", onClick: () => setOpen(false), className: "h-6 cursor-pointer rounded-[4px] bg-white/[0.06] px-3 text-[10px] text-white/50", children: "Close" }) })] }) })] });
96
- }
97
- function ModeButton(props) { return _jsx("button", { type: "button", "aria-pressed": props.active, onClick: props.onClick, className: `h-6 cursor-pointer rounded-[4px] px-2 text-[10px] ${props.active ? 'bg-white/[0.15] text-white/80' : 'bg-white/[0.05] text-white/40 hover:bg-white/[0.09]'}`, children: props.children }); }
98
- function CollaborationEntries({ state }) {
99
- const entries = useMemo(() => collaborationEntries(state), [state.events, state.preview]);
100
- const [anchor, setAnchor] = useState(null);
101
- const view = collaborationWindow(entries.length, anchor);
102
- const buttonClass = 'h-7 rounded-[4px] bg-white/[0.06] px-2 text-[10px] text-white/60 disabled:opacity-30';
103
- return _jsxs(_Fragment, { children: [entries.length > COLLABORATION_WINDOW_SIZE && _jsxs("nav", { "aria-label": "Conversation history pages", className: "flex items-center gap-2", children: [_jsx("button", { type: "button", className: buttonClass, disabled: view.start === 0, onClick: () => setAnchor(view.older), children: "Older" }), _jsxs("span", { role: "status", className: "text-[10px] text-white/45", children: [view.start + 1, "\u2013", view.end, " of ", view.count] }), _jsx("button", { type: "button", className: buttonClass, disabled: view.end === view.count, onClick: () => setAnchor(view.newer), children: "Newer" }), _jsx("button", { type: "button", className: buttonClass, disabled: view.following, onClick: () => setAnchor(null), children: "Latest" })] }), entries.slice(view.start, view.end).map(entry => _jsxs("article", { "data-sequence": entry.sequence, "data-message-id": entry.messageId, className: "rounded-[6px] border border-white/[0.08] bg-[#060608] px-3 py-2", children: [_jsxs("span", { className: "text-[9px] uppercase tracking-[0.12em] text-white/25", children: [entry.role, entry.state === 'streaming' ? ' · streaming' : ''] }), _jsx("p", { className: "whitespace-pre-wrap text-[12px] text-white/72", children: entry.content })] }, entry.id))] });
104
- }
105
- function CollaborationStatus({ status, error }) { if (!error && status !== 'offline' && status !== 'revoked' && status !== 'conflict')
106
- return null; return _jsx("p", { role: "status", "data-testid": "collaboration-status", className: `text-[11px] ${status === 'revoked' || status === 'conflict' ? 'text-red-400/70' : status === 'offline' ? 'text-amber-300/70' : 'text-white/45'}`, children: error || status }); }
107
- function browserStorage() { try {
108
- return globalThis.localStorage;
109
- }
110
- catch {
111
- return undefined;
112
- } }
113
- function stableEventId(prefix, raw) {
114
- const source = `${prefix}:${raw}`;
115
- if (/^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$/.test(source))
116
- return source;
117
- let a = 2166136261, b = 2246822519, c = 3266489917, d = 668265263;
118
- for (const char of source) {
119
- const code = char.charCodeAt(0);
120
- a = Math.imul(a ^ code, 16777619);
121
- b = Math.imul(b ^ code, 3266489917);
122
- c = Math.imul(c ^ code, 374761393);
123
- d = Math.imul(d ^ code, 1274126177);
124
- }
125
- return `${prefix}-${[a, b, c, d].map(value => (value >>> 0).toString(16).padStart(8, '0')).join('')}`.slice(0, 128);
126
- }
127
- //# sourceMappingURL=LiveConversationCollaboration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveConversationCollaboration.js","sourceRoot":"","sources":["../../../src/components/agent/LiveConversationCollaboration.tsx"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- export interface SdkSessionPanelProps {
3
- open: boolean;
4
- onOpenChange(open: boolean): void;
5
- workingDirectory: string;
6
- attachedId?: string;
7
- sessions: Array<Record<string, unknown>>;
8
- loading: boolean;
9
- busy: boolean;
10
- status: string | null;
11
- unavailableReason?: string;
12
- canList: boolean;
13
- canAttach: boolean;
14
- canDetach: boolean;
15
- canDelete: boolean;
16
- canClean: boolean;
17
- onReload(): void;
18
- onAttach(id: string): void;
19
- onDetach(): void;
20
- onDelete(id: string): void;
21
- onClean(): void;
22
- }
23
- /** Shared AgentView session surface. Rows come only from the scoped host listing. */
24
- export declare function SdkSessionPanel(props: SdkSessionPanelProps): React.JSX.Element;
25
- //# sourceMappingURL=SdkSessionPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdkSessionPanel.d.ts","sourceRoot":"","sources":["../../../src/components/agent/SdkSessionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChD,gBAAgB,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC7C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;IAC/F,QAAQ,IAAI,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAC5G;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBA+B1D"}
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
3
- /** Shared AgentView session surface. Rows come only from the scoped host listing. */
4
- export function SdkSessionPanel(props) {
5
- const locked = props.busy || props.loading || !!props.unavailableReason;
6
- const control = 'h-7 rounded px-2 text-[11px] text-white/65 hover:bg-white/[0.08] disabled:cursor-not-allowed disabled:opacity-35';
7
- return _jsxs("div", { className: "relative", children: [_jsx("button", { type: "button", className: control, "aria-expanded": props.open, "aria-controls": "agent-sdk-sessions", onClick: () => props.onOpenChange(!props.open), children: "SDK sessions" }), props.open && _jsxs("section", { id: "agent-sdk-sessions", "aria-label": "SDK sessions", className: "absolute bottom-full right-0 z-[45] mb-2 w-[420px] max-w-[calc(100vw-32px)] rounded-md border border-white/[0.10] bg-[#111115] p-3 shadow-xl", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("h2", { className: "text-[12px] font-medium text-white/80", children: "SDK sessions" }), _jsx("button", { type: "button", className: control, "aria-label": "Close SDK sessions", onClick: () => props.onOpenChange(false), children: "Close" })] }), _jsx("p", { className: "break-all text-[11px] text-white/45", children: props.workingDirectory || 'No conversation workspace selected.' }), _jsxs("p", { className: "mt-1 break-all text-[11px] text-white/65", children: ["Attached: ", props.attachedId || 'None'] }), props.unavailableReason && _jsx("p", { role: "status", className: "mt-2 text-[11px] text-amber-200", children: props.unavailableReason }), !props.canList && _jsx("p", { role: "status", className: "mt-2 text-[11px] text-amber-200", children: "This host does not advertise SDK session listing." }), props.status && _jsx("p", { role: "status", className: "mt-2 break-words text-[11px] text-white/65", children: props.status }), _jsxs("div", { className: "my-2 flex flex-wrap gap-1", children: [_jsx("button", { type: "button", className: control, disabled: !props.canList || props.loading || props.busy, onClick: props.onReload, children: "Reload sessions" }), _jsx("button", { type: "button", className: control, disabled: locked || !props.canDetach || !props.attachedId, onClick: props.onDetach, children: "Detach session" }), _jsx("button", { type: "button", className: control, disabled: locked || !props.canClean || !props.canList || !props.workingDirectory, onClick: props.onClean, children: "Clean old sessions" })] }), _jsx("div", { className: "max-h-64 space-y-1 overflow-auto", children: props.loading ? _jsx("p", { className: "text-[11px] text-white/40", children: "Loading sessions..." }) : props.sessions.length === 0 ? _jsx("p", { className: "text-[11px] text-white/40", children: "No SDK sessions returned for this workspace." }) : props.sessions.map((session, index) => {
8
- const id = typeof session.id === 'string' ? session.id : typeof session.sessionId === 'string' ? session.sessionId : '';
9
- if (!id)
10
- return null;
11
- const attached = id === props.attachedId;
12
- return _jsxs("div", { className: "flex items-center gap-2 rounded border border-white/[0.06] px-2 py-1", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("p", { className: "break-all text-[11px] text-white/70", children: [id, attached ? ' (attached)' : ''] }), typeof session.title === 'string' && _jsx("p", { className: "truncate text-[10px] text-white/40", children: session.title })] }), _jsx("button", { type: "button", className: control, "aria-label": `Attach SDK session ${id}`, disabled: locked || !props.canAttach || attached, onClick: () => props.onAttach(id), children: "Attach" }), _jsx("button", { type: "button", className: control, "aria-label": `Delete SDK session ${id}`, title: attached ? 'Detach this session before deleting it.' : undefined, disabled: locked || !props.canDelete || attached, onClick: () => props.onDelete(id), children: "Delete" })] }, `${id}:${index}`);
13
- }) })] })] });
14
- }
15
- //# sourceMappingURL=SdkSessionPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdkSessionPanel.js","sourceRoot":"","sources":["../../../src/components/agent/SdkSessionPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import type { AcpAvailableCommand } from '@xenosystem/agent-interface-contract';
3
- interface SlashCommandAutocompleteProps {
4
- commands: AcpAvailableCommand[];
5
- filter: string;
6
- selectedIndex: number;
7
- onSelect: (commandName: string) => void;
8
- onClose: () => void;
9
- }
10
- export declare const SlashCommandAutocomplete: React.FC<SlashCommandAutocompleteProps>;
11
- export {};
12
- //# sourceMappingURL=SlashCommandAutocomplete.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SlashCommandAutocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/agent/SlashCommandAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,UAAU,6BAA6B;IACrC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA+F5E,CAAA"}
@@ -1,33 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useEffect, useRef } from 'react';
3
- import { Terminal, Sparkles, X } from 'lucide-react';
4
- export const SlashCommandAutocomplete = ({ commands, filter, selectedIndex, onSelect, onClose, }) => {
5
- const containerRef = useRef(null);
6
- const cleanFilter = filter.startsWith('/') ? filter.slice(1).toLowerCase() : filter.toLowerCase();
7
- const filtered = commands.filter((cmd) => {
8
- const nameWithoutSlash = cmd.name.startsWith('/') ? cmd.name.slice(1).toLowerCase() : cmd.name.toLowerCase();
9
- return nameWithoutSlash.includes(cleanFilter) || (cmd.description && cmd.description.toLowerCase().includes(cleanFilter));
10
- });
11
- useEffect(() => {
12
- if (containerRef.current) {
13
- const activeEl = containerRef.current.querySelector('[data-selected="true"]');
14
- if (activeEl) {
15
- activeEl.scrollIntoView({ block: 'nearest' });
16
- }
17
- }
18
- }, [selectedIndex]);
19
- if (filtered.length === 0)
20
- return null;
21
- return (_jsxs("div", { ref: containerRef, className: "absolute bottom-full left-0 right-0 z-50 mb-2 max-h-64 overflow-y-auto rounded-lg border border-white/[0.12] bg-[#1a1b26]/95 backdrop-blur-md shadow-2xl p-1.5 text-[12px]", role: "listbox", "aria-label": "Slash commands", children: [_jsxs("div", { className: "px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-white/40 flex items-center justify-between border-b border-white/[0.06] mb-1", children: [_jsx("span", { children: "Commands & Skills" }), _jsx("span", { className: "font-normal lowercase tracking-normal opacity-60", children: "\u2191\u2193 to navigate \u00B7 \u21B5 or Tab to select" }), _jsx("button", { type: "button", "aria-label": "Dismiss slash command suggestions", onClick: onClose, className: "p-1 text-white/50 hover:text-white", children: _jsx(X, { size: 12 }) })] }), _jsx("div", { className: "flex flex-col gap-0.5", children: filtered.map((cmd, idx) => {
22
- const isSelected = idx === selectedIndex;
23
- const originBadge = cmd.origin === 'provider'
24
- ? { label: 'CLI', bg: 'bg-cyan-500/15 text-cyan-300 border-cyan-500/30' }
25
- : cmd.origin === 'skill'
26
- ? { label: 'Skill', bg: 'bg-purple-500/15 text-purple-300 border-purple-500/30' }
27
- : { label: 'Command', bg: 'bg-white/10 text-white/60 border-white/15' };
28
- return (_jsxs("button", { type: "button", "data-selected": isSelected ? 'true' : 'false', onClick: () => onSelect(cmd.name), className: `flex items-center justify-between gap-3 rounded px-2.5 py-1.5 text-left transition-colors cursor-pointer ${isSelected
29
- ? 'bg-white/[0.12] text-white'
30
- : 'text-white/80 hover:bg-white/[0.06] hover:text-white'}`, role: "option", "aria-selected": isSelected, children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [_jsx("div", { className: `shrink-0 ${isSelected ? 'text-white' : 'text-white/40'}`, children: cmd.origin === 'skill' ? (_jsx(Sparkles, { className: "h-3.5 w-3.5" })) : (_jsx(Terminal, { className: "h-3.5 w-3.5" })) }), _jsx("span", { className: "font-mono font-medium text-white shrink-0", children: cmd.name.startsWith('/') ? cmd.name : `/${cmd.name}` }), cmd.description && (_jsx("span", { className: "min-w-0 truncate text-white/50 text-[11px]", children: cmd.description }))] }), _jsx("span", { className: `shrink-0 rounded border px-1.5 py-0.2 text-[9px] font-medium ${originBadge.bg}`, children: originBadge.label })] }, cmd.name));
31
- }) })] }));
32
- };
33
- //# sourceMappingURL=SlashCommandAutocomplete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SlashCommandAutocomplete.js","sourceRoot":"","sources":["../../../src/components/agent/SlashCommandAutocomplete.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /** Presentation window only; never truncate the authoritative event history. */
2
- export declare const COLLABORATION_WINDOW_SIZE = 20;
3
- export declare function collaborationWindow(length: number, requestedStart: number | null): {
4
- start: number;
5
- end: number;
6
- count: number;
7
- older: number;
8
- newer: number;
9
- following: boolean;
10
- };
11
- //# sourceMappingURL=collaborationWindow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collaborationWindow.d.ts","sourceRoot":"","sources":["../../../src/components/agent/collaborationWindow.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAC3C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;;;;;;;EAMhF"}
@@ -1,10 +0,0 @@
1
- /** Presentation window only; never truncate the authoritative event history. */
2
- export const COLLABORATION_WINDOW_SIZE = 20;
3
- export function collaborationWindow(length, requestedStart) {
4
- const count = Number.isSafeInteger(length) && length > 0 ? length : 0;
5
- const latestStart = Math.max(0, count - COLLABORATION_WINDOW_SIZE);
6
- const start = requestedStart === null ? latestStart : Math.min(latestStart, Math.max(0, Number.isFinite(requestedStart) ? Math.floor(requestedStart) : 0));
7
- const end = Math.min(count, start + COLLABORATION_WINDOW_SIZE);
8
- return { start, end, count, older: Math.max(0, start - COLLABORATION_WINDOW_SIZE), newer: Math.min(latestStart, start + COLLABORATION_WINDOW_SIZE), following: requestedStart === null };
9
- }
10
- //# sourceMappingURL=collaborationWindow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collaborationWindow.js","sourceRoot":"","sources":["../../../src/components/agent/collaborationWindow.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,cAA6B;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,yBAAyB,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1J,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,yBAAyB,CAAC,CAAA;IAC9D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,yBAAyB,CAAC,EAAE,SAAS,EAAE,cAAc,KAAK,IAAI,EAAE,CAAA;AAC1L,CAAC"}