@vybestack/llxprt-code 0.8.0-nightly.260112.d9cf7fbc6 → 0.8.0-nightly.260113.48db4b09b

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 (65) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/generated/git-commit.d.ts +1 -1
  3. package/dist/src/generated/git-commit.js +1 -1
  4. package/dist/src/runtime/runtimeSettings.d.ts +1 -0
  5. package/dist/src/runtime/runtimeSettings.js +4 -0
  6. package/dist/src/runtime/runtimeSettings.js.map +1 -1
  7. package/dist/src/ui/AppContainer.js +43 -0
  8. package/dist/src/ui/AppContainer.js.map +1 -1
  9. package/dist/src/ui/commands/profileCommand.js +111 -9
  10. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  11. package/dist/src/ui/commands/profileCommand.test.js +3 -6
  12. package/dist/src/ui/commands/profileCommand.test.js.map +1 -1
  13. package/dist/src/ui/commands/types.d.ts +12 -2
  14. package/dist/src/ui/commands/types.js.map +1 -1
  15. package/dist/src/ui/components/DialogManager.js +12 -0
  16. package/dist/src/ui/components/DialogManager.js.map +1 -1
  17. package/dist/src/ui/components/ProfileDetailDialog.d.ts +22 -0
  18. package/dist/src/ui/components/ProfileDetailDialog.js +113 -0
  19. package/dist/src/ui/components/ProfileDetailDialog.js.map +1 -0
  20. package/dist/src/ui/components/ProfileInlineEditor.d.ts +16 -0
  21. package/dist/src/ui/components/ProfileInlineEditor.js +216 -0
  22. package/dist/src/ui/components/ProfileInlineEditor.js.map +1 -0
  23. package/dist/src/ui/components/ProfileListDialog.d.ts +26 -0
  24. package/dist/src/ui/components/ProfileListDialog.js +172 -0
  25. package/dist/src/ui/components/ProfileListDialog.js.map +1 -0
  26. package/dist/src/ui/components/ProviderDialog.js +1 -1
  27. package/dist/src/ui/components/ProviderDialog.js.map +1 -1
  28. package/dist/src/ui/components/ProviderModelDialog.js +1 -1
  29. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  30. package/dist/src/ui/contexts/RuntimeContext.d.ts +2 -1
  31. package/dist/src/ui/contexts/RuntimeContext.js +2 -1
  32. package/dist/src/ui/contexts/RuntimeContext.js.map +1 -1
  33. package/dist/src/ui/contexts/UIActionsContext.d.ts +10 -0
  34. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  35. package/dist/src/ui/contexts/UIStateContext.d.ts +17 -0
  36. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  37. package/dist/src/ui/hooks/atCommandProcessor.js +25 -1
  38. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  39. package/dist/src/ui/hooks/atCommandProcessor.test.js +127 -91
  40. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  41. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +3 -0
  42. package/dist/src/ui/hooks/slashCommandProcessor.js +28 -0
  43. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  44. package/dist/src/ui/hooks/useEditorSettings.test.js +3 -0
  45. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  46. package/dist/src/ui/hooks/useFolderTrust.js +1 -1
  47. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  48. package/dist/src/ui/hooks/useProfileManagement.d.ts +40 -0
  49. package/dist/src/ui/hooks/useProfileManagement.js +350 -0
  50. package/dist/src/ui/hooks/useProfileManagement.js.map +1 -0
  51. package/dist/src/ui/hooks/useReactToolScheduler.js +103 -33
  52. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  53. package/dist/src/ui/hooks/useSlashCompletion.test.js +1 -1
  54. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  55. package/dist/src/ui/hooks/useToolScheduler.test.js +322 -220
  56. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  57. package/dist/src/ui/layouts/DefaultAppLayout.js +3 -0
  58. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  59. package/dist/src/ui/reducers/appReducer.d.ts +5 -2
  60. package/dist/src/ui/reducers/appReducer.js +3 -0
  61. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  62. package/dist/src/ui/reducers/appReducer.test.js +6 -0
  63. package/dist/src/ui/reducers/appReducer.test.js.map +1 -1
  64. package/dist/tsconfig.build.tsbuildinfo +1 -1
  65. package/package.json +3 -3
@@ -0,0 +1,350 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { useCallback, useState } from 'react';
7
+ import { MessageType } from '../types.js';
8
+ import { useAppDispatch } from '../contexts/AppDispatchContext.js';
9
+ import { useRuntimeApi } from '../contexts/RuntimeContext.js';
10
+ import { ProfileManager, DebugLogger } from '@vybestack/llxprt-code-core';
11
+ const debug = new DebugLogger('llxprt:ui:useProfileManagement');
12
+ /**
13
+ * Validates a profile before saving. Returns error message or null if valid.
14
+ */
15
+ function validateProfileForSave(profile) {
16
+ if (typeof profile !== 'object' || profile === null) {
17
+ return 'Invalid profile: must be an object';
18
+ }
19
+ const p = profile;
20
+ if (!('version' in p) || typeof p.version !== 'string') {
21
+ return 'Invalid profile: missing or invalid version';
22
+ }
23
+ if (!('type' in p) || typeof p.type !== 'string') {
24
+ return 'Invalid profile: missing or invalid type';
25
+ }
26
+ // Type-specific validation
27
+ if (p.type === 'standard') {
28
+ if (!('provider' in p) || typeof p.provider !== 'string' || !p.provider) {
29
+ return 'Standard profile requires a provider';
30
+ }
31
+ if (!('model' in p) || typeof p.model !== 'string' || !p.model) {
32
+ return 'Standard profile requires a model';
33
+ }
34
+ }
35
+ else if (p.type === 'loadbalancer') {
36
+ if (!('profiles' in p) || !Array.isArray(p.profiles)) {
37
+ return 'Load balancer profile requires a profiles array';
38
+ }
39
+ if (p.profiles.length === 0) {
40
+ return 'Load balancer profile requires at least one profile';
41
+ }
42
+ if (!p.profiles.every((item) => typeof item === 'string')) {
43
+ return 'Load balancer profiles must be strings';
44
+ }
45
+ if (!('policy' in p) || typeof p.policy !== 'string' || !p.policy) {
46
+ return 'Load balancer profile requires a policy';
47
+ }
48
+ }
49
+ else {
50
+ return `Unknown profile type: ${p.type}`;
51
+ }
52
+ return null;
53
+ }
54
+ export const useProfileManagement = ({ addMessage, appState, }) => {
55
+ const appDispatch = useAppDispatch();
56
+ const runtime = useRuntimeApi();
57
+ // Dialog visibility states
58
+ const showListDialog = appState.openDialogs.profileList;
59
+ const showDetailDialog = appState.openDialogs.profileDetail;
60
+ const showEditorDialog = appState.openDialogs.profileEditor;
61
+ // Data states
62
+ const [profiles, setProfiles] = useState([]);
63
+ const [isLoading, setIsLoading] = useState(false);
64
+ const [selectedProfileName, setSelectedProfileName] = useState(null);
65
+ const [selectedProfile, setSelectedProfile] = useState(null);
66
+ const [defaultProfileName, setDefaultProfileName] = useState(null);
67
+ const [activeProfileName, setActiveProfileName] = useState(null);
68
+ const [profileError, setProfileError] = useState(null);
69
+ // Track if detail was opened directly (vs from list)
70
+ const [detailOpenedDirectly, setDetailOpenedDirectly] = useState(false);
71
+ // Track if editor was opened directly (vs from detail)
72
+ const [editorOpenedDirectly, setEditorOpenedDirectly] = useState(false);
73
+ // Load profiles list
74
+ const loadProfiles = useCallback(async () => {
75
+ setIsLoading(true);
76
+ setProfileError(null);
77
+ try {
78
+ const profileNames = await runtime.listSavedProfiles();
79
+ // Get additional profile info (type, provider, model)
80
+ const profileItems = await Promise.all(profileNames.map(async (name) => {
81
+ try {
82
+ const profile = await runtime.getProfileByName(name);
83
+ const isLB = profile.type === 'loadbalancer';
84
+ return {
85
+ name,
86
+ type: isLB ? 'loadbalancer' : 'standard',
87
+ provider: isLB ? undefined : profile.provider,
88
+ model: isLB ? undefined : profile.model,
89
+ };
90
+ }
91
+ catch {
92
+ // If we can't load the profile, return with error indicator
93
+ return {
94
+ name,
95
+ type: 'standard',
96
+ loadError: true,
97
+ };
98
+ }
99
+ }));
100
+ setProfiles(profileItems);
101
+ // Try to get default profile name from settings
102
+ try {
103
+ const services = runtime.getCliRuntimeServices();
104
+ const defaultName = services.settingsService.get('defaultProfile');
105
+ setDefaultProfileName(defaultName ?? null);
106
+ }
107
+ catch {
108
+ // Ignore errors getting default profile
109
+ }
110
+ // Try to get active profile name
111
+ try {
112
+ const diagnostics = runtime.getRuntimeDiagnosticsSnapshot();
113
+ const current = diagnostics?.profileName;
114
+ setActiveProfileName(current ?? null);
115
+ }
116
+ catch {
117
+ // Ignore errors getting active profile
118
+ }
119
+ }
120
+ catch (error) {
121
+ setProfileError(error instanceof Error ? error.message : 'Failed to load profiles');
122
+ addMessage({
123
+ type: MessageType.ERROR,
124
+ content: `Failed to load profiles: ${error instanceof Error ? error.message : 'Unknown error'}`,
125
+ timestamp: new Date(),
126
+ });
127
+ }
128
+ finally {
129
+ setIsLoading(false);
130
+ }
131
+ }, [runtime, addMessage]);
132
+ // Open list dialog
133
+ const openListDialog = useCallback(async () => {
134
+ debug.log(() => 'openListDialog called');
135
+ appDispatch({ type: 'OPEN_DIALOG', payload: 'profileList' });
136
+ debug.log(() => 'dispatched OPEN_DIALOG profileList');
137
+ await loadProfiles();
138
+ debug.log(() => 'loadProfiles completed');
139
+ }, [appDispatch, loadProfiles]);
140
+ // Close list dialog
141
+ const closeListDialog = useCallback(() => {
142
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileList' });
143
+ }, [appDispatch]);
144
+ // View profile detail
145
+ // openedDirectly: true when opened via /profile show, false when from list
146
+ const viewProfileDetail = useCallback(async (profileName, openedDirectly = false) => {
147
+ setSelectedProfileName(profileName);
148
+ setSelectedProfile(null);
149
+ setProfileError(null);
150
+ setIsLoading(true);
151
+ setDetailOpenedDirectly(openedDirectly);
152
+ // Close list, open detail
153
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileList' });
154
+ appDispatch({ type: 'OPEN_DIALOG', payload: 'profileDetail' });
155
+ try {
156
+ const profile = await runtime.getProfileByName(profileName);
157
+ setSelectedProfile(profile);
158
+ }
159
+ catch (error) {
160
+ setProfileError(error instanceof Error ? error.message : 'Failed to load profile');
161
+ }
162
+ finally {
163
+ setIsLoading(false);
164
+ }
165
+ }, [appDispatch, runtime]);
166
+ // Close detail dialog
167
+ const closeDetailDialog = useCallback(async () => {
168
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileDetail' });
169
+ setSelectedProfileName(null);
170
+ setSelectedProfile(null);
171
+ setProfileError(null);
172
+ // If opened directly via /profile show, just close
173
+ // If opened from list, go back to list
174
+ if (!detailOpenedDirectly) {
175
+ appDispatch({ type: 'OPEN_DIALOG', payload: 'profileList' });
176
+ await loadProfiles();
177
+ }
178
+ setDetailOpenedDirectly(false);
179
+ }, [appDispatch, loadProfiles, detailOpenedDirectly]);
180
+ // Load profile
181
+ const loadProfile = useCallback(async (profileName) => {
182
+ try {
183
+ const result = await runtime.loadProfileByName(profileName);
184
+ const extra = (result.infoMessages ?? [])
185
+ .map((message) => `\n- ${message}`)
186
+ .join('');
187
+ addMessage({
188
+ type: MessageType.INFO,
189
+ content: `Profile '${profileName}' loaded${extra}`,
190
+ timestamp: new Date(),
191
+ });
192
+ for (const warning of result.warnings ?? []) {
193
+ addMessage({
194
+ type: MessageType.INFO,
195
+ content: `\u26A0 ${warning}`,
196
+ timestamp: new Date(),
197
+ });
198
+ }
199
+ // Close all profile dialogs
200
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileDetail' });
201
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileList' });
202
+ }
203
+ catch (error) {
204
+ addMessage({
205
+ type: MessageType.ERROR,
206
+ content: `Failed to load profile: ${error instanceof Error ? error.message : String(error)}`,
207
+ timestamp: new Date(),
208
+ });
209
+ }
210
+ }, [addMessage, appDispatch, runtime]);
211
+ // Delete profile
212
+ const deleteProfile = useCallback(async (profileName) => {
213
+ try {
214
+ await runtime.deleteProfileByName(profileName);
215
+ addMessage({
216
+ type: MessageType.INFO,
217
+ content: `Profile '${profileName}' deleted`,
218
+ timestamp: new Date(),
219
+ });
220
+ // Close detail dialog and refresh list
221
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileDetail' });
222
+ appDispatch({ type: 'OPEN_DIALOG', payload: 'profileList' });
223
+ await loadProfiles();
224
+ }
225
+ catch (error) {
226
+ addMessage({
227
+ type: MessageType.ERROR,
228
+ content: `Failed to delete profile: ${error instanceof Error ? error.message : String(error)}`,
229
+ timestamp: new Date(),
230
+ });
231
+ }
232
+ }, [addMessage, appDispatch, runtime, loadProfiles]);
233
+ // Set default profile
234
+ const setDefault = useCallback(async (profileName) => {
235
+ try {
236
+ runtime.setDefaultProfileName(profileName);
237
+ setDefaultProfileName(profileName);
238
+ addMessage({
239
+ type: MessageType.INFO,
240
+ content: `Profile '${profileName}' set as default`,
241
+ timestamp: new Date(),
242
+ });
243
+ }
244
+ catch (error) {
245
+ addMessage({
246
+ type: MessageType.ERROR,
247
+ content: `Failed to set default: ${error instanceof Error ? error.message : String(error)}`,
248
+ timestamp: new Date(),
249
+ });
250
+ }
251
+ }, [addMessage, runtime]);
252
+ // Open editor
253
+ // openedDirectly: true when opened via /profile edit, false when from detail
254
+ const openEditor = useCallback(async (profileName, openedDirectly = false) => {
255
+ setSelectedProfileName(profileName);
256
+ setEditorOpenedDirectly(openedDirectly);
257
+ setProfileError(null);
258
+ // If opened directly, need to load profile data first
259
+ if (openedDirectly) {
260
+ setIsLoading(true);
261
+ try {
262
+ const profile = await runtime.getProfileByName(profileName);
263
+ setSelectedProfile(profile);
264
+ }
265
+ catch (error) {
266
+ setProfileError(error instanceof Error ? error.message : 'Failed to load profile');
267
+ }
268
+ finally {
269
+ setIsLoading(false);
270
+ }
271
+ }
272
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileDetail' });
273
+ appDispatch({ type: 'OPEN_DIALOG', payload: 'profileEditor' });
274
+ }, [appDispatch, runtime]);
275
+ // Close editor
276
+ const closeEditor = useCallback(async () => {
277
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileEditor' });
278
+ // If opened directly via /profile edit, just close
279
+ // If opened from detail, go back to detail (preserving detailOpenedDirectly)
280
+ if (!editorOpenedDirectly && selectedProfileName) {
281
+ // Preserve the original detailOpenedDirectly state when going back
282
+ await viewProfileDetail(selectedProfileName, detailOpenedDirectly);
283
+ }
284
+ else {
285
+ setSelectedProfileName(null);
286
+ setSelectedProfile(null);
287
+ setProfileError(null);
288
+ }
289
+ setEditorOpenedDirectly(false);
290
+ }, [
291
+ appDispatch,
292
+ selectedProfileName,
293
+ viewProfileDetail,
294
+ editorOpenedDirectly,
295
+ detailOpenedDirectly,
296
+ ]);
297
+ // Save edited profile
298
+ const saveProfile = useCallback(async (profileName, updatedProfile) => {
299
+ try {
300
+ // Comprehensive validation before save
301
+ const validationError = validateProfileForSave(updatedProfile);
302
+ if (validationError) {
303
+ setProfileError(validationError);
304
+ return;
305
+ }
306
+ // Use ProfileManager directly to save
307
+ const manager = new ProfileManager();
308
+ await manager.saveProfile(profileName, updatedProfile);
309
+ addMessage({
310
+ type: MessageType.INFO,
311
+ content: `Profile '${profileName}' saved`,
312
+ timestamp: new Date(),
313
+ });
314
+ // Close editor and reopen detail
315
+ appDispatch({ type: 'CLOSE_DIALOG', payload: 'profileEditor' });
316
+ await viewProfileDetail(profileName, editorOpenedDirectly);
317
+ }
318
+ catch (error) {
319
+ setProfileError(error instanceof Error ? error.message : 'Failed to save profile');
320
+ }
321
+ }, [addMessage, appDispatch, viewProfileDetail, editorOpenedDirectly]);
322
+ return {
323
+ // Dialog states
324
+ showListDialog,
325
+ showDetailDialog,
326
+ showEditorDialog,
327
+ // Data
328
+ profiles,
329
+ isLoading,
330
+ selectedProfileName,
331
+ selectedProfile,
332
+ defaultProfileName,
333
+ activeProfileName,
334
+ profileError,
335
+ // List dialog actions
336
+ openListDialog,
337
+ closeListDialog,
338
+ // Detail dialog actions
339
+ viewProfileDetail,
340
+ closeDetailDialog,
341
+ loadProfile,
342
+ deleteProfile,
343
+ setDefault,
344
+ // Editor actions
345
+ openEditor,
346
+ closeEditor,
347
+ saveProfile,
348
+ };
349
+ };
350
+ //# sourceMappingURL=useProfileManagement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProfileManagement.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useProfileManagement.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@
3
3
  * Copyright 2025 Vybestack LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CoreToolScheduler, DEFAULT_AGENT_ID, } from '@vybestack/llxprt-code-core';
7
- import { useCallback, useState, useMemo, useEffect } from 'react';
6
+ import { DEFAULT_AGENT_ID, DebugLogger, } from '@vybestack/llxprt-code-core';
7
+ import { useCallback, useState, useMemo, useEffect, useRef } from 'react';
8
8
  import { ToolCallStatus, } from '../types.js';
9
+ const logger = new DebugLogger('llxprt:cli:react-tool-scheduler');
9
10
  export function useReactToolScheduler(onComplete, config, setPendingHistoryItem, getPreferredEditor, onEditorClose, onEditorOpen = () => { }) {
10
11
  const [toolCallsByScheduler, setToolCallsByScheduler] = useState(new Map());
11
12
  const updatePendingHistoryItem = useCallback((toolCallId, outputChunk) => {
@@ -72,43 +73,100 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
72
73
  }, [updateToolCallsForScheduler, updatePendingHistoryItem]);
73
74
  const toolCalls = useMemo(() => Array.from(toolCallsByScheduler.values()).flat(), [toolCallsByScheduler]);
74
75
  const mainSchedulerId = useState(() => Symbol('main-scheduler'))[0];
75
- // The scheduler MUST be recreated when config changes because:
76
- // 1. config.getToolRegistry() returns different instances during initialization
77
- // 2. config.getApprovalMode() can change based on user settings
78
- // 3. The Gemini client initialization depends on having the latest config
79
- const scheduler = useMemo(() => new CoreToolScheduler({
80
- outputUpdateHandler: (toolCallId, chunk) => updateToolCallOutput(mainSchedulerId, toolCallId, chunk),
81
- onAllToolCallsComplete: async (completedToolCalls) => {
82
- if (completedToolCalls.length > 0) {
83
- await onComplete(mainSchedulerId, completedToolCalls, {
84
- isPrimary: true,
76
+ const sessionId = useMemo(() => config.getSessionId(), [config]);
77
+ const [scheduler, setScheduler] = useState(null);
78
+ const pendingScheduleRequests = useRef([]);
79
+ const onCompleteRef = useRef(onComplete);
80
+ useEffect(() => {
81
+ onCompleteRef.current = onComplete;
82
+ }, [onComplete]);
83
+ // Use the singleton scheduler from config to ensure all schedulers in a session
84
+ // share the same CoreToolScheduler instance, avoiding duplicate MessageBus
85
+ // subscriptions and "unknown correlationId" errors.
86
+ useEffect(() => {
87
+ let mounted = true;
88
+ let resolved = false;
89
+ const initializeScheduler = async () => {
90
+ try {
91
+ const instance = await config.getOrCreateScheduler(sessionId, {
92
+ outputUpdateHandler: (toolCallId, chunk) => {
93
+ if (!mounted) {
94
+ return;
95
+ }
96
+ updateToolCallOutput(mainSchedulerId, toolCallId, chunk);
97
+ },
98
+ onAllToolCallsComplete: async (completedToolCalls) => {
99
+ if (!mounted) {
100
+ return;
101
+ }
102
+ if (completedToolCalls.length > 0) {
103
+ await onCompleteRef.current(mainSchedulerId, completedToolCalls, {
104
+ isPrimary: true,
105
+ });
106
+ }
107
+ replaceToolCallsForScheduler(mainSchedulerId, []);
108
+ },
109
+ onToolCallsUpdate: (calls) => {
110
+ if (!mounted) {
111
+ return;
112
+ }
113
+ replaceToolCallsForScheduler(mainSchedulerId, calls);
114
+ },
115
+ getPreferredEditor,
116
+ onEditorClose,
117
+ onEditorOpen,
85
118
  });
119
+ resolved = true;
120
+ if (!mounted) {
121
+ config.disposeScheduler(sessionId);
122
+ return;
123
+ }
124
+ if (pendingScheduleRequests.current.length > 0) {
125
+ for (const { request, signal } of pendingScheduleRequests.current) {
126
+ if (signal.aborted) {
127
+ continue;
128
+ }
129
+ instance.schedule(request, signal).catch(() => {
130
+ // Silently ignore cancellation rejections - this is expected behavior
131
+ // when the user presses ESC to cancel queued tool calls
132
+ });
133
+ }
134
+ pendingScheduleRequests.current = [];
135
+ }
136
+ setScheduler(instance);
86
137
  }
87
- replaceToolCallsForScheduler(mainSchedulerId, []);
88
- },
89
- onToolCallsUpdate: (calls) => {
90
- replaceToolCallsForScheduler(mainSchedulerId, calls);
91
- },
92
- getPreferredEditor,
93
- config,
94
- onEditorClose,
95
- onEditorOpen,
96
- }), [
138
+ catch (error) {
139
+ logger.warn(() => `Failed to initialize scheduler: ${error instanceof Error ? error.message : String(error)}`);
140
+ if (mounted) {
141
+ setScheduler(null);
142
+ }
143
+ }
144
+ };
145
+ void initializeScheduler();
146
+ return () => {
147
+ mounted = false;
148
+ if (resolved) {
149
+ config.disposeScheduler(sessionId);
150
+ }
151
+ };
152
+ }, [
97
153
  config,
98
- getPreferredEditor,
99
- onEditorClose,
154
+ sessionId,
100
155
  mainSchedulerId,
101
- onComplete,
102
156
  replaceToolCallsForScheduler,
103
157
  updateToolCallOutput,
158
+ getPreferredEditor,
159
+ onEditorClose,
104
160
  onEditorOpen,
105
161
  ]);
106
- const createExternalScheduler = useCallback((args) => {
162
+ const createExternalScheduler = useCallback(async (args) => {
107
163
  const { schedulerConfig, onAllToolCallsComplete, outputUpdateHandler: _outputUpdateHandler, onToolCallsUpdate, } = args;
108
164
  // Note: _outputUpdateHandler is intentionally not called - see comment below
109
165
  const schedulerId = Symbol('subagent-scheduler');
110
- return new CoreToolScheduler({
111
- config: schedulerConfig,
166
+ const schedulerSessionId = schedulerConfig.getSessionId();
167
+ // Use the shared scheduler instance for this session to avoid multiple
168
+ // MessageBus subscriptions and "unknown correlationId" errors
169
+ const instance = await schedulerConfig.getOrCreateScheduler(schedulerSessionId, {
112
170
  // Only update the local UI state - don't call outputUpdateHandler as well,
113
171
  // since that would cause duplicate output (the subagent's outputUpdateHandler
114
172
  // calls onMessage which goes to task.updateOutput, creating a second display).
@@ -122,7 +180,9 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
122
180
  },
123
181
  onAllToolCallsComplete: async (calls) => {
124
182
  if (calls.length > 0) {
125
- await onComplete(schedulerId, calls, { isPrimary: false });
183
+ await onCompleteRef.current(schedulerId, calls, {
184
+ isPrimary: false,
185
+ });
126
186
  await onAllToolCallsComplete?.(calls);
127
187
  }
128
188
  replaceToolCallsForScheduler(schedulerId, []);
@@ -131,11 +191,14 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
131
191
  onEditorClose,
132
192
  onEditorOpen,
133
193
  });
194
+ return {
195
+ schedule: (request, signal) => instance.schedule(request, signal),
196
+ dispose: () => schedulerConfig.disposeScheduler(schedulerSessionId),
197
+ };
134
198
  }, [
135
199
  getPreferredEditor,
136
200
  onEditorClose,
137
201
  replaceToolCallsForScheduler,
138
- onComplete,
139
202
  updateToolCallOutput,
140
203
  onEditorOpen,
141
204
  ]);
@@ -158,13 +221,20 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
158
221
  const normalizedRequest = Array.isArray(request)
159
222
  ? request.map(ensureAgentId)
160
223
  : ensureAgentId(request);
224
+ if (!scheduler) {
225
+ pendingScheduleRequests.current.push({
226
+ request: normalizedRequest,
227
+ signal,
228
+ });
229
+ return Promise.resolve();
230
+ }
161
231
  // The scheduler.schedule() returns a Promise that rejects when the abort
162
232
  // signal fires while tool calls are queued. We intentionally catch and
163
233
  // ignore these rejections because:
164
234
  // 1. Cancellation is an expected user action, not an error
165
235
  // 2. The UI state is updated via cancelAllToolCalls() synchronously
166
236
  // 3. Tool results are not needed after cancellation
167
- scheduler.schedule(normalizedRequest, signal).catch(() => {
237
+ return scheduler.schedule(normalizedRequest, signal).catch(() => {
168
238
  // Silently ignore cancellation rejections - this is expected behavior
169
239
  // when the user presses ESC to cancel queued tool calls
170
240
  });
@@ -190,7 +260,7 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
190
260
  });
191
261
  }, []);
192
262
  const cancelAllToolCalls = useCallback(() => {
193
- scheduler.cancelAll();
263
+ scheduler?.cancelAll();
194
264
  }, [scheduler]);
195
265
  return [toolCalls, schedule, markToolsAsSubmitted, cancelAllToolCalls];
196
266
  }
@@ -213,7 +283,7 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
213
283
  return mappedStatus;
214
284
  }
215
285
  // This should be unreachable if CoreStatus is exhaustive
216
- console.warn(`Unknown core status encountered: ${coreStatus}`);
286
+ logger.warn(() => `Unknown core status encountered: ${coreStatus}`);
217
287
  return ToolCallStatus.Error;
218
288
  }
219
289
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}
@@ -761,7 +761,7 @@ describe('useSlashCompletion', () => {
761
761
  act(() => {
762
762
  result.current.handleAutocomplete(1); // index 1 is 'add'
763
763
  });
764
- expect(result.current.textBuffer.text).toBe('/memory add ');
764
+ expect(result.current.textBuffer.text).toBe('/add ');
765
765
  });
766
766
  it('should complete a command with an alternative name', () => {
767
767
  const slashCommands = [