@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,583 @@
1
+ import { getAgentPlatformBridge } from '../platformBridge.js';
2
+ import { create } from 'zustand';
3
+ import { cloudModelName } from '../utils/cloudModels.js';
4
+ import { isSelectableLiveModel } from '../utils/modelAvailability.js';
5
+ const THINKING_MODEL_PATTERNS = /claude|deepseek-r1|deepseek-reasoner|qwq|o1|o3|o4|gpt-5/i;
6
+ const NON_LLM_PATTERNS = /embed|tts|whisper|dall-e|moderation|audio|image|vision|rerank|search/i;
7
+ const STORAGE_KEY_MODEL = 'xeno.xenochat.defaultModel';
8
+ const DEFAULT_MODEL = 'claude-sonnet-4-6';
9
+ let saveTimer = null;
10
+ function modelSupportsThinking(id) {
11
+ return !id.endsWith('-thinking') && THINKING_MODEL_PATTERNS.test(id);
12
+ }
13
+ function isLlmModel(id) {
14
+ return !NON_LLM_PATTERNS.test(id);
15
+ }
16
+ function isLlmLocalModel(name, family) {
17
+ return !NON_LLM_PATTERNS.test(`${name} ${family || ''}`);
18
+ }
19
+ function generateId() {
20
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
21
+ }
22
+ function generateTitle(content) {
23
+ const clean = content.replace(/\n/g, ' ').slice(0, 30);
24
+ return clean.length < content.length ? `${clean}...` : clean;
25
+ }
26
+ function deriveFinalContentFromThinking(thinking) {
27
+ const trimmed = (thinking || '').trim();
28
+ if (!trimmed)
29
+ return '';
30
+ const markerPatterns = [
31
+ /(?:^|\n)\s*(?:Final(?:\s+Answer|\s+Response)?|Response|Answer)\s*:\s*([\s\S]*)$/i,
32
+ /(?:^|\n)\s*Action\s*:\s*([\s\S]*)$/i
33
+ ];
34
+ for (const pattern of markerPatterns) {
35
+ const match = trimmed.match(pattern);
36
+ const candidate = (match?.[1] || '').trim();
37
+ if (candidate)
38
+ return candidate.length > 2800 ? `${candidate.slice(0, 2800)}\n...[truncated]` : candidate;
39
+ }
40
+ const paragraphs = trimmed.split(/\n{2,}/).map(p => p.trim()).filter(Boolean);
41
+ const fallback = (paragraphs[paragraphs.length - 1] || trimmed).trim();
42
+ return fallback.length > 2800 ? `${fallback.slice(0, 2800)}\n...[truncated]` : fallback;
43
+ }
44
+ function loadDefaultModel() {
45
+ try {
46
+ return localStorage.getItem(STORAGE_KEY_MODEL) || DEFAULT_MODEL;
47
+ }
48
+ catch {
49
+ return DEFAULT_MODEL;
50
+ }
51
+ }
52
+ function persistConversation(conv) {
53
+ getAgentPlatformBridge()?.chatStorage?.saveConversation(conv).catch(() => { });
54
+ }
55
+ function persistConversationDebounced(conv) {
56
+ if (saveTimer)
57
+ clearTimeout(saveTimer);
58
+ saveTimer = setTimeout(() => {
59
+ getAgentPlatformBridge()?.chatStorage?.saveConversation(conv).catch(() => { });
60
+ }, 500);
61
+ }
62
+ function persistDelete(id) {
63
+ getAgentPlatformBridge()?.chatStorage?.deleteConversation(id).catch(() => { });
64
+ }
65
+ function buildSandboxSystemPrompt(runtimes) {
66
+ if (!runtimes)
67
+ return undefined;
68
+ const langs = [];
69
+ if (runtimes.python.available)
70
+ langs.push(`Python ${runtimes.python.version || '3.x'}`);
71
+ if (runtimes.node.available)
72
+ langs.push(`Node.js ${runtimes.node.version || '18.x'}`);
73
+ if (langs.length === 0)
74
+ return undefined;
75
+ return `You have a sandboxed code execution environment with ${langs.join(' and ')}.
76
+
77
+ IMPORTANT: When the user asks you to calculate, analyze, process data, or do anything that involves running code, you MUST execute the code. Use a fenced code block with the \`execute:\` prefix:
78
+
79
+ \`\`\`execute:python
80
+ print("hello")
81
+ \`\`\`
82
+
83
+ \`\`\`execute:javascript
84
+ console.log("hello")
85
+ \`\`\`
86
+
87
+ When you use \`execute:python\` or \`execute:javascript\`, the code runs automatically and you receive stdout, stderr, exit code, and a list of files created.
88
+
89
+ Rules:
90
+ - Run code with execute blocks instead of showing static code snippets
91
+ - Each conversation has its own ephemeral sandbox directory
92
+ - Output one execute block at a time, then wait for results before continuing
93
+ - After receiving results, summarize the key findings without repeating the raw output verbatim`;
94
+ }
95
+ async function fetchLocalRuntimeModels() {
96
+ if (!getAgentPlatformBridge()?.llm?.localModels)
97
+ return [];
98
+ try {
99
+ const result = await getAgentPlatformBridge().llm.localModels();
100
+ if (!result.success)
101
+ return [];
102
+ return result.models
103
+ .filter((m) => isLlmLocalModel(m.name, m.family))
104
+ .map((m) => ({
105
+ id: m.id,
106
+ name: m.name,
107
+ provider: 'local',
108
+ parameterSize: m.parameterSize,
109
+ family: m.family,
110
+ supportsThinking: modelSupportsThinking(m.id) || modelSupportsThinking(m.name)
111
+ }));
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ }
117
+ export const useXenoChatStore = create((set, get) => ({
118
+ conversations: {},
119
+ activeConversationId: null,
120
+ activeRequestId: null,
121
+ defaultModel: loadDefaultModel(),
122
+ availableModels: [],
123
+ modelsLoading: false,
124
+ modelsError: null,
125
+ runtimes: null,
126
+ isExecutingCode: false,
127
+ serverConnected: false,
128
+ creatingConversation: false,
129
+ setServerConnected: (connected) => set({ serverConnected: connected }),
130
+ loadLocalConversations: async () => {
131
+ const chatStorage = getAgentPlatformBridge()?.chatStorage;
132
+ if (!chatStorage)
133
+ return;
134
+ try {
135
+ const result = await chatStorage.loadConversations();
136
+ if (!result.success || result.conversations.length === 0)
137
+ return;
138
+ const conversations = {};
139
+ for (const raw of result.conversations) {
140
+ const conv = raw;
141
+ if (!conv.id || !conv.messages)
142
+ continue;
143
+ conversations[conv.id] = {
144
+ ...conv,
145
+ messages: conv.messages.map(m => ({
146
+ ...m,
147
+ isStreaming: false,
148
+ isThinking: false
149
+ }))
150
+ };
151
+ }
152
+ set({ conversations });
153
+ }
154
+ catch {
155
+ // Start empty if persistence fails.
156
+ }
157
+ },
158
+ createConversation: (model) => {
159
+ const id = generateId();
160
+ const conv = {
161
+ id,
162
+ messages: [],
163
+ title: 'New chat',
164
+ model: model || get().defaultModel,
165
+ createdAt: Date.now(),
166
+ lastMessageAt: Date.now()
167
+ };
168
+ set(state => ({
169
+ conversations: { ...state.conversations, [id]: conv }
170
+ }));
171
+ persistConversation(conv);
172
+ return id;
173
+ },
174
+ setActiveConversation: (id) => set({ activeConversationId: id }),
175
+ deleteConversation: (id) => {
176
+ const { activeConversationId, activeRequestId } = get();
177
+ if (activeConversationId === id && activeRequestId && getAgentPlatformBridge()?.llm) {
178
+ getAgentPlatformBridge().llm.abort(activeRequestId);
179
+ }
180
+ const sandbox = getAgentPlatformBridge()?.sandbox;
181
+ if (sandbox) {
182
+ sandbox.cleanup({ conversationId: id }).catch(() => { });
183
+ }
184
+ persistDelete(id);
185
+ set(state => {
186
+ const next = { ...state.conversations };
187
+ delete next[id];
188
+ const isActive = state.activeConversationId === id;
189
+ return {
190
+ conversations: next,
191
+ activeConversationId: isActive ? null : state.activeConversationId,
192
+ activeRequestId: isActive ? null : state.activeRequestId
193
+ };
194
+ });
195
+ },
196
+ renameConversation: (id, title) => {
197
+ const trimmed = title.trim();
198
+ if (!trimmed)
199
+ return;
200
+ set(state => {
201
+ const conv = state.conversations[id];
202
+ if (!conv)
203
+ return state;
204
+ const updated = { ...conv, title: trimmed };
205
+ persistConversation(updated);
206
+ return {
207
+ conversations: { ...state.conversations, [id]: updated }
208
+ };
209
+ });
210
+ },
211
+ sendMessage: (conversationId, content, options) => {
212
+ const enableThinking = options?.enableThinking ?? false;
213
+ const requestId = generateId();
214
+ const conv = get().conversations[conversationId];
215
+ const model = conv?.model || get().defaultModel;
216
+ const userMsg = {
217
+ id: generateId(),
218
+ role: 'user',
219
+ content,
220
+ timestamp: Date.now()
221
+ };
222
+ const assistantMsg = {
223
+ id: requestId,
224
+ role: 'assistant',
225
+ content: '',
226
+ showThinking: enableThinking,
227
+ thinking: '',
228
+ timestamp: Date.now(),
229
+ isStreaming: true,
230
+ isThinking: enableThinking
231
+ };
232
+ set(state => {
233
+ const existing = state.conversations[conversationId];
234
+ const existingMsgs = existing?.messages || [];
235
+ const isFirstUser = existingMsgs.filter(m => m.role === 'user').length === 0;
236
+ return {
237
+ conversations: {
238
+ ...state.conversations,
239
+ [conversationId]: {
240
+ id: conversationId,
241
+ messages: [...existingMsgs, userMsg, assistantMsg],
242
+ title: isFirstUser ? generateTitle(content) : (existing?.title || 'New chat'),
243
+ model,
244
+ createdAt: existing?.createdAt || Date.now(),
245
+ lastMessageAt: Date.now()
246
+ }
247
+ },
248
+ activeRequestId: requestId,
249
+ activeConversationId: conversationId
250
+ };
251
+ });
252
+ const updated = get().conversations[conversationId];
253
+ if (updated)
254
+ persistConversation(updated);
255
+ const history = (updated?.messages || [])
256
+ .filter(m => !m.isStreaming)
257
+ .map(m => ({ role: m.role, content: m.content }));
258
+ if (getAgentPlatformBridge()?.llm) {
259
+ const systemPrompt = buildSandboxSystemPrompt(get().runtimes);
260
+ void getAgentPlatformBridge().llm.chat({
261
+ requestId,
262
+ model,
263
+ messages: history,
264
+ think: enableThinking,
265
+ ...(systemPrompt ? { system: systemPrompt } : {})
266
+ });
267
+ }
268
+ else {
269
+ get().setStreamError(requestId, 'LLM bridge not available. Restart the app.');
270
+ }
271
+ },
272
+ appendChunk: (requestId, content, thinking) => {
273
+ set(state => {
274
+ const conversationId = state.activeConversationId;
275
+ if (!conversationId)
276
+ return state;
277
+ const conv = state.conversations[conversationId];
278
+ if (!conv)
279
+ return state;
280
+ const updated = {
281
+ ...conv,
282
+ messages: conv.messages.map(m => {
283
+ if (m.id !== requestId)
284
+ return m;
285
+ const stillThinking = m.showThinking === false ? false : (!content && m.isThinking);
286
+ return {
287
+ ...m,
288
+ content: m.content + content,
289
+ thinking: (m.thinking || '') + thinking,
290
+ isThinking: stillThinking
291
+ };
292
+ }),
293
+ lastMessageAt: Date.now()
294
+ };
295
+ persistConversationDebounced(updated);
296
+ return {
297
+ conversations: { ...state.conversations, [conversationId]: updated }
298
+ };
299
+ });
300
+ },
301
+ finalizeStream: (requestId) => {
302
+ set(state => {
303
+ const conversationId = state.activeConversationId;
304
+ if (!conversationId)
305
+ return state;
306
+ const conv = state.conversations[conversationId];
307
+ if (!conv)
308
+ return state;
309
+ const updated = {
310
+ ...conv,
311
+ messages: conv.messages.map(m => m.id === requestId
312
+ ? {
313
+ ...m,
314
+ isStreaming: false,
315
+ isThinking: false,
316
+ content: m.content.trim()
317
+ ? m.content
318
+ : (m.thinking?.trim() ? deriveFinalContentFromThinking(m.thinking) : m.content)
319
+ }
320
+ : m)
321
+ };
322
+ persistConversation(updated);
323
+ return {
324
+ conversations: { ...state.conversations, [conversationId]: updated },
325
+ activeRequestId: null
326
+ };
327
+ });
328
+ },
329
+ setStreamError: (requestId, error) => {
330
+ set(state => {
331
+ const conversationId = state.activeConversationId;
332
+ if (!conversationId)
333
+ return state;
334
+ const conv = state.conversations[conversationId];
335
+ if (!conv)
336
+ return state;
337
+ const updated = {
338
+ ...conv,
339
+ messages: conv.messages.map(m => m.id === requestId
340
+ ? { ...m, isStreaming: false, isThinking: false, error, content: m.content || error }
341
+ : m)
342
+ };
343
+ persistConversation(updated);
344
+ return {
345
+ conversations: { ...state.conversations, [conversationId]: updated },
346
+ activeRequestId: null
347
+ };
348
+ });
349
+ },
350
+ abort: () => {
351
+ const { activeRequestId, activeConversationId, isExecutingCode } = get();
352
+ if (activeRequestId && getAgentPlatformBridge()?.llm) {
353
+ void getAgentPlatformBridge().llm.abort(activeRequestId);
354
+ }
355
+ const abortSandbox = getAgentPlatformBridge()?.sandbox;
356
+ if (isExecutingCode && activeConversationId && abortSandbox) {
357
+ void abortSandbox.abort({ conversationId: activeConversationId });
358
+ set({ isExecutingCode: false });
359
+ }
360
+ },
361
+ setDefaultModel: (modelId) => {
362
+ try {
363
+ localStorage.setItem(STORAGE_KEY_MODEL, modelId);
364
+ }
365
+ catch { /* noop */ }
366
+ set({ defaultModel: modelId });
367
+ },
368
+ setConversationModel: (conversationId, modelId) => {
369
+ set(state => {
370
+ const conv = state.conversations[conversationId];
371
+ if (!conv)
372
+ return state;
373
+ const updated = { ...conv, model: modelId };
374
+ persistConversation(updated);
375
+ return {
376
+ conversations: { ...state.conversations, [conversationId]: updated }
377
+ };
378
+ });
379
+ },
380
+ fetchModels: async () => {
381
+ if (!getAgentPlatformBridge()?.llm) {
382
+ set({ modelsError: 'LLM bridge not available' });
383
+ return;
384
+ }
385
+ set({ modelsLoading: true, modelsError: null });
386
+ try {
387
+ const [cloudResult, localModels] = await Promise.all([
388
+ getAgentPlatformBridge().llm.models().catch(() => ({ success: false, models: [], error: 'Failed to load cloud models' })),
389
+ fetchLocalRuntimeModels()
390
+ ]);
391
+ const models = [];
392
+ if (cloudResult.success) {
393
+ for (const m of cloudResult.models) {
394
+ if (!isLlmModel(m.id) || !isSelectableLiveModel(m))
395
+ continue;
396
+ models.push({
397
+ id: m.id,
398
+ name: cloudModelName(m.id),
399
+ provider: 'cloud',
400
+ supportsThinking: modelSupportsThinking(m.id)
401
+ });
402
+ }
403
+ }
404
+ models.push(...localModels);
405
+ set({
406
+ availableModels: models,
407
+ modelsLoading: false,
408
+ modelsError: cloudResult.success || localModels.length > 0 ? null : (cloudResult.error || 'No models available')
409
+ });
410
+ }
411
+ catch (err) {
412
+ set({ modelsError: String(err), modelsLoading: false });
413
+ }
414
+ },
415
+ detectRuntimes: async () => {
416
+ const detectSandbox = getAgentPlatformBridge()?.sandbox;
417
+ if (!detectSandbox)
418
+ return;
419
+ try {
420
+ const runtimes = await detectSandbox.detectRuntimes();
421
+ set({ runtimes });
422
+ }
423
+ catch (err) {
424
+ console.warn('[XenoChat] Failed to detect runtimes:', err);
425
+ }
426
+ },
427
+ updateCodeExecution: (messageId, executionId, updates) => {
428
+ set(state => {
429
+ const convId = state.activeConversationId;
430
+ if (!convId)
431
+ return state;
432
+ const conv = state.conversations[convId];
433
+ if (!conv)
434
+ return state;
435
+ const updated = {
436
+ ...conv,
437
+ messages: conv.messages.map(m => {
438
+ if (m.id !== messageId || !m.codeExecutions)
439
+ return m;
440
+ return {
441
+ ...m,
442
+ codeExecutions: m.codeExecutions.map(ex => ex.id === executionId ? { ...ex, ...updates } : ex)
443
+ };
444
+ })
445
+ };
446
+ persistConversation(updated);
447
+ return {
448
+ conversations: {
449
+ ...state.conversations,
450
+ [convId]: updated
451
+ }
452
+ };
453
+ });
454
+ },
455
+ executeCodeBlock: async (conversationId, messageId, execution) => {
456
+ if (!getAgentPlatformBridge()?.sandbox)
457
+ return;
458
+ const { updateCodeExecution } = get();
459
+ updateCodeExecution(messageId, execution.id, { status: 'running' });
460
+ set({ isExecutingCode: true });
461
+ try {
462
+ // 🔴 Not optional-chained. Code execution without a sandbox must FAIL, not silently
463
+ // resolve to nothing — a host with no sandbox cannot run the user's code, and pretending
464
+ // otherwise is the fabricated-success shape this ecosystem has shipped before.
465
+ const executeSandbox = getAgentPlatformBridge()?.sandbox;
466
+ if (!executeSandbox)
467
+ throw new Error('This surface has no code sandbox.');
468
+ const result = await executeSandbox.execute({
469
+ conversationId,
470
+ language: execution.language,
471
+ code: execution.code
472
+ });
473
+ updateCodeExecution(messageId, execution.id, {
474
+ status: result.error ? 'error' : 'completed',
475
+ stdout: result.stdout,
476
+ stderr: result.stderr,
477
+ exitCode: result.exitCode,
478
+ durationMs: result.durationMs,
479
+ files: result.files,
480
+ error: result.error || undefined
481
+ });
482
+ let resultContent = '[Code execution result]\n';
483
+ resultContent += `Exit code: ${result.exitCode ?? 'N/A'}\n`;
484
+ resultContent += `Duration: ${result.durationMs}ms\n`;
485
+ if (result.stdout)
486
+ resultContent += `\nStdout:\n${result.stdout}\n`;
487
+ if (result.stderr)
488
+ resultContent += `\nStderr:\n${result.stderr}\n`;
489
+ if (result.error)
490
+ resultContent += `\nError: ${result.error}\n`;
491
+ if (result.files.length > 0)
492
+ resultContent += `\nFiles in sandbox: ${result.files.join(', ')}\n`;
493
+ set({ isExecutingCode: false });
494
+ const updatedConv = get().conversations[conversationId];
495
+ if (updatedConv)
496
+ persistConversation(updatedConv);
497
+ get().sendFollowup(conversationId, resultContent);
498
+ }
499
+ catch (err) {
500
+ updateCodeExecution(messageId, execution.id, {
501
+ status: 'error',
502
+ error: err instanceof Error ? err.message : String(err)
503
+ });
504
+ set({ isExecutingCode: false });
505
+ }
506
+ },
507
+ sendFollowup: (conversationId, resultContent) => {
508
+ const conv = get().conversations[conversationId];
509
+ if (!conv)
510
+ return;
511
+ const model = conv.model || get().defaultModel;
512
+ const requestId = generateId();
513
+ const assistantMsg = {
514
+ id: requestId,
515
+ role: 'assistant',
516
+ content: '',
517
+ timestamp: Date.now(),
518
+ isStreaming: true
519
+ };
520
+ set(state => {
521
+ const existing = state.conversations[conversationId];
522
+ if (!existing)
523
+ return state;
524
+ const updated = {
525
+ ...existing,
526
+ messages: [...existing.messages, assistantMsg],
527
+ lastMessageAt: Date.now()
528
+ };
529
+ persistConversation(updated);
530
+ return {
531
+ conversations: {
532
+ ...state.conversations,
533
+ [conversationId]: updated
534
+ },
535
+ activeRequestId: requestId,
536
+ activeConversationId: conversationId
537
+ };
538
+ });
539
+ const updated = get().conversations[conversationId];
540
+ const history = (updated?.messages || [])
541
+ .filter(m => !m.isStreaming)
542
+ .map(m => ({ role: m.role, content: m.content }));
543
+ history.push({ role: 'user', content: resultContent });
544
+ if (getAgentPlatformBridge()?.llm) {
545
+ const systemPrompt = buildSandboxSystemPrompt(get().runtimes);
546
+ void getAgentPlatformBridge().llm.chat({
547
+ requestId,
548
+ model,
549
+ messages: history,
550
+ ...(systemPrompt ? { system: systemPrompt } : {})
551
+ });
552
+ }
553
+ else {
554
+ get().setStreamError(requestId, 'LLM bridge not available. Restart the app.');
555
+ }
556
+ }
557
+ }));
558
+ export function setupXenoChatListeners() {
559
+ if (!getAgentPlatformBridge()?.llm) {
560
+ console.warn('[XenoChat] LLM bridge not available, listeners not registered');
561
+ return () => { };
562
+ }
563
+ getAgentPlatformBridge().llm.onChatChunk((data) => {
564
+ if (data.done) {
565
+ useXenoChatStore.getState().finalizeStream(data.requestId);
566
+ }
567
+ else if (data.content || data.thinking) {
568
+ useXenoChatStore.getState().appendChunk(data.requestId, data.content || '', data.thinking || '');
569
+ }
570
+ });
571
+ getAgentPlatformBridge().llm.onChatError((data) => {
572
+ useXenoChatStore.getState().setStreamError(data.requestId, data.error);
573
+ });
574
+ return () => {
575
+ const { activeRequestId } = useXenoChatStore.getState();
576
+ if (activeRequestId && getAgentPlatformBridge()?.llm) {
577
+ void getAgentPlatformBridge().llm.abort(activeRequestId);
578
+ }
579
+ getAgentPlatformBridge().llm.offChatChunk();
580
+ getAgentPlatformBridge().llm.offChatError();
581
+ };
582
+ }
583
+ //# sourceMappingURL=xenoChatStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xenoChatStore.js","sourceRoot":"","sources":["../../src/stores/xenoChatStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export interface ConversationEditorFile {
2
+ path: string;
3
+ name: string;
4
+ extension: string;
5
+ content: string;
6
+ savedContent: string;
7
+ isDirty: boolean;
8
+ lastSavedAt: number | null;
9
+ }
10
+ export interface ConversationEditorDiff {
11
+ id: string;
12
+ toolCallId?: string;
13
+ path: string;
14
+ name: string;
15
+ extension: string;
16
+ originalContent: string;
17
+ modifiedContent: string;
18
+ addedLines: number;
19
+ removedLines: number;
20
+ createdAt: number;
21
+ }
22
+ export interface ConversationEditorFileTab {
23
+ id: string;
24
+ type: 'file';
25
+ file: ConversationEditorFile;
26
+ }
27
+ export interface ConversationEditorDiffTab {
28
+ id: string;
29
+ type: 'diff';
30
+ diff: ConversationEditorDiff;
31
+ }
32
+ export type ConversationEditorTab = ConversationEditorFileTab | ConversationEditorDiffTab;
33
+ export interface ConversationEditorState {
34
+ paneMode?: 'agent' | 'editor' | 'split';
35
+ openTabs?: ConversationEditorTab[];
36
+ activeTabId?: string | null;
37
+ openFiles: ConversationEditorFile[];
38
+ activeFilePath: string | null;
39
+ }
40
+ //# sourceMappingURL=agentEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentEditor.d.ts","sourceRoot":"","sources":["../../src/types/agentEditor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,sBAAsB,CAAA;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,sBAAsB,CAAA;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG,yBAAyB,CAAA;AAEzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACvC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,sBAAsB,EAAE,CAAA;IACnC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agentEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentEditor.js","sourceRoot":"","sources":["../../src/types/agentEditor.ts"],"names":[],"mappings":""}