locdotech-ai 1.0.0
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/README.md +104 -0
- package/bin/ai.js +16 -0
- package/dist/api/client.d.ts +75 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +86 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +4 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +4 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/streaming.d.ts +15 -0
- package/dist/api/streaming.d.ts.map +1 -0
- package/dist/api/streaming.js +87 -0
- package/dist/api/streaming.js.map +1 -0
- package/dist/api/websocket.d.ts +20 -0
- package/dist/api/websocket.d.ts.map +1 -0
- package/dist/api/websocket.js +80 -0
- package/dist/api/websocket.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +72 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/clear.d.ts +3 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +13 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +116 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +42 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +62 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/index.d.ts +30 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +54 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/model.d.ts +3 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +57 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/quit.d.ts +3 -0
- package/dist/commands/quit.d.ts.map +1 -0
- package/dist/commands/quit.js +16 -0
- package/dist/commands/quit.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +39 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/settings.d.ts +18 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +56 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/bash.d.ts +41 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +100 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/file.d.ts +107 -0
- package/dist/tools/file.d.ts.map +1 -0
- package/dist/tools/file.js +189 -0
- package/dist/tools/file.js.map +1 -0
- package/dist/tools/glob.d.ts +38 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +84 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +76 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +166 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +29 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +130 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mcp.d.ts +59 -0
- package/dist/tools/mcp.d.ts.map +1 -0
- package/dist/tools/mcp.js +155 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/ui/App.d.ts +6 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +161 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/components/CodeBlock.d.ts +9 -0
- package/dist/ui/components/CodeBlock.d.ts.map +1 -0
- package/dist/ui/components/CodeBlock.js +83 -0
- package/dist/ui/components/CodeBlock.js.map +1 -0
- package/dist/ui/components/Input.d.ts +11 -0
- package/dist/ui/components/Input.d.ts.map +1 -0
- package/dist/ui/components/Input.js +93 -0
- package/dist/ui/components/Input.js.map +1 -0
- package/dist/ui/components/Message.d.ts +7 -0
- package/dist/ui/components/Message.d.ts.map +1 -0
- package/dist/ui/components/Message.js +86 -0
- package/dist/ui/components/Message.js.map +1 -0
- package/dist/ui/components/ModelSelector.d.ts +7 -0
- package/dist/ui/components/ModelSelector.d.ts.map +1 -0
- package/dist/ui/components/ModelSelector.js +23 -0
- package/dist/ui/components/ModelSelector.js.map +1 -0
- package/dist/ui/components/Permission.d.ts +9 -0
- package/dist/ui/components/Permission.d.ts.map +1 -0
- package/dist/ui/components/Permission.js +41 -0
- package/dist/ui/components/Permission.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +11 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/ui/components/StatusBar.js +9 -0
- package/dist/ui/components/StatusBar.js.map +1 -0
- package/dist/ui/components/TaskList.d.ts +12 -0
- package/dist/ui/components/TaskList.d.ts.map +1 -0
- package/dist/ui/components/TaskList.js +21 -0
- package/dist/ui/components/TaskList.js.map +1 -0
- package/dist/ui/components/ToolCall.d.ts +16 -0
- package/dist/ui/components/ToolCall.d.ts.map +1 -0
- package/dist/ui/components/ToolCall.js +50 -0
- package/dist/ui/components/ToolCall.js.map +1 -0
- package/dist/ui/components/index.d.ts +8 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +8 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/hooks/index.d.ts +4 -0
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +4 -0
- package/dist/ui/hooks/index.js.map +1 -0
- package/dist/ui/hooks/useChat.d.ts +42 -0
- package/dist/ui/hooks/useChat.d.ts.map +1 -0
- package/dist/ui/hooks/useChat.js +305 -0
- package/dist/ui/hooks/useChat.js.map +1 -0
- package/dist/ui/hooks/useHistory.d.ts +14 -0
- package/dist/ui/hooks/useHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useHistory.js +123 -0
- package/dist/ui/hooks/useHistory.js.map +1 -0
- package/dist/ui/hooks/useTools.d.ts +19 -0
- package/dist/ui/hooks/useTools.d.ts.map +1 -0
- package/dist/ui/hooks/useTools.js +54 -0
- package/dist/ui/hooks/useTools.js.map +1 -0
- package/dist/ui/themes/index.d.ts +21 -0
- package/dist/ui/themes/index.d.ts.map +1 -0
- package/dist/ui/themes/index.js +40 -0
- package/dist/ui/themes/index.js.map +1 -0
- package/dist/utils/auth.d.ts +5 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +42 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/format.d.ts +11 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +71 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +61 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function Message({ message }) {
|
|
4
|
+
const roleColors = {
|
|
5
|
+
user: 'cyan',
|
|
6
|
+
assistant: 'green',
|
|
7
|
+
system: 'yellow',
|
|
8
|
+
tool: 'magenta',
|
|
9
|
+
};
|
|
10
|
+
const roleLabels = {
|
|
11
|
+
user: 'You',
|
|
12
|
+
assistant: 'AI',
|
|
13
|
+
system: 'System',
|
|
14
|
+
tool: 'Tool',
|
|
15
|
+
};
|
|
16
|
+
const roleColor = roleColors[message.role] || 'white';
|
|
17
|
+
const roleLabel = roleLabels[message.role] || message.role;
|
|
18
|
+
// Simple markdown-like formatting
|
|
19
|
+
const formatContent = (content) => {
|
|
20
|
+
const lines = content.split('\n');
|
|
21
|
+
const elements = [];
|
|
22
|
+
let inCodeBlock = false;
|
|
23
|
+
let codeBlockLang = '';
|
|
24
|
+
let codeBlockContent = [];
|
|
25
|
+
lines.forEach((line, lineIndex) => {
|
|
26
|
+
// Check for code block start/end
|
|
27
|
+
if (line.startsWith('```')) {
|
|
28
|
+
if (inCodeBlock) {
|
|
29
|
+
// End of code block
|
|
30
|
+
elements.push(_jsxs(Box, { flexDirection: "column", marginY: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, children: [codeBlockLang && (_jsx(Text, { color: "gray", dimColor: true, children: codeBlockLang })), codeBlockContent.map((codeLine, i) => (_jsx(Text, { color: "yellow", children: codeLine }, i)))] }, `code-${lineIndex}`));
|
|
31
|
+
inCodeBlock = false;
|
|
32
|
+
codeBlockContent = [];
|
|
33
|
+
codeBlockLang = '';
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Start of code block
|
|
37
|
+
inCodeBlock = true;
|
|
38
|
+
codeBlockLang = line.slice(3).trim();
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (inCodeBlock) {
|
|
43
|
+
codeBlockContent.push(line);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Handle headers
|
|
47
|
+
if (line.startsWith('### ')) {
|
|
48
|
+
elements.push(_jsx(Text, { bold: true, color: "cyan", children: line.slice(4) }, lineIndex));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (line.startsWith('## ')) {
|
|
52
|
+
elements.push(_jsx(Text, { bold: true, color: "cyan", children: line.slice(3) }, lineIndex));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (line.startsWith('# ')) {
|
|
56
|
+
elements.push(_jsx(Text, { bold: true, color: "cyan", children: line.slice(2) }, lineIndex));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Handle bullet points
|
|
60
|
+
if (line.startsWith('- ') || line.startsWith('* ')) {
|
|
61
|
+
elements.push(_jsxs(Text, { children: [_jsx(Text, { color: "gray", children: " \u2022 " }), line.slice(2)] }, lineIndex));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Handle inline code
|
|
65
|
+
if (line.includes('`')) {
|
|
66
|
+
const parts = line.split(/(`[^`]+`)/);
|
|
67
|
+
elements.push(_jsx(Text, { children: parts.map((part, i) => {
|
|
68
|
+
if (part.startsWith('`') && part.endsWith('`')) {
|
|
69
|
+
return (_jsx(Text, { color: "yellow", backgroundColor: "gray", children: part.slice(1, -1) }, i));
|
|
70
|
+
}
|
|
71
|
+
return _jsx(Text, { children: part }, i);
|
|
72
|
+
}) }, lineIndex));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Regular line
|
|
76
|
+
elements.push(_jsx(Text, { children: line || ' ' }, lineIndex));
|
|
77
|
+
});
|
|
78
|
+
// Handle unclosed code block
|
|
79
|
+
if (inCodeBlock && codeBlockContent.length > 0) {
|
|
80
|
+
elements.push(_jsx(Box, { flexDirection: "column", marginY: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, children: codeBlockContent.map((codeLine, i) => (_jsx(Text, { color: "yellow", children: codeLine }, i))) }, "code-unclosed"));
|
|
81
|
+
}
|
|
82
|
+
return elements;
|
|
83
|
+
};
|
|
84
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { bold: true, color: roleColor, children: [roleLabel, message.toolName && ` (${message.toolName})`] }), _jsxs(Text, { color: "gray", dimColor: true, children: [' ', message.timestamp.toLocaleTimeString()] }), message.isStreaming && (_jsx(Text, { color: "yellow", children: " \u25CF" }))] }), _jsx(Box, { flexDirection: "column", marginLeft: 2, marginTop: 1, children: formatContent(message.content) })] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=Message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../src/ui/components/Message.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ModelSelectorProps {
|
|
3
|
+
onSelect: (model: string) => void;
|
|
4
|
+
onCancel: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function ModelSelector({ onSelect, onCancel }: ModelSelectorProps): React.ReactElement;
|
|
7
|
+
//# sourceMappingURL=ModelSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAsB5F"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import SelectInput from 'ink-select-input';
|
|
4
|
+
import { loadSettings, saveSettings } from '../../config/index.js';
|
|
5
|
+
const AVAILABLE_MODELS = [
|
|
6
|
+
{ label: 'Song Luan (MCP Agent)', value: 'songluan' },
|
|
7
|
+
{ label: 'GPT-4', value: 'gpt-4' },
|
|
8
|
+
{ label: 'GPT-4 Turbo', value: 'gpt-4-turbo' },
|
|
9
|
+
{ label: 'GPT-3.5 Turbo', value: 'gpt-3.5-turbo' },
|
|
10
|
+
{ label: 'Claude 3 Opus', value: 'claude-3-opus' },
|
|
11
|
+
{ label: 'Claude 3 Sonnet', value: 'claude-3-sonnet' },
|
|
12
|
+
{ label: 'Claude 3 Haiku', value: 'claude-3-haiku' },
|
|
13
|
+
];
|
|
14
|
+
export function ModelSelector({ onSelect, onCancel }) {
|
|
15
|
+
const settings = loadSettings();
|
|
16
|
+
const currentIndex = AVAILABLE_MODELS.findIndex(m => m.value === settings.model);
|
|
17
|
+
const handleSelect = (item) => {
|
|
18
|
+
saveSettings({ model: item.value });
|
|
19
|
+
onSelect(item.value);
|
|
20
|
+
};
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Select Model (\u2191\u2193 to navigate, Enter to select, Esc to cancel)" }), _jsxs(Text, { color: "gray", children: ["Current: ", settings.model] }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: AVAILABLE_MODELS, initialIndex: currentIndex >= 0 ? currentIndex : 0, onSelect: handleSelect }) })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ModelSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../../src/ui/components/ModelSelector.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,gBAAgB,GAAG;IACvB,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,UAAU,EAAE;IACrD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;CACrD,CAAC;AAOF,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAsB;IACtE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,CAAC,IAAsC,EAAE,EAAE;QAC9D,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aACzF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wFAAqE,EAC5F,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAW,QAAQ,CAAC,KAAK,IAAQ,EACnD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,WAAW,IACV,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAClD,QAAQ,EAAE,YAAY,GACtB,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface PermissionProps {
|
|
3
|
+
toolName: string;
|
|
4
|
+
args: Record<string, unknown>;
|
|
5
|
+
onApprove: () => void;
|
|
6
|
+
onReject: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function Permission({ toolName, args, onApprove, onReject, }: PermissionProps): React.ReactElement;
|
|
9
|
+
//# sourceMappingURL=Permission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Permission.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Permission.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAkFtC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
export function Permission({ toolName, args, onApprove, onReject, }) {
|
|
4
|
+
useInput((input) => {
|
|
5
|
+
if (input.toLowerCase() === 'y') {
|
|
6
|
+
onApprove();
|
|
7
|
+
}
|
|
8
|
+
else if (input.toLowerCase() === 'n') {
|
|
9
|
+
onReject();
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const formatArgs = (args) => {
|
|
13
|
+
// Special formatting for common tools
|
|
14
|
+
if (toolName === 'Bash' && args.command) {
|
|
15
|
+
return `$ ${args.command}`;
|
|
16
|
+
}
|
|
17
|
+
if ((toolName === 'Read' || toolName === 'Write' || toolName === 'Edit') && args.file_path) {
|
|
18
|
+
return String(args.file_path);
|
|
19
|
+
}
|
|
20
|
+
if (toolName === 'Glob' && args.pattern) {
|
|
21
|
+
return `Pattern: ${args.pattern}`;
|
|
22
|
+
}
|
|
23
|
+
if (toolName === 'Grep' && args.pattern) {
|
|
24
|
+
return `Search: ${args.pattern}`;
|
|
25
|
+
}
|
|
26
|
+
return JSON.stringify(args, null, 2);
|
|
27
|
+
};
|
|
28
|
+
const getToolIcon = (name) => {
|
|
29
|
+
const icons = {
|
|
30
|
+
Bash: '$',
|
|
31
|
+
Read: '📖',
|
|
32
|
+
Write: '✏️',
|
|
33
|
+
Edit: '📝',
|
|
34
|
+
Glob: '🔍',
|
|
35
|
+
Grep: '🔎',
|
|
36
|
+
};
|
|
37
|
+
return icons[name] || '🔧';
|
|
38
|
+
};
|
|
39
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 2, paddingY: 1, marginY: 1, children: [_jsx(Box, { children: _jsx(Text, { color: "yellow", bold: true, children: "\u26A0\uFE0F Permission Required" }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: [_jsxs(Text, { color: "cyan", children: [getToolIcon(toolName), " ", toolName] }), ' wants to execute:'] }) }), _jsx(Box, { marginTop: 1, marginLeft: 2, borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Text, { color: "yellow", children: formatArgs(args) }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Allow this action? [", _jsx(Text, { color: "green", bold: true, children: "y" }), "]es / [", _jsx(Text, { color: "red", bold: true, children: "n" }), "]o"] }) })] }));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../src/ui/components/Permission.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAS1C,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,GACQ;IAChB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YAChC,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACvC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,IAA6B,EAAU,EAAE;QAC3D,sCAAsC;QACtC,IAAI,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,MAAM,KAAK,GAA2B;YACpC,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;SACX,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,aAEV,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,uDAElB,GACH,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,eACH,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,WAAW,CAAC,QAAQ,CAAC,OAAG,QAAQ,IAAQ,EAC3D,oBAAoB,IAChB,GACH,EAEN,KAAC,GAAG,IACF,SAAS,EAAE,CAAC,EACZ,UAAU,EAAE,CAAC,EACb,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,YAEX,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,UAAU,CAAC,IAAI,CAAC,GAAQ,GAC1C,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,uCACiB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,wBAAS,aACrD,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,wBAAS,UAC1B,GACH,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface StatusBarProps {
|
|
3
|
+
model: string;
|
|
4
|
+
isConnected: boolean;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
messageCount: number;
|
|
7
|
+
autoAccept: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function StatusBar({ model, isConnected, isLoading, messageCount, autoAccept, }: StatusBarProps): React.ReactElement;
|
|
10
|
+
export declare function WelcomeHeader(): React.ReactElement;
|
|
11
|
+
//# sourceMappingURL=StatusBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GACX,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAmCrC;AAED,wBAAgB,aAAa,IAAI,KAAK,CAAC,YAAY,CAmDlD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function StatusBar({ model, isConnected, isLoading, messageCount, autoAccept, }) {
|
|
4
|
+
return (_jsxs(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "AI Router" }), _jsx(Text, { color: "gray", children: " | " }), _jsx(Text, { color: isConnected ? 'green' : 'red', children: isConnected ? '●' : '○' }), _jsx(Text, { color: "gray", children: " | " }), _jsx(Text, { color: "magenta", children: model })] }), _jsxs(Box, { children: [isLoading && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "yellow", children: "\u23F3 Processing" }), _jsx(Text, { color: "gray", children: " | " })] })), _jsxs(Text, { color: "gray", children: ["Messages: ", _jsx(Text, { color: "white", children: messageCount })] }), _jsx(Text, { color: "gray", children: " | " }), _jsxs(Text, { color: autoAccept ? 'green' : 'yellow', children: ["Auto: ", autoAccept ? 'ON' : 'OFF'] })] })] }));
|
|
5
|
+
}
|
|
6
|
+
export function WelcomeHeader() {
|
|
7
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557" }) }), _jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "\u2551 \u2551" }) }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: "\u2551 " }), _jsx(Text, { color: "magenta", bold: true, children: "AI Router CLI" }), _jsxs(Text, { color: "cyan", bold: true, children: [' ', " \u2551"] })] }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: "\u2551 " }), _jsx(Text, { color: "gray", children: "Created by LocDo.Tech" }), _jsxs(Text, { color: "cyan", bold: true, children: [' ', " \u2551"] })] }), _jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "\u2551 \u2551" }) }), _jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D" }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: ["Type ", _jsx(Text, { color: "yellow", children: "/help" }), " for commands,", ' ', _jsx(Text, { color: "yellow", children: "Ctrl+C" }), " to exit"] }) })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GACK;IACf,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EACnC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YACvC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACnB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,KAAK,GAAQ,IAChC,EAEN,MAAC,GAAG,eACD,SAAS,IAAI,CACZ,8BACE,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kCAAoB,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,IAC5B,CACJ,EACD,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2BACN,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,YAAY,GAAQ,IAC9C,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,uBACnC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAC3B,IACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qYAEhB,GACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8FAEhB,GACH,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,gCACV,EACb,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,oCAEnB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,mBACpB,GAAG,sDACC,IACH,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,gCACV,EACb,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sCAEX,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,mBACpB,GAAG,2CACC,IACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8FAEhB,GACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qYAEhB,GACH,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBACX,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,sBAAa,oBAAe,GAAG,EACxD,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,gBAC7B,GACH,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface Task {
|
|
3
|
+
id: string;
|
|
4
|
+
content: string;
|
|
5
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
6
|
+
}
|
|
7
|
+
export interface TaskListProps {
|
|
8
|
+
tasks: Task[];
|
|
9
|
+
title?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function TaskList({ tasks, title, }: TaskListProps): React.ReactElement;
|
|
12
|
+
//# sourceMappingURL=TaskList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/ui/components/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAe,GAChB,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA8DpC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function TaskList({ tasks, title = 'Tasks', }) {
|
|
4
|
+
if (tasks.length === 0) {
|
|
5
|
+
return _jsx(_Fragment, {});
|
|
6
|
+
}
|
|
7
|
+
const statusIcons = {
|
|
8
|
+
pending: '○',
|
|
9
|
+
in_progress: '◐',
|
|
10
|
+
completed: '●',
|
|
11
|
+
};
|
|
12
|
+
const statusColors = {
|
|
13
|
+
pending: 'gray',
|
|
14
|
+
in_progress: 'yellow',
|
|
15
|
+
completed: 'green',
|
|
16
|
+
};
|
|
17
|
+
const completed = tasks.filter((t) => t.status === 'completed').length;
|
|
18
|
+
const progress = Math.round((completed / tasks.length) * 100);
|
|
19
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, marginY: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: "cyan", children: title }), _jsxs(Text, { color: "gray", children: [completed, "/", tasks.length, " (", progress, "%)"] })] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: tasks.map((task, index) => (_jsxs(Box, { children: [_jsxs(Text, { color: statusColors[task.status], children: [statusIcons[task.status], ' '] }), _jsxs(Text, { color: task.status === 'completed' ? 'gray' : 'white', strikethrough: task.status === 'completed', children: [index + 1, ". ", task.content] })] }, task.id))) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "[" }), _jsx(Text, { color: "green", children: '█'.repeat(Math.floor(progress / 5)) }), _jsx(Text, { color: "gray", children: '░'.repeat(20 - Math.floor(progress / 5)) }), _jsx(Text, { color: "gray", children: "]" })] })] }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=TaskList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/ui/components/TaskList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,GAAG,OAAO,GACD;IACd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,mBAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAA2B;QAC1C,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf,CAAC;IAEF,MAAM,YAAY,GAA2B;QAC3C,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAE9D,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,aAEV,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,aACjC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,KAAK,GACD,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,SAAS,OAAG,KAAK,CAAC,MAAM,QAAI,QAAQ,UAChC,IACH,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aACnC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IACzB,EACP,MAAC,IAAI,IACH,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACrD,aAAa,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW,aAEzC,KAAK,GAAG,CAAC,QAAI,IAAI,CAAC,OAAO,IACrB,KATC,IAAI,CAAC,EAAE,CAUX,CACP,CAAC,GACE,EAGN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAQ,EACjE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAQ,EACrE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,IACvB,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PendingToolCall } from '../hooks/useChat.js';
|
|
3
|
+
export interface ToolCallProps {
|
|
4
|
+
toolCall: PendingToolCall;
|
|
5
|
+
onApprove?: () => void;
|
|
6
|
+
onReject?: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function ToolCall({ toolCall, }: ToolCallProps): React.ReactElement;
|
|
9
|
+
export interface ToolCallListProps {
|
|
10
|
+
toolCalls: PendingToolCall[];
|
|
11
|
+
onApprove?: (id: string) => void;
|
|
12
|
+
onReject?: (id: string) => void;
|
|
13
|
+
onApproveAll?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function ToolCallList({ toolCalls, }: ToolCallListProps): React.ReactElement;
|
|
16
|
+
//# sourceMappingURL=ToolCall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCall.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ToolCall.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,GACT,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAyFpC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,GACV,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA4BxC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function ToolCall({ toolCall, }) {
|
|
4
|
+
const statusColors = {
|
|
5
|
+
pending: 'yellow',
|
|
6
|
+
approved: 'blue',
|
|
7
|
+
rejected: 'red',
|
|
8
|
+
executing: 'cyan',
|
|
9
|
+
completed: 'green',
|
|
10
|
+
error: 'red',
|
|
11
|
+
};
|
|
12
|
+
const statusIcons = {
|
|
13
|
+
pending: '◯',
|
|
14
|
+
approved: '◎',
|
|
15
|
+
rejected: '✕',
|
|
16
|
+
executing: '◉',
|
|
17
|
+
completed: '✓',
|
|
18
|
+
error: '✕',
|
|
19
|
+
};
|
|
20
|
+
const color = statusColors[toolCall.status] || 'white';
|
|
21
|
+
const icon = statusIcons[toolCall.status] || '○';
|
|
22
|
+
// Format arguments for display
|
|
23
|
+
const formatArgs = (args) => {
|
|
24
|
+
try {
|
|
25
|
+
const str = JSON.stringify(args, null, 2);
|
|
26
|
+
// Truncate if too long
|
|
27
|
+
if (str.length > 500) {
|
|
28
|
+
return str.slice(0, 500) + '\n...';
|
|
29
|
+
}
|
|
30
|
+
return str;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return String(args);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: color, paddingX: 1, marginY: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: color, children: [icon, " "] }), _jsx(Text, { bold: true, color: "magenta", children: toolCall.name }), _jsx(Text, { color: "gray", children: " - " }), _jsx(Text, { color: color, children: toolCall.status })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "gray", dimColor: true, children: "Arguments:" }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "yellow", children: formatArgs(toolCall.args) }) })] }), toolCall.result !== undefined && toolCall.result !== null && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "gray", dimColor: true, children: "Result:" }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "green", children: (() => {
|
|
37
|
+
const resultStr = typeof toolCall.result === 'string'
|
|
38
|
+
? toolCall.result
|
|
39
|
+
: JSON.stringify(toolCall.result, null, 2);
|
|
40
|
+
return resultStr.length > 500 ? resultStr.slice(0, 500) + '...' : resultStr;
|
|
41
|
+
})() }) })] })), toolCall.error && (_jsx(Box, { flexDirection: "column", marginTop: 1, children: _jsxs(Text, { color: "red", bold: true, children: ["Error: ", toolCall.error] }) }))] }));
|
|
42
|
+
}
|
|
43
|
+
export function ToolCallList({ toolCalls, }) {
|
|
44
|
+
if (toolCalls.length === 0) {
|
|
45
|
+
return _jsx(_Fragment, {});
|
|
46
|
+
}
|
|
47
|
+
const hasPending = toolCalls.some((tc) => tc.status === 'pending');
|
|
48
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Tool Calls (", toolCalls.length, ")"] }), toolCalls.map((tc) => (_jsx(ToolCall, { toolCall: tc }, tc.id))), hasPending && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: ["Press ", _jsx(Text, { color: "green", bold: true, children: "y" }), " to approve,", ' ', _jsx(Text, { color: "red", bold: true, children: "n" }), " to reject,", ' ', _jsx(Text, { color: "blue", bold: true, children: "a" }), " to approve all"] }) }))] }));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ToolCall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCall.js","sourceRoot":"","sources":["../../../src/ui/components/ToolCall.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './Input.js';
|
|
2
|
+
export * from './Message.js';
|
|
3
|
+
export * from './ToolCall.js';
|
|
4
|
+
export * from './Permission.js';
|
|
5
|
+
export * from './StatusBar.js';
|
|
6
|
+
export * from './TaskList.js';
|
|
7
|
+
export * from './CodeBlock.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ToolCall } from '../../api/client.js';
|
|
2
|
+
import { ToolResult } from '../../tools/index.js';
|
|
3
|
+
export interface ChatMessage {
|
|
4
|
+
id: string;
|
|
5
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
6
|
+
content: string;
|
|
7
|
+
toolCalls?: ToolCall[];
|
|
8
|
+
toolCallId?: string;
|
|
9
|
+
toolName?: string;
|
|
10
|
+
isStreaming?: boolean;
|
|
11
|
+
timestamp: Date;
|
|
12
|
+
}
|
|
13
|
+
export interface PendingToolCall {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
args: Record<string, unknown>;
|
|
17
|
+
status: 'pending' | 'approved' | 'rejected' | 'executing' | 'completed' | 'error';
|
|
18
|
+
result?: ToolResult;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ChatState {
|
|
22
|
+
messages: ChatMessage[];
|
|
23
|
+
isLoading: boolean;
|
|
24
|
+
isStreaming: boolean;
|
|
25
|
+
pendingToolCalls: PendingToolCall[];
|
|
26
|
+
error: string | null;
|
|
27
|
+
}
|
|
28
|
+
export declare function useChat(): {
|
|
29
|
+
sendMessage: (content: string) => Promise<void>;
|
|
30
|
+
approveToolCall: (toolCallId: string) => Promise<void>;
|
|
31
|
+
rejectToolCall: (toolCallId: string) => void;
|
|
32
|
+
approveAllToolCalls: () => Promise<void>;
|
|
33
|
+
continueAfterTools: () => Promise<void>;
|
|
34
|
+
clearMessages: () => void;
|
|
35
|
+
abort: () => void;
|
|
36
|
+
messages: ChatMessage[];
|
|
37
|
+
isLoading: boolean;
|
|
38
|
+
isStreaming: boolean;
|
|
39
|
+
pendingToolCalls: PendingToolCall[];
|
|
40
|
+
error: string | null;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=useChat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useChat.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAgB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGhE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;IAClF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,OAAO;2BAoC2B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;kCAiKf,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAW7B,MAAM,KAAG,IAAI;+BAgBX,OAAO,CAAC,IAAI,CAAC;8BAQd,OAAO,CAAC,IAAI,CAAC;yBAwGxB,IAAI;iBAUZ,IAAI;cAjWxB,WAAW,EAAE;eACZ,OAAO;iBACL,OAAO;sBACF,eAAe,EAAE;WAC5B,MAAM,GAAG,IAAI;EAiXrB"}
|