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.
Files changed (167) hide show
  1. package/README.md +104 -0
  2. package/bin/ai.js +16 -0
  3. package/dist/api/client.d.ts +75 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +86 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/index.d.ts +4 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +4 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/streaming.d.ts +15 -0
  12. package/dist/api/streaming.d.ts.map +1 -0
  13. package/dist/api/streaming.js +87 -0
  14. package/dist/api/streaming.js.map +1 -0
  15. package/dist/api/websocket.d.ts +20 -0
  16. package/dist/api/websocket.d.ts.map +1 -0
  17. package/dist/api/websocket.js +80 -0
  18. package/dist/api/websocket.js.map +1 -0
  19. package/dist/cli.d.ts +15 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +72 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/commands/clear.d.ts +3 -0
  24. package/dist/commands/clear.d.ts.map +1 -0
  25. package/dist/commands/clear.js +13 -0
  26. package/dist/commands/clear.js.map +1 -0
  27. package/dist/commands/config.d.ts +3 -0
  28. package/dist/commands/config.d.ts.map +1 -0
  29. package/dist/commands/config.js +116 -0
  30. package/dist/commands/config.js.map +1 -0
  31. package/dist/commands/help.d.ts +3 -0
  32. package/dist/commands/help.d.ts.map +1 -0
  33. package/dist/commands/help.js +42 -0
  34. package/dist/commands/help.js.map +1 -0
  35. package/dist/commands/history.d.ts +3 -0
  36. package/dist/commands/history.d.ts.map +1 -0
  37. package/dist/commands/history.js +62 -0
  38. package/dist/commands/history.js.map +1 -0
  39. package/dist/commands/index.d.ts +30 -0
  40. package/dist/commands/index.d.ts.map +1 -0
  41. package/dist/commands/index.js +54 -0
  42. package/dist/commands/index.js.map +1 -0
  43. package/dist/commands/model.d.ts +3 -0
  44. package/dist/commands/model.d.ts.map +1 -0
  45. package/dist/commands/model.js +57 -0
  46. package/dist/commands/model.js.map +1 -0
  47. package/dist/commands/quit.d.ts +3 -0
  48. package/dist/commands/quit.d.ts.map +1 -0
  49. package/dist/commands/quit.js +16 -0
  50. package/dist/commands/quit.js.map +1 -0
  51. package/dist/commands/status.d.ts +3 -0
  52. package/dist/commands/status.d.ts.map +1 -0
  53. package/dist/commands/status.js +39 -0
  54. package/dist/commands/status.js.map +1 -0
  55. package/dist/config/index.d.ts +2 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +2 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/config/settings.d.ts +18 -0
  60. package/dist/config/settings.d.ts.map +1 -0
  61. package/dist/config/settings.js +56 -0
  62. package/dist/config/settings.js.map +1 -0
  63. package/dist/index.d.ts +3 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +100 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/tools/bash.d.ts +41 -0
  68. package/dist/tools/bash.d.ts.map +1 -0
  69. package/dist/tools/bash.js +100 -0
  70. package/dist/tools/bash.js.map +1 -0
  71. package/dist/tools/file.d.ts +107 -0
  72. package/dist/tools/file.d.ts.map +1 -0
  73. package/dist/tools/file.js +189 -0
  74. package/dist/tools/file.js.map +1 -0
  75. package/dist/tools/glob.d.ts +38 -0
  76. package/dist/tools/glob.d.ts.map +1 -0
  77. package/dist/tools/glob.js +84 -0
  78. package/dist/tools/glob.js.map +1 -0
  79. package/dist/tools/grep.d.ts +76 -0
  80. package/dist/tools/grep.d.ts.map +1 -0
  81. package/dist/tools/grep.js +166 -0
  82. package/dist/tools/grep.js.map +1 -0
  83. package/dist/tools/index.d.ts +29 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +130 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/mcp.d.ts +59 -0
  88. package/dist/tools/mcp.d.ts.map +1 -0
  89. package/dist/tools/mcp.js +155 -0
  90. package/dist/tools/mcp.js.map +1 -0
  91. package/dist/ui/App.d.ts +6 -0
  92. package/dist/ui/App.d.ts.map +1 -0
  93. package/dist/ui/App.js +161 -0
  94. package/dist/ui/App.js.map +1 -0
  95. package/dist/ui/components/CodeBlock.d.ts +9 -0
  96. package/dist/ui/components/CodeBlock.d.ts.map +1 -0
  97. package/dist/ui/components/CodeBlock.js +83 -0
  98. package/dist/ui/components/CodeBlock.js.map +1 -0
  99. package/dist/ui/components/Input.d.ts +11 -0
  100. package/dist/ui/components/Input.d.ts.map +1 -0
  101. package/dist/ui/components/Input.js +93 -0
  102. package/dist/ui/components/Input.js.map +1 -0
  103. package/dist/ui/components/Message.d.ts +7 -0
  104. package/dist/ui/components/Message.d.ts.map +1 -0
  105. package/dist/ui/components/Message.js +86 -0
  106. package/dist/ui/components/Message.js.map +1 -0
  107. package/dist/ui/components/ModelSelector.d.ts +7 -0
  108. package/dist/ui/components/ModelSelector.d.ts.map +1 -0
  109. package/dist/ui/components/ModelSelector.js +23 -0
  110. package/dist/ui/components/ModelSelector.js.map +1 -0
  111. package/dist/ui/components/Permission.d.ts +9 -0
  112. package/dist/ui/components/Permission.d.ts.map +1 -0
  113. package/dist/ui/components/Permission.js +41 -0
  114. package/dist/ui/components/Permission.js.map +1 -0
  115. package/dist/ui/components/StatusBar.d.ts +11 -0
  116. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  117. package/dist/ui/components/StatusBar.js +9 -0
  118. package/dist/ui/components/StatusBar.js.map +1 -0
  119. package/dist/ui/components/TaskList.d.ts +12 -0
  120. package/dist/ui/components/TaskList.d.ts.map +1 -0
  121. package/dist/ui/components/TaskList.js +21 -0
  122. package/dist/ui/components/TaskList.js.map +1 -0
  123. package/dist/ui/components/ToolCall.d.ts +16 -0
  124. package/dist/ui/components/ToolCall.d.ts.map +1 -0
  125. package/dist/ui/components/ToolCall.js +50 -0
  126. package/dist/ui/components/ToolCall.js.map +1 -0
  127. package/dist/ui/components/index.d.ts +8 -0
  128. package/dist/ui/components/index.d.ts.map +1 -0
  129. package/dist/ui/components/index.js +8 -0
  130. package/dist/ui/components/index.js.map +1 -0
  131. package/dist/ui/hooks/index.d.ts +4 -0
  132. package/dist/ui/hooks/index.d.ts.map +1 -0
  133. package/dist/ui/hooks/index.js +4 -0
  134. package/dist/ui/hooks/index.js.map +1 -0
  135. package/dist/ui/hooks/useChat.d.ts +42 -0
  136. package/dist/ui/hooks/useChat.d.ts.map +1 -0
  137. package/dist/ui/hooks/useChat.js +305 -0
  138. package/dist/ui/hooks/useChat.js.map +1 -0
  139. package/dist/ui/hooks/useHistory.d.ts +14 -0
  140. package/dist/ui/hooks/useHistory.d.ts.map +1 -0
  141. package/dist/ui/hooks/useHistory.js +123 -0
  142. package/dist/ui/hooks/useHistory.js.map +1 -0
  143. package/dist/ui/hooks/useTools.d.ts +19 -0
  144. package/dist/ui/hooks/useTools.d.ts.map +1 -0
  145. package/dist/ui/hooks/useTools.js +54 -0
  146. package/dist/ui/hooks/useTools.js.map +1 -0
  147. package/dist/ui/themes/index.d.ts +21 -0
  148. package/dist/ui/themes/index.d.ts.map +1 -0
  149. package/dist/ui/themes/index.js +40 -0
  150. package/dist/ui/themes/index.js.map +1 -0
  151. package/dist/utils/auth.d.ts +5 -0
  152. package/dist/utils/auth.d.ts.map +1 -0
  153. package/dist/utils/auth.js +42 -0
  154. package/dist/utils/auth.js.map +1 -0
  155. package/dist/utils/format.d.ts +11 -0
  156. package/dist/utils/format.d.ts.map +1 -0
  157. package/dist/utils/format.js +71 -0
  158. package/dist/utils/format.js.map +1 -0
  159. package/dist/utils/index.d.ts +4 -0
  160. package/dist/utils/index.d.ts.map +1 -0
  161. package/dist/utils/index.js +4 -0
  162. package/dist/utils/index.js.map +1 -0
  163. package/dist/utils/logger.d.ts +18 -0
  164. package/dist/utils/logger.d.ts.map +1 -0
  165. package/dist/utils/logger.js +61 -0
  166. package/dist/utils/logger.js.map +1 -0
  167. 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,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.js.map
@@ -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,4 @@
1
+ export * from './useChat.js';
2
+ export * from './useTools.js';
3
+ export * from './useHistory.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from './useChat.js';
2
+ export * from './useTools.js';
3
+ export * from './useHistory.js';
4
+ //# sourceMappingURL=index.js.map
@@ -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"}