wave-code 0.8.0 → 0.8.2
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.
- package/dist/components/ChatInterface.js +1 -1
- package/dist/components/CommandSelector.d.ts.map +1 -1
- package/dist/components/CommandSelector.js +1 -38
- package/dist/components/ConfirmationSelector.d.ts.map +1 -1
- package/dist/components/ConfirmationSelector.js +11 -3
- package/dist/components/HelpView.d.ts +2 -0
- package/dist/components/HelpView.d.ts.map +1 -1
- package/dist/components/HelpView.js +49 -5
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +1 -1
- package/dist/components/MessageList.d.ts +2 -2
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +5 -6
- package/dist/constants/commands.d.ts +3 -0
- package/dist/constants/commands.d.ts.map +1 -0
- package/dist/constants/commands.js +38 -0
- package/dist/contexts/useChat.d.ts.map +1 -1
- package/dist/contexts/useChat.js +2 -17
- package/dist/hooks/useInputManager.d.ts +7 -8
- package/dist/hooks/useInputManager.d.ts.map +1 -1
- package/dist/hooks/useInputManager.js +224 -232
- package/dist/managers/inputHandlers.d.ts +28 -0
- package/dist/managers/inputHandlers.d.ts.map +1 -0
- package/dist/managers/inputHandlers.js +378 -0
- package/dist/managers/inputReducer.d.ts +157 -0
- package/dist/managers/inputReducer.d.ts.map +1 -0
- package/dist/managers/inputReducer.js +242 -0
- package/dist/utils/highlightUtils.d.ts.map +1 -1
- package/dist/utils/highlightUtils.js +66 -42
- package/package.json +2 -2
- package/src/components/ChatInterface.tsx +1 -1
- package/src/components/CommandSelector.tsx +1 -40
- package/src/components/ConfirmationSelector.tsx +13 -3
- package/src/components/HelpView.tsx +129 -16
- package/src/components/InputBox.tsx +3 -1
- package/src/components/MessageList.tsx +5 -6
- package/src/constants/commands.ts +41 -0
- package/src/contexts/useChat.tsx +2 -17
- package/src/hooks/useInputManager.ts +352 -299
- package/src/managers/inputHandlers.ts +560 -0
- package/src/managers/inputReducer.ts +367 -0
- package/src/utils/highlightUtils.ts +66 -42
- package/dist/managers/InputManager.d.ts +0 -156
- package/dist/managers/InputManager.d.ts.map +0 -1
- package/dist/managers/InputManager.js +0 -749
- package/src/managers/InputManager.ts +0 -1024
|
@@ -55,7 +55,7 @@ export const ChatInterface = () => {
|
|
|
55
55
|
]);
|
|
56
56
|
if (!sessionId)
|
|
57
57
|
return null;
|
|
58
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(MessageList, { messages: messages, isExpanded: isExpanded,
|
|
58
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(MessageList, { messages: messages, isExpanded: isExpanded, forceStatic: isConfirmationVisible && isConfirmationTooTall, version: version, workdir: workdir, model: model }), (isLoading || isCommandRunning || isCompressing) &&
|
|
59
59
|
!isConfirmationVisible &&
|
|
60
60
|
!isExpanded && (_jsx(LoadingIndicator, { isLoading: isLoading, isCommandRunning: isCommandRunning, isCompressing: isCompressing, latestTotalTokens: latestTotalTokens })), !isConfirmationVisible && !isExpanded && _jsx(TaskList, {}), isConfirmationVisible && (_jsxs(_Fragment, { children: [_jsx(ConfirmationDetails, { toolName: confirmingTool.name, toolInput: confirmingTool.input, isExpanded: isExpanded, onHeightMeasured: handleDetailsHeightMeasured, isStatic: isConfirmationTooTall }), _jsx(ConfirmationSelector, { toolName: confirmingTool.name, toolInput: confirmingTool.input, suggestedPrefix: confirmingTool.suggestedPrefix, hidePersistentOption: confirmingTool.hidePersistentOption, isExpanded: isExpanded, onDecision: wrappedHandleConfirmationDecision, onCancel: handleConfirmationCancel, onAbort: abortMessage, onHeightMeasured: handleSelectorHeightMeasured })] })), !isConfirmationVisible && !isExpanded && (_jsx(InputBox, { isLoading: isLoading, isCommandRunning: isCommandRunning, sendMessage: sendMessage, abortMessage: abortMessage, mcpServers: mcpServers, connectMcpServer: connectMcpServer, disconnectMcpServer: disconnectMcpServer, slashCommands: slashCommands, hasSlashCommand: hasSlashCommand }))] }));
|
|
61
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+I1D,CAAC"}
|
|
@@ -1,44 +1,7 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import React, { useState } from "react";
|
|
3
3
|
import { Box, Text, useInput } from "ink";
|
|
4
|
-
|
|
5
|
-
{
|
|
6
|
-
id: "clear",
|
|
7
|
-
name: "clear",
|
|
8
|
-
description: "Clear the chat session and terminal",
|
|
9
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
id: "tasks",
|
|
13
|
-
name: "tasks",
|
|
14
|
-
description: "View and manage background tasks (shells and subagents)",
|
|
15
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
id: "mcp",
|
|
19
|
-
name: "mcp",
|
|
20
|
-
description: "View and manage MCP servers",
|
|
21
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
id: "rewind",
|
|
25
|
-
name: "rewind",
|
|
26
|
-
description: "Revert conversation and file changes to a previous checkpoint",
|
|
27
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
id: "help",
|
|
31
|
-
name: "help",
|
|
32
|
-
description: "Show help and key bindings",
|
|
33
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
id: "status",
|
|
37
|
-
name: "status",
|
|
38
|
-
description: "Show agent status and configuration",
|
|
39
|
-
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
40
|
-
},
|
|
41
|
-
];
|
|
4
|
+
import { AVAILABLE_COMMANDS } from "../constants/commands.js";
|
|
42
5
|
export const CommandSelector = ({ searchQuery, onSelect, onInsert, onCancel, commands = [], // Default to empty array
|
|
43
6
|
}) => {
|
|
44
7
|
const MAX_VISIBLE_ITEMS = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationSelector.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmationSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ConfirmationSelector.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmationSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,gBAAgB,CAAC;AAgB/E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AASD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6mBpE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useLayoutEffect, useRef, useState } from "react";
|
|
2
|
+
import { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
3
3
|
import { Box, Text, useInput, useStdout, measureElement } from "ink";
|
|
4
4
|
import { BASH_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, ASK_USER_QUESTION_TOOL_NAME, } from "wave-agent-sdk";
|
|
5
5
|
const getHeaderColor = (header) => {
|
|
@@ -34,6 +34,14 @@ export const ConfirmationSelector = ({ toolName, toolInput, suggestedPrefix, hid
|
|
|
34
34
|
otherCursorPosition: 0,
|
|
35
35
|
savedStates: {},
|
|
36
36
|
});
|
|
37
|
+
const pendingDecisionRef = useRef(null);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (pendingDecisionRef.current) {
|
|
40
|
+
const decision = pendingDecisionRef.current;
|
|
41
|
+
pendingDecisionRef.current = null;
|
|
42
|
+
onDecision(decision);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
37
45
|
const questions = toolInput?.questions || [];
|
|
38
46
|
const currentQuestion = questions[questionState.currentQuestionIndex];
|
|
39
47
|
const getAutoOptionText = () => {
|
|
@@ -147,10 +155,10 @@ export const ConfirmationSelector = ({ toolName, toolInput, suggestedPrefix, hid
|
|
|
147
155
|
const allAnswered = questions.every((q) => finalAnswers[q.question]);
|
|
148
156
|
if (!allAnswered)
|
|
149
157
|
return prev;
|
|
150
|
-
|
|
158
|
+
pendingDecisionRef.current = {
|
|
151
159
|
behavior: "allow",
|
|
152
160
|
message: JSON.stringify(finalAnswers),
|
|
153
|
-
}
|
|
161
|
+
};
|
|
154
162
|
return {
|
|
155
163
|
...prev,
|
|
156
164
|
userAnswers: finalAnswers,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import type { SlashCommand } from "wave-agent-sdk";
|
|
2
3
|
export interface HelpViewProps {
|
|
3
4
|
onCancel: () => void;
|
|
5
|
+
commands?: SlashCommand[];
|
|
4
6
|
}
|
|
5
7
|
export declare const HelpView: React.FC<HelpViewProps>;
|
|
6
8
|
//# sourceMappingURL=HelpView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpView.d.ts","sourceRoot":"","sources":["../../src/components/HelpView.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"HelpView.d.ts","sourceRoot":"","sources":["../../src/components/HelpView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAmK5C,CAAC"}
|
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
2
3
|
import { Box, Text, useInput } from "ink";
|
|
3
|
-
|
|
4
|
+
import { AVAILABLE_COMMANDS } from "../constants/commands.js";
|
|
5
|
+
export const HelpView = ({ onCancel, commands = [], }) => {
|
|
6
|
+
const [activeTab, setActiveTab] = useState("general");
|
|
7
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
8
|
+
const MAX_VISIBLE_ITEMS = 10;
|
|
9
|
+
const tabs = [
|
|
10
|
+
"general",
|
|
11
|
+
"commands",
|
|
12
|
+
];
|
|
13
|
+
if (commands.length > 0) {
|
|
14
|
+
tabs.push("custom-commands");
|
|
15
|
+
}
|
|
4
16
|
useInput((_, key) => {
|
|
5
|
-
if (key.escape
|
|
17
|
+
if (key.escape) {
|
|
6
18
|
onCancel();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (key.tab) {
|
|
22
|
+
setActiveTab((prev) => {
|
|
23
|
+
const currentIndex = tabs.indexOf(prev);
|
|
24
|
+
const nextIndex = (currentIndex + 1) % tabs.length;
|
|
25
|
+
return tabs[nextIndex];
|
|
26
|
+
});
|
|
27
|
+
setSelectedIndex(0);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (activeTab === "commands" || activeTab === "custom-commands") {
|
|
31
|
+
const currentCommands = activeTab === "commands" ? AVAILABLE_COMMANDS : commands;
|
|
32
|
+
if (key.upArrow) {
|
|
33
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
34
|
+
}
|
|
35
|
+
else if (key.downArrow) {
|
|
36
|
+
setSelectedIndex((prev) => Math.min(currentCommands.length - 1, prev + 1));
|
|
37
|
+
}
|
|
7
38
|
}
|
|
8
39
|
});
|
|
9
40
|
const helpItems = [
|
|
@@ -15,12 +46,25 @@ export const HelpView = ({ onCancel }) => {
|
|
|
15
46
|
{ key: "Ctrl+B", description: "Background current task" },
|
|
16
47
|
{ key: "Ctrl+V", description: "Paste image" },
|
|
17
48
|
{ key: "Shift+Tab", description: "Cycle permission mode" },
|
|
18
|
-
{ key: "/status", description: "Show agent status and configuration" },
|
|
19
|
-
{ key: "/clear", description: "Clear the chat session and terminal" },
|
|
20
49
|
{
|
|
21
50
|
key: "Esc",
|
|
22
51
|
description: "Interrupt AI or command / Cancel selector / Close help",
|
|
23
52
|
},
|
|
24
53
|
];
|
|
25
|
-
|
|
54
|
+
// Calculate visible window for commands
|
|
55
|
+
const currentCommands = activeTab === "commands" ? AVAILABLE_COMMANDS : commands;
|
|
56
|
+
const startIndex = Math.max(0, Math.min(selectedIndex - Math.floor(MAX_VISIBLE_ITEMS / 2), Math.max(0, currentCommands.length - MAX_VISIBLE_ITEMS)));
|
|
57
|
+
const visibleCommands = currentCommands.slice(startIndex, startIndex + MAX_VISIBLE_ITEMS);
|
|
58
|
+
const footerText = [
|
|
59
|
+
"Tab switch",
|
|
60
|
+
activeTab !== "general" && "↑↓ navigate",
|
|
61
|
+
"Esc close",
|
|
62
|
+
]
|
|
63
|
+
.filter(Boolean)
|
|
64
|
+
.join(" • ");
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", borderLeft: false, borderRight: false, paddingX: 1, width: "100%", children: [_jsxs(Box, { marginBottom: 1, gap: 2, children: [_jsx(Text, { color: activeTab === "general" ? "cyan" : "gray", bold: true, underline: activeTab === "general", children: "General" }), _jsx(Text, { color: activeTab === "commands" ? "cyan" : "gray", bold: true, underline: activeTab === "commands", children: "Commands" }), commands.length > 0 && (_jsx(Text, { color: activeTab === "custom-commands" ? "cyan" : "gray", bold: true, underline: activeTab === "custom-commands", children: "Custom Commands" }))] }), activeTab === "general" ? (_jsx(Box, { flexDirection: "column", children: helpItems.map((item, index) => (_jsxs(Box, { children: [_jsx(Box, { width: 20, children: _jsx(Text, { color: "yellow", children: item.key }) }), _jsx(Text, { color: "white", children: item.description })] }, index))) })) : (_jsx(Box, { flexDirection: "column", children: visibleCommands.map((command, index) => {
|
|
66
|
+
const actualIndex = startIndex + index;
|
|
67
|
+
const isSelected = actualIndex === selectedIndex;
|
|
68
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: isSelected ? "black" : "white", backgroundColor: isSelected ? "cyan" : undefined, children: [isSelected ? "▶ " : " ", "/", command.id] }), isSelected && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: command.description }) }))] }, command.id));
|
|
69
|
+
}) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: footerText }) })] }));
|
|
26
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../src/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAczC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEpE,eAAO,MAAM,sBAAsB,mDACe,CAAC;AAEnD,eAAO,MAAM,6BAA6B,QAGzC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,KAC/C,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/D,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../src/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAczC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEpE,eAAO,MAAM,sBAAsB,mDACe,CAAC;AAEnD,eAAO,MAAM,6BAA6B,QAGzC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,KAC/C,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/D,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkO5C,CAAC"}
|
|
@@ -78,7 +78,7 @@ export const InputBox = ({ isLoading = false, isCommandRunning = false, sendMess
|
|
|
78
78
|
return (_jsx(RewindCommand, { messages: messages, onSelect: handleRewindSelectWithClose, onCancel: handleRewindCancel, getFullMessageThread: getFullMessageThread }));
|
|
79
79
|
}
|
|
80
80
|
if (showHelp) {
|
|
81
|
-
return _jsx(HelpView, { onCancel: () => setShowHelp(false) });
|
|
81
|
+
return (_jsx(HelpView, { onCancel: () => setShowHelp(false), commands: slashCommands }));
|
|
82
82
|
}
|
|
83
83
|
if (showStatusCommand) {
|
|
84
84
|
return _jsx(StatusCommand, { onCancel: () => setShowStatusCommand(false) });
|
|
@@ -3,10 +3,10 @@ import type { Message } from "wave-agent-sdk";
|
|
|
3
3
|
export interface MessageListProps {
|
|
4
4
|
messages: Message[];
|
|
5
5
|
isExpanded?: boolean;
|
|
6
|
-
|
|
6
|
+
forceStatic?: boolean;
|
|
7
7
|
version?: string;
|
|
8
8
|
workdir?: string;
|
|
9
9
|
model?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare const MessageList: React.MemoExoticComponent<({ messages, isExpanded,
|
|
11
|
+
export declare const MessageList: React.MemoExoticComponent<({ messages, isExpanded, forceStatic, version, workdir, model, }: MessageListProps) => import("react/jsx-runtime").JSX.Element>;
|
|
12
12
|
//# sourceMappingURL=MessageList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../src/components/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../src/components/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,8FAQnB,gBAAgB,6CAmGpB,CAAC"}
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import os from "os";
|
|
4
4
|
import { Box, Text, Static } from "ink";
|
|
5
5
|
import { MessageBlockItem } from "./MessageBlockItem.js";
|
|
6
|
-
export const MessageList = React.memo(({ messages, isExpanded = false,
|
|
6
|
+
export const MessageList = React.memo(({ messages, isExpanded = false, forceStatic = false, version, workdir, model, }) => {
|
|
7
7
|
const welcomeMessage = (_jsxs(Box, { flexDirection: "column", paddingTop: 1, children: [_jsxs(Text, { color: "gray", children: ["WAVE", version ? ` v${version}` : "", model ? ` • ${model}` : ""] }), workdir && (_jsx(Text, { color: "gray", wrap: "truncate-middle", children: workdir.replace(os.homedir(), "~") }))] }));
|
|
8
8
|
// Limit messages when expanded to prevent long rendering times
|
|
9
9
|
const maxExpandedMessages = 20;
|
|
@@ -21,21 +21,20 @@ export const MessageList = React.memo(({ messages, isExpanded = false, hideDynam
|
|
|
21
21
|
message,
|
|
22
22
|
isLastMessage: messageIndex === messages.length - 1,
|
|
23
23
|
// Unique key for each block to help Static component
|
|
24
|
-
key: `${message.id
|
|
24
|
+
key: `${message.id}-${blockIndex}`,
|
|
25
25
|
}));
|
|
26
26
|
});
|
|
27
27
|
// Determine which blocks are static vs dynamic
|
|
28
28
|
const blocksWithStatus = allBlocks.map((item) => {
|
|
29
29
|
const { block, isLastMessage } = item;
|
|
30
|
-
const isDynamic =
|
|
30
|
+
const isDynamic = !forceStatic &&
|
|
31
|
+
isLastMessage &&
|
|
31
32
|
((block.type === "tool" && block.stage !== "end") ||
|
|
32
33
|
(block.type === "bang" && block.isRunning));
|
|
33
34
|
return { ...item, isDynamic };
|
|
34
35
|
});
|
|
35
36
|
const staticBlocks = blocksWithStatus.filter((b) => !b.isDynamic);
|
|
36
|
-
const dynamicBlocks =
|
|
37
|
-
? []
|
|
38
|
-
: blocksWithStatus.filter((b) => b.isDynamic);
|
|
37
|
+
const dynamicBlocks = blocksWithStatus.filter((b) => b.isDynamic);
|
|
39
38
|
const staticItems = [
|
|
40
39
|
{ isWelcome: true, key: "welcome", block: undefined, message: undefined },
|
|
41
40
|
...staticBlocks.map((b) => ({ ...b, isWelcome: false })),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/constants/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAsC5C,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export const AVAILABLE_COMMANDS = [
|
|
2
|
+
{
|
|
3
|
+
id: "clear",
|
|
4
|
+
name: "clear",
|
|
5
|
+
description: "Clear the chat session and terminal",
|
|
6
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: "tasks",
|
|
10
|
+
name: "tasks",
|
|
11
|
+
description: "View and manage background tasks (shells and subagents)",
|
|
12
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "mcp",
|
|
16
|
+
name: "mcp",
|
|
17
|
+
description: "View and manage MCP servers",
|
|
18
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "rewind",
|
|
22
|
+
name: "rewind",
|
|
23
|
+
description: "Revert conversation and file changes to a previous checkpoint",
|
|
24
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "help",
|
|
28
|
+
name: "help",
|
|
29
|
+
description: "Show help and key bindings",
|
|
30
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "status",
|
|
34
|
+
name: "status",
|
|
35
|
+
description: "Show agent status and configuration",
|
|
36
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
37
|
+
},
|
|
38
|
+
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/contexts/useChat.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/contexts/useChat.tsx"],"names":[],"mappings":"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"}
|
package/dist/contexts/useChat.js
CHANGED
|
@@ -24,7 +24,6 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, w
|
|
|
24
24
|
const [isTaskListVisible, setIsTaskListVisible] = useState(true);
|
|
25
25
|
// AI State
|
|
26
26
|
const [messages, setMessages] = useState([]);
|
|
27
|
-
const messagesUpdateTimerRef = useRef(null);
|
|
28
27
|
const [isLoading, setIsLoading] = useState(false);
|
|
29
28
|
const [latestTotalTokens, setlatestTotalTokens] = useState(0);
|
|
30
29
|
const [sessionId, setSessionId] = useState("");
|
|
@@ -75,15 +74,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, w
|
|
|
75
74
|
const initializeAgent = async () => {
|
|
76
75
|
const callbacks = {
|
|
77
76
|
onMessagesChange: () => {
|
|
78
|
-
if (!isExpandedRef.current) {
|
|
79
|
-
|
|
80
|
-
messagesUpdateTimerRef.current = setTimeout(() => {
|
|
81
|
-
if (agentRef.current) {
|
|
82
|
-
setMessages([...agentRef.current.messages]);
|
|
83
|
-
}
|
|
84
|
-
messagesUpdateTimerRef.current = null;
|
|
85
|
-
}, 100);
|
|
86
|
-
}
|
|
77
|
+
if (!isExpandedRef.current && agentRef.current) {
|
|
78
|
+
setMessages([...agentRef.current.messages]);
|
|
87
79
|
}
|
|
88
80
|
},
|
|
89
81
|
onServersChange: (servers) => {
|
|
@@ -190,9 +182,6 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, w
|
|
|
190
182
|
// Cleanup on unmount
|
|
191
183
|
useEffect(() => {
|
|
192
184
|
return () => {
|
|
193
|
-
if (messagesUpdateTimerRef.current) {
|
|
194
|
-
clearTimeout(messagesUpdateTimerRef.current);
|
|
195
|
-
}
|
|
196
185
|
if (agentRef.current) {
|
|
197
186
|
try {
|
|
198
187
|
// Display usage summary before cleanup
|
|
@@ -367,10 +356,6 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, w
|
|
|
367
356
|
setIsExpanded((prev) => {
|
|
368
357
|
const newExpanded = !prev;
|
|
369
358
|
if (newExpanded) {
|
|
370
|
-
if (messagesUpdateTimerRef.current) {
|
|
371
|
-
clearTimeout(messagesUpdateTimerRef.current);
|
|
372
|
-
messagesUpdateTimerRef.current = null;
|
|
373
|
-
}
|
|
374
359
|
// Transitioning to EXPANDED: Freeze the current view
|
|
375
360
|
// Deep copy the last message to ensure it doesn't update if the agent is still writing to it
|
|
376
361
|
setMessages((currentMessages) => {
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Key } from "ink";
|
|
2
|
-
import {
|
|
3
|
-
import { FileItem } from "../components/FileSelector.js";
|
|
2
|
+
import { InputManagerCallbacks } from "../managers/inputReducer.js";
|
|
4
3
|
import { PermissionMode } from "wave-agent-sdk";
|
|
5
4
|
export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks>) => {
|
|
6
5
|
inputText: string;
|
|
7
6
|
cursorPosition: number;
|
|
8
7
|
showFileSelector: boolean;
|
|
9
|
-
filteredFiles: FileItem[];
|
|
8
|
+
filteredFiles: import("wave-agent-sdk").FileItem[];
|
|
10
9
|
fileSearchQuery: string;
|
|
11
10
|
atPosition: number;
|
|
12
11
|
showCommandSelector: boolean;
|
|
@@ -20,10 +19,10 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
20
19
|
showHelp: boolean;
|
|
21
20
|
showStatusCommand: boolean;
|
|
22
21
|
permissionMode: PermissionMode;
|
|
23
|
-
attachedImages: AttachedImage[];
|
|
22
|
+
attachedImages: import("../managers/inputReducer.js").AttachedImage[];
|
|
24
23
|
isManagerReady: boolean;
|
|
25
|
-
insertTextAtCursor: (text: string
|
|
26
|
-
deleteCharAtCursor: (
|
|
24
|
+
insertTextAtCursor: (text: string) => void;
|
|
25
|
+
deleteCharAtCursor: () => void;
|
|
27
26
|
clearInput: () => void;
|
|
28
27
|
moveCursorLeft: () => void;
|
|
29
28
|
moveCursorRight: () => void;
|
|
@@ -56,7 +55,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
56
55
|
setShowHelp: (show: boolean) => void;
|
|
57
56
|
setShowStatusCommand: (show: boolean) => void;
|
|
58
57
|
setPermissionMode: (mode: PermissionMode) => void;
|
|
59
|
-
addImage: (imagePath: string, mimeType: string) =>
|
|
58
|
+
addImage: (imagePath: string, mimeType: string) => void;
|
|
60
59
|
removeImage: (imageId: number) => void;
|
|
61
60
|
clearImages: () => void;
|
|
62
61
|
handlePasteImage: () => Promise<boolean>;
|
|
@@ -75,6 +74,6 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
75
74
|
}>, isLoading?: boolean, isCommandRunning?: boolean, clearImages?: () => void) => Promise<boolean>;
|
|
76
75
|
setInputText: (text: string) => void;
|
|
77
76
|
setCursorPosition: (position: number) => void;
|
|
78
|
-
manager:
|
|
77
|
+
manager: null;
|
|
79
78
|
};
|
|
80
79
|
//# sourceMappingURL=useInputManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAGL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAkC,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhF,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;;+BAsIA,MAAM;;;;;qCAoBA,MAAM;iCAIV,MAAM;;;;;mCAaJ,MAAM;oCAIL,MAAM;wCAIF,MAAM;mCAIX,MAAM;;;;mCASN,MAAM;;;;;sCAgCH,MAAM;uCAIL,MAAM;wCAQL,MAAM;;mCAUX,MAAM;yCAkBA,OAAO;8BAIlB,OAAO;iCAIJ,OAAO;wBAIhB,OAAO;iCAIE,OAAO;8BAIV,cAAc;0BAKlB,MAAM,YAAY,MAAM;2BAIvB,MAAM;;;8BAYH,MAAM;mCAW/B,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAcyB,MAAM;;yBAajD,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBA9FY,MAAM;kCAIG,MAAM;;CA2LxD,CAAC"}
|