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.
Files changed (153) hide show
  1. package/dist/commands/auth.d.ts +3 -0
  2. package/dist/commands/auth.d.ts.map +1 -0
  3. package/dist/commands/auth.js +21 -0
  4. package/dist/commands/auth.js.map +1 -0
  5. package/dist/commands/dev.d.ts.map +1 -1
  6. package/dist/commands/dev.js +201 -62
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/components/ConfirmPrompt.d.ts +8 -0
  9. package/dist/components/ConfirmPrompt.d.ts.map +1 -0
  10. package/dist/components/ConfirmPrompt.js +19 -0
  11. package/dist/components/ConfirmPrompt.js.map +1 -0
  12. package/dist/components/DevApp.d.ts +30 -0
  13. package/dist/components/DevApp.d.ts.map +1 -0
  14. package/dist/components/DevApp.js +97 -0
  15. package/dist/components/DevApp.js.map +1 -0
  16. package/dist/components/ExecutionView.d.ts +25 -0
  17. package/dist/components/ExecutionView.d.ts.map +1 -0
  18. package/dist/components/ExecutionView.js +498 -0
  19. package/dist/components/ExecutionView.js.map +1 -0
  20. package/dist/components/Header.d.ts +10 -0
  21. package/dist/components/Header.d.ts.map +1 -0
  22. package/dist/components/Header.js +22 -0
  23. package/dist/components/Header.js.map +1 -0
  24. package/dist/components/InputPrompt.d.ts +13 -0
  25. package/dist/components/InputPrompt.d.ts.map +1 -0
  26. package/dist/components/InputPrompt.js +33 -0
  27. package/dist/components/InputPrompt.js.map +1 -0
  28. package/dist/components/MarkdownText.d.ts +6 -0
  29. package/dist/components/MarkdownText.d.ts.map +1 -0
  30. package/dist/components/MarkdownText.js +200 -0
  31. package/dist/components/MarkdownText.js.map +1 -0
  32. package/dist/components/MessageList.d.ts +13 -0
  33. package/dist/components/MessageList.d.ts.map +1 -0
  34. package/dist/components/MessageList.js +23 -0
  35. package/dist/components/MessageList.js.map +1 -0
  36. package/dist/components/Select.d.ts +14 -0
  37. package/dist/components/Select.d.ts.map +1 -0
  38. package/dist/components/Select.js +35 -0
  39. package/dist/components/Select.js.map +1 -0
  40. package/dist/components/Spinner.d.ts +7 -0
  41. package/dist/components/Spinner.d.ts.map +1 -0
  42. package/dist/components/Spinner.js +7 -0
  43. package/dist/components/Spinner.js.map +1 -0
  44. package/dist/components/StreamingText.d.ts +7 -0
  45. package/dist/components/StreamingText.d.ts.map +1 -0
  46. package/dist/components/StreamingText.js +9 -0
  47. package/dist/components/StreamingText.js.map +1 -0
  48. package/dist/components/TaskCard.d.ts +14 -0
  49. package/dist/components/TaskCard.d.ts.map +1 -0
  50. package/dist/components/TaskCard.js +6 -0
  51. package/dist/components/TaskCard.js.map +1 -0
  52. package/dist/components/ToolUseDisplay.d.ts +9 -0
  53. package/dist/components/ToolUseDisplay.d.ts.map +1 -0
  54. package/dist/components/ToolUseDisplay.js +38 -0
  55. package/dist/components/ToolUseDisplay.js.map +1 -0
  56. package/dist/components/index.d.ts +13 -0
  57. package/dist/components/index.d.ts.map +1 -0
  58. package/dist/components/index.js +13 -0
  59. package/dist/components/index.js.map +1 -0
  60. package/dist/hooks/index.d.ts +3 -0
  61. package/dist/hooks/index.d.ts.map +1 -0
  62. package/dist/hooks/index.js +3 -0
  63. package/dist/hooks/index.js.map +1 -0
  64. package/dist/hooks/useClaudeAgent.d.ts +25 -0
  65. package/dist/hooks/useClaudeAgent.d.ts.map +1 -0
  66. package/dist/hooks/useClaudeAgent.js +114 -0
  67. package/dist/hooks/useClaudeAgent.js.map +1 -0
  68. package/dist/hooks/useMessageQueue.d.ts +21 -0
  69. package/dist/hooks/useMessageQueue.d.ts.map +1 -0
  70. package/dist/hooks/useMessageQueue.js +77 -0
  71. package/dist/hooks/useMessageQueue.js.map +1 -0
  72. package/dist/index.js +3 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/lib/agent.d.ts +28 -0
  75. package/dist/lib/agent.d.ts.map +1 -0
  76. package/dist/lib/agent.js +184 -0
  77. package/dist/lib/agent.js.map +1 -0
  78. package/dist/lib/api.d.ts +3 -0
  79. package/dist/lib/api.d.ts.map +1 -1
  80. package/dist/lib/api.js.map +1 -1
  81. package/dist/lib/auth-check.d.ts +8 -0
  82. package/dist/lib/auth-check.d.ts.map +1 -0
  83. package/dist/lib/auth-check.js +68 -0
  84. package/dist/lib/auth-check.js.map +1 -0
  85. package/dist/lib/claude-md.d.ts +5 -0
  86. package/dist/lib/claude-md.d.ts.map +1 -0
  87. package/dist/lib/claude-md.js +61 -0
  88. package/dist/lib/claude-md.js.map +1 -0
  89. package/dist/lib/config.d.ts +0 -1
  90. package/dist/lib/config.d.ts.map +1 -1
  91. package/dist/lib/config.js +1 -8
  92. package/dist/lib/config.js.map +1 -1
  93. package/dist/lib/execution-logger.d.ts +77 -0
  94. package/dist/lib/execution-logger.d.ts.map +1 -0
  95. package/dist/lib/execution-logger.js +233 -0
  96. package/dist/lib/execution-logger.js.map +1 -0
  97. package/dist/lib/git.d.ts +6 -0
  98. package/dist/lib/git.d.ts.map +1 -1
  99. package/dist/lib/git.js +32 -0
  100. package/dist/lib/git.js.map +1 -1
  101. package/dist/lib/input-monitor.d.ts +21 -0
  102. package/dist/lib/input-monitor.d.ts.map +1 -0
  103. package/dist/lib/input-monitor.js +110 -0
  104. package/dist/lib/input-monitor.js.map +1 -0
  105. package/dist/lib/manual-steps.d.ts +16 -0
  106. package/dist/lib/manual-steps.d.ts.map +1 -0
  107. package/dist/lib/manual-steps.js +149 -0
  108. package/dist/lib/manual-steps.js.map +1 -0
  109. package/dist/lib/mode.d.ts +42 -0
  110. package/dist/lib/mode.d.ts.map +1 -0
  111. package/dist/lib/mode.js +128 -0
  112. package/dist/lib/mode.js.map +1 -0
  113. package/dist/lib/prompts.d.ts +8 -0
  114. package/dist/lib/prompts.d.ts.map +1 -0
  115. package/dist/lib/prompts.js +58 -0
  116. package/dist/lib/prompts.js.map +1 -0
  117. package/dist/lib/question-handler.d.ts +23 -0
  118. package/dist/lib/question-handler.d.ts.map +1 -0
  119. package/dist/lib/question-handler.js +99 -0
  120. package/dist/lib/question-handler.js.map +1 -0
  121. package/dist/lib/sync.d.ts +40 -0
  122. package/dist/lib/sync.d.ts.map +1 -0
  123. package/dist/lib/sync.js +287 -0
  124. package/dist/lib/sync.js.map +1 -0
  125. package/dist/lib/user-input.d.ts +9 -0
  126. package/dist/lib/user-input.d.ts.map +1 -0
  127. package/dist/lib/user-input.js +62 -0
  128. package/dist/lib/user-input.js.map +1 -0
  129. package/dist/ui/inline-input.d.ts +25 -0
  130. package/dist/ui/inline-input.d.ts.map +1 -0
  131. package/dist/ui/inline-input.js +157 -0
  132. package/dist/ui/inline-input.js.map +1 -0
  133. package/dist/ui/prompts/index.d.ts +4 -0
  134. package/dist/ui/prompts/index.d.ts.map +1 -0
  135. package/dist/ui/prompts/index.js +4 -0
  136. package/dist/ui/prompts/index.js.map +1 -0
  137. package/dist/ui/prompts/input.d.ts +9 -0
  138. package/dist/ui/prompts/input.d.ts.map +1 -0
  139. package/dist/ui/prompts/input.js +124 -0
  140. package/dist/ui/prompts/input.js.map +1 -0
  141. package/dist/ui/prompts/select.d.ts +17 -0
  142. package/dist/ui/prompts/select.d.ts.map +1 -0
  143. package/dist/ui/prompts/select.js +214 -0
  144. package/dist/ui/prompts/select.js.map +1 -0
  145. package/dist/ui/prompts/utils.d.ts +81 -0
  146. package/dist/ui/prompts/utils.d.ts.map +1 -0
  147. package/dist/ui/prompts/utils.js +164 -0
  148. package/dist/ui/prompts/utils.js.map +1 -0
  149. package/dist/ui/task-display.d.ts +2 -0
  150. package/dist/ui/task-display.d.ts.map +1 -1
  151. package/dist/ui/task-display.js +48 -0
  152. package/dist/ui/task-display.js.map +1 -1
  153. 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,6 @@
1
+ interface MarkdownTextProps {
2
+ text: string;
3
+ }
4
+ export declare function MarkdownText({ text }: MarkdownTextProps): import("react/jsx-runtime").JSX.Element | null;
5
+ export {};
6
+ //# sourceMappingURL=MarkdownText.d.ts.map
@@ -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,7 @@
1
+ interface SpinnerProps {
2
+ text?: string;
3
+ color?: string;
4
+ }
5
+ export declare function Spinner({ text, color }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -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,7 @@
1
+ interface StreamingTextProps {
2
+ text: string;
3
+ showCursor?: boolean;
4
+ }
5
+ export declare function StreamingText({ text, showCursor }: StreamingTextProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
7
+ //# sourceMappingURL=StreamingText.d.ts.map
@@ -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,3 @@
1
+ export { useClaudeAgent } from './useClaudeAgent.js';
2
+ export { useMessageQueue } from './useMessageQueue.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export { useClaudeAgent } from './useClaudeAgent.js';
2
+ export { useMessageQueue } from './useMessageQueue.js';
3
+ //# sourceMappingURL=index.js.map
@@ -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"}