jerad-cli 0.1.0 → 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/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +21 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +201 -62
- package/dist/commands/dev.js.map +1 -1
- package/dist/components/ConfirmPrompt.d.ts +8 -0
- package/dist/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/components/ConfirmPrompt.js +19 -0
- package/dist/components/ConfirmPrompt.js.map +1 -0
- package/dist/components/DevApp.d.ts +30 -0
- package/dist/components/DevApp.d.ts.map +1 -0
- package/dist/components/DevApp.js +97 -0
- package/dist/components/DevApp.js.map +1 -0
- package/dist/components/ExecutionView.d.ts +25 -0
- package/dist/components/ExecutionView.d.ts.map +1 -0
- package/dist/components/ExecutionView.js +498 -0
- package/dist/components/ExecutionView.js.map +1 -0
- package/dist/components/Header.d.ts +10 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +22 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/InputPrompt.d.ts +13 -0
- package/dist/components/InputPrompt.d.ts.map +1 -0
- package/dist/components/InputPrompt.js +33 -0
- package/dist/components/InputPrompt.js.map +1 -0
- package/dist/components/MarkdownText.d.ts +6 -0
- package/dist/components/MarkdownText.d.ts.map +1 -0
- package/dist/components/MarkdownText.js +200 -0
- package/dist/components/MarkdownText.js.map +1 -0
- package/dist/components/MessageList.d.ts +13 -0
- package/dist/components/MessageList.d.ts.map +1 -0
- package/dist/components/MessageList.js +23 -0
- package/dist/components/MessageList.js.map +1 -0
- package/dist/components/Select.d.ts +14 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +35 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Spinner.d.ts +7 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +7 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/StreamingText.d.ts +7 -0
- package/dist/components/StreamingText.d.ts.map +1 -0
- package/dist/components/StreamingText.js +9 -0
- package/dist/components/StreamingText.js.map +1 -0
- package/dist/components/TaskCard.d.ts +14 -0
- package/dist/components/TaskCard.d.ts.map +1 -0
- package/dist/components/TaskCard.js +6 -0
- package/dist/components/TaskCard.js.map +1 -0
- package/dist/components/ToolUseDisplay.d.ts +9 -0
- package/dist/components/ToolUseDisplay.d.ts.map +1 -0
- package/dist/components/ToolUseDisplay.js +38 -0
- package/dist/components/ToolUseDisplay.js.map +1 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +13 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useClaudeAgent.d.ts +25 -0
- package/dist/hooks/useClaudeAgent.d.ts.map +1 -0
- package/dist/hooks/useClaudeAgent.js +114 -0
- package/dist/hooks/useClaudeAgent.js.map +1 -0
- package/dist/hooks/useMessageQueue.d.ts +21 -0
- package/dist/hooks/useMessageQueue.d.ts.map +1 -0
- package/dist/hooks/useMessageQueue.js +77 -0
- package/dist/hooks/useMessageQueue.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent.d.ts +28 -0
- package/dist/lib/agent.d.ts.map +1 -0
- package/dist/lib/agent.js +184 -0
- package/dist/lib/agent.js.map +1 -0
- package/dist/lib/api.d.ts +3 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/auth-check.d.ts +8 -0
- package/dist/lib/auth-check.d.ts.map +1 -0
- package/dist/lib/auth-check.js +68 -0
- package/dist/lib/auth-check.js.map +1 -0
- package/dist/lib/claude-md.d.ts +5 -0
- package/dist/lib/claude-md.d.ts.map +1 -0
- package/dist/lib/claude-md.js +61 -0
- package/dist/lib/claude-md.js.map +1 -0
- package/dist/lib/config.d.ts +0 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +1 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/execution-logger.d.ts +77 -0
- package/dist/lib/execution-logger.d.ts.map +1 -0
- package/dist/lib/execution-logger.js +233 -0
- package/dist/lib/execution-logger.js.map +1 -0
- package/dist/lib/git.d.ts +6 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +32 -0
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/input-monitor.d.ts +21 -0
- package/dist/lib/input-monitor.d.ts.map +1 -0
- package/dist/lib/input-monitor.js +110 -0
- package/dist/lib/input-monitor.js.map +1 -0
- package/dist/lib/manual-steps.d.ts +16 -0
- package/dist/lib/manual-steps.d.ts.map +1 -0
- package/dist/lib/manual-steps.js +149 -0
- package/dist/lib/manual-steps.js.map +1 -0
- package/dist/lib/mode.d.ts +42 -0
- package/dist/lib/mode.d.ts.map +1 -0
- package/dist/lib/mode.js +128 -0
- package/dist/lib/mode.js.map +1 -0
- package/dist/lib/prompts.d.ts +8 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +58 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/question-handler.d.ts +23 -0
- package/dist/lib/question-handler.d.ts.map +1 -0
- package/dist/lib/question-handler.js +99 -0
- package/dist/lib/question-handler.js.map +1 -0
- package/dist/lib/sync.d.ts +40 -0
- package/dist/lib/sync.d.ts.map +1 -0
- package/dist/lib/sync.js +287 -0
- package/dist/lib/sync.js.map +1 -0
- package/dist/lib/user-input.d.ts +9 -0
- package/dist/lib/user-input.d.ts.map +1 -0
- package/dist/lib/user-input.js +62 -0
- package/dist/lib/user-input.js.map +1 -0
- package/dist/ui/inline-input.d.ts +25 -0
- package/dist/ui/inline-input.d.ts.map +1 -0
- package/dist/ui/inline-input.js +157 -0
- package/dist/ui/inline-input.js.map +1 -0
- package/dist/ui/prompts/index.d.ts +4 -0
- package/dist/ui/prompts/index.d.ts.map +1 -0
- package/dist/ui/prompts/index.js +4 -0
- package/dist/ui/prompts/index.js.map +1 -0
- package/dist/ui/prompts/input.d.ts +9 -0
- package/dist/ui/prompts/input.d.ts.map +1 -0
- package/dist/ui/prompts/input.js +124 -0
- package/dist/ui/prompts/input.js.map +1 -0
- package/dist/ui/prompts/select.d.ts +17 -0
- package/dist/ui/prompts/select.d.ts.map +1 -0
- package/dist/ui/prompts/select.js +214 -0
- package/dist/ui/prompts/select.js.map +1 -0
- package/dist/ui/prompts/utils.d.ts +81 -0
- package/dist/ui/prompts/utils.d.ts.map +1 -0
- package/dist/ui/prompts/utils.js +164 -0
- package/dist/ui/prompts/utils.js.map +1 -0
- package/dist/ui/task-display.d.ts +2 -0
- package/dist/ui/task-display.d.ts.map +1 -1
- package/dist/ui/task-display.js +48 -0
- package/dist/ui/task-display.js.map +1 -1
- package/package.json +13 -5
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
export function InputPrompt({ isActive, value, onChange, onSubmit, placeholder = 'Type your message...', showHint = true, hintDelay = 3000, queueCount = 0, }) {
|
|
6
|
+
const [showHintText, setShowHintText] = useState(false);
|
|
7
|
+
// Show hint after delay when not active
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (!showHint || isActive) {
|
|
10
|
+
setShowHintText(false);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const timer = setTimeout(() => setShowHintText(true), hintDelay);
|
|
14
|
+
return () => clearTimeout(timer);
|
|
15
|
+
}, [showHint, isActive, hintDelay]);
|
|
16
|
+
// Handle submit - trim and validate
|
|
17
|
+
const handleSubmit = (submittedValue) => {
|
|
18
|
+
const trimmed = submittedValue.trim();
|
|
19
|
+
if (trimmed) {
|
|
20
|
+
onSubmit(trimmed);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
// NOT active - show hint or nothing
|
|
24
|
+
if (!isActive) {
|
|
25
|
+
if (showHintText) {
|
|
26
|
+
return (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Press " }), _jsx(Text, { color: "cyan", children: "Esc" }), _jsx(Text, { color: "gray", children: " to add instructions" }), queueCount > 0 && (_jsxs(Text, { color: "gray", children: [" (", queueCount, " queued)"] }))] }));
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Active - show input (Claude Code style)
|
|
31
|
+
return (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "> " }), _jsx(TextInput, { value: value, onChange: onChange, onSubmit: handleSubmit, placeholder: placeholder, focus: true })] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=InputPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputPrompt.js","sourceRoot":"","sources":["../../src/components/InputPrompt.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAavC,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,sBAAsB,EACpC,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,IAAI,EAChB,UAAU,GAAG,CAAC,GACG;IACjB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpC,oCAAoC;IACpC,MAAM,YAAY,GAAG,CAAC,cAAsB,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,oCAAoC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAChC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qCAA4B,EAC7C,UAAU,GAAG,CAAC,IAAI,CACjB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,UAAU,gBAAgB,CACjD,IACG,CACP,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,yBAAa,EACpC,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,IAAI,GACX,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownText.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownText.tsx"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAkPD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,kDAwEvD"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
// Parse inline markdown: **bold**, *italic*, `code`, ~~strike~~
|
|
5
|
+
function parseInlineMarkdown(text) {
|
|
6
|
+
const parts = [];
|
|
7
|
+
let remaining = text;
|
|
8
|
+
// Regex patterns for inline markdown (ordered by specificity)
|
|
9
|
+
const patterns = [
|
|
10
|
+
{ regex: /\*\*([^*]+)\*\*/, type: 'bold' },
|
|
11
|
+
{ regex: /\*([^*]+)\*/, type: 'italic' },
|
|
12
|
+
{ regex: /`([^`]+)`/, type: 'code' },
|
|
13
|
+
{ regex: /~~([^~]+)~~/, type: 'strike' },
|
|
14
|
+
];
|
|
15
|
+
while (remaining.length > 0) {
|
|
16
|
+
let earliest = {
|
|
17
|
+
index: Infinity,
|
|
18
|
+
match: null,
|
|
19
|
+
type: 'text',
|
|
20
|
+
};
|
|
21
|
+
for (const { regex, type } of patterns) {
|
|
22
|
+
const match = remaining.match(regex);
|
|
23
|
+
if (match && match.index !== undefined && match.index < earliest.index) {
|
|
24
|
+
earliest = { index: match.index, match, type };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (earliest.match && earliest.index !== Infinity) {
|
|
28
|
+
// Add text before match
|
|
29
|
+
if (earliest.index > 0) {
|
|
30
|
+
parts.push({ type: 'text', text: remaining.slice(0, earliest.index) });
|
|
31
|
+
}
|
|
32
|
+
// Add formatted part
|
|
33
|
+
parts.push({ type: earliest.type, text: earliest.match[1] });
|
|
34
|
+
// Continue with rest
|
|
35
|
+
remaining = remaining.slice(earliest.index + earliest.match[0].length);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// No more matches, add remaining text
|
|
39
|
+
if (remaining) {
|
|
40
|
+
parts.push({ type: 'text', text: remaining });
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return parts;
|
|
46
|
+
}
|
|
47
|
+
// Render inline markdown with styling
|
|
48
|
+
function InlineMarkdown({ text }) {
|
|
49
|
+
const parts = parseInlineMarkdown(text);
|
|
50
|
+
if (parts.length === 0) {
|
|
51
|
+
return _jsx(Text, { children: text });
|
|
52
|
+
}
|
|
53
|
+
return (_jsx(Text, { wrap: "wrap", children: parts.map((part, i) => {
|
|
54
|
+
switch (part.type) {
|
|
55
|
+
case 'bold':
|
|
56
|
+
return _jsx(Text, { bold: true, children: part.text }, i);
|
|
57
|
+
case 'italic':
|
|
58
|
+
return _jsx(Text, { italic: true, children: part.text }, i);
|
|
59
|
+
case 'code':
|
|
60
|
+
return _jsx(Text, { color: "yellow", children: part.text }, i);
|
|
61
|
+
case 'strike':
|
|
62
|
+
return _jsx(Text, { strikethrough: true, children: part.text }, i);
|
|
63
|
+
default:
|
|
64
|
+
return _jsx(Text, { children: part.text }, i);
|
|
65
|
+
}
|
|
66
|
+
}) }));
|
|
67
|
+
}
|
|
68
|
+
// Check if a line is a table row
|
|
69
|
+
function isTableRow(line) {
|
|
70
|
+
return line.trim().startsWith('|') && line.trim().endsWith('|');
|
|
71
|
+
}
|
|
72
|
+
// Check if a line is a table separator (|---|---|)
|
|
73
|
+
function isTableSeparator(line) {
|
|
74
|
+
return /^\|[\s-:|]+\|$/.test(line.trim());
|
|
75
|
+
}
|
|
76
|
+
// Parse a table row into cells
|
|
77
|
+
function parseTableRow(line) {
|
|
78
|
+
return line
|
|
79
|
+
.split('|')
|
|
80
|
+
.slice(1, -1) // Remove empty strings from start/end
|
|
81
|
+
.map(cell => cell.trim());
|
|
82
|
+
}
|
|
83
|
+
// Render a table
|
|
84
|
+
function MarkdownTable({ table }) {
|
|
85
|
+
// Calculate column widths
|
|
86
|
+
const colWidths = table.headers.map((header, i) => {
|
|
87
|
+
const headerLen = header.length;
|
|
88
|
+
const maxCellLen = Math.max(...table.rows.map(row => (row[i] || '').length));
|
|
89
|
+
return Math.max(headerLen, maxCellLen, 3); // Minimum width of 3
|
|
90
|
+
});
|
|
91
|
+
// Create separator line
|
|
92
|
+
const separator = colWidths.map(w => '─'.repeat(w + 2)).join('┼');
|
|
93
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "\u2502" }), table.headers.map((header, i) => (_jsxs(React.Fragment, { children: [_jsxs(Text, { color: "cyan", bold: true, children: [" ", header.padEnd(colWidths[i]), " "] }), _jsx(Text, { color: "gray", children: "\u2502" })] }, i)))] }), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: ["\u251C", separator, "\u2524"] }) }), table.rows.map((row, rowIdx) => (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "\u2502" }), table.headers.map((_, colIdx) => (_jsxs(React.Fragment, { children: [_jsx(Text, { children: " " }), _jsx(InlineMarkdown, { text: (row[colIdx] || '').padEnd(colWidths[colIdx]) }), _jsx(Text, { children: " " }), _jsx(Text, { color: "gray", children: "\u2502" })] }, colIdx)))] }, rowIdx)))] }));
|
|
94
|
+
}
|
|
95
|
+
// Render a single markdown line
|
|
96
|
+
function MarkdownLine({ line }) {
|
|
97
|
+
// Headers (check most specific first)
|
|
98
|
+
if (line.startsWith('#### ')) {
|
|
99
|
+
return _jsx(InlineMarkdown, { text: line.slice(5) });
|
|
100
|
+
}
|
|
101
|
+
if (line.startsWith('### ')) {
|
|
102
|
+
return (_jsx(Text, { color: "cyan", bold: true, children: line.slice(4) }));
|
|
103
|
+
}
|
|
104
|
+
if (line.startsWith('## ')) {
|
|
105
|
+
return (_jsx(Text, { color: "cyan", bold: true, children: line.slice(3) }));
|
|
106
|
+
}
|
|
107
|
+
if (line.startsWith('# ')) {
|
|
108
|
+
return (_jsx(Text, { color: "cyan", bold: true, underline: true, children: line.slice(2) }));
|
|
109
|
+
}
|
|
110
|
+
// Bullet lists (-, *, +)
|
|
111
|
+
const bulletMatch = line.match(/^(\s*)([-*+])\s(.*)$/);
|
|
112
|
+
if (bulletMatch) {
|
|
113
|
+
const [, spaces, , content] = bulletMatch;
|
|
114
|
+
const indent = Math.floor((spaces?.length || 0) / 2);
|
|
115
|
+
return (_jsxs(Box, { marginLeft: indent * 2, children: [_jsx(Text, { color: "gray", children: "\u2022 " }), _jsx(InlineMarkdown, { text: content })] }));
|
|
116
|
+
}
|
|
117
|
+
// Numbered lists
|
|
118
|
+
const numberedMatch = line.match(/^(\s*)(\d+)\.\s(.*)$/);
|
|
119
|
+
if (numberedMatch) {
|
|
120
|
+
const [, spaces, num, content] = numberedMatch;
|
|
121
|
+
const indent = Math.floor((spaces?.length || 0) / 2);
|
|
122
|
+
return (_jsxs(Box, { marginLeft: indent * 2, children: [_jsxs(Text, { color: "gray", children: [num, ". "] }), _jsx(InlineMarkdown, { text: content })] }));
|
|
123
|
+
}
|
|
124
|
+
// Code block markers
|
|
125
|
+
if (line.startsWith('```')) {
|
|
126
|
+
const lang = line.slice(3).trim();
|
|
127
|
+
if (lang) {
|
|
128
|
+
return _jsxs(Text, { color: "gray", dimColor: true, children: ["\u2500\u2500\u2500 ", lang, " \u2500\u2500\u2500"] });
|
|
129
|
+
}
|
|
130
|
+
return _jsx(Text, { color: "gray", dimColor: true, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500" });
|
|
131
|
+
}
|
|
132
|
+
// Blockquotes
|
|
133
|
+
if (line.startsWith('> ')) {
|
|
134
|
+
return (_jsxs(Box, { marginLeft: 1, children: [_jsx(Text, { color: "gray", children: "\u2502 " }), _jsx(Text, { color: "gray", italic: true, children: line.slice(2) })] }));
|
|
135
|
+
}
|
|
136
|
+
// Horizontal rules
|
|
137
|
+
if (line.match(/^[-*_]{3,}$/)) {
|
|
138
|
+
return _jsx(Text, { color: "gray", children: '─'.repeat(40) });
|
|
139
|
+
}
|
|
140
|
+
// Empty lines
|
|
141
|
+
if (line.trim() === '') {
|
|
142
|
+
return _jsx(Text, { children: " " });
|
|
143
|
+
}
|
|
144
|
+
// Regular text with inline formatting
|
|
145
|
+
return _jsx(InlineMarkdown, { text: line });
|
|
146
|
+
}
|
|
147
|
+
// Main component - renders markdown text
|
|
148
|
+
export function MarkdownText({ text }) {
|
|
149
|
+
if (!text) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const lines = text.split('\n');
|
|
153
|
+
const elements = [];
|
|
154
|
+
// Track state
|
|
155
|
+
let inCodeBlock = false;
|
|
156
|
+
let i = 0;
|
|
157
|
+
while (i < lines.length) {
|
|
158
|
+
const line = lines[i];
|
|
159
|
+
// Toggle code block state
|
|
160
|
+
if (line.startsWith('```')) {
|
|
161
|
+
inCodeBlock = !inCodeBlock;
|
|
162
|
+
elements.push(_jsx(MarkdownLine, { line: line }, i));
|
|
163
|
+
i++;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Inside code block - render as plain text with different styling
|
|
167
|
+
if (inCodeBlock) {
|
|
168
|
+
elements.push(_jsxs(Text, { color: "gray", children: [' ', line] }, i));
|
|
169
|
+
i++;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// Check for table start
|
|
173
|
+
if (isTableRow(line)) {
|
|
174
|
+
const tableLines = [];
|
|
175
|
+
// Collect all consecutive table lines
|
|
176
|
+
while (i < lines.length && (isTableRow(lines[i]) || isTableSeparator(lines[i]))) {
|
|
177
|
+
tableLines.push(lines[i]);
|
|
178
|
+
i++;
|
|
179
|
+
}
|
|
180
|
+
// Parse the table
|
|
181
|
+
if (tableLines.length >= 2) {
|
|
182
|
+
const headers = parseTableRow(tableLines[0]);
|
|
183
|
+
const rows = [];
|
|
184
|
+
// Skip separator line (index 1), process data rows
|
|
185
|
+
for (let j = 2; j < tableLines.length; j++) {
|
|
186
|
+
if (!isTableSeparator(tableLines[j])) {
|
|
187
|
+
rows.push(parseTableRow(tableLines[j]));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
elements.push(_jsx(MarkdownTable, { table: { headers, rows } }, `table-${i}`));
|
|
191
|
+
}
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
// Regular line
|
|
195
|
+
elements.push(_jsx(MarkdownLine, { line: line }, i));
|
|
196
|
+
i++;
|
|
197
|
+
}
|
|
198
|
+
return _jsx(Box, { flexDirection: "column", children: elements });
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=MarkdownText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownText.js","sourceRoot":"","sources":["../../src/components/MarkdownText.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface Message {
|
|
2
|
+
id: string;
|
|
3
|
+
role: 'user' | 'assistant' | 'tool' | 'system';
|
|
4
|
+
content: string;
|
|
5
|
+
toolName?: string;
|
|
6
|
+
timestamp?: Date;
|
|
7
|
+
}
|
|
8
|
+
interface MessageListProps {
|
|
9
|
+
messages: Message[];
|
|
10
|
+
}
|
|
11
|
+
export declare function MessageList({ messages }: MessageListProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=MessageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../src/components/MessageList.tsx"],"names":[],"mappings":"AAmBA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,kDAmCzD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, Static } from 'ink';
|
|
3
|
+
import { MarkdownText } from './MarkdownText.js';
|
|
4
|
+
const TOOL_ICONS = {
|
|
5
|
+
Read: '📖',
|
|
6
|
+
Write: '✏️',
|
|
7
|
+
Edit: '📝',
|
|
8
|
+
MultiEdit: '📝',
|
|
9
|
+
Bash: '⚡',
|
|
10
|
+
Glob: '🔍',
|
|
11
|
+
Grep: '🔎',
|
|
12
|
+
WebSearch: '🌐',
|
|
13
|
+
WebFetch: '🌐',
|
|
14
|
+
TodoRead: '📋',
|
|
15
|
+
TodoWrite: '📋',
|
|
16
|
+
Task: '🤖',
|
|
17
|
+
};
|
|
18
|
+
export function MessageList({ messages }) {
|
|
19
|
+
if (messages.length === 0)
|
|
20
|
+
return null;
|
|
21
|
+
return (_jsx(Static, { items: messages, children: (message) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [message.role === 'user' && (_jsxs(Box, { children: [_jsx(Text, { color: "blue", bold: true, children: "You: " }), _jsx(Text, { wrap: "wrap", children: message.content })] })), message.role === 'assistant' && (_jsx(Box, { flexDirection: "column", children: _jsx(MarkdownText, { text: message.content }) })), message.role === 'tool' && (_jsxs(Box, { children: [_jsxs(Text, { color: "yellow", children: [TOOL_ICONS[message.toolName || ''] || '🔧', " ", message.toolName] }), _jsxs(Text, { color: "gray", children: [": ", message.content] })] })), message.role === 'system' && (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: message.content }) }))] }, message.id)) }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=MessageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../src/components/MessageList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,GAA2B;IACzC,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,IAAI;CACX,CAAC;AAcF,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAoB;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAE,QAAQ,YACpB,CAAC,OAAO,EAAE,EAAE,CAAC,CACZ,MAAC,GAAG,IAAkB,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzD,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAC1B,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4BAAa,EACpC,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,OAAO,CAAC,OAAO,GAAQ,IACtC,CACP,EACA,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAC/B,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,KAAC,YAAY,IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,GAAI,GACnC,CACP,EACA,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAC1B,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,aACjB,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,IAAI,OAAG,OAAO,CAAC,QAAQ,IACzD,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,OAAO,CAAC,OAAO,IAAQ,IACzC,CACP,EACA,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC5B,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,OAAO,CAAC,OAAO,GAAQ,GACzC,CACP,KAxBO,OAAO,CAAC,EAAE,CAyBd,CACP,GACM,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface SelectOption {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
}
|
|
6
|
+
interface SelectProps {
|
|
7
|
+
options: SelectOption[];
|
|
8
|
+
onSelect: (value: string) => void;
|
|
9
|
+
header?: string;
|
|
10
|
+
defaultIndex?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function Select({ options, onSelect, header, defaultIndex }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAgB,EAAE,EAAE,WAAW,2CAsElF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
export function Select({ options, onSelect, header, defaultIndex = 0 }) {
|
|
5
|
+
const [selectedIndex, setSelectedIndex] = useState(defaultIndex);
|
|
6
|
+
useInput((input, key) => {
|
|
7
|
+
// Arrow navigation
|
|
8
|
+
if (key.upArrow) {
|
|
9
|
+
setSelectedIndex(i => Math.max(0, i - 1));
|
|
10
|
+
}
|
|
11
|
+
if (key.downArrow) {
|
|
12
|
+
setSelectedIndex(i => Math.min(options.length - 1, i + 1));
|
|
13
|
+
}
|
|
14
|
+
// Number key quick select
|
|
15
|
+
if (input >= '1' && input <= '9') {
|
|
16
|
+
const idx = parseInt(input, 10) - 1;
|
|
17
|
+
if (idx < options.length) {
|
|
18
|
+
onSelect(options[idx].value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Enter to select
|
|
22
|
+
if (key.return) {
|
|
23
|
+
onSelect(options[selectedIndex].value);
|
|
24
|
+
}
|
|
25
|
+
// Escape to cancel (select first option or handle externally)
|
|
26
|
+
if (key.escape) {
|
|
27
|
+
// Could emit a cancel event, for now just return
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", children: [header && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "cyan", bold: true, children: header }) })), options.map((option, index) => {
|
|
31
|
+
const isSelected = index === selectedIndex;
|
|
32
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'white', children: isSelected ? '❯ ' : ' ' }), _jsxs(Text, { color: isSelected ? 'cyan' : 'gray', children: [index + 1, ".", ' '] }), _jsx(Text, { color: isSelected ? 'white' : 'gray', bold: isSelected, children: option.label })] }), option.description && isSelected && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, wrap: "wrap", children: option.description }) }))] }, option.value));
|
|
33
|
+
}), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["\u2191\u2193 to navigate, 1-", options.length, " or Enter to select"] }) })] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../src/components/Spinner.tsx"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAsB,EAAE,KAAiB,EAAE,EAAE,YAAY,2CASlF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import InkSpinner from 'ink-spinner';
|
|
4
|
+
export function Spinner({ text = 'Processing...', color = 'magenta' }) {
|
|
5
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: color, children: _jsx(InkSpinner, { type: "dots" }) }), _jsxs(Text, { color: "gray", children: [" ", text] })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../src/components/Spinner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,UAAU,MAAM,aAAa,CAAC;AAOrC,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,GAAG,eAAe,EAAE,KAAK,GAAG,SAAS,EAAgB;IACjF,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAChB,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,GAAG,GACrB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,IAAI,IAAQ,IAC7B,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingText.d.ts","sourceRoot":"","sources":["../../src/components/StreamingText.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,UAAiB,EAAE,EAAE,kBAAkB,kDAS5E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { MarkdownText } from './MarkdownText.js';
|
|
4
|
+
export function StreamingText({ text, showCursor = true }) {
|
|
5
|
+
if (!text)
|
|
6
|
+
return null;
|
|
7
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(MarkdownText, { text: text }), showCursor && _jsx(Text, { color: "gray", children: "\u258C" })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=StreamingText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingText.js","sourceRoot":"","sources":["../../src/components/StreamingText.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,EAAsB;IAC3E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,GAAI,EAC3B,UAAU,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,IACtC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface Story {
|
|
2
|
+
_id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
acceptanceCriteria?: string[];
|
|
6
|
+
notes?: string;
|
|
7
|
+
priority?: string;
|
|
8
|
+
}
|
|
9
|
+
interface TaskCardProps {
|
|
10
|
+
story: Story;
|
|
11
|
+
}
|
|
12
|
+
export declare function TaskCard({ story }: TaskCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=TaskCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../src/components/TaskCard.tsx"],"names":[],"mappings":"AAGA,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,2CAqDhD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function TaskCard({ story }) {
|
|
4
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, marginBottom: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: story.title }), story.priority && (_jsxs(Text, { color: "yellow", children: [" [", story.priority, "]"] }))] }), story.description && (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { color: "gray", children: "Description:" }), _jsx(Text, { wrap: "wrap", children: story.description })] })), story.acceptanceCriteria && story.acceptanceCriteria.length > 0 && (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { color: "gray", children: "Acceptance Criteria:" }), story.acceptanceCriteria.map((criterion, i) => (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: " - " }), _jsx(Text, { wrap: "wrap", children: criterion })] }, i)))] })), story.notes && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "gray", children: "Notes:" }), _jsx(Text, { color: "gray", italic: true, wrap: "wrap", children: story.notes })] })), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["ID: ", story._id] }) })] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=TaskCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../src/components/TaskCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAehC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAiB;IAC/C,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,aAGf,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kBAAE,KAAK,CAAC,KAAK,GAAQ,EAC3C,KAAK,CAAC,QAAQ,IAAI,CACjB,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,mBAAI,KAAK,CAAC,QAAQ,SAAS,CAChD,IACG,EAGL,KAAK,CAAC,WAAW,IAAI,CACpB,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,EACtC,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,KAAK,CAAC,WAAW,GAAQ,IACxC,CACP,EAGA,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,CAClE,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qCAA4B,EAC7C,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9C,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,qBAAY,EAC/B,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,SAAS,GAAQ,KAF5B,CAAC,CAGL,CACP,CAAC,IACE,CACP,EAGA,KAAK,CAAC,KAAK,IAAI,CACd,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAChC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,QAAC,IAAI,EAAC,MAAM,YAAE,KAAK,CAAC,KAAK,GAAQ,IACtD,CACP,EAGD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,2BAAM,KAAK,CAAC,GAAG,IAAQ,GAC9C,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ToolUseDisplayProps {
|
|
2
|
+
toolName: string;
|
|
3
|
+
input: Record<string, unknown>;
|
|
4
|
+
isComplete?: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function ToolUseDisplay({ toolName, input, isComplete, error }: ToolUseDisplayProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ToolUseDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolUseDisplay.d.ts","sourceRoot":"","sources":["../../src/components/ToolUseDisplay.tsx"],"names":[],"mappings":"AAkBA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,mBAAmB,2CAkBzF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
const TOOL_ICONS = {
|
|
4
|
+
Read: '📖',
|
|
5
|
+
Write: '✏️',
|
|
6
|
+
Edit: '📝',
|
|
7
|
+
MultiEdit: '📝',
|
|
8
|
+
Bash: '⚡',
|
|
9
|
+
Glob: '🔍',
|
|
10
|
+
Grep: '🔎',
|
|
11
|
+
WebSearch: '🌐',
|
|
12
|
+
WebFetch: '🌐',
|
|
13
|
+
TodoRead: '📋',
|
|
14
|
+
TodoWrite: '📋',
|
|
15
|
+
Task: '🤖',
|
|
16
|
+
};
|
|
17
|
+
function formatInput(input) {
|
|
18
|
+
if (input.command) {
|
|
19
|
+
const cmd = String(input.command);
|
|
20
|
+
return cmd.length > 50 ? cmd.slice(0, 50) + '...' : cmd;
|
|
21
|
+
}
|
|
22
|
+
if (input.file_path)
|
|
23
|
+
return String(input.file_path);
|
|
24
|
+
if (input.pattern)
|
|
25
|
+
return String(input.pattern);
|
|
26
|
+
if (input.query)
|
|
27
|
+
return String(input.query);
|
|
28
|
+
if (input.url)
|
|
29
|
+
return String(input.url);
|
|
30
|
+
const str = JSON.stringify(input);
|
|
31
|
+
return str.length > 50 ? str.slice(0, 50) + '...' : str;
|
|
32
|
+
}
|
|
33
|
+
export function ToolUseDisplay({ toolName, input, isComplete, error }) {
|
|
34
|
+
const icon = TOOL_ICONS[toolName] || '🔧';
|
|
35
|
+
const borderColor = error ? 'red' : isComplete ? 'green' : 'yellow';
|
|
36
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: borderColor, paddingX: 1, marginY: 1, children: [_jsxs(Text, { color: borderColor, children: [icon, " "] }), _jsx(Text, { bold: true, children: toolName }), _jsxs(Text, { color: "gray", children: [": ", formatInput(input)] }), isComplete && !error && _jsx(Text, { color: "green", children: " \u2713" }), error && _jsx(Text, { color: "red", children: " \u2717" })] }));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ToolUseDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolUseDisplay.js","sourceRoot":"","sources":["../../src/components/ToolUseDisplay.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,UAAU,GAA2B;IACzC,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,IAAI;CACX,CAAC;AASF,SAAS,WAAW,CAAC,KAA8B;IACjD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAuB;IACxF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEpE,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,aAEV,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,aAAG,IAAI,SAAS,EACxC,KAAC,IAAI,IAAC,IAAI,kBAAE,QAAQ,GAAQ,EAC5B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,WAAW,CAAC,KAAK,CAAC,IAAQ,EAC/C,UAAU,IAAI,CAAC,KAAK,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBAAU,EACrD,KAAK,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAU,IACjC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { Header } from './Header.js';
|
|
2
|
+
export { TaskCard } from './TaskCard.js';
|
|
3
|
+
export { MessageList, type Message } from './MessageList.js';
|
|
4
|
+
export { StreamingText } from './StreamingText.js';
|
|
5
|
+
export { MarkdownText } from './MarkdownText.js';
|
|
6
|
+
export { ToolUseDisplay } from './ToolUseDisplay.js';
|
|
7
|
+
export { Spinner } from './Spinner.js';
|
|
8
|
+
export { InputPrompt } from './InputPrompt.js';
|
|
9
|
+
export { Select, type SelectOption } from './Select.js';
|
|
10
|
+
export { ConfirmPrompt } from './ConfirmPrompt.js';
|
|
11
|
+
export { DevApp } from './DevApp.js';
|
|
12
|
+
export { ExecutionView } from './ExecutionView.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { Header } from './Header.js';
|
|
2
|
+
export { TaskCard } from './TaskCard.js';
|
|
3
|
+
export { MessageList } from './MessageList.js';
|
|
4
|
+
export { StreamingText } from './StreamingText.js';
|
|
5
|
+
export { MarkdownText } from './MarkdownText.js';
|
|
6
|
+
export { ToolUseDisplay } from './ToolUseDisplay.js';
|
|
7
|
+
export { Spinner } from './Spinner.js';
|
|
8
|
+
export { InputPrompt } from './InputPrompt.js';
|
|
9
|
+
export { Select } from './Select.js';
|
|
10
|
+
export { ConfirmPrompt } from './ConfirmPrompt.js';
|
|
11
|
+
export { DevApp } from './DevApp.js';
|
|
12
|
+
export { ExecutionView } from './ExecutionView.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ExecutionMode } from '../lib/mode.js';
|
|
2
|
+
import type { Message } from '../components/MessageList.js';
|
|
3
|
+
interface ToolInfo {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
input: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
interface UseClaudeAgentOptions {
|
|
9
|
+
workingDir: string;
|
|
10
|
+
mode: ExecutionMode;
|
|
11
|
+
onMessage?: (message: Message) => void;
|
|
12
|
+
onToolUse?: (tool: ToolInfo) => void;
|
|
13
|
+
onToolResult?: (toolId: string, result: string, error?: string) => void;
|
|
14
|
+
onComplete?: () => void;
|
|
15
|
+
onError?: (error: Error) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function useClaudeAgent(options: UseClaudeAgentOptions): {
|
|
18
|
+
isProcessing: boolean;
|
|
19
|
+
currentTool: ToolInfo | null;
|
|
20
|
+
streamingText: string;
|
|
21
|
+
sendPrompt: (prompt: string) => Promise<void>;
|
|
22
|
+
interrupt: () => void;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=useClaudeAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClaudeAgent.d.ts","sourceRoot":"","sources":["../../src/hooks/useClaudeAgent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB;;;;yBAWb,MAAM;;EA+GrD"}
|