@xenosystem/agent-conversation 0.1.30

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 (218) hide show
  1. package/LICENSE +67 -0
  2. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +14 -0
  3. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -0
  4. package/dist/adapters/xenoAgentCompatibilityBridge.js +247 -0
  5. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -0
  6. package/dist/adapters/xenoAgentHostCatalog.d.ts +40 -0
  7. package/dist/adapters/xenoAgentHostCatalog.d.ts.map +1 -0
  8. package/dist/adapters/xenoAgentHostCatalog.js +231 -0
  9. package/dist/adapters/xenoAgentHostCatalog.js.map +1 -0
  10. package/dist/components/agent/AIStatusIndicator.d.ts +25 -0
  11. package/dist/components/agent/AIStatusIndicator.d.ts.map +1 -0
  12. package/dist/components/agent/AIStatusIndicator.js +85 -0
  13. package/dist/components/agent/AIStatusIndicator.js.map +1 -0
  14. package/dist/components/agent/AgentNotificationBanner.d.ts +10 -0
  15. package/dist/components/agent/AgentNotificationBanner.d.ts.map +1 -0
  16. package/dist/components/agent/AgentNotificationBanner.js +28 -0
  17. package/dist/components/agent/AgentNotificationBanner.js.map +1 -0
  18. package/dist/components/agent/AgentView.d.ts +185 -0
  19. package/dist/components/agent/AgentView.d.ts.map +1 -0
  20. package/dist/components/agent/AgentView.js +7850 -0
  21. package/dist/components/agent/AgentView.js.map +1 -0
  22. package/dist/components/agent/AssistantTurnStatusNotice.d.ts +16 -0
  23. package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +1 -0
  24. package/dist/components/agent/AssistantTurnStatusNotice.js +54 -0
  25. package/dist/components/agent/AssistantTurnStatusNotice.js.map +1 -0
  26. package/dist/components/agent/CommandToolCard.d.ts +11 -0
  27. package/dist/components/agent/CommandToolCard.d.ts.map +1 -0
  28. package/dist/components/agent/CommandToolCard.js +29 -0
  29. package/dist/components/agent/CommandToolCard.js.map +1 -0
  30. package/dist/components/agent/GhostTextArea.d.ts +13 -0
  31. package/dist/components/agent/GhostTextArea.d.ts.map +1 -0
  32. package/dist/components/agent/GhostTextArea.js +21 -0
  33. package/dist/components/agent/GhostTextArea.js.map +1 -0
  34. package/dist/components/agent/LiveConversationCollaboration.d.ts +27 -0
  35. package/dist/components/agent/LiveConversationCollaboration.d.ts.map +1 -0
  36. package/dist/components/agent/LiveConversationCollaboration.js +127 -0
  37. package/dist/components/agent/LiveConversationCollaboration.js.map +1 -0
  38. package/dist/components/agent/SdkSessionPanel.d.ts +25 -0
  39. package/dist/components/agent/SdkSessionPanel.d.ts.map +1 -0
  40. package/dist/components/agent/SdkSessionPanel.js +15 -0
  41. package/dist/components/agent/SdkSessionPanel.js.map +1 -0
  42. package/dist/components/agent/SlashCommandAutocomplete.d.ts +12 -0
  43. package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +1 -0
  44. package/dist/components/agent/SlashCommandAutocomplete.js +33 -0
  45. package/dist/components/agent/SlashCommandAutocomplete.js.map +1 -0
  46. package/dist/components/agent/collaborationWindow.d.ts +11 -0
  47. package/dist/components/agent/collaborationWindow.d.ts.map +1 -0
  48. package/dist/components/agent/collaborationWindow.js +10 -0
  49. package/dist/components/agent/collaborationWindow.js.map +1 -0
  50. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +25 -0
  51. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +1 -0
  52. package/dist/components/agent/conversationCollaborationAppendJournal.js +118 -0
  53. package/dist/components/agent/conversationCollaborationAppendJournal.js.map +1 -0
  54. package/dist/components/agent/conversationCollaborationController.d.ts +96 -0
  55. package/dist/components/agent/conversationCollaborationController.d.ts.map +1 -0
  56. package/dist/components/agent/conversationCollaborationController.js +597 -0
  57. package/dist/components/agent/conversationCollaborationController.js.map +1 -0
  58. package/dist/components/agent/destructiveConfirmation.d.ts +76 -0
  59. package/dist/components/agent/destructiveConfirmation.d.ts.map +1 -0
  60. package/dist/components/agent/destructiveConfirmation.js +231 -0
  61. package/dist/components/agent/destructiveConfirmation.js.map +1 -0
  62. package/dist/components/agent/editorOperationAuthority.d.ts +29 -0
  63. package/dist/components/agent/editorOperationAuthority.d.ts.map +1 -0
  64. package/dist/components/agent/editorOperationAuthority.js +73 -0
  65. package/dist/components/agent/editorOperationAuthority.js.map +1 -0
  66. package/dist/components/agent/mainAssistant.d.ts +24 -0
  67. package/dist/components/agent/mainAssistant.d.ts.map +1 -0
  68. package/dist/components/agent/mainAssistant.js +24 -0
  69. package/dist/components/agent/mainAssistant.js.map +1 -0
  70. package/dist/components/agent/nativeTuiComposerInput.d.ts +42 -0
  71. package/dist/components/agent/nativeTuiComposerInput.d.ts.map +1 -0
  72. package/dist/components/agent/nativeTuiComposerInput.js +51 -0
  73. package/dist/components/agent/nativeTuiComposerInput.js.map +1 -0
  74. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +25 -0
  75. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +1 -0
  76. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +89 -0
  77. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +1 -0
  78. package/dist/components/agent/toolCardDisplay.d.ts +24 -0
  79. package/dist/components/agent/toolCardDisplay.d.ts.map +1 -0
  80. package/dist/components/agent/toolCardDisplay.js +85 -0
  81. package/dist/components/agent/toolCardDisplay.js.map +1 -0
  82. package/dist/components/agent/webJobProgressView.d.ts +90 -0
  83. package/dist/components/agent/webJobProgressView.d.ts.map +1 -0
  84. package/dist/components/agent/webJobProgressView.js +104 -0
  85. package/dist/components/agent/webJobProgressView.js.map +1 -0
  86. package/dist/components/agent/workbenchPanelTabs.d.ts +12 -0
  87. package/dist/components/agent/workbenchPanelTabs.d.ts.map +1 -0
  88. package/dist/components/agent/workbenchPanelTabs.js +35 -0
  89. package/dist/components/agent/workbenchPanelTabs.js.map +1 -0
  90. package/dist/components/ui/CodeBlock.d.ts +8 -0
  91. package/dist/components/ui/CodeBlock.d.ts.map +1 -0
  92. package/dist/components/ui/CodeBlock.js +89 -0
  93. package/dist/components/ui/CodeBlock.js.map +1 -0
  94. package/dist/index.d.ts +50 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +45 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/platformApiTypes.d.ts +4176 -0
  99. package/dist/platformApiTypes.d.ts.map +1 -0
  100. package/dist/platformApiTypes.js +2 -0
  101. package/dist/platformApiTypes.js.map +1 -0
  102. package/dist/platformBridge.d.ts +43 -0
  103. package/dist/platformBridge.d.ts.map +1 -0
  104. package/dist/platformBridge.js +67 -0
  105. package/dist/platformBridge.js.map +1 -0
  106. package/dist/providerSelector.d.ts +28 -0
  107. package/dist/providerSelector.d.ts.map +1 -0
  108. package/dist/providerSelector.js +104 -0
  109. package/dist/providerSelector.js.map +1 -0
  110. package/dist/services/connectionMode.d.ts +13 -0
  111. package/dist/services/connectionMode.d.ts.map +1 -0
  112. package/dist/services/connectionMode.js +31 -0
  113. package/dist/services/connectionMode.js.map +1 -0
  114. package/dist/sessionTabs.d.ts +48 -0
  115. package/dist/sessionTabs.d.ts.map +1 -0
  116. package/dist/sessionTabs.js +106 -0
  117. package/dist/sessionTabs.js.map +1 -0
  118. package/dist/stores/acpAgentStore.d.ts +264 -0
  119. package/dist/stores/acpAgentStore.d.ts.map +1 -0
  120. package/dist/stores/acpAgentStore.js +825 -0
  121. package/dist/stores/acpAgentStore.js.map +1 -0
  122. package/dist/stores/agentChatStore.d.ts +693 -0
  123. package/dist/stores/agentChatStore.d.ts.map +1 -0
  124. package/dist/stores/agentChatStore.js +5876 -0
  125. package/dist/stores/agentChatStore.js.map +1 -0
  126. package/dist/stores/authStore.d.ts +26 -0
  127. package/dist/stores/authStore.d.ts.map +1 -0
  128. package/dist/stores/authStore.js +163 -0
  129. package/dist/stores/authStore.js.map +1 -0
  130. package/dist/stores/suggestionStore.d.ts +36 -0
  131. package/dist/stores/suggestionStore.d.ts.map +1 -0
  132. package/dist/stores/suggestionStore.js +187 -0
  133. package/dist/stores/suggestionStore.js.map +1 -0
  134. package/dist/stores/tabStore.d.ts +30 -0
  135. package/dist/stores/tabStore.d.ts.map +1 -0
  136. package/dist/stores/tabStore.js +252 -0
  137. package/dist/stores/tabStore.js.map +1 -0
  138. package/dist/stores/xenoChatStore.d.ts +88 -0
  139. package/dist/stores/xenoChatStore.d.ts.map +1 -0
  140. package/dist/stores/xenoChatStore.js +583 -0
  141. package/dist/stores/xenoChatStore.js.map +1 -0
  142. package/dist/types/agentEditor.d.ts +40 -0
  143. package/dist/types/agentEditor.d.ts.map +1 -0
  144. package/dist/types/agentEditor.js +2 -0
  145. package/dist/types/agentEditor.js.map +1 -0
  146. package/dist/types/agentPermissions.d.ts +45 -0
  147. package/dist/types/agentPermissions.d.ts.map +1 -0
  148. package/dist/types/agentPermissions.js +15 -0
  149. package/dist/types/agentPermissions.js.map +1 -0
  150. package/dist/types/agentRuntimeProvider.d.ts +2 -0
  151. package/dist/types/agentRuntimeProvider.d.ts.map +1 -0
  152. package/dist/types/agentRuntimeProvider.js +2 -0
  153. package/dist/types/agentRuntimeProvider.js.map +1 -0
  154. package/dist/utils/acpExecutionAuthority.d.ts +26 -0
  155. package/dist/utils/acpExecutionAuthority.d.ts.map +1 -0
  156. package/dist/utils/acpExecutionAuthority.js +46 -0
  157. package/dist/utils/acpExecutionAuthority.js.map +1 -0
  158. package/dist/utils/advertisedReasoning.d.ts +25 -0
  159. package/dist/utils/advertisedReasoning.d.ts.map +1 -0
  160. package/dist/utils/advertisedReasoning.js +62 -0
  161. package/dist/utils/advertisedReasoning.js.map +1 -0
  162. package/dist/utils/agentAttachedContextPrompt.d.ts +2 -0
  163. package/dist/utils/agentAttachedContextPrompt.d.ts.map +1 -0
  164. package/dist/utils/agentAttachedContextPrompt.js +2 -0
  165. package/dist/utils/agentAttachedContextPrompt.js.map +1 -0
  166. package/dist/utils/agentModelContext.d.ts +2 -0
  167. package/dist/utils/agentModelContext.d.ts.map +1 -0
  168. package/dist/utils/agentModelContext.js +2 -0
  169. package/dist/utils/agentModelContext.js.map +1 -0
  170. package/dist/utils/agentReasoningEffort.d.ts +3 -0
  171. package/dist/utils/agentReasoningEffort.d.ts.map +1 -0
  172. package/dist/utils/agentReasoningEffort.js +2 -0
  173. package/dist/utils/agentReasoningEffort.js.map +1 -0
  174. package/dist/utils/agentRuntimeProvider.d.ts +3 -0
  175. package/dist/utils/agentRuntimeProvider.d.ts.map +1 -0
  176. package/dist/utils/agentRuntimeProvider.js +2 -0
  177. package/dist/utils/agentRuntimeProvider.js.map +1 -0
  178. package/dist/utils/clipboardCopy.d.ts +4 -0
  179. package/dist/utils/clipboardCopy.d.ts.map +1 -0
  180. package/dist/utils/clipboardCopy.js +27 -0
  181. package/dist/utils/clipboardCopy.js.map +1 -0
  182. package/dist/utils/cloudModels.d.ts +3 -0
  183. package/dist/utils/cloudModels.d.ts.map +1 -0
  184. package/dist/utils/cloudModels.js +181 -0
  185. package/dist/utils/cloudModels.js.map +1 -0
  186. package/dist/utils/conversationRuntime.d.ts +3 -0
  187. package/dist/utils/conversationRuntime.d.ts.map +1 -0
  188. package/dist/utils/conversationRuntime.js +2 -0
  189. package/dist/utils/conversationRuntime.js.map +1 -0
  190. package/dist/utils/fileCreateIntent.d.ts +16 -0
  191. package/dist/utils/fileCreateIntent.d.ts.map +1 -0
  192. package/dist/utils/fileCreateIntent.js +123 -0
  193. package/dist/utils/fileCreateIntent.js.map +1 -0
  194. package/dist/utils/legacyAgentRuntimeEvents.d.ts +2 -0
  195. package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +1 -0
  196. package/dist/utils/legacyAgentRuntimeEvents.js +2 -0
  197. package/dist/utils/legacyAgentRuntimeEvents.js.map +1 -0
  198. package/dist/utils/markdownWindowsPaths.d.ts +2 -0
  199. package/dist/utils/markdownWindowsPaths.d.ts.map +1 -0
  200. package/dist/utils/markdownWindowsPaths.js +2 -0
  201. package/dist/utils/markdownWindowsPaths.js.map +1 -0
  202. package/dist/utils/modelAvailability.d.ts +11 -0
  203. package/dist/utils/modelAvailability.d.ts.map +1 -0
  204. package/dist/utils/modelAvailability.js +10 -0
  205. package/dist/utils/modelAvailability.js.map +1 -0
  206. package/dist/utils/providerAvailability.d.ts +8 -0
  207. package/dist/utils/providerAvailability.d.ts.map +1 -0
  208. package/dist/utils/providerAvailability.js +13 -0
  209. package/dist/utils/providerAvailability.js.map +1 -0
  210. package/dist/utils/providerCommandArgs.d.ts +11 -0
  211. package/dist/utils/providerCommandArgs.d.ts.map +1 -0
  212. package/dist/utils/providerCommandArgs.js +18 -0
  213. package/dist/utils/providerCommandArgs.js.map +1 -0
  214. package/dist/utils/workspaceSelectionContinuation.d.ts +2 -0
  215. package/dist/utils/workspaceSelectionContinuation.d.ts.map +1 -0
  216. package/dist/utils/workspaceSelectionContinuation.js +2 -0
  217. package/dist/utils/workspaceSelectionContinuation.js.map +1 -0
  218. package/package.json +55 -0
@@ -0,0 +1,252 @@
1
+ import { create } from 'zustand';
2
+ const TAB_LABELS = {
3
+ hub: 'HUB',
4
+ agent: 'AGENT',
5
+ code: 'CODE',
6
+ ide: 'IDE',
7
+ chat: 'CHAT',
8
+ tool: 'TOOL',
9
+ };
10
+ const TAB_INTERFACE_NAMES = {
11
+ hub: 'HUB INTERFACE',
12
+ agent: 'AGENT INTERFACE',
13
+ code: 'CODE INTERFACE',
14
+ ide: 'IDE INTERFACE',
15
+ chat: 'CHAT INTERFACE',
16
+ tool: 'TOOL INTERFACE',
17
+ };
18
+ export const TOOL_TAB_LABELS = {
19
+ 'image-gen': 'IMAGE GEN',
20
+ 'video-gen': 'VIDEO GEN',
21
+ 'upscaler': 'UPSCALER',
22
+ 'bg-removal': 'BG REMOVAL',
23
+ 'resize': 'RESIZE',
24
+ 'converter': 'CONVERTER',
25
+ 'compressor': 'COMPRESSOR',
26
+ 'asset-extractor': 'ASSET EXTRACTOR',
27
+ 'ui-asset-extractor': 'UI ASSET EXTRACTOR',
28
+ 'material-generator': 'MATERIAL GEN',
29
+ 'pdf-merge': 'PDF MERGE',
30
+ 'latex-compiler': 'LATEX',
31
+ 'capture': 'CAPTURE',
32
+ 'whisper': 'WHISPER',
33
+ };
34
+ const TAB_STATE_STORAGE_KEY = 'xeno.hub.tabs.v1';
35
+ const DEFAULT_TABS = [
36
+ { id: '1', type: 'hub', label: 'HUB', pinned: true },
37
+ { id: '2', type: 'agent', label: 'AGENT', pinned: true },
38
+ { id: '3', type: 'code', label: 'CODE', pinned: true },
39
+ ];
40
+ const VALID_TAB_TYPES = new Set(['hub', 'agent', 'code', 'ide', 'chat', 'tool']);
41
+ let nextId = 4;
42
+ function syncNextId(tabs) {
43
+ const maxNumericId = tabs.reduce((max, tab) => {
44
+ const numeric = Number(tab.id);
45
+ return Number.isFinite(numeric) ? Math.max(max, numeric) : max;
46
+ }, 3);
47
+ nextId = Math.max(4, maxNumericId + 1);
48
+ }
49
+ function normalizeTab(raw) {
50
+ if (!raw || typeof raw !== 'object')
51
+ return null;
52
+ const candidate = raw;
53
+ if (typeof candidate.id !== 'string' || candidate.id.length === 0)
54
+ return null;
55
+ if (!candidate.type || !VALID_TAB_TYPES.has(candidate.type))
56
+ return null;
57
+ if (candidate.type === 'tool') {
58
+ if (!candidate.toolId || !isToolTabId(candidate.toolId))
59
+ return null;
60
+ return {
61
+ id: candidate.id,
62
+ type: 'tool',
63
+ label: TOOL_TAB_LABELS[candidate.toolId],
64
+ toolId: candidate.toolId,
65
+ };
66
+ }
67
+ return {
68
+ id: candidate.id,
69
+ type: candidate.type,
70
+ label: TAB_LABELS[candidate.type],
71
+ pinned: DEFAULT_TABS.some((tab) => tab.id === candidate.id && tab.type === candidate.type) || undefined,
72
+ };
73
+ }
74
+ function getToolTabLabel(toolId, existingTabs) {
75
+ const baseLabel = TOOL_TAB_LABELS[toolId];
76
+ const instanceCount = existingTabs.filter((tab) => tab.type === 'tool' && tab.toolId === toolId).length;
77
+ return instanceCount === 0 ? baseLabel : `${baseLabel} ${instanceCount + 1}`;
78
+ }
79
+ function relabelToolTabs(tabs) {
80
+ const counts = new Map();
81
+ return tabs.map((tab) => {
82
+ if (tab.type !== 'tool' || !tab.toolId)
83
+ return tab;
84
+ const nextCount = (counts.get(tab.toolId) || 0) + 1;
85
+ counts.set(tab.toolId, nextCount);
86
+ return {
87
+ ...tab,
88
+ label: nextCount === 1 ? TOOL_TAB_LABELS[tab.toolId] : `${TOOL_TAB_LABELS[tab.toolId]} ${nextCount}`,
89
+ };
90
+ });
91
+ }
92
+ function normalizeTabs(rawTabs) {
93
+ const restored = Array.isArray(rawTabs)
94
+ ? rawTabs.map(normalizeTab).filter((tab) => Boolean(tab))
95
+ : [];
96
+ const pinnedTabs = DEFAULT_TABS.map((defaultTab) => ({
97
+ id: defaultTab.id,
98
+ type: defaultTab.type,
99
+ label: defaultTab.label,
100
+ pinned: true,
101
+ }));
102
+ const customTabs = restored.filter((tab) => !DEFAULT_TABS.some((defaultTab) => defaultTab.id === tab.id));
103
+ const tabs = relabelToolTabs([...pinnedTabs, ...customTabs]);
104
+ syncNextId(tabs);
105
+ return tabs;
106
+ }
107
+ function persistTabState(tabs, activeTabId) {
108
+ if (typeof window === 'undefined')
109
+ return;
110
+ try {
111
+ window.localStorage.setItem(TAB_STATE_STORAGE_KEY, JSON.stringify({ tabs, activeTabId }));
112
+ }
113
+ catch {
114
+ // Tab persistence is a convenience layer; never block core navigation.
115
+ }
116
+ }
117
+ function loadInitialTabState() {
118
+ if (typeof window === 'undefined') {
119
+ syncNextId(DEFAULT_TABS);
120
+ return { tabs: DEFAULT_TABS, activeTabId: '1' };
121
+ }
122
+ try {
123
+ const raw = window.localStorage.getItem(TAB_STATE_STORAGE_KEY);
124
+ if (!raw) {
125
+ syncNextId(DEFAULT_TABS);
126
+ return { tabs: DEFAULT_TABS, activeTabId: '1' };
127
+ }
128
+ const parsed = JSON.parse(raw);
129
+ const tabs = normalizeTabs(parsed.tabs);
130
+ const activeTabId = typeof parsed.activeTabId === 'string' && tabs.some((tab) => tab.id === parsed.activeTabId)
131
+ ? parsed.activeTabId
132
+ : tabs[0]?.id || '1';
133
+ return { tabs, activeTabId };
134
+ }
135
+ catch {
136
+ syncNextId(DEFAULT_TABS);
137
+ return { tabs: DEFAULT_TABS, activeTabId: '1' };
138
+ }
139
+ }
140
+ function createTab(type) {
141
+ return {
142
+ id: String(nextId++),
143
+ type,
144
+ label: TAB_LABELS[type],
145
+ };
146
+ }
147
+ function createToolTab(toolId, existingTabs = []) {
148
+ return {
149
+ id: String(nextId++),
150
+ type: 'tool',
151
+ label: getToolTabLabel(toolId, existingTabs),
152
+ toolId,
153
+ };
154
+ }
155
+ export function getInterfaceName(type) {
156
+ return TAB_INTERFACE_NAMES[type];
157
+ }
158
+ export function isToolTabId(value) {
159
+ return value in TOOL_TAB_LABELS;
160
+ }
161
+ const initialTabState = loadInitialTabState();
162
+ export const useTabStore = create((set, get) => ({
163
+ tabs: initialTabState.tabs,
164
+ activeTabId: initialTabState.activeTabId,
165
+ pendingHubSection: null,
166
+ addTab: (type) => {
167
+ const tab = createTab(type);
168
+ set((state) => {
169
+ const tabs = [...state.tabs, tab];
170
+ persistTabState(tabs, tab.id);
171
+ return { tabs, activeTabId: tab.id };
172
+ });
173
+ },
174
+ openToolTab: (toolId, options) => {
175
+ const { tabs, activeTabId } = get();
176
+ const shouldActivate = options?.activate !== false;
177
+ const existing = options?.newInstance
178
+ ? undefined
179
+ : tabs.find((tab) => tab.type === 'tool' && tab.toolId === toolId);
180
+ if (existing) {
181
+ if (shouldActivate) {
182
+ set({ activeTabId: existing.id });
183
+ persistTabState(tabs, existing.id);
184
+ }
185
+ else {
186
+ persistTabState(tabs, activeTabId);
187
+ }
188
+ return;
189
+ }
190
+ const tab = createToolTab(toolId, tabs);
191
+ set((state) => {
192
+ const tabs = [...state.tabs, tab];
193
+ const nextActiveTabId = shouldActivate ? tab.id : state.activeTabId;
194
+ persistTabState(tabs, nextActiveTabId);
195
+ return { tabs, activeTabId: nextActiveTabId };
196
+ });
197
+ },
198
+ removeTab: (tabId) => {
199
+ const { tabs, activeTabId } = get();
200
+ const tab = tabs.find((t) => t.id === tabId);
201
+ if (!tab || tab.pinned)
202
+ return; // Don't remove pinned tabs
203
+ if (tabs.length <= 1)
204
+ return; // Don't remove last tab
205
+ const idx = tabs.findIndex((t) => t.id === tabId);
206
+ const newTabs = tabs.filter((t) => t.id !== tabId);
207
+ // If removing the active tab, activate the nearest one
208
+ let newActiveId = activeTabId;
209
+ if (activeTabId === tabId) {
210
+ const newIdx = Math.min(idx, newTabs.length - 1);
211
+ newActiveId = newTabs[newIdx].id;
212
+ }
213
+ set({ tabs: newTabs, activeTabId: newActiveId });
214
+ persistTabState(newTabs, newActiveId);
215
+ },
216
+ setActiveTab: (tabId) => {
217
+ const { tabs } = get();
218
+ if (!tabs.some((tab) => tab.id === tabId))
219
+ return;
220
+ set({ activeTabId: tabId });
221
+ persistTabState(tabs, tabId);
222
+ },
223
+ duplicateTab: (tabId) => {
224
+ const { tabs } = get();
225
+ const source = tabs.find((t) => t.id === tabId);
226
+ if (!source)
227
+ return;
228
+ const tab = source.type === 'tool' && source.toolId
229
+ ? createToolTab(source.toolId, tabs)
230
+ : createTab(source.type);
231
+ const idx = tabs.findIndex((t) => t.id === tabId);
232
+ const newTabs = [...tabs];
233
+ newTabs.splice(idx + 1, 0, tab);
234
+ set({ tabs: newTabs, activeTabId: tab.id });
235
+ persistTabState(newTabs, tab.id);
236
+ },
237
+ navigateToHubSection: (section) => {
238
+ const { tabs } = get();
239
+ const hubTab = tabs.find(t => t.type === 'hub');
240
+ if (hubTab) {
241
+ set({ activeTabId: hubTab.id, pendingHubSection: section });
242
+ persistTabState(tabs, hubTab.id);
243
+ }
244
+ },
245
+ consumePendingHubSection: () => {
246
+ const section = get().pendingHubSection;
247
+ if (section)
248
+ set({ pendingHubSection: null });
249
+ return section;
250
+ },
251
+ }));
252
+ //# sourceMappingURL=tabStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabStore.js","sourceRoot":"","sources":["../../src/stores/tabStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ export interface CodeExecution {
2
+ id: string;
3
+ language: 'python' | 'javascript';
4
+ code: string;
5
+ status: 'pending' | 'running' | 'completed' | 'error';
6
+ stdout?: string;
7
+ stderr?: string;
8
+ exitCode?: number | null;
9
+ durationMs?: number;
10
+ files?: string[];
11
+ error?: string;
12
+ }
13
+ export interface XenoChatMessage {
14
+ id: string;
15
+ role: 'user' | 'assistant';
16
+ content: string;
17
+ thinking?: string;
18
+ showThinking?: boolean;
19
+ isThinking?: boolean;
20
+ isStreaming?: boolean;
21
+ error?: string;
22
+ timestamp: number;
23
+ codeExecutions?: CodeExecution[];
24
+ }
25
+ export interface XenoChatConversation {
26
+ id: string;
27
+ messages: XenoChatMessage[];
28
+ title: string;
29
+ model: string;
30
+ createdAt: number;
31
+ lastMessageAt: number;
32
+ }
33
+ export interface ModelInfo {
34
+ id: string;
35
+ name: string;
36
+ provider: 'cloud' | 'local';
37
+ parameterSize?: string | null;
38
+ family?: string | null;
39
+ supportsThinking?: boolean;
40
+ }
41
+ export interface RuntimeInfo {
42
+ python: {
43
+ available: boolean;
44
+ version: string | null;
45
+ command: string | null;
46
+ };
47
+ node: {
48
+ available: boolean;
49
+ version: string | null;
50
+ };
51
+ }
52
+ interface XenoChatState {
53
+ conversations: Record<string, XenoChatConversation>;
54
+ activeConversationId: string | null;
55
+ activeRequestId: string | null;
56
+ defaultModel: string;
57
+ availableModels: ModelInfo[];
58
+ modelsLoading: boolean;
59
+ modelsError: string | null;
60
+ runtimes: RuntimeInfo | null;
61
+ isExecutingCode: boolean;
62
+ serverConnected: boolean;
63
+ creatingConversation: boolean;
64
+ createConversation: (model?: string) => string;
65
+ setActiveConversation: (id: string | null) => void;
66
+ deleteConversation: (id: string) => void;
67
+ renameConversation: (id: string, title: string) => void;
68
+ sendMessage: (conversationId: string, content: string, options?: {
69
+ enableThinking?: boolean;
70
+ }) => void;
71
+ appendChunk: (requestId: string, content: string, thinking: string) => void;
72
+ finalizeStream: (requestId: string) => void;
73
+ setStreamError: (requestId: string, error: string) => void;
74
+ abort: () => void;
75
+ setDefaultModel: (modelId: string) => void;
76
+ setConversationModel: (conversationId: string, modelId: string) => void;
77
+ fetchModels: () => Promise<void>;
78
+ detectRuntimes: () => Promise<void>;
79
+ updateCodeExecution: (messageId: string, executionId: string, updates: Partial<CodeExecution>) => void;
80
+ executeCodeBlock: (conversationId: string, messageId: string, execution: CodeExecution) => Promise<void>;
81
+ sendFollowup: (conversationId: string, resultContent: string) => void;
82
+ setServerConnected: (connected: boolean) => void;
83
+ loadLocalConversations: () => Promise<void>;
84
+ }
85
+ export declare const useXenoChatStore: import("zustand").UseBoundStore<import("zustand").StoreApi<XenoChatState>>;
86
+ export declare function setupXenoChatListeners(): () => void;
87
+ export {};
88
+ //# sourceMappingURL=xenoChatStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xenoChatStore.d.ts","sourceRoot":"","sources":["../../src/stores/xenoChatStore.ts"],"names":[],"mappings":"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"}