@vybestack/llxprt-code 0.8.0-nightly.260111.af7260fe6 → 0.8.0-nightly.260112.d9cf7fbc6

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 (64) 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/ui/AppContainer.js +24 -0
  5. package/dist/src/ui/AppContainer.js.map +1 -1
  6. package/dist/src/ui/commands/subagentCommand.js +58 -244
  7. package/dist/src/ui/commands/subagentCommand.js.map +1 -1
  8. package/dist/src/ui/commands/test/subagentCommand.schema.test.js +4 -3
  9. package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -1
  10. package/dist/src/ui/commands/test/subagentCommand.test.js +44 -124
  11. package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -1
  12. package/dist/src/ui/commands/types.d.ts +33 -2
  13. package/dist/src/ui/commands/types.js.map +1 -1
  14. package/dist/src/ui/components/DialogManager.js +5 -0
  15. package/dist/src/ui/components/DialogManager.js.map +1 -1
  16. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.d.ts +24 -0
  17. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js +102 -0
  18. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js.map +1 -0
  19. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.d.ts +14 -0
  20. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js +179 -0
  21. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js.map +1 -0
  22. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.d.ts +15 -0
  23. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js +47 -0
  24. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js.map +1 -0
  25. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.d.ts +18 -0
  26. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js +111 -0
  27. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js.map +1 -0
  28. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.d.ts +19 -0
  29. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js +137 -0
  30. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js.map +1 -0
  31. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.d.ts +13 -0
  32. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js +14 -0
  33. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js.map +1 -0
  34. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.d.ts +8 -0
  35. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js +293 -0
  36. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js.map +1 -0
  37. package/dist/src/ui/components/SubagentManagement/SubagentShowView.d.ts +15 -0
  38. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js +35 -0
  39. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js.map +1 -0
  40. package/dist/src/ui/components/SubagentManagement/index.d.ts +14 -0
  41. package/dist/src/ui/components/SubagentManagement/index.js +15 -0
  42. package/dist/src/ui/components/SubagentManagement/index.js.map +1 -0
  43. package/dist/src/ui/components/SubagentManagement/types.d.ts +109 -0
  44. package/dist/src/ui/components/SubagentManagement/types.js +77 -0
  45. package/dist/src/ui/components/SubagentManagement/types.js.map +1 -0
  46. package/dist/src/ui/contexts/KeypressContext.js +2 -1
  47. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  48. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  49. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  50. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  51. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  52. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -0
  53. package/dist/src/ui/hooks/slashCommandProcessor.js +6 -0
  54. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  55. package/dist/src/ui/layouts/DefaultAppLayout.js +2 -0
  56. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  57. package/dist/src/utils/sandbox.d.ts +1 -0
  58. package/dist/src/utils/sandbox.js +22 -20
  59. package/dist/src/utils/sandbox.js.map +1 -1
  60. package/dist/src/utils/sandbox.test.d.ts +6 -0
  61. package/dist/src/utils/sandbox.test.js +176 -0
  62. package/dist/src/utils/sandbox.test.js.map +1 -0
  63. package/dist/tsconfig.build.tsbuildinfo +1 -1
  64. package/package.json +3 -3
@@ -0,0 +1,293 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Vybestack LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { useState, useCallback, useEffect } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { Colors } from '../../colors.js';
10
+ import { useUIState } from '../../contexts/UIStateContext.js';
11
+ import { SubagentView, } from './types.js';
12
+ import { SubagentListMenu } from './SubagentListMenu.js';
13
+ import { SubagentShowView } from './SubagentShowView.js';
14
+ import { SubagentEditForm } from './SubagentEditForm.js';
15
+ import { SubagentCreationWizard } from './SubagentCreationWizard.js';
16
+ import { ProfileAttachmentWizard } from './ProfileAttachmentWizard.js';
17
+ import { SubagentDeleteDialog } from './SubagentDeleteDialog.js';
18
+ import { SubagentMainMenu } from './SubagentMainMenu.js';
19
+ export const SubagentManagerDialog = ({ onClose, initialView = SubagentView.MENU, initialSubagentName, }) => {
20
+ const uiState = useUIState();
21
+ const { commandContext } = uiState;
22
+ const subagentManager = commandContext?.services?.subagentManager;
23
+ const profileManager = commandContext?.services?.profileManager;
24
+ const [state, setState] = useState({
25
+ currentView: initialView,
26
+ selectedSubagent: null,
27
+ navigationStack: [initialView], // Start with initial view, not menu
28
+ searchTerm: '',
29
+ searchActive: false,
30
+ selectedIndex: 0,
31
+ subagents: [],
32
+ profiles: [],
33
+ isLoading: true,
34
+ error: null,
35
+ });
36
+ // Track pending profile change when selecting from edit form (not yet saved)
37
+ const [pendingProfile, setPendingProfile] = useState(undefined);
38
+ // Load subagents and profiles
39
+ const loadData = useCallback(async () => {
40
+ if (!subagentManager) {
41
+ setState((prev) => ({
42
+ ...prev,
43
+ isLoading: false,
44
+ error: 'SubagentManager not available',
45
+ }));
46
+ return;
47
+ }
48
+ setState((prev) => ({ ...prev, isLoading: true, error: null }));
49
+ try {
50
+ const [subagentNames, profileNames] = await Promise.all([
51
+ subagentManager.listSubagents(),
52
+ profileManager?.listProfiles() ?? Promise.resolve([]),
53
+ ]);
54
+ // Load full subagent configs
55
+ const subagents = await Promise.all(subagentNames.map(async (name) => {
56
+ const config = await subagentManager.loadSubagent(name);
57
+ return config;
58
+ }));
59
+ setState((prev) => ({
60
+ ...prev,
61
+ subagents,
62
+ profiles: profileNames,
63
+ isLoading: false,
64
+ }));
65
+ // If initial subagent specified, select it
66
+ if (initialSubagentName) {
67
+ const found = subagents.find((s) => s.name === initialSubagentName);
68
+ if (found) {
69
+ setState((prev) => ({
70
+ ...prev,
71
+ selectedSubagent: found,
72
+ currentView: initialView,
73
+ }));
74
+ }
75
+ }
76
+ }
77
+ catch (err) {
78
+ setState((prev) => ({
79
+ ...prev,
80
+ isLoading: false,
81
+ error: err instanceof Error ? err.message : 'Failed to load data',
82
+ }));
83
+ }
84
+ }, [subagentManager, profileManager, initialSubagentName, initialView]);
85
+ useEffect(() => {
86
+ loadData();
87
+ }, [loadData]);
88
+ // Navigation helpers
89
+ const navigateTo = useCallback((view, subagent) => {
90
+ setState((prev) => ({
91
+ ...prev,
92
+ currentView: view,
93
+ navigationStack: [...prev.navigationStack, view],
94
+ selectedSubagent: subagent ?? prev.selectedSubagent,
95
+ }));
96
+ }, []);
97
+ const goBack = useCallback(() => {
98
+ setState((prev) => {
99
+ const newStack = prev.navigationStack.slice(0, -1);
100
+ // If stack is empty or only has initial view, close dialog
101
+ if (newStack.length === 0) {
102
+ // Use setTimeout to avoid state update during render
103
+ setTimeout(() => onClose(), 0);
104
+ return prev;
105
+ }
106
+ const prevView = newStack[newStack.length - 1];
107
+ return {
108
+ ...prev,
109
+ currentView: prevView,
110
+ navigationStack: newStack,
111
+ selectedSubagent: prevView === SubagentView.LIST ? null : prev.selectedSubagent,
112
+ };
113
+ });
114
+ }, [onClose]);
115
+ // Handle subagent selection from list
116
+ const handleSubagentSelect = useCallback((subagent) => {
117
+ navigateTo(SubagentView.SHOW, subagent);
118
+ }, [navigateTo]);
119
+ // Handle edit from list or show view
120
+ const handleEdit = useCallback((subagent) => {
121
+ const target = subagent ?? state.selectedSubagent;
122
+ if (target) {
123
+ navigateTo(SubagentView.EDIT, target);
124
+ }
125
+ }, [navigateTo, state.selectedSubagent]);
126
+ // Handle attach profile from list
127
+ const handleAttachProfile = useCallback((subagent) => {
128
+ navigateTo(SubagentView.ATTACH_PROFILE, subagent);
129
+ }, [navigateTo]);
130
+ // Handle select profile from edit form (uses current selected subagent)
131
+ const handleSelectProfileFromEdit = useCallback(() => {
132
+ if (state.selectedSubagent) {
133
+ navigateTo(SubagentView.ATTACH_PROFILE, state.selectedSubagent);
134
+ }
135
+ }, [navigateTo, state.selectedSubagent]);
136
+ // Handle delete from list
137
+ const handleDeleteRequest = useCallback((subagent) => {
138
+ navigateTo(SubagentView.DELETE, subagent);
139
+ }, [navigateTo]);
140
+ // Handle cancel from edit form - clears pending profile
141
+ const handleEditCancel = useCallback(() => {
142
+ setPendingProfile(undefined);
143
+ goBack();
144
+ }, [goBack]);
145
+ // Handle save (edit)
146
+ const handleSave = useCallback(async (systemPrompt, profile) => {
147
+ if (!subagentManager || !state.selectedSubagent)
148
+ return;
149
+ try {
150
+ await subagentManager.saveSubagent(state.selectedSubagent.name, profile, systemPrompt);
151
+ // Clear pending profile after successful save
152
+ setPendingProfile(undefined);
153
+ await loadData();
154
+ goBack();
155
+ }
156
+ catch (err) {
157
+ setState((prev) => ({
158
+ ...prev,
159
+ error: err instanceof Error ? err.message : 'Failed to save subagent',
160
+ }));
161
+ }
162
+ }, [subagentManager, state.selectedSubagent, loadData, goBack]);
163
+ // Handle create
164
+ const handleCreate = useCallback(async (name, systemPrompt, profile) => {
165
+ if (!subagentManager)
166
+ return;
167
+ try {
168
+ await subagentManager.saveSubagent(name, profile, systemPrompt);
169
+ await loadData();
170
+ navigateTo(SubagentView.LIST);
171
+ }
172
+ catch (err) {
173
+ setState((prev) => ({
174
+ ...prev,
175
+ error: err instanceof Error ? err.message : 'Failed to create subagent',
176
+ }));
177
+ }
178
+ }, [subagentManager, loadData, navigateTo]);
179
+ // Handle profile attachment - check if we came from EDIT view
180
+ const handleProfileAttach = useCallback(async (profileName) => {
181
+ if (!state.selectedSubagent)
182
+ return;
183
+ // Check if previous view was EDIT - if so, just set pending profile and go back
184
+ const prevView = state.navigationStack.length >= 2
185
+ ? state.navigationStack[state.navigationStack.length - 2]
186
+ : null;
187
+ if (prevView === SubagentView.EDIT) {
188
+ // Don't save yet - just set pending profile and return to edit form
189
+ setPendingProfile(profileName);
190
+ goBack();
191
+ return;
192
+ }
193
+ // Direct profile attachment from list - save immediately
194
+ if (!subagentManager)
195
+ return;
196
+ try {
197
+ await subagentManager.saveSubagent(state.selectedSubagent.name, profileName, state.selectedSubagent.systemPrompt);
198
+ await loadData();
199
+ goBack();
200
+ }
201
+ catch (err) {
202
+ setState((prev) => ({
203
+ ...prev,
204
+ error: err instanceof Error ? err.message : 'Failed to attach profile',
205
+ }));
206
+ }
207
+ }, [
208
+ subagentManager,
209
+ state.selectedSubagent,
210
+ state.navigationStack,
211
+ loadData,
212
+ goBack,
213
+ ]);
214
+ // Handle delete confirmation
215
+ const handleDeleteConfirm = useCallback(async () => {
216
+ if (!subagentManager || !state.selectedSubagent)
217
+ return;
218
+ try {
219
+ await subagentManager.deleteSubagent(state.selectedSubagent.name);
220
+ await loadData();
221
+ // After delete, close the dialog
222
+ onClose();
223
+ }
224
+ catch (err) {
225
+ setState((prev) => ({
226
+ ...prev,
227
+ error: err instanceof Error ? err.message : 'Failed to delete subagent',
228
+ }));
229
+ }
230
+ }, [subagentManager, state.selectedSubagent, loadData, onClose]);
231
+ // Render current view
232
+ const renderView = () => {
233
+ if (state.isLoading) {
234
+ return _jsx(Text, { color: Colors.Gray, children: "Loading..." });
235
+ }
236
+ if (state.error) {
237
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "#ff0000", children: ["Error: ", state.error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "[ESC] Close" }) })] }));
238
+ }
239
+ switch (state.currentView) {
240
+ case SubagentView.LIST:
241
+ return (_jsx(SubagentListMenu, { subagents: state.subagents, onSelect: handleSubagentSelect, onEdit: handleEdit, onAttachProfile: handleAttachProfile, onDelete: handleDeleteRequest, onBack: goBack, isLoading: state.isLoading, isFocused: true }));
242
+ case SubagentView.SHOW:
243
+ if (!state.selectedSubagent) {
244
+ return _jsx(Text, { color: Colors.Gray, children: "No subagent selected" });
245
+ }
246
+ return (_jsx(SubagentShowView, { subagent: state.selectedSubagent, onEdit: handleEdit, onBack: goBack, isFocused: true }));
247
+ case SubagentView.EDIT:
248
+ if (!state.selectedSubagent) {
249
+ return _jsx(Text, { color: Colors.Gray, children: "No subagent selected" });
250
+ }
251
+ return (_jsx(SubagentEditForm, { subagent: state.selectedSubagent, profiles: state.profiles, pendingProfile: pendingProfile, onSave: handleSave, onCancel: handleEditCancel, onSelectProfile: handleSelectProfileFromEdit, isFocused: true }));
252
+ case SubagentView.CREATE:
253
+ return (_jsx(SubagentCreationWizard, { profiles: state.profiles, onSave: handleCreate, onCancel: goBack, isFocused: true }));
254
+ case SubagentView.ATTACH_PROFILE:
255
+ if (!state.selectedSubagent) {
256
+ return _jsx(Text, { color: Colors.Gray, children: "No subagent selected" });
257
+ }
258
+ return (_jsx(ProfileAttachmentWizard, { subagent: state.selectedSubagent, profiles: state.profiles, onConfirm: handleProfileAttach, onCancel: goBack, isFocused: true }));
259
+ case SubagentView.DELETE:
260
+ if (!state.selectedSubagent) {
261
+ return _jsx(Text, { color: Colors.Gray, children: "No subagent selected" });
262
+ }
263
+ return (_jsx(SubagentDeleteDialog, { subagent: state.selectedSubagent, onConfirm: handleDeleteConfirm, onCancel: goBack, isFocused: true }));
264
+ case SubagentView.MENU:
265
+ return _jsx(SubagentMainMenu, { onSelect: navigateTo, isFocused: true });
266
+ default:
267
+ return _jsx(Text, { color: Colors.Gray, children: "Unknown view" });
268
+ }
269
+ };
270
+ // Get title based on current view
271
+ const getTitle = () => {
272
+ switch (state.currentView) {
273
+ case SubagentView.LIST:
274
+ return 'Subagent List';
275
+ case SubagentView.SHOW:
276
+ return `Subagent: ${state.selectedSubagent?.name ?? ''}`;
277
+ case SubagentView.EDIT:
278
+ return `Edit: ${state.selectedSubagent?.name ?? ''}`;
279
+ case SubagentView.CREATE:
280
+ return 'Create Subagent';
281
+ case SubagentView.ATTACH_PROFILE:
282
+ return `Attach Profile: ${state.selectedSubagent?.name ?? ''}`;
283
+ case SubagentView.DELETE:
284
+ return 'Delete Subagent';
285
+ case SubagentView.MENU:
286
+ return 'Subagent Manager';
287
+ default:
288
+ return 'Subagent';
289
+ }
290
+ };
291
+ return (_jsxs(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: Colors.Foreground, children: getTitle() }) }), renderView()] }));
292
+ };
293
+ //# sourceMappingURL=SubagentManagerDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentManagerDialog.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/SubagentManagerDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import type { SubagentInfo } from './types.js';
8
+ interface SubagentShowViewProps {
9
+ subagent: SubagentInfo;
10
+ onEdit: () => void;
11
+ onBack: () => void;
12
+ isFocused?: boolean;
13
+ }
14
+ export declare const SubagentShowView: React.FC<SubagentShowViewProps>;
15
+ export {};
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { Colors } from '../../colors.js';
4
+ import { useKeypress } from '../../hooks/useKeypress.js';
5
+ export const SubagentShowView = ({ subagent, onEdit, onBack, isFocused = true, }) => {
6
+ useKeypress((key) => {
7
+ if (key.name === 'escape') {
8
+ onBack();
9
+ return;
10
+ }
11
+ if (key.sequence === 'e') {
12
+ onEdit();
13
+ return;
14
+ }
15
+ }, { isActive: isFocused });
16
+ const formatDate = (isoString) => {
17
+ try {
18
+ return new Date(isoString).toLocaleString('en-US', {
19
+ year: 'numeric',
20
+ month: 'short',
21
+ day: 'numeric',
22
+ hour: '2-digit',
23
+ minute: '2-digit',
24
+ });
25
+ }
26
+ catch {
27
+ return isoString;
28
+ }
29
+ };
30
+ // Split system prompt into lines for display (show all lines)
31
+ const promptLines = subagent.systemPrompt.split('\n');
32
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.Foreground, children: "Basic Information" }), _jsx(Text, { color: Colors.Gray, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), _jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Name: " }), _jsx(Text, { color: Colors.Foreground, children: subagent.name })] }), _jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Status: " }), _jsx(Text, { color: Colors.AccentGreen, children: "Active" })] }), _jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Created: " }), _jsx(Text, { color: Colors.Foreground, children: formatDate(subagent.createdAt) })] }), _jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Updated: " }), _jsx(Text, { color: Colors.Foreground, children: formatDate(subagent.updatedAt) })] })] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.Foreground, children: "Configuration" }), _jsx(Text, { color: Colors.Gray, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), _jsx(Text, { color: Colors.Gray, children: "System Prompt:" }), _jsx(Box, { flexDirection: "column", borderStyle: "single", borderColor: Colors.Gray, paddingX: 1, children: promptLines.map((line, idx) => (_jsx(Text, { color: Colors.Foreground, wrap: "wrap", children: line || ' ' }, idx))) })] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.Foreground, children: "Profile Attachment" }), _jsx(Text, { color: Colors.Gray, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), _jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Profile: " }), _jsx(Text, { color: Colors.Foreground, children: subagent.profile })] }), subagent.profileInfo && (_jsxs(_Fragment, { children: [subagent.profileInfo.model && (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Model: " }), _jsxs(Text, { color: Colors.Foreground, children: [subagent.profileInfo.model, subagent.profileInfo.provider &&
33
+ ` (via ${subagent.profileInfo.provider})`] })] })), subagent.profileInfo.temperature !== undefined && (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Temperature: " }), _jsx(Text, { color: Colors.Foreground, children: subagent.profileInfo.temperature })] })), subagent.profileInfo.maxTokens !== undefined && (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "Max Tokens: " }), _jsx(Text, { color: Colors.Foreground, children: subagent.profileInfo.maxTokens })] }))] }))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press [ESC] to go back [e] to edit" }) })] }));
34
+ };
35
+ //# sourceMappingURL=SubagentShowView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentShowView.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/SubagentShowView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export { SubagentManagerDialog } from './SubagentManagerDialog.js';
7
+ export { SubagentMainMenu } from './SubagentMainMenu.js';
8
+ export { SubagentListMenu } from './SubagentListMenu.js';
9
+ export { SubagentShowView } from './SubagentShowView.js';
10
+ export { SubagentEditForm } from './SubagentEditForm.js';
11
+ export { SubagentCreationWizard } from './SubagentCreationWizard.js';
12
+ export { ProfileAttachmentWizard } from './ProfileAttachmentWizard.js';
13
+ export { SubagentDeleteDialog } from './SubagentDeleteDialog.js';
14
+ export * from './types.js';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export { SubagentManagerDialog } from './SubagentManagerDialog.js';
7
+ export { SubagentMainMenu } from './SubagentMainMenu.js';
8
+ export { SubagentListMenu } from './SubagentListMenu.js';
9
+ export { SubagentShowView } from './SubagentShowView.js';
10
+ export { SubagentEditForm } from './SubagentEditForm.js';
11
+ export { SubagentCreationWizard } from './SubagentCreationWizard.js';
12
+ export { ProfileAttachmentWizard } from './ProfileAttachmentWizard.js';
13
+ export { SubagentDeleteDialog } from './SubagentDeleteDialog.js';
14
+ export * from './types.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { SubagentConfig } from '@vybestack/llxprt-code-core';
7
+ /**
8
+ * Views available in the SubagentManagerDialog
9
+ */
10
+ export declare enum SubagentView {
11
+ MENU = "menu",
12
+ LIST = "list",
13
+ SHOW = "show",
14
+ EDIT = "edit",
15
+ CREATE = "create",
16
+ DELETE = "delete",
17
+ ATTACH_PROFILE = "attach_profile"
18
+ }
19
+ /**
20
+ * Focus modes for the list view
21
+ */
22
+ export declare enum ListFocusMode {
23
+ SEARCH = "search",
24
+ LIST = "list"
25
+ }
26
+ /**
27
+ * Creation wizard steps
28
+ *
29
+ * NOTE: Currently the wizard uses field-based navigation rather than
30
+ * step-based navigation. This enum is retained for potential future
31
+ * multi-step wizard implementation.
32
+ */
33
+ export declare enum CreateStep {
34
+ /** Single form view with all fields */
35
+ FORM = "form"
36
+ }
37
+ /**
38
+ * Edit form field focus
39
+ */
40
+ export declare enum EditField {
41
+ SYSTEM_PROMPT = "system_prompt",
42
+ PROFILE = "profile"
43
+ }
44
+ /**
45
+ * Extended subagent info with profile details for display
46
+ */
47
+ export interface SubagentInfo extends SubagentConfig {
48
+ profileInfo?: {
49
+ provider?: string;
50
+ model?: string;
51
+ temperature?: number;
52
+ maxTokens?: number;
53
+ };
54
+ }
55
+ /**
56
+ * State for the SubagentManagerDialog
57
+ */
58
+ export interface SubagentManagerState {
59
+ currentView: SubagentView;
60
+ selectedSubagent: SubagentInfo | null;
61
+ navigationStack: SubagentView[];
62
+ searchTerm: string;
63
+ searchActive: boolean;
64
+ selectedIndex: number;
65
+ subagents: SubagentInfo[];
66
+ profiles: string[];
67
+ isLoading: boolean;
68
+ error: string | null;
69
+ }
70
+ /**
71
+ * Props for SubagentManagerDialog
72
+ */
73
+ export interface SubagentManagerDialogProps {
74
+ onClose: () => void;
75
+ initialView?: SubagentView;
76
+ initialSubagentName?: string;
77
+ }
78
+ /**
79
+ * Creation wizard state
80
+ */
81
+ export interface CreateWizardState {
82
+ currentStep: CreateStep;
83
+ name: string;
84
+ systemPrompt: string;
85
+ selectedProfile: string;
86
+ validationErrors: Record<string, string>;
87
+ }
88
+ /**
89
+ * Edit form state
90
+ */
91
+ export interface EditFormState {
92
+ systemPrompt: string;
93
+ selectedProfile: string;
94
+ focusedField: EditField;
95
+ isEditing: boolean;
96
+ hasChanges: boolean;
97
+ }
98
+ /**
99
+ * Menu action items
100
+ */
101
+ export interface MenuAction {
102
+ label: string;
103
+ value: SubagentView;
104
+ description: string;
105
+ }
106
+ /**
107
+ * Default menu actions for the main menu
108
+ */
109
+ export declare const MENU_ACTIONS: MenuAction[];
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Views available in the SubagentManagerDialog
8
+ */
9
+ export var SubagentView;
10
+ (function (SubagentView) {
11
+ SubagentView["MENU"] = "menu";
12
+ SubagentView["LIST"] = "list";
13
+ SubagentView["SHOW"] = "show";
14
+ SubagentView["EDIT"] = "edit";
15
+ SubagentView["CREATE"] = "create";
16
+ SubagentView["DELETE"] = "delete";
17
+ SubagentView["ATTACH_PROFILE"] = "attach_profile";
18
+ })(SubagentView || (SubagentView = {}));
19
+ /**
20
+ * Focus modes for the list view
21
+ */
22
+ export var ListFocusMode;
23
+ (function (ListFocusMode) {
24
+ ListFocusMode["SEARCH"] = "search";
25
+ ListFocusMode["LIST"] = "list";
26
+ })(ListFocusMode || (ListFocusMode = {}));
27
+ /**
28
+ * Creation wizard steps
29
+ *
30
+ * NOTE: Currently the wizard uses field-based navigation rather than
31
+ * step-based navigation. This enum is retained for potential future
32
+ * multi-step wizard implementation.
33
+ */
34
+ export var CreateStep;
35
+ (function (CreateStep) {
36
+ /** Single form view with all fields */
37
+ CreateStep["FORM"] = "form";
38
+ })(CreateStep || (CreateStep = {}));
39
+ /**
40
+ * Edit form field focus
41
+ */
42
+ export var EditField;
43
+ (function (EditField) {
44
+ EditField["SYSTEM_PROMPT"] = "system_prompt";
45
+ EditField["PROFILE"] = "profile";
46
+ })(EditField || (EditField = {}));
47
+ /**
48
+ * Default menu actions for the main menu
49
+ */
50
+ export const MENU_ACTIONS = [
51
+ {
52
+ label: 'List Subagents',
53
+ value: SubagentView.LIST,
54
+ description: 'Show all available subagents',
55
+ },
56
+ {
57
+ label: 'Show Subagent',
58
+ value: SubagentView.SHOW,
59
+ description: 'View detailed configuration',
60
+ },
61
+ {
62
+ label: 'Edit Subagent',
63
+ value: SubagentView.EDIT,
64
+ description: 'Modify subagent settings',
65
+ },
66
+ {
67
+ label: 'Create Subagent',
68
+ value: SubagentView.CREATE,
69
+ description: 'Create new subagent',
70
+ },
71
+ {
72
+ label: 'Delete Subagent',
73
+ value: SubagentView.DELETE,
74
+ description: 'Remove an existing subagent',
75
+ },
76
+ ];
77
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,uCAAuC;IACvC,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4CAA+B,CAAA;IAC/B,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAsED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC;QACE,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,YAAY,CAAC,IAAI;QACxB,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,YAAY,CAAC,IAAI;QACxB,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,YAAY,CAAC,IAAI;QACxB,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,WAAW,EAAE,6BAA6B;KAC3C;CACF,CAAC"}
@@ -809,7 +809,8 @@ export function KeypressProvider({ children, kittyProtocolEnabled, config, debug
809
809
  if (keypressLogger.enabled) {
810
810
  keypressLogger.debug(() => `handleRawKeypress chunk length=${data.length} endsWithCR=${data.length > 0 && data[data.length - 1] === 13}`);
811
811
  }
812
- if (mouseSequenceBuffer.length > MAX_MOUSE_BUFFER_SIZE) {
812
+ if (mouseEventsEnabled &&
813
+ mouseSequenceBuffer.length > MAX_MOUSE_BUFFER_SIZE) {
813
814
  mouseSequenceBuffer = mouseSequenceBuffer.slice(-MAX_MOUSE_BUFFER_SIZE);
814
815
  }
815
816
  const stripMouseSequences = (chunk) => {