@serjm/deepseek-code 0.3.1
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/CONTRIBUTING.md +73 -0
- package/README.md +194 -0
- package/README.ru.md +194 -0
- package/dist/api/index.d.ts +77 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +263 -0
- package/dist/api/index.js.map +1 -0
- package/dist/cli/headless.d.ts +22 -0
- package/dist/cli/headless.d.ts.map +1 -0
- package/dist/cli/headless.js +122 -0
- package/dist/cli/headless.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +90 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +18 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +75 -0
- package/dist/cli/interactive.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 +964 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/config/defaults.d.ts +37 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +39 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +76 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/core/agent-loop.d.ts +111 -0
- package/dist/core/agent-loop.d.ts.map +1 -0
- package/dist/core/agent-loop.js +485 -0
- package/dist/core/agent-loop.js.map +1 -0
- package/dist/core/checkpoint.d.ts +10 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +83 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/extensions.d.ts +55 -0
- package/dist/core/extensions.d.ts.map +1 -0
- package/dist/core/extensions.js +113 -0
- package/dist/core/extensions.js.map +1 -0
- package/dist/core/git.d.ts +68 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +148 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/hooks.d.ts +37 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +77 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/i18n.d.ts +90 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/i18n.js +253 -0
- package/dist/core/i18n.js.map +1 -0
- package/dist/core/lsp.d.ts +74 -0
- package/dist/core/lsp.d.ts.map +1 -0
- package/dist/core/lsp.js +239 -0
- package/dist/core/lsp.js.map +1 -0
- package/dist/core/mcp.d.ts +49 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +195 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/memory.d.ts +38 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +231 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/metrics.d.ts +36 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +111 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/review.d.ts +27 -0
- package/dist/core/review.d.ts.map +1 -0
- package/dist/core/review.js +201 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/sandbox.d.ts +52 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +140 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/scheduler.d.ts +56 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +167 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/session.d.ts +49 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +127 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/skills.d.ts +36 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +90 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/subagent.d.ts +45 -0
- package/dist/core/subagent.d.ts.map +1 -0
- package/dist/core/subagent.js +130 -0
- package/dist/core/subagent.js.map +1 -0
- package/dist/core/themes.d.ts +35 -0
- package/dist/core/themes.d.ts.map +1 -0
- package/dist/core/themes.js +188 -0
- package/dist/core/themes.js.map +1 -0
- package/dist/tools/bash.d.ts +3 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +92 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/chrome-manager.d.ts +35 -0
- package/dist/tools/chrome-manager.d.ts.map +1 -0
- package/dist/tools/chrome-manager.js +163 -0
- package/dist/tools/chrome-manager.js.map +1 -0
- package/dist/tools/chrome.d.ts +78 -0
- package/dist/tools/chrome.d.ts.map +1 -0
- package/dist/tools/chrome.js +1058 -0
- package/dist/tools/chrome.js.map +1 -0
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +81 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +3 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +41 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +3 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +74 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/path-safety.d.ts +3 -0
- package/dist/tools/path-safety.d.ts.map +1 -0
- package/dist/tools/path-safety.js +19 -0
- package/dist/tools/path-safety.js.map +1 -0
- package/dist/tools/read.d.ts +3 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +58 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +4 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +43 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +47 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +90 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/write.d.ts +3 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +51 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/ui/activity-cards.d.ts +50 -0
- package/dist/ui/activity-cards.d.ts.map +1 -0
- package/dist/ui/activity-cards.js +185 -0
- package/dist/ui/activity-cards.js.map +1 -0
- package/dist/ui/app.d.ts +9 -0
- package/dist/ui/app.d.ts.map +1 -0
- package/dist/ui/app.js +852 -0
- package/dist/ui/app.js.map +1 -0
- package/dist/ui/chat-view.d.ts +10 -0
- package/dist/ui/chat-view.d.ts.map +1 -0
- package/dist/ui/chat-view.js +94 -0
- package/dist/ui/chat-view.js.map +1 -0
- package/dist/ui/error-boundary.d.ts +13 -0
- package/dist/ui/error-boundary.d.ts.map +1 -0
- package/dist/ui/error-boundary.js +16 -0
- package/dist/ui/error-boundary.js.map +1 -0
- package/dist/ui/fade-in.d.ts +8 -0
- package/dist/ui/fade-in.d.ts.map +1 -0
- package/dist/ui/fade-in.js +14 -0
- package/dist/ui/fade-in.js.map +1 -0
- package/dist/ui/input-bar.d.ts +16 -0
- package/dist/ui/input-bar.d.ts.map +1 -0
- package/dist/ui/input-bar.js +269 -0
- package/dist/ui/input-bar.js.map +1 -0
- package/dist/ui/markdown-view.d.ts +9 -0
- package/dist/ui/markdown-view.d.ts.map +1 -0
- package/dist/ui/markdown-view.js +240 -0
- package/dist/ui/markdown-view.js.map +1 -0
- package/dist/ui/matrix-rain.d.ts +2 -0
- package/dist/ui/matrix-rain.d.ts.map +1 -0
- package/dist/ui/matrix-rain.js +134 -0
- package/dist/ui/matrix-rain.js.map +1 -0
- package/dist/ui/reasoning-view.d.ts +12 -0
- package/dist/ui/reasoning-view.d.ts.map +1 -0
- package/dist/ui/reasoning-view.js +34 -0
- package/dist/ui/reasoning-view.js.map +1 -0
- package/dist/ui/results-panel.d.ts +11 -0
- package/dist/ui/results-panel.d.ts.map +1 -0
- package/dist/ui/results-panel.js +17 -0
- package/dist/ui/results-panel.js.map +1 -0
- package/dist/ui/setup-wizard.d.ts +30 -0
- package/dist/ui/setup-wizard.d.ts.map +1 -0
- package/dist/ui/setup-wizard.js +166 -0
- package/dist/ui/setup-wizard.js.map +1 -0
- package/dist/ui/status-bar.d.ts +14 -0
- package/dist/ui/status-bar.d.ts.map +1 -0
- package/dist/ui/status-bar.js +63 -0
- package/dist/ui/status-bar.js.map +1 -0
- package/dist/ui/tool-activity-card.d.ts +9 -0
- package/dist/ui/tool-activity-card.d.ts.map +1 -0
- package/dist/ui/tool-activity-card.js +172 -0
- package/dist/ui/tool-activity-card.js.map +1 -0
- package/dist/ui/tool-call-view.d.ts +9 -0
- package/dist/ui/tool-call-view.d.ts.map +1 -0
- package/dist/ui/tool-call-view.js +149 -0
- package/dist/ui/tool-call-view.js.map +1 -0
- package/dist/utils/clipboard.d.ts +6 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +56 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/ignore.d.ts +6 -0
- package/dist/utils/ignore.d.ts.map +1 -0
- package/dist/utils/ignore.js +40 -0
- package/dist/utils/ignore.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +13 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/string-width.d.ts +6 -0
- package/dist/utils/string-width.d.ts.map +1 -0
- package/dist/utils/string-width.js +37 -0
- package/dist/utils/string-width.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { themeManager } from '../core/themes.js';
|
|
5
|
+
import { visualWidth } from '../utils/string-width.js';
|
|
6
|
+
// ─── Inline formatter ────────────────────────────────────────────────────────
|
|
7
|
+
function renderInline(text, colors) {
|
|
8
|
+
if (!text)
|
|
9
|
+
return null;
|
|
10
|
+
if (!/[`*_[]/.test(text))
|
|
11
|
+
return text;
|
|
12
|
+
// Split by inline code spans first (highest priority)
|
|
13
|
+
const codeParts = text.split(/(`[^`\n]+`)/g);
|
|
14
|
+
const result = [];
|
|
15
|
+
codeParts.forEach((part, ci) => {
|
|
16
|
+
if (part.length > 2 && part.startsWith('`') && part.endsWith('`')) {
|
|
17
|
+
result.push(_jsxs(Text, { color: colors.info, children: [" ", part.slice(1, -1), " "] }, `c${ci}`));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Now handle **bold** inside non-code segments
|
|
21
|
+
const boldParts = part.split(/(\*\*[^*\n]+\*\*)/g);
|
|
22
|
+
boldParts.forEach((bp, bi) => {
|
|
23
|
+
if (bp.length > 4 && bp.startsWith('**') && bp.endsWith('**')) {
|
|
24
|
+
result.push(_jsx(Text, { bold: true, children: bp.slice(2, -2) }, `b${ci}-${bi}`));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Handle *italic*
|
|
28
|
+
const italicParts = bp.split(/(\*[^*\n]+\*)/g);
|
|
29
|
+
italicParts.forEach((ip, ii) => {
|
|
30
|
+
if (ip.length > 2 && ip.startsWith('*') && ip.endsWith('*')) {
|
|
31
|
+
result.push(_jsx(Text, { dimColor: true, children: ip.slice(1, -1) }, `i${ci}-${bi}-${ii}`));
|
|
32
|
+
}
|
|
33
|
+
else if (ip) {
|
|
34
|
+
result.push(ip);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
// ─── Table rendering ─────────────────────────────────────────────────────────
|
|
42
|
+
export function parseTableCells(line) {
|
|
43
|
+
const trimmed = line.trim();
|
|
44
|
+
const body = trimmed.startsWith('|') ? trimmed.slice(1) : trimmed;
|
|
45
|
+
const withoutTrailing = body.endsWith('|') ? body.slice(0, -1) : body;
|
|
46
|
+
return withoutTrailing.split('|').map(c => c.trim());
|
|
47
|
+
}
|
|
48
|
+
export function isTableSeparator(line) {
|
|
49
|
+
return /^\|?[\s\-:|]+\|?$/.test(line.trim());
|
|
50
|
+
}
|
|
51
|
+
export function padVisual(text, width) {
|
|
52
|
+
return text + ' '.repeat(Math.max(0, width - visualWidth(text)));
|
|
53
|
+
}
|
|
54
|
+
export function tableColumnWidths(lines) {
|
|
55
|
+
const widths = [];
|
|
56
|
+
for (const line of lines) {
|
|
57
|
+
if (isTableSeparator(line))
|
|
58
|
+
continue;
|
|
59
|
+
parseTableCells(line).forEach((cell, i) => {
|
|
60
|
+
widths[i] = Math.max(widths[i] ?? 0, visualWidth(cell));
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return widths;
|
|
64
|
+
}
|
|
65
|
+
export function shouldRenderTableAsList(lines) {
|
|
66
|
+
const termWidth = process.stdout.columns || 80;
|
|
67
|
+
const maxTableWidth = Math.max(24, termWidth - 6);
|
|
68
|
+
const widths = tableColumnWidths(lines);
|
|
69
|
+
const tableWidth = widths.reduce((sum, width) => sum + width + 3, 1);
|
|
70
|
+
const maxCellWidth = Math.max(18, Math.floor(maxTableWidth * 0.35));
|
|
71
|
+
return widths.length === 0 || tableWidth > maxTableWidth || widths.some(width => width > maxCellWidth);
|
|
72
|
+
}
|
|
73
|
+
function renderTableAsList(lines, headerIdx, colors) {
|
|
74
|
+
const headers = parseTableCells(lines[headerIdx]);
|
|
75
|
+
const dataLines = lines.filter((_, i) => i !== headerIdx && i !== headerIdx + 1 && !isTableSeparator(lines[i]));
|
|
76
|
+
const rows = [];
|
|
77
|
+
for (const line of dataLines) {
|
|
78
|
+
const cells = parseTableCells(line);
|
|
79
|
+
const pairs = cells.map((cell, ci) => {
|
|
80
|
+
const label = headers[ci] || `col${ci + 1}`;
|
|
81
|
+
return `${label}: ${cell}`;
|
|
82
|
+
});
|
|
83
|
+
rows.push(_jsxs(Box, { marginLeft: 1, children: [_jsx(Text, { color: colors.primary, children: "\u2022 " }), _jsx(Text, { wrap: 'wrap', children: pairs.join(' · ') })] }, rows.length));
|
|
84
|
+
}
|
|
85
|
+
return _jsx(Box, { flexDirection: 'column', children: rows });
|
|
86
|
+
}
|
|
87
|
+
function renderTableRow(line, isHeader, colors, widths) {
|
|
88
|
+
const cells = parseTableCells(line);
|
|
89
|
+
return (_jsxs(Box, { flexDirection: 'row', children: [_jsx(Text, { children: '| ' }), cells.map((cell, i) => {
|
|
90
|
+
const trimmed = cell.trim();
|
|
91
|
+
const padded = `${padVisual(trimmed, widths[i] ?? visualWidth(trimmed))} `;
|
|
92
|
+
return (_jsxs(React.Fragment, { children: [_jsx(Text, { bold: isHeader, color: isHeader ? colors.primary : undefined, children: padded }), _jsx(Text, { children: "|" })] }, i));
|
|
93
|
+
})] }));
|
|
94
|
+
}
|
|
95
|
+
// ─── Text segment renderer ───────────────────────────────────────────────────
|
|
96
|
+
function TextSegment({ content, colors }) {
|
|
97
|
+
const lines = content.split('\n');
|
|
98
|
+
const rendered = [];
|
|
99
|
+
let i = 0;
|
|
100
|
+
while (i < lines.length) {
|
|
101
|
+
const line = lines[i];
|
|
102
|
+
// Heading 1
|
|
103
|
+
if (line.startsWith('# ')) {
|
|
104
|
+
rendered.push(_jsx(Box, { marginTop: i > 0 ? 1 : 0, marginBottom: 0, children: _jsx(Text, { bold: true, color: colors.primary, underline: true, children: line.slice(2) }) }, rendered.length));
|
|
105
|
+
i++;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Heading 2
|
|
109
|
+
if (line.startsWith('## ')) {
|
|
110
|
+
rendered.push(_jsx(Box, { marginTop: i > 0 ? 1 : 0, children: _jsx(Text, { bold: true, color: colors.primary, children: line.slice(3) }) }, rendered.length));
|
|
111
|
+
i++;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
// Heading 3
|
|
115
|
+
if (line.startsWith('### ')) {
|
|
116
|
+
rendered.push(_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.secondary, children: line.slice(4) }) }, rendered.length));
|
|
117
|
+
i++;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
// Horizontal rule
|
|
121
|
+
if (/^[-*=]{3,}\s*$/.test(line.trim())) {
|
|
122
|
+
rendered.push(_jsx(Text, { color: colors.border, children: '─'.repeat(Math.min(process.stdout.columns - 4 || 60, 60)) }, rendered.length));
|
|
123
|
+
i++;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
// Table: collect all consecutive table lines
|
|
127
|
+
if (line.trim().startsWith('|') && line.trim().endsWith('|')) {
|
|
128
|
+
const tableLines = [];
|
|
129
|
+
while (i < lines.length && lines[i].trim().startsWith('|') && lines[i].trim().endsWith('|')) {
|
|
130
|
+
tableLines.push(lines[i]);
|
|
131
|
+
i++;
|
|
132
|
+
}
|
|
133
|
+
// Find header row (first non-separator row before a separator row)
|
|
134
|
+
const headerIdx = tableLines.findIndex((l, idx) => idx + 1 < tableLines.length && isTableSeparator(tableLines[idx + 1]));
|
|
135
|
+
if (headerIdx >= 0) {
|
|
136
|
+
// Check if table fits — renderTableRow returns null if too wide
|
|
137
|
+
if (shouldRenderTableAsList(tableLines)) {
|
|
138
|
+
// Fallback: render as list
|
|
139
|
+
rendered.push(_jsx(Box, { flexDirection: 'column', marginLeft: 1, children: renderTableAsList(tableLines, headerIdx, colors) }, rendered.length));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const widths = tableColumnWidths(tableLines);
|
|
143
|
+
const borderWidth = Math.min(process.stdout.columns - 6 || 60, widths.reduce((sum, width) => sum + width + 3, 1));
|
|
144
|
+
// Render full table
|
|
145
|
+
rendered.push(_jsx(Box, { flexDirection: 'column', marginLeft: 1, children: tableLines.map((tl, ti) => {
|
|
146
|
+
if (isTableSeparator(tl)) {
|
|
147
|
+
return _jsx(Text, { color: colors.border, children: '─'.repeat(borderWidth) }, ti);
|
|
148
|
+
}
|
|
149
|
+
const isHeader = ti === headerIdx;
|
|
150
|
+
return _jsx(React.Fragment, { children: renderTableRow(tl, isHeader, colors, widths) }, ti);
|
|
151
|
+
}) }, rendered.length));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
// No header found — render as list
|
|
156
|
+
rendered.push(_jsx(Box, { flexDirection: 'column', marginLeft: 1, children: renderTableAsList(tableLines, 0, colors) }, rendered.length));
|
|
157
|
+
}
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// Unordered list - item * item
|
|
161
|
+
const ulMatch = line.match(/^(\s*)[- *] (.+)/);
|
|
162
|
+
if (ulMatch) {
|
|
163
|
+
const indent = Math.floor(ulMatch[1].length / 2);
|
|
164
|
+
rendered.push(_jsxs(Box, { marginLeft: indent * 2, children: [_jsx(Text, { color: colors.primary, children: "\u2022 " }), _jsx(Text, { wrap: 'wrap', children: renderInline(ulMatch[2], colors) })] }, rendered.length));
|
|
165
|
+
i++;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// Ordered list 1. item
|
|
169
|
+
const olMatch = line.match(/^(\s*)(\d+)\. (.+)/);
|
|
170
|
+
if (olMatch) {
|
|
171
|
+
const indent = Math.floor(olMatch[1].length / 2);
|
|
172
|
+
rendered.push(_jsxs(Box, { marginLeft: indent * 2, children: [_jsxs(Text, { color: colors.primary, children: [olMatch[2], ". "] }), _jsx(Text, { wrap: 'wrap', children: renderInline(olMatch[3], colors) })] }, rendered.length));
|
|
173
|
+
i++;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
// Blockquote > text
|
|
177
|
+
if (line.startsWith('> ')) {
|
|
178
|
+
rendered.push(_jsxs(Box, { children: [_jsx(Text, { color: colors.border, children: "\u258C " }), _jsx(Text, { dimColor: true, wrap: 'wrap', children: renderInline(line.slice(2), colors) })] }, rendered.length));
|
|
179
|
+
i++;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
// Empty line
|
|
183
|
+
if (!line.trim()) {
|
|
184
|
+
rendered.push(_jsx(Box, { height: 1 }, rendered.length));
|
|
185
|
+
i++;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Regular text with inline formatting
|
|
189
|
+
rendered.push(_jsx(Text, { wrap: 'wrap', children: renderInline(line, colors) }, rendered.length));
|
|
190
|
+
i++;
|
|
191
|
+
}
|
|
192
|
+
return _jsx(Box, { flexDirection: 'column', children: rendered });
|
|
193
|
+
}
|
|
194
|
+
// ─── Code block renderer ─────────────────────────────────────────────────────
|
|
195
|
+
function CodeBlock({ content, lang, colors }) {
|
|
196
|
+
const termWidth = process.stdout.columns || 80;
|
|
197
|
+
const maxContentWidth = termWidth - 6;
|
|
198
|
+
const lines = content.split('\n');
|
|
199
|
+
const maxLineWidth = Math.max(...lines.map(l => visualWidth(l)), 0);
|
|
200
|
+
const useBorder = maxLineWidth <= maxContentWidth - 4 && termWidth >= 50;
|
|
201
|
+
if (!useBorder) {
|
|
202
|
+
// Fallback: simple indented block without borders
|
|
203
|
+
return (_jsxs(Box, { flexDirection: 'column', marginTop: 0, marginBottom: 1, marginLeft: 1, children: [lang && _jsx(Text, { color: colors.info, bold: true, children: lang }), lines.map((line, i) => (_jsx(Text, { color: colors.info, children: line }, i)))] }));
|
|
204
|
+
}
|
|
205
|
+
const langLabel = lang || 'code';
|
|
206
|
+
const width = Math.min(maxLineWidth + 2, maxContentWidth);
|
|
207
|
+
return (_jsxs(Box, { flexDirection: 'column', marginTop: 0, marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: colors.border, children: "\u250C\u2500 " }), _jsx(Text, { color: colors.info, bold: true, children: langLabel }), _jsx(Text, { color: colors.border, children: ' ' + '─'.repeat(Math.max(0, width - langLabel.length - 3)) + '┐' })] }), lines.map((line, i) => (_jsxs(Box, { children: [_jsx(Text, { color: colors.border, children: "\u2502 " }), _jsx(Text, { color: colors.info, children: line })] }, i))), _jsxs(Text, { color: colors.border, children: ["\u2514", '─'.repeat(width + 1), "\u2518"] })] }));
|
|
208
|
+
}
|
|
209
|
+
function parseSegments(text) {
|
|
210
|
+
const parts = text.split(/(```(\w*)\n?)([\s\S]*?)```/g);
|
|
211
|
+
const segments = [];
|
|
212
|
+
// split with 3 capture groups gives chunks of 4 per match:
|
|
213
|
+
// [before, fence+lang, lang, code, before, fence+lang, lang, code, ...]
|
|
214
|
+
for (let i = 0; i < parts.length; i++) {
|
|
215
|
+
if (i % 4 === 0) {
|
|
216
|
+
if (parts[i])
|
|
217
|
+
segments.push({ type: 'text', content: parts[i] });
|
|
218
|
+
}
|
|
219
|
+
else if (i % 4 === 1) {
|
|
220
|
+
// full fence match (```lang\n) — skip
|
|
221
|
+
}
|
|
222
|
+
else if (i % 4 === 2) {
|
|
223
|
+
const lang = parts[i] ?? '';
|
|
224
|
+
const code = (parts[i + 1] ?? '').trimEnd();
|
|
225
|
+
segments.push({ type: 'code', content: code, lang });
|
|
226
|
+
i++; // skip code part
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return segments;
|
|
230
|
+
}
|
|
231
|
+
export function MarkdownView({ text }) {
|
|
232
|
+
const colors = themeManager.getColors();
|
|
233
|
+
const segments = parseSegments(text);
|
|
234
|
+
if (segments.length === 0)
|
|
235
|
+
return null;
|
|
236
|
+
return (_jsx(Box, { flexDirection: 'column', children: segments.map((seg, i) => seg.type === 'code'
|
|
237
|
+
? _jsx(CodeBlock, { content: seg.content, lang: seg.lang, colors: colors }, i)
|
|
238
|
+
: _jsx(TextSegment, { content: seg.content, colors: colors }, i)) }));
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=markdown-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-view.js","sourceRoot":"","sources":["../../src/ui/markdown-view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-rain.d.ts","sourceRoot":"","sources":["../../src/ui/matrix-rain.tsx"],"names":[],"mappings":"AAqFA,wBAAgB,UAAU,4CA6FzB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { Box, Text, useStdout } from 'ink';
|
|
4
|
+
import { themeManager } from '../core/themes.js';
|
|
5
|
+
// ── Symbol pool ──────────────────────────────────────────────────────────────
|
|
6
|
+
const POOL = 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワンABCDEF0123456789#%&@$><{}[]|';
|
|
7
|
+
function randomChar() {
|
|
8
|
+
return POOL[Math.floor(Math.random() * POOL.length)];
|
|
9
|
+
}
|
|
10
|
+
// ── Layout constants ─────────────────────────────────────────────────────────
|
|
11
|
+
const MIN_COLUMNS = 36;
|
|
12
|
+
const MAX_COLUMNS = 52;
|
|
13
|
+
const MAX_HEIGHT = 24;
|
|
14
|
+
// ── Color palettes ───────────────────────────────────────────────────────────
|
|
15
|
+
const MATRIX_COLORS = [
|
|
16
|
+
'#f0fff0', // head — almost white glow
|
|
17
|
+
'#ccffcc', // 1 — pale green
|
|
18
|
+
'#aaff88', // 2 — bright lime
|
|
19
|
+
'#55ff55', // 3 — full green
|
|
20
|
+
'#00ff41', // 4 — classic matrix green
|
|
21
|
+
'#00cc33', // 5
|
|
22
|
+
'#009922', // 6
|
|
23
|
+
'#006611', // 7
|
|
24
|
+
'#004400', // 8
|
|
25
|
+
'#002200', // 9
|
|
26
|
+
'#000800', // 10 — near black
|
|
27
|
+
];
|
|
28
|
+
const GREY_COLORS = [
|
|
29
|
+
'#ffffff',
|
|
30
|
+
'#eeeeee',
|
|
31
|
+
'#cccccc',
|
|
32
|
+
'#aaaaaa',
|
|
33
|
+
'#888888',
|
|
34
|
+
'#666666',
|
|
35
|
+
'#444444',
|
|
36
|
+
'#333333',
|
|
37
|
+
'#222222',
|
|
38
|
+
'#111111',
|
|
39
|
+
'#080808',
|
|
40
|
+
];
|
|
41
|
+
function buildColors() {
|
|
42
|
+
return themeManager.theme.name === 'matrix' ? MATRIX_COLORS : GREY_COLORS;
|
|
43
|
+
}
|
|
44
|
+
function colorForIndex(distanceFromHead, colors) {
|
|
45
|
+
if (distanceFromHead < 0)
|
|
46
|
+
return colors[colors.length - 1];
|
|
47
|
+
const idx = Math.min(distanceFromHead, colors.length - 1);
|
|
48
|
+
return colors[idx];
|
|
49
|
+
}
|
|
50
|
+
// ── Column init ──────────────────────────────────────────────────────────────
|
|
51
|
+
function createColumn(termHeight) {
|
|
52
|
+
const length = 4 + Math.floor(Math.random() * 11);
|
|
53
|
+
const offset = Math.floor(Math.random() * Math.max(1, termHeight - length - 2));
|
|
54
|
+
const chars = Array.from({ length }, () => randomChar());
|
|
55
|
+
return {
|
|
56
|
+
chars,
|
|
57
|
+
head: 0,
|
|
58
|
+
length,
|
|
59
|
+
interval: 80 + Math.floor(Math.random() * 170),
|
|
60
|
+
offset,
|
|
61
|
+
active: Math.random() > 0.15,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function initColumns(n, termHeight) {
|
|
65
|
+
return Array.from({ length: n }, () => createColumn(termHeight));
|
|
66
|
+
}
|
|
67
|
+
// ── Component ───────────────────────────────────────────────────────────────
|
|
68
|
+
export function MatrixRain() {
|
|
69
|
+
const { stdout } = useStdout();
|
|
70
|
+
const termWidth = stdout?.columns ?? 80;
|
|
71
|
+
const termHeight = Math.min(stdout?.rows ?? 24, MAX_HEIGHT);
|
|
72
|
+
const numColumns = Math.min(MAX_COLUMNS, Math.max(MIN_COLUMNS, Math.floor(termWidth * 0.55)));
|
|
73
|
+
const initialColumns = useMemo(() => initColumns(numColumns, termHeight), [numColumns, termHeight]);
|
|
74
|
+
const [columns, setColumns] = useState(initialColumns);
|
|
75
|
+
// Reset columns when terminal dimensions change
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
setColumns(initColumns(numColumns, termHeight));
|
|
78
|
+
}, [numColumns, termHeight]);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
const intervals = [];
|
|
81
|
+
const colCount = columns.length;
|
|
82
|
+
for (let idx = 0; idx < colCount; idx++) {
|
|
83
|
+
const col = columns[idx];
|
|
84
|
+
if (!col.active)
|
|
85
|
+
continue;
|
|
86
|
+
const id = setInterval(() => {
|
|
87
|
+
setColumns(prev => {
|
|
88
|
+
const next = [...prev];
|
|
89
|
+
const c = { ...next[idx] };
|
|
90
|
+
const newHead = (c.head + 1) % (c.length + termHeight);
|
|
91
|
+
const newChars = [...c.chars];
|
|
92
|
+
if (newHead < c.length) {
|
|
93
|
+
newChars[newHead] = randomChar();
|
|
94
|
+
}
|
|
95
|
+
if (Math.random() < 0.3) {
|
|
96
|
+
const trailIdx = Math.floor(Math.random() * (c.length - 1));
|
|
97
|
+
newChars[trailIdx] = randomChar();
|
|
98
|
+
}
|
|
99
|
+
next[idx] = { ...c, head: newHead, chars: newChars };
|
|
100
|
+
return next;
|
|
101
|
+
});
|
|
102
|
+
}, col.interval);
|
|
103
|
+
intervals.push(id);
|
|
104
|
+
}
|
|
105
|
+
return () => {
|
|
106
|
+
intervals.forEach(clearInterval);
|
|
107
|
+
};
|
|
108
|
+
}, [columns.length, termHeight]);
|
|
109
|
+
// ── Render ──────────────────────────────────────────────────────────────
|
|
110
|
+
const palette = buildColors();
|
|
111
|
+
const rows = Array.from({ length: termHeight }, () => Array.from({ length: numColumns }, () => ({ ch: ' ', color: palette[palette.length - 1] })));
|
|
112
|
+
for (let ci = 0; ci < columns.length; ci++) {
|
|
113
|
+
const col = columns[ci];
|
|
114
|
+
if (!col.active)
|
|
115
|
+
continue;
|
|
116
|
+
for (let ri = 0; ri < col.length; ri++) {
|
|
117
|
+
const screenRow = col.offset + ri;
|
|
118
|
+
if (screenRow < 0 || screenRow >= termHeight)
|
|
119
|
+
continue;
|
|
120
|
+
let dist;
|
|
121
|
+
if (col.head < col.length) {
|
|
122
|
+
dist = col.head - ri;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const gapPos = col.head - col.length;
|
|
126
|
+
dist = gapPos < col.length ? gapPos - ri : col.length - ri;
|
|
127
|
+
}
|
|
128
|
+
const ch = col.chars[ri] || ' ';
|
|
129
|
+
rows[screenRow][ci] = { ch, color: colorForIndex(dist, palette) };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return (_jsx(Box, { flexDirection: 'column', alignItems: 'center', marginBottom: 0, children: rows.map((row, ri) => (_jsx(Box, { height: 1, children: row.map((cell, ci) => (_jsx(Text, { color: cell.color, children: cell.ch }, ci))) }, ri))) }));
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=matrix-rain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-rain.js","sourceRoot":"","sources":["../../src/ui/matrix-rain.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ReasoningViewProps {
|
|
3
|
+
reasoning: string;
|
|
4
|
+
isActive: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* ReasoningView — отображает рассуждения AI в реальном времени.
|
|
8
|
+
* Показывает спиннер и текст reasoning, который стримится из DeepSeek API.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ReasoningView: React.NamedExoticComponent<ReasoningViewProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=reasoning-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-view.d.ts","sourceRoot":"","sources":["../../src/ui/reasoning-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;;GAGG;AACH,eAAO,MAAM,aAAa,gDAyCxB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { themeManager } from '../core/themes.js';
|
|
5
|
+
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
6
|
+
/**
|
|
7
|
+
* ReasoningView — отображает рассуждения AI в реальном времени.
|
|
8
|
+
* Показывает спиннер и текст reasoning, который стримится из DeepSeek API.
|
|
9
|
+
*/
|
|
10
|
+
export const ReasoningView = React.memo(function ReasoningView({ reasoning, isActive }) {
|
|
11
|
+
const [spinnerFrame, setSpinnerFrame] = useState(0);
|
|
12
|
+
const colors = themeManager.getColors();
|
|
13
|
+
// Animate spinner while active
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (!isActive)
|
|
16
|
+
return;
|
|
17
|
+
const interval = setInterval(() => {
|
|
18
|
+
setSpinnerFrame(prev => (prev + 1) % SPINNER_FRAMES.length);
|
|
19
|
+
}, 80);
|
|
20
|
+
return () => clearInterval(interval);
|
|
21
|
+
}, [isActive]);
|
|
22
|
+
if (!reasoning && !isActive)
|
|
23
|
+
return null;
|
|
24
|
+
const MAX_LINES = 7;
|
|
25
|
+
const rawText = reasoning || 'Thinking...';
|
|
26
|
+
const lines = rawText.split('\n');
|
|
27
|
+
const truncated = lines.length > MAX_LINES;
|
|
28
|
+
const displayLines = truncated ? lines.slice(-MAX_LINES) : lines;
|
|
29
|
+
const displayText = displayLines.join('\n');
|
|
30
|
+
return (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { children: [isActive
|
|
31
|
+
? _jsx(Text, { color: colors.warning, children: SPINNER_FRAMES[spinnerFrame] })
|
|
32
|
+
: _jsx(Text, { color: colors.success, children: "\u2713" }), ' ', _jsx(Text, { bold: true, color: colors.warning, children: "Reasoning" }), truncated && _jsxs(Text, { dimColor: true, children: [" (showing last ", MAX_LINES, " lines)"] })] }) }), _jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: colors.textMuted, wrap: 'wrap', children: displayText }) })] }));
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=reasoning-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-view.js","sourceRoot":"","sources":["../../src/ui/reasoning-view.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAOhD,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,aAAa,CAAE,EAAE,SAAS,EAAE,QAAQ,EAAsB;IACzG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IAEvC,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QAC7D,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAExC,MAAM,SAAS,GAAG,CAAC,CAAA;IACnB,MAAM,OAAO,GAAG,SAAS,IAAI,aAAa,CAAA;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;IAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAChE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,aACxD,KAAC,GAAG,cACF,MAAC,IAAI,eACF,QAAQ;4BACP,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,cAAc,CAAC,YAAY,CAAC,GAAQ;4BACpE,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,uBAAU,EACxC,GAAG,EACJ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,OAAO,0BAAkB,EACjD,SAAS,IAAI,MAAC,IAAI,IAAC,QAAQ,sCAAiB,SAAS,eAAe,IAChE,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAC,MAAM,YACvC,WAAW,GACP,GACH,IACF,CACP,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolCallEvent } from '../core/agent-loop.js';
|
|
2
|
+
interface ResultsPanelProps {
|
|
3
|
+
toolCalls: ToolCallEvent[];
|
|
4
|
+
reasoning: string;
|
|
5
|
+
reasoningActive: boolean;
|
|
6
|
+
pendingApproval: boolean;
|
|
7
|
+
scrollOffset?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function ResultsPanel({ toolCalls, reasoning, reasoningActive, pendingApproval, scrollOffset }: ResultsPanelProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=results-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results-panel.d.ts","sourceRoot":"","sources":["../../src/ui/results-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAM1D,UAAU,iBAAiB;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAE,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,YAAgB,EAAE,EAAE,iBAAiB,kDA+C5H"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { ToolCallView } from './tool-call-view.js';
|
|
4
|
+
import { ReasoningView } from './reasoning-view.js';
|
|
5
|
+
import { themeManager } from '../core/themes.js';
|
|
6
|
+
/** Max visible tool call groups (grouped by name) */
|
|
7
|
+
const VISIBLE_TOOL_GROUPS = 5;
|
|
8
|
+
export function ResultsPanel({ toolCalls, reasoning, reasoningActive, pendingApproval, scrollOffset = 0 }) {
|
|
9
|
+
const colors = themeManager.getColors();
|
|
10
|
+
const hasContent = toolCalls.length > 0 || reasoning || reasoningActive || pendingApproval;
|
|
11
|
+
if (!hasContent)
|
|
12
|
+
return null;
|
|
13
|
+
// Count unique tool call types for summary
|
|
14
|
+
const uniqueTools = new Set(toolCalls.map(tc => tc.name)).size;
|
|
15
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { color: colors.border, children: '─'.repeat(Math.min(process.stdout.columns || 60, 60)) }) }), _jsxs(Box, { flexDirection: 'column', paddingX: 1, height: 8, overflow: 'hidden', children: [reasoningActive && (_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: colors.warning, bold: true, children: "\uD83E\uDD14 Thinking..." }) })), reasoning && (_jsx(Box, { marginBottom: 0, height: 3, overflow: 'hidden', children: _jsx(ReasoningView, { reasoning: reasoning, isActive: reasoningActive }) })), toolCalls.length > 0 && (_jsxs(_Fragment, { children: [_jsx(ToolCallView, { toolCalls: toolCalls, maxItems: VISIBLE_TOOL_GROUPS }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: [toolCalls.length, " tool call", toolCalls.length !== 1 ? 's' : '', uniqueTools > 1 ? ` (${uniqueTools} types)` : '', scrollOffset > 0 && ' — PageDown'] }) })] }))] })] }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=results-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results-panel.js","sourceRoot":"","sources":["../../src/ui/results-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAU7B,MAAM,UAAU,YAAY,CAAE,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,GAAG,CAAC,EAAqB;IAC3H,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,IAAI,eAAe,IAAI,eAAe,CAAA;IAE1F,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAE9D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,GAClD,GACH,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,aAClE,eAAe,IAAI,CAClB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,+CAAsB,GACnD,CACP,EAEA,SAAS,IAAI,CACZ,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,YAChD,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAI,GAC9D,CACP,EAEA,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,8BACE,KAAC,YAAY,IAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,GAAI,EACrE,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,MAAC,IAAI,IAAC,QAAQ,mBACX,SAAS,CAAC,MAAM,gBAAY,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAC7D,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,SAAS,CAAC,CAAC,CAAC,EAAE,EAChD,YAAY,GAAG,CAAC,IAAI,aAAa,IAC7B,GACH,IACL,CACJ,IACG,IACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DeepSeekConfig, ApprovalMode } from '../config/defaults.js';
|
|
2
|
+
import { type Locale } from '../core/i18n.js';
|
|
3
|
+
import type { ChatMessage } from '../api/index.js';
|
|
4
|
+
export declare function Logo(): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export type SetupStep = 'lang' | 'apikey' | 'theme' | 'model' | 'mode' | 'done';
|
|
6
|
+
export interface SetupWizardState {
|
|
7
|
+
step: SetupStep;
|
|
8
|
+
apiKeyError: string;
|
|
9
|
+
langCursor: number;
|
|
10
|
+
themeCursor: number;
|
|
11
|
+
modelCursor: number;
|
|
12
|
+
modeCursor: number;
|
|
13
|
+
langOptions: Locale[];
|
|
14
|
+
modeOptions: ApprovalMode[];
|
|
15
|
+
}
|
|
16
|
+
export interface SetupWizardActions {
|
|
17
|
+
handleApiKeySubmit: (key: string) => Promise<void>;
|
|
18
|
+
finishSetup: () => Promise<void>;
|
|
19
|
+
setLangCursor: (c: number) => void;
|
|
20
|
+
setThemeCursor: (c: number) => void;
|
|
21
|
+
setModelCursor: (c: number) => void;
|
|
22
|
+
setModeCursor: (c: number) => void;
|
|
23
|
+
setStep: (s: SetupStep) => void;
|
|
24
|
+
setApiKeyError: (e: string) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function useSetupWizard(config: DeepSeekConfig, initialStep: SetupStep | undefined, onSetupComplete: (updatedConfig: DeepSeekConfig) => void, onMessage: (msg: ChatMessage) => void): [SetupWizardState, SetupWizardActions];
|
|
27
|
+
export declare function SetupWizard({ state }: {
|
|
28
|
+
state: SetupWizardState;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=setup-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../src/ui/setup-wizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIzE,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAiDlD,wBAAgB,IAAI,4CAQnB;AAwGD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,SAAS,YAAS,EAC/B,eAAe,EAAE,CAAC,aAAa,EAAE,cAAc,KAAK,IAAI,EACxD,SAAS,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GACpC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CA6ExC;AAID,wBAAgB,WAAW,CAAE,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,2CA2BlE"}
|