@vybestack/llxprt-code 0.8.0-nightly.260110.2b15ec648 → 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 (98) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/config/config.js +12 -2
  3. package/dist/src/config/config.js.map +1 -1
  4. package/dist/src/config/config.kimiModelBootstrap.test.js +8 -1
  5. package/dist/src/config/config.kimiModelBootstrap.test.js.map +1 -1
  6. package/dist/src/config/config.loadMemory.test.js +1 -0
  7. package/dist/src/config/config.loadMemory.test.js.map +1 -1
  8. package/dist/src/config/settingsSchema.d.ts +4 -4
  9. package/dist/src/config/settingsSchema.js +4 -4
  10. package/dist/src/config/settingsSchema.js.map +1 -1
  11. package/dist/src/generated/git-commit.d.ts +1 -1
  12. package/dist/src/generated/git-commit.js +1 -1
  13. package/dist/src/ui/AppContainer.js +26 -3
  14. package/dist/src/ui/AppContainer.js.map +1 -1
  15. package/dist/src/ui/commands/subagentCommand.js +58 -244
  16. package/dist/src/ui/commands/subagentCommand.js.map +1 -1
  17. package/dist/src/ui/commands/test/subagentCommand.schema.test.js +4 -3
  18. package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -1
  19. package/dist/src/ui/commands/test/subagentCommand.test.js +44 -124
  20. package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -1
  21. package/dist/src/ui/commands/types.d.ts +33 -2
  22. package/dist/src/ui/commands/types.js.map +1 -1
  23. package/dist/src/ui/components/AboutBox.js +1 -1
  24. package/dist/src/ui/components/AboutBox.js.map +1 -1
  25. package/dist/src/ui/components/AboutBox.theme.test.d.ts +6 -0
  26. package/dist/src/ui/components/AboutBox.theme.test.js +36 -0
  27. package/dist/src/ui/components/AboutBox.theme.test.js.map +1 -0
  28. package/dist/src/ui/components/AuthDialog.js +1 -1
  29. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  30. package/dist/src/ui/components/AuthDialog.theme.test.d.ts +6 -0
  31. package/dist/src/ui/components/AuthDialog.theme.test.js +38 -0
  32. package/dist/src/ui/components/AuthDialog.theme.test.js.map +1 -0
  33. package/dist/src/ui/components/DialogManager.js +5 -0
  34. package/dist/src/ui/components/DialogManager.js.map +1 -1
  35. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.d.ts +24 -0
  36. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js +102 -0
  37. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js.map +1 -0
  38. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.d.ts +14 -0
  39. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js +179 -0
  40. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js.map +1 -0
  41. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.d.ts +15 -0
  42. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js +47 -0
  43. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js.map +1 -0
  44. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.d.ts +18 -0
  45. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js +111 -0
  46. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js.map +1 -0
  47. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.d.ts +19 -0
  48. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js +137 -0
  49. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js.map +1 -0
  50. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.d.ts +13 -0
  51. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js +14 -0
  52. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js.map +1 -0
  53. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.d.ts +8 -0
  54. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js +293 -0
  55. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js.map +1 -0
  56. package/dist/src/ui/components/SubagentManagement/SubagentShowView.d.ts +15 -0
  57. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js +35 -0
  58. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js.map +1 -0
  59. package/dist/src/ui/components/SubagentManagement/index.d.ts +14 -0
  60. package/dist/src/ui/components/SubagentManagement/index.js +15 -0
  61. package/dist/src/ui/components/SubagentManagement/index.js.map +1 -0
  62. package/dist/src/ui/components/SubagentManagement/types.d.ts +109 -0
  63. package/dist/src/ui/components/SubagentManagement/types.js +77 -0
  64. package/dist/src/ui/components/SubagentManagement/types.js.map +1 -0
  65. package/dist/src/ui/components/shared/ScrollableList.js +2 -1
  66. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  67. package/dist/src/ui/components/shared/ScrollableList.theme.test.d.ts +6 -0
  68. package/dist/src/ui/components/shared/ScrollableList.theme.test.js +50 -0
  69. package/dist/src/ui/components/shared/ScrollableList.theme.test.js.map +1 -0
  70. package/dist/src/ui/components/shared/VirtualizedList.js +2 -1
  71. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  72. package/dist/src/ui/components/shared/VirtualizedList.theme.test.d.ts +6 -0
  73. package/dist/src/ui/components/shared/VirtualizedList.theme.test.js +52 -0
  74. package/dist/src/ui/components/shared/VirtualizedList.theme.test.js.map +1 -0
  75. package/dist/src/ui/containers/SessionController.js +3 -7
  76. package/dist/src/ui/containers/SessionController.js.map +1 -1
  77. package/dist/src/ui/containers/SessionController.test.d.ts +8 -1
  78. package/dist/src/ui/containers/SessionController.test.js +47 -1
  79. package/dist/src/ui/containers/SessionController.test.js.map +1 -1
  80. package/dist/src/ui/contexts/KeypressContext.js +2 -1
  81. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  82. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  83. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  84. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  85. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  86. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -0
  87. package/dist/src/ui/hooks/slashCommandProcessor.js +6 -0
  88. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  89. package/dist/src/ui/layouts/DefaultAppLayout.js +2 -0
  90. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  91. package/dist/src/utils/sandbox.d.ts +1 -0
  92. package/dist/src/utils/sandbox.js +22 -20
  93. package/dist/src/utils/sandbox.js.map +1 -1
  94. package/dist/src/utils/sandbox.test.d.ts +6 -0
  95. package/dist/src/utils/sandbox.test.js +176 -0
  96. package/dist/src/utils/sandbox.test.js.map +1 -0
  97. package/dist/tsconfig.build.tsbuildinfo +1 -1
  98. package/package.json +3 -3
@@ -0,0 +1,137 @@
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, useMemo, useCallback } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { Colors } from '../../colors.js';
10
+ import { useKeypress } from '../../hooks/useKeypress.js';
11
+ import { ListFocusMode } from './types.js';
12
+ export const SubagentListMenu = ({ subagents, onSelect, onEdit, onAttachProfile, onDelete, onBack, isLoading = false, isFocused = true, }) => {
13
+ const [searchTerm, setSearchTerm] = useState('');
14
+ const [focusMode, setFocusMode] = useState(ListFocusMode.LIST);
15
+ const [selectedIndex, setSelectedIndex] = useState(0);
16
+ // Filter subagents based on search term
17
+ const filteredSubagents = useMemo(() => {
18
+ if (!searchTerm.trim())
19
+ return subagents;
20
+ const term = searchTerm.toLowerCase();
21
+ return subagents.filter((s) => s.name.toLowerCase().includes(term) ||
22
+ s.profile.toLowerCase().includes(term));
23
+ }, [subagents, searchTerm]);
24
+ // Ensure selected index is valid after filtering
25
+ const safeIndex = useMemo(() => {
26
+ if (filteredSubagents.length === 0)
27
+ return 0;
28
+ return Math.min(selectedIndex, filteredSubagents.length - 1);
29
+ }, [selectedIndex, filteredSubagents.length]);
30
+ const moveSelection = useCallback((delta) => {
31
+ if (filteredSubagents.length === 0)
32
+ return;
33
+ let newIndex = safeIndex + delta;
34
+ if (newIndex < 0)
35
+ newIndex = 0;
36
+ if (newIndex >= filteredSubagents.length)
37
+ newIndex = filteredSubagents.length - 1;
38
+ setSelectedIndex(newIndex);
39
+ }, [safeIndex, filteredSubagents.length]);
40
+ const handleSearchInput = useCallback((char) => {
41
+ setSearchTerm((prev) => prev + char);
42
+ }, []);
43
+ const handleBackspace = useCallback(() => {
44
+ setSearchTerm((prev) => prev.slice(0, -1));
45
+ }, []);
46
+ useKeypress((key) => {
47
+ const input = key.sequence;
48
+ // ESC handling
49
+ if (key.name === 'escape') {
50
+ if (focusMode === ListFocusMode.SEARCH && searchTerm) {
51
+ // Clear search
52
+ setSearchTerm('');
53
+ setFocusMode(ListFocusMode.LIST);
54
+ }
55
+ else if (focusMode === ListFocusMode.SEARCH) {
56
+ // Exit search mode
57
+ setFocusMode(ListFocusMode.LIST);
58
+ }
59
+ else {
60
+ // Back to menu
61
+ onBack();
62
+ }
63
+ return;
64
+ }
65
+ // Tab to activate search
66
+ if (key.name === 'tab' && focusMode === ListFocusMode.LIST) {
67
+ setFocusMode(ListFocusMode.SEARCH);
68
+ return;
69
+ }
70
+ // Tab to switch focus
71
+ if (key.name === 'tab' && focusMode === ListFocusMode.SEARCH) {
72
+ setFocusMode(ListFocusMode.LIST);
73
+ return;
74
+ }
75
+ // Search mode input handling
76
+ if (focusMode === ListFocusMode.SEARCH) {
77
+ if (key.name === 'backspace' || key.name === 'delete') {
78
+ handleBackspace();
79
+ return;
80
+ }
81
+ if (key.name === 'return') {
82
+ setFocusMode(ListFocusMode.LIST);
83
+ return;
84
+ }
85
+ // Type character
86
+ if (input && input.length === 1 && !key.ctrl && !key.meta) {
87
+ handleSearchInput(input);
88
+ }
89
+ return;
90
+ }
91
+ // List navigation mode
92
+ if (focusMode === ListFocusMode.LIST) {
93
+ if (key.name === 'up') {
94
+ moveSelection(-1);
95
+ return;
96
+ }
97
+ if (key.name === 'down') {
98
+ moveSelection(1);
99
+ return;
100
+ }
101
+ if (key.name === 'return' && filteredSubagents.length > 0) {
102
+ onSelect(filteredSubagents[safeIndex]);
103
+ return;
104
+ }
105
+ // Quick actions
106
+ if (input === 'e' && filteredSubagents.length > 0) {
107
+ onEdit(filteredSubagents[safeIndex]);
108
+ return;
109
+ }
110
+ if (input === 'a' && filteredSubagents.length > 0) {
111
+ onAttachProfile(filteredSubagents[safeIndex]);
112
+ return;
113
+ }
114
+ if (input === 'd' && filteredSubagents.length > 0) {
115
+ onDelete(filteredSubagents[safeIndex]);
116
+ return;
117
+ }
118
+ }
119
+ }, { isActive: isFocused && !isLoading });
120
+ if (isLoading) {
121
+ return (_jsx(Box, { flexDirection: "column", children: _jsx(Text, { color: Colors.Gray, children: "Loading subagents..." }) }));
122
+ }
123
+ if (subagents.length === 0) {
124
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: Colors.Foreground, children: "No subagents found. Use 'Create Subagent' to create one." }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "[ESC] Back to menu" }) })] }));
125
+ }
126
+ // Calculate visible items (viewport)
127
+ const maxVisible = 10;
128
+ const startIndex = Math.max(0, safeIndex - Math.floor(maxVisible / 2));
129
+ const endIndex = Math.min(filteredSubagents.length, startIndex + maxVisible);
130
+ const visibleSubagents = filteredSubagents.slice(startIndex, endIndex);
131
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: Colors.Gray, children: "Search: " }), focusMode === ListFocusMode.SEARCH ? (_jsxs(Text, { color: Colors.Foreground, children: [searchTerm, _jsx(Text, { color: "#00ff00", children: "|" })] })) : (_jsx(Text, { color: Colors.Gray, children: searchTerm || '(press Tab to search)' })), _jsxs(Text, { color: Colors.Gray, children: [' ', "Found ", filteredSubagents.length, searchTerm ? ` of ${subagents.length}` : '', " subagents"] })] }), _jsx(Box, { flexDirection: "column", marginBottom: 1, children: filteredSubagents.length === 0 ? (_jsx(Text, { color: Colors.Gray, children: "No matching subagents" })) : (visibleSubagents.map((subagent, idx) => {
132
+ const actualIndex = startIndex + idx;
133
+ const isSelected = actualIndex === safeIndex && focusMode === ListFocusMode.LIST;
134
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: isSelected ? '#00ff00' : Colors.Foreground, children: [isSelected ? '→ ' : ' ', subagent.name.padEnd(25)] }), _jsx(Text, { color: Colors.Gray, children: subagent.profile })] }, subagent.name));
135
+ })) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: Colors.Gray, children: "Controls: \u2191\u2193 Navigate [Enter] Details [e] Edit" }), _jsx(Text, { color: Colors.Gray, children: " [a] Attach [d] Delete [ESC] Main menu" })] })] }));
136
+ };
137
+ //# sourceMappingURL=SubagentListMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentListMenu.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/SubagentListMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { SubagentView } from './types.js';
8
+ interface SubagentMainMenuProps {
9
+ onSelect: (view: SubagentView) => void;
10
+ isFocused?: boolean;
11
+ }
12
+ export declare const SubagentMainMenu: React.FC<SubagentMainMenuProps>;
13
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { Colors } from '../../colors.js';
4
+ import { RadioButtonSelect } from '../shared/RadioButtonSelect.js';
5
+ import { MENU_ACTIONS } from './types.js';
6
+ export const SubagentMainMenu = ({ onSelect, isFocused = true, }) => {
7
+ const menuItems = MENU_ACTIONS.map((action) => ({
8
+ label: `${action.label.padEnd(20)} - ${action.description}`,
9
+ value: action.value,
10
+ key: action.value,
11
+ }));
12
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: Colors.Foreground, children: "Select an action:" }) }), _jsx(RadioButtonSelect, { items: menuItems, onSelect: onSelect, isFocused: isFocused, showNumbers: true, maxItemsToShow: 10 }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press [ESC] to cancel" }) })] }));
13
+ };
14
+ //# sourceMappingURL=SubagentMainMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentMainMenu.js","sourceRoot":"","sources":["../../../../../src/ui/components/SubagentManagement/SubagentMainMenu.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,EACR,SAAS,GAAG,IAAI,GACjB,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE;QAC3D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,KAAK;KAClB,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,kCAE5B,GACH,EAEN,KAAC,iBAAiB,IAChB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,EAAE,GAClB,EAEF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,sCAA8B,GAClD,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { type SubagentManagerDialogProps } from './types.js';
8
+ export declare const SubagentManagerDialog: React.FC<SubagentManagerDialogProps>;
@@ -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":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAUzD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,GAAG,IAAI,GACjB,EAAE,EAAE;IACH,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;gBACjD,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,OAAO;gBACd,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,8DAA8D;IAC9D,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,kCAE5B,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,qVAEjB,EACP,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,uBAAe,EACvC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAAG,QAAQ,CAAC,IAAI,GAAQ,IAClD,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,yBAAiB,EACzC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,uBAAe,IAC1C,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,0BAAkB,EAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,GAC1B,IACH,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,0BAAkB,EAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,GAC1B,IACH,IACF,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,8BAE5B,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,qVAEjB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,+BAAuB,EAC/C,KAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,QAAQ,EAAE,CAAC,YAEV,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC9B,KAAC,IAAI,IAAW,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAC,MAAM,YAClD,IAAI,IAAI,GAAG,IADH,GAAG,CAEP,CACR,CAAC,GACE,IACF,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,mCAE5B,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,qVAEjB,EACP,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,0BAAkB,EAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAAG,QAAQ,CAAC,OAAO,GAAQ,IACrD,EACL,QAAQ,CAAC,WAAW,IAAI,CACvB,8BACG,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAC7B,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,wBAAgB,EACxC,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC3B,QAAQ,CAAC,WAAW,CAAC,KAAK,EAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ;gDAC5B,SAAS,QAAQ,CAAC,WAAW,CAAC,QAAQ,GAAG,IACtC,IACH,CACP,EACA,QAAQ,CAAC,WAAW,CAAC,WAAW,KAAK,SAAS,IAAI,CACjD,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,8BAAsB,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,QAAQ,CAAC,WAAW,CAAC,WAAW,GAC5B,IACH,CACP,EACA,QAAQ,CAAC,WAAW,CAAC,SAAS,KAAK,SAAS,IAAI,CAC/C,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,6BAAqB,EAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,QAAQ,CAAC,WAAW,CAAC,SAAS,GAC1B,IACH,CACP,IACA,CACJ,IACG,EAGN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,mDAA2C,GAC/D,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -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"}