@renxqoo/renx-code 0.0.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/dist/App.d.ts +2 -0
  4. package/dist/App.d.ts.map +1 -0
  5. package/dist/App.js +170 -0
  6. package/dist/App.js.map +1 -0
  7. package/dist/agent/prompts/system.d.ts +24 -0
  8. package/dist/agent/prompts/system.d.ts.map +1 -0
  9. package/dist/agent/prompts/system.js +222 -0
  10. package/dist/agent/prompts/system.js.map +1 -0
  11. package/dist/agent/runtime/event-format.d.ts +17 -0
  12. package/dist/agent/runtime/event-format.d.ts.map +1 -0
  13. package/dist/agent/runtime/event-format.js +194 -0
  14. package/dist/agent/runtime/event-format.js.map +1 -0
  15. package/dist/agent/runtime/model-types.d.ts +13 -0
  16. package/dist/agent/runtime/model-types.d.ts.map +1 -0
  17. package/dist/agent/runtime/model-types.js +1 -0
  18. package/dist/agent/runtime/model-types.js.map +1 -0
  19. package/dist/agent/runtime/runtime.d.ts +16 -0
  20. package/dist/agent/runtime/runtime.d.ts.map +1 -0
  21. package/dist/agent/runtime/runtime.js +691 -0
  22. package/dist/agent/runtime/runtime.js.map +1 -0
  23. package/dist/agent/runtime/source-modules.d.ts +176 -0
  24. package/dist/agent/runtime/source-modules.d.ts.map +1 -0
  25. package/dist/agent/runtime/source-modules.js +110 -0
  26. package/dist/agent/runtime/source-modules.js.map +1 -0
  27. package/dist/agent/runtime/tool-call-buffer.d.ts +12 -0
  28. package/dist/agent/runtime/tool-call-buffer.d.ts.map +1 -0
  29. package/dist/agent/runtime/tool-call-buffer.js +48 -0
  30. package/dist/agent/runtime/tool-call-buffer.js.map +1 -0
  31. package/dist/agent/runtime/tool-confirmation.d.ts +3 -0
  32. package/dist/agent/runtime/tool-confirmation.d.ts.map +1 -0
  33. package/dist/agent/runtime/tool-confirmation.js +9 -0
  34. package/dist/agent/runtime/tool-confirmation.js.map +1 -0
  35. package/dist/agent/runtime/types.d.ts +86 -0
  36. package/dist/agent/runtime/types.d.ts.map +1 -0
  37. package/dist/agent/runtime/types.js +1 -0
  38. package/dist/agent/runtime/types.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +43 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/commands/slash-commands.d.ts +11 -0
  44. package/dist/commands/slash-commands.d.ts.map +1 -0
  45. package/dist/commands/slash-commands.js +48 -0
  46. package/dist/commands/slash-commands.js.map +1 -0
  47. package/dist/components/chat/assistant-reply.d.ts +13 -0
  48. package/dist/components/chat/assistant-reply.d.ts.map +1 -0
  49. package/dist/components/chat/assistant-reply.js +78 -0
  50. package/dist/components/chat/assistant-reply.js.map +1 -0
  51. package/dist/components/chat/assistant-segment.d.ts +8 -0
  52. package/dist/components/chat/assistant-segment.d.ts.map +1 -0
  53. package/dist/components/chat/assistant-segment.js +54 -0
  54. package/dist/components/chat/assistant-segment.js.map +1 -0
  55. package/dist/components/chat/assistant-tool-group.d.ts +7 -0
  56. package/dist/components/chat/assistant-tool-group.d.ts.map +1 -0
  57. package/dist/components/chat/assistant-tool-group.js +695 -0
  58. package/dist/components/chat/assistant-tool-group.js.map +1 -0
  59. package/dist/components/chat/code-block.d.ts +16 -0
  60. package/dist/components/chat/code-block.d.ts.map +1 -0
  61. package/dist/components/chat/code-block.js +194 -0
  62. package/dist/components/chat/code-block.js.map +1 -0
  63. package/dist/components/chat/prompt-card.d.ts +9 -0
  64. package/dist/components/chat/prompt-card.d.ts.map +1 -0
  65. package/dist/components/chat/prompt-card.js +18 -0
  66. package/dist/components/chat/prompt-card.js.map +1 -0
  67. package/dist/components/chat/segment-groups.d.ts +24 -0
  68. package/dist/components/chat/segment-groups.d.ts.map +1 -0
  69. package/dist/components/chat/segment-groups.js +69 -0
  70. package/dist/components/chat/segment-groups.js.map +1 -0
  71. package/dist/components/chat/turn-item.d.ts +9 -0
  72. package/dist/components/chat/turn-item.d.ts.map +1 -0
  73. package/dist/components/chat/turn-item.js +11 -0
  74. package/dist/components/chat/turn-item.js.map +1 -0
  75. package/dist/components/conversation-panel.d.ts +8 -0
  76. package/dist/components/conversation-panel.d.ts.map +1 -0
  77. package/dist/components/conversation-panel.js +8 -0
  78. package/dist/components/conversation-panel.js.map +1 -0
  79. package/dist/components/file-mention-menu.d.ts +11 -0
  80. package/dist/components/file-mention-menu.d.ts.map +1 -0
  81. package/dist/components/file-mention-menu.js +15 -0
  82. package/dist/components/file-mention-menu.js.map +1 -0
  83. package/dist/components/file-picker-dialog.d.ts +21 -0
  84. package/dist/components/file-picker-dialog.d.ts.map +1 -0
  85. package/dist/components/file-picker-dialog.js +48 -0
  86. package/dist/components/file-picker-dialog.js.map +1 -0
  87. package/dist/components/footer-hints.d.ts +7 -0
  88. package/dist/components/footer-hints.d.ts.map +1 -0
  89. package/dist/components/footer-hints.js +29 -0
  90. package/dist/components/footer-hints.js.map +1 -0
  91. package/dist/components/model-picker-dialog.d.ts +20 -0
  92. package/dist/components/model-picker-dialog.d.ts.map +1 -0
  93. package/dist/components/model-picker-dialog.js +72 -0
  94. package/dist/components/model-picker-dialog.js.map +1 -0
  95. package/dist/components/prompt.d.ts +18 -0
  96. package/dist/components/prompt.d.ts.map +1 -0
  97. package/dist/components/prompt.js +96 -0
  98. package/dist/components/prompt.js.map +1 -0
  99. package/dist/components/slash-command-menu.d.ts +9 -0
  100. package/dist/components/slash-command-menu.d.ts.map +1 -0
  101. package/dist/components/slash-command-menu.js +20 -0
  102. package/dist/components/slash-command-menu.js.map +1 -0
  103. package/dist/components/tool-confirm-dialog-content.d.ts +15 -0
  104. package/dist/components/tool-confirm-dialog-content.d.ts.map +1 -0
  105. package/dist/components/tool-confirm-dialog-content.js +143 -0
  106. package/dist/components/tool-confirm-dialog-content.js.map +1 -0
  107. package/dist/components/tool-confirm-dialog.d.ts +12 -0
  108. package/dist/components/tool-confirm-dialog.d.ts.map +1 -0
  109. package/dist/components/tool-confirm-dialog.js +21 -0
  110. package/dist/components/tool-confirm-dialog.js.map +1 -0
  111. package/dist/components/tool-display-config.d.ts +11 -0
  112. package/dist/components/tool-display-config.d.ts.map +1 -0
  113. package/dist/components/tool-display-config.js +94 -0
  114. package/dist/components/tool-display-config.js.map +1 -0
  115. package/dist/config/paths.d.ts +7 -0
  116. package/dist/config/paths.d.ts.map +1 -0
  117. package/dist/config/paths.js +24 -0
  118. package/dist/config/paths.js.map +1 -0
  119. package/dist/files/attachment-capabilities.d.ts +19 -0
  120. package/dist/files/attachment-capabilities.d.ts.map +1 -0
  121. package/dist/files/attachment-capabilities.js +26 -0
  122. package/dist/files/attachment-capabilities.js.map +1 -0
  123. package/dist/files/attachment-content.d.ts +5 -0
  124. package/dist/files/attachment-content.d.ts.map +1 -0
  125. package/dist/files/attachment-content.js +117 -0
  126. package/dist/files/attachment-content.js.map +1 -0
  127. package/dist/files/file-mention-query.d.ts +9 -0
  128. package/dist/files/file-mention-query.d.ts.map +1 -0
  129. package/dist/files/file-mention-query.js +23 -0
  130. package/dist/files/file-mention-query.js.map +1 -0
  131. package/dist/files/prompt-display.d.ts +3 -0
  132. package/dist/files/prompt-display.d.ts.map +1 -0
  133. package/dist/files/prompt-display.js +11 -0
  134. package/dist/files/prompt-display.js.map +1 -0
  135. package/dist/files/types.d.ts +6 -0
  136. package/dist/files/types.d.ts.map +1 -0
  137. package/dist/files/types.js +1 -0
  138. package/dist/files/types.js.map +1 -0
  139. package/dist/files/workspace-files.d.ts +3 -0
  140. package/dist/files/workspace-files.d.ts.map +1 -0
  141. package/dist/files/workspace-files.js +50 -0
  142. package/dist/files/workspace-files.js.map +1 -0
  143. package/dist/hooks/agent-event-handlers.d.ts +11 -0
  144. package/dist/hooks/agent-event-handlers.d.ts.map +1 -0
  145. package/dist/hooks/agent-event-handlers.js +137 -0
  146. package/dist/hooks/agent-event-handlers.js.map +1 -0
  147. package/dist/hooks/chat-local-replies.d.ts +9 -0
  148. package/dist/hooks/chat-local-replies.d.ts.map +1 -0
  149. package/dist/hooks/chat-local-replies.js +54 -0
  150. package/dist/hooks/chat-local-replies.js.map +1 -0
  151. package/dist/hooks/turn-updater.d.ts +9 -0
  152. package/dist/hooks/turn-updater.d.ts.map +1 -0
  153. package/dist/hooks/turn-updater.js +103 -0
  154. package/dist/hooks/turn-updater.js.map +1 -0
  155. package/dist/hooks/use-agent-chat.d.ts +29 -0
  156. package/dist/hooks/use-agent-chat.d.ts.map +1 -0
  157. package/dist/hooks/use-agent-chat.js +455 -0
  158. package/dist/hooks/use-agent-chat.js.map +1 -0
  159. package/dist/hooks/use-file-mention-menu.d.ts +22 -0
  160. package/dist/hooks/use-file-mention-menu.d.ts.map +1 -0
  161. package/dist/hooks/use-file-mention-menu.js +137 -0
  162. package/dist/hooks/use-file-mention-menu.js.map +1 -0
  163. package/dist/hooks/use-file-picker.d.ts +21 -0
  164. package/dist/hooks/use-file-picker.d.ts.map +1 -0
  165. package/dist/hooks/use-file-picker.js +145 -0
  166. package/dist/hooks/use-file-picker.js.map +1 -0
  167. package/dist/hooks/use-model-picker.d.ts +23 -0
  168. package/dist/hooks/use-model-picker.d.ts.map +1 -0
  169. package/dist/hooks/use-model-picker.js +151 -0
  170. package/dist/hooks/use-model-picker.js.map +1 -0
  171. package/dist/hooks/use-slash-command-menu.d.ts +19 -0
  172. package/dist/hooks/use-slash-command-menu.d.ts.map +1 -0
  173. package/dist/hooks/use-slash-command-menu.js +101 -0
  174. package/dist/hooks/use-slash-command-menu.js.map +1 -0
  175. package/dist/index.d.ts +2 -0
  176. package/dist/index.d.ts.map +1 -0
  177. package/dist/index.js +39 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/runtime/clipboard.d.ts +10 -0
  180. package/dist/runtime/clipboard.d.ts.map +1 -0
  181. package/dist/runtime/clipboard.js +64 -0
  182. package/dist/runtime/clipboard.js.map +1 -0
  183. package/dist/runtime/exit.d.ts +7 -0
  184. package/dist/runtime/exit.d.ts.map +1 -0
  185. package/dist/runtime/exit.js +85 -0
  186. package/dist/runtime/exit.js.map +1 -0
  187. package/dist/runtime/terminal-theme.d.ts +25 -0
  188. package/dist/runtime/terminal-theme.d.ts.map +1 -0
  189. package/dist/runtime/terminal-theme.js +148 -0
  190. package/dist/runtime/terminal-theme.js.map +1 -0
  191. package/dist/types/chat.d.ts +29 -0
  192. package/dist/types/chat.d.ts.map +1 -0
  193. package/dist/types/chat.js +1 -0
  194. package/dist/types/chat.js.map +1 -0
  195. package/dist/types/message-content.d.ts +38 -0
  196. package/dist/types/message-content.d.ts.map +1 -0
  197. package/dist/types/message-content.js +1 -0
  198. package/dist/types/message-content.js.map +1 -0
  199. package/dist/ui/open-code-theme.d.ts +58 -0
  200. package/dist/ui/open-code-theme.d.ts.map +1 -0
  201. package/dist/ui/open-code-theme.js +113 -0
  202. package/dist/ui/open-code-theme.js.map +1 -0
  203. package/dist/ui/opencode-markdown.d.ts +7 -0
  204. package/dist/ui/opencode-markdown.d.ts.map +1 -0
  205. package/dist/ui/opencode-markdown.js +169 -0
  206. package/dist/ui/opencode-markdown.js.map +1 -0
  207. package/dist/ui/theme.d.ts +68 -0
  208. package/dist/ui/theme.d.ts.map +1 -0
  209. package/dist/ui/theme.js +80 -0
  210. package/dist/ui/theme.js.map +1 -0
  211. package/dist/utils/time.d.ts +2 -0
  212. package/dist/utils/time.d.ts.map +1 -0
  213. package/dist/utils/time.js +7 -0
  214. package/dist/utils/time.js.map +1 -0
  215. package/package.json +128 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 coding-agent-v2 contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,278 @@
1
+ # Renx Code
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@renxqoo/renx-code.svg)](https://www.npmjs.com/package/@renxqoo/renx-code)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Node.js Version](https://img.shields.io/node/v/@renxqoo/renx-code.svg)](https://nodejs.org/)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)
7
+ [![React](https://img.shields.io/badge/React-19.2-blue.svg)](https://react.dev/)
8
+ [![OpenTUI](https://img.shields.io/badge/OpenTUI-0.1.84-green.svg)](https://github.com/opentui/opentui)
9
+
10
+ Enterprise-grade AI coding assistant CLI tool with interactive terminal UI, built with React and OpenTUI.
11
+
12
+ ## ✨ Features
13
+
14
+ - **Interactive Terminal UI**: Beautiful, responsive terminal interface built with React and OpenTUI
15
+ - **AI-Powered Assistance**: Intelligent code suggestions and completions
16
+ - **Slash Commands**: Built-in commands for common operations (`/help`, `/clear`, `/exit`, `/models`, `/files`)
17
+ - **Keyboard Shortcuts**: Efficient navigation and control
18
+ - **Configurable**: Extensive configuration options via environment variables and config files
19
+ - **Cross-Platform**: Works on Windows, macOS, and Linux
20
+ - **TypeScript**: Full type safety and excellent developer experience
21
+ - **Real-time Updates**: Live terminal updates with smooth animations
22
+ - **Theme Support**: Customizable UI themes and markdown rendering
23
+
24
+ ## 🚀 Quick Start
25
+
26
+ ### Installation
27
+
28
+ ```bash
29
+ # Install globally
30
+ npm install -g @renxqoo/renx-code
31
+
32
+ # Or use npx
33
+ npx @renxqoo/renx-code
34
+ ```
35
+
36
+ ### Basic Usage
37
+
38
+ ```bash
39
+ # Start the interactive CLI
40
+ renx
41
+
42
+ # Or run directly with npx
43
+ npx @renxqoo/renx-code
44
+ ```
45
+
46
+ ## 📦 Installation
47
+
48
+ ### Prerequisites
49
+
50
+ - Node.js 20.0.0 or higher
51
+ - npm, yarn, or pnpm
52
+
53
+ ### Global Installation
54
+
55
+ ```bash
56
+ npm install -g @renxqoo/renx-code
57
+ ```
58
+
59
+ ### Local Installation
60
+
61
+ ```bash
62
+ # Create a new project
63
+ mkdir my-project && cd my-project
64
+ npm init -y
65
+
66
+ # Install @renxqoo/renx-code
67
+ npm install @renxqoo/renx-code
68
+
69
+ # Add to package.json scripts
70
+ {
71
+ "scripts": {
72
+ "agent": "renx"
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## 🎯 Usage
78
+
79
+ ### Interactive Mode
80
+
81
+ ```bash
82
+ renx
83
+ ```
84
+
85
+ This launches the interactive terminal UI where you can:
86
+ - Type natural language queries
87
+ - Use slash commands (`/help`, `/clear`, `/exit`)
88
+ - Navigate with keyboard shortcuts
89
+ - View real-time AI responses
90
+
91
+ ### Keyboard Shortcuts
92
+
93
+ | Shortcut | Action |
94
+ |----------|--------|
95
+ | `Esc` | Stop current response or clear input |
96
+ | `Ctrl+L` | Clear conversation |
97
+ | `Ctrl+C` | Exit application |
98
+ | `↑/↓` | Navigate command history |
99
+ | `Tab` | Auto-complete commands |
100
+ | `Enter` | Submit input |
101
+
102
+ ### Slash Commands
103
+
104
+ | Command | Description |
105
+ |---------|-------------|
106
+ | `/help` | Show available commands and shortcuts |
107
+ | `/clear` | Clear the conversation history |
108
+ | `/exit` | Exit the application |
109
+ | `/models` | List available AI models |
110
+ | `/files` | Show file browser |
111
+ | `/config` | Show current configuration |
112
+ | `/status` | Show system status |
113
+
114
+ ## ⚙️ Configuration
115
+
116
+ ### Environment Variables
117
+
118
+ Configure the agent using environment variables:
119
+
120
+ ```bash
121
+ # Set the AI model
122
+ export AGENT_MODEL="gpt-4"
123
+
124
+ # Set maximum steps per run
125
+ export AGENT_MAX_STEPS=1000
126
+
127
+ # Set confirmation mode
128
+ export AGENT_TOOL_CONFIRMATION_MODE="manual"
129
+
130
+ # Set logging level
131
+ export AGENT_LOG_LEVEL="INFO"
132
+ ```
133
+
134
+ ### Configuration Files
135
+
136
+ Create a configuration file at `~/.renx/config.json`:
137
+
138
+ ```json
139
+ {
140
+ "agent": {
141
+ "defaultModel": "gpt-4",
142
+ "maxSteps": 1000,
143
+ "confirmationMode": "manual"
144
+ },
145
+ "log": {
146
+ "level": "INFO",
147
+ "format": "pretty",
148
+ "console": true,
149
+ "file": false
150
+ },
151
+ "storage": {
152
+ "fileHistory": {
153
+ "enabled": true,
154
+ "maxPerFile": 20,
155
+ "maxAgeDays": 14,
156
+ "maxTotalMb": 500
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### Project Configuration
163
+
164
+ Create a project-specific config at `.renx/config.json` in your project root.
165
+
166
+ ## 🔧 Development
167
+
168
+ ### Setup
169
+
170
+ ```bash
171
+ # Clone the repository
172
+ git clone https://github.com/renxqoo/renx-code.git
173
+ cd renx-code
174
+
175
+ # Install dependencies
176
+ npm install
177
+
178
+ # Start development server
179
+ npm run dev
180
+ ```
181
+
182
+ ### Build
183
+
184
+ ```bash
185
+ # Build for production
186
+ npm run build
187
+
188
+ # Build CLI executable
189
+ npm run build:cli
190
+ ```
191
+
192
+ ### Testing
193
+
194
+ ```bash
195
+ # Run tests
196
+ npm test
197
+
198
+ # Run tests with coverage
199
+ npm run test:coverage
200
+ ```
201
+
202
+ ### Linting and Formatting
203
+
204
+ ```bash
205
+ # Fix linting issues
206
+ npm run lint:fix
207
+
208
+ # Format code
209
+ npm run format
210
+ ```
211
+
212
+ ## 📁 Project Structure
213
+
214
+ ```
215
+ @renxqoo/renx-code/
216
+ ├── src/
217
+ │ ├── agent/ # AI agent logic
218
+ │ ├── commands/ # Slash commands
219
+ │ ├── components/ # React components
220
+ │ ├── runtime/ # Runtime utilities
221
+ │ ├── ui/ # UI themes and styling
222
+ │ ├── utils/ # Utility functions
223
+ │ ├── App.tsx # Main application component
224
+ │ ├── cli.tsx # CLI entry point
225
+ │ └── index.tsx # Library entry point
226
+ ├── dist/ # Compiled output
227
+ ├── package.json # Package configuration
228
+ ├── tsconfig.json # TypeScript configuration
229
+ ├── tsconfig.build.json # Build TypeScript configuration
230
+ └── README.md # This file
231
+ ```
232
+
233
+ ## 🤝 Contributing
234
+
235
+ 1. Fork the repository
236
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
237
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
238
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
239
+ 5. Open a Pull Request
240
+
241
+ ### Development Guidelines
242
+
243
+ - Follow TypeScript best practices
244
+ - Write tests for new features
245
+ - Update documentation as needed
246
+ - Follow the existing code style
247
+
248
+ ## 📄 License
249
+
250
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
251
+
252
+ ## 🙏 Acknowledgments
253
+
254
+ - [OpenTUI](https://github.com/opentui/opentui) - Terminal UI framework
255
+ - [React](https://react.dev/) - UI library
256
+ - [TypeScript](https://www.typescriptlang.org/) - Type safety
257
+ - [Vitest](https://vitest.dev/) - Testing framework
258
+
259
+ ## 📞 Support
260
+
261
+ - **Issues**: [GitHub Issues](https://github.com/renxqoo/renx-code/issues)
262
+ - **Discussions**: [GitHub Discussions](https://github.com/renxqoo/renx-code/discussions)
263
+ - **Documentation**: [Wiki](https://github.com/renxqoo/renx-code/wiki)
264
+
265
+ ## 🚀 Roadmap
266
+
267
+ - [ ] Plugin system for custom commands
268
+ - [ ] Multi-model support
269
+ - [ ] Codebase analysis features
270
+ - [ ] Integration with popular IDEs
271
+ - [ ] Cloud sync for configurations
272
+ - [ ] Team collaboration features
273
+ - [ ] Performance optimizations
274
+ - [ ] Enhanced error handling and recovery
275
+
276
+ ---
277
+
278
+ **Note**: This is an enterprise-grade tool designed for professional developers. Please ensure you have appropriate API keys and permissions for the AI models you intend to use.
package/dist/App.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const App: () => import("react").ReactNode;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAuCA,eAAO,MAAM,GAAG,iCAiQf,CAAC"}
package/dist/App.js ADDED
@@ -0,0 +1,170 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
+ import { TextAttributes } from '@opentui/core';
3
+ import { useKeyboard, useRenderer, useTerminalDimensions } from '@opentui/react';
4
+ import { useEffect, useRef, useState } from 'react';
5
+ import { resolveSlashCommand } from './commands/slash-commands';
6
+ import { ConversationPanel } from './components/conversation-panel';
7
+ import { FilePickerDialog } from './components/file-picker-dialog';
8
+ import { ModelPickerDialog } from './components/model-picker-dialog';
9
+ import { Prompt } from './components/prompt';
10
+ import { ToolConfirmDialog } from './components/tool-confirm-dialog';
11
+ import { isMediaSelection } from './files/attachment-capabilities';
12
+ import { useAgentChat } from './hooks/use-agent-chat';
13
+ import { useFilePicker } from './hooks/use-file-picker';
14
+ import { useModelPicker } from './hooks/use-model-picker';
15
+ import { requestExit } from './runtime/exit';
16
+ import { copyTextToClipboard } from './runtime/clipboard';
17
+ import { uiTheme } from './ui/theme';
18
+ const appendFileTokens = (currentValue, files) => {
19
+ if (files.length === 0) {
20
+ return currentValue;
21
+ }
22
+ const existingTokens = new Set(currentValue.match(/@\/\S+/g) ?? []);
23
+ const newTokens = files
24
+ .filter(file => !isMediaSelection(file))
25
+ .map(file => `@/${file.relativePath}`)
26
+ .filter(token => !existingTokens.has(token));
27
+ if (newTokens.length === 0) {
28
+ return currentValue;
29
+ }
30
+ const trimmed = currentValue.trimEnd();
31
+ const separator = trimmed.length > 0 ? ' ' : '';
32
+ return `${trimmed}${separator}${newTokens.join(' ')} `;
33
+ };
34
+ export const App = () => {
35
+ const { turns, inputValue, isThinking, modelLabel, contextUsagePercent, pendingToolConfirm, setInputValue, selectedFiles, setSelectedFiles, appendSelectedFiles, submitInput, stopActiveReply, clearInput, resetConversation, setModelLabelDisplay, setToolConfirmSelection, submitToolConfirmSelection, rejectPendingToolConfirm, } = useAgentChat();
36
+ const [slashMenuVisible, setSlashMenuVisible] = useState(false);
37
+ const modelPicker = useModelPicker({
38
+ onModelChanged: setModelLabelDisplay,
39
+ });
40
+ const filePicker = useFilePicker();
41
+ const dimensions = useTerminalDimensions();
42
+ const renderer = useRenderer();
43
+ const [copyToastVisible, setCopyToastVisible] = useState(false);
44
+ const selectionCopyTimeoutRef = useRef(null);
45
+ const copyToastTimeoutRef = useRef(null);
46
+ useEffect(() => {
47
+ const handleSelection = (selection) => {
48
+ const selectedText = selection.getSelectedText();
49
+ if (!selectedText) {
50
+ return;
51
+ }
52
+ if (selectionCopyTimeoutRef.current) {
53
+ clearTimeout(selectionCopyTimeoutRef.current);
54
+ }
55
+ selectionCopyTimeoutRef.current = setTimeout(() => {
56
+ void copyTextToClipboard(selectedText, renderer).then(success => {
57
+ if (!success) {
58
+ return;
59
+ }
60
+ setCopyToastVisible(true);
61
+ if (copyToastTimeoutRef.current) {
62
+ clearTimeout(copyToastTimeoutRef.current);
63
+ }
64
+ copyToastTimeoutRef.current = setTimeout(() => {
65
+ setCopyToastVisible(false);
66
+ copyToastTimeoutRef.current = null;
67
+ }, 1500);
68
+ });
69
+ selectionCopyTimeoutRef.current = null;
70
+ }, 80);
71
+ };
72
+ renderer.on('selection', handleSelection);
73
+ return () => {
74
+ renderer.off('selection', handleSelection);
75
+ if (selectionCopyTimeoutRef.current) {
76
+ clearTimeout(selectionCopyTimeoutRef.current);
77
+ selectionCopyTimeoutRef.current = null;
78
+ }
79
+ if (copyToastTimeoutRef.current) {
80
+ clearTimeout(copyToastTimeoutRef.current);
81
+ copyToastTimeoutRef.current = null;
82
+ }
83
+ };
84
+ }, [renderer]);
85
+ const submitWithCommands = () => {
86
+ const command = resolveSlashCommand(inputValue);
87
+ if (command?.action === 'models') {
88
+ setInputValue('');
89
+ modelPicker.open();
90
+ return;
91
+ }
92
+ if (command?.action === 'files') {
93
+ setInputValue('');
94
+ filePicker.open(selectedFiles);
95
+ return;
96
+ }
97
+ submitInput();
98
+ };
99
+ const handleSlashCommandSelect = (command) => {
100
+ if (command.action === 'models') {
101
+ setInputValue('');
102
+ modelPicker.open();
103
+ return true;
104
+ }
105
+ if (command.action === 'files') {
106
+ setInputValue('');
107
+ filePicker.open(selectedFiles);
108
+ return true;
109
+ }
110
+ return false;
111
+ };
112
+ useKeyboard(key => {
113
+ if (key.ctrl && key.name === 'c') {
114
+ requestExit(0);
115
+ return;
116
+ }
117
+ if (modelPicker.visible) {
118
+ if (key.name === 'escape') {
119
+ modelPicker.close();
120
+ }
121
+ return;
122
+ }
123
+ if (filePicker.visible) {
124
+ if (key.name === 'escape') {
125
+ filePicker.close();
126
+ }
127
+ return;
128
+ }
129
+ if (pendingToolConfirm) {
130
+ if (key.name === 'left' || key.name === 'h') {
131
+ setToolConfirmSelection('approve');
132
+ return;
133
+ }
134
+ if (key.name === 'right' || key.name === 'l') {
135
+ setToolConfirmSelection('deny');
136
+ return;
137
+ }
138
+ if (key.name === 'return' || key.name === 'enter') {
139
+ submitToolConfirmSelection();
140
+ return;
141
+ }
142
+ if (key.name === 'escape') {
143
+ rejectPendingToolConfirm();
144
+ }
145
+ return;
146
+ }
147
+ if (key.ctrl && key.name === 'l') {
148
+ resetConversation();
149
+ return;
150
+ }
151
+ if (key.name === 'escape') {
152
+ if (slashMenuVisible) {
153
+ return;
154
+ }
155
+ if (isThinking) {
156
+ stopActiveReply();
157
+ return;
158
+ }
159
+ clearInput();
160
+ }
161
+ });
162
+ return (_jsxs("box", { width: dimensions.width, height: dimensions.height, flexDirection: "column", backgroundColor: uiTheme.bg, paddingTop: uiTheme.layout.appPaddingTop, paddingBottom: uiTheme.layout.appPaddingBottom, paddingLeft: uiTheme.layout.appPaddingX, paddingRight: uiTheme.layout.appPaddingX, children: [_jsx(ConversationPanel, { turns: turns, isThinking: isThinking }), _jsx(Prompt, { isThinking: isThinking, disabled: modelPicker.visible || filePicker.visible || Boolean(pendingToolConfirm), modelLabel: modelLabel, contextUsagePercent: contextUsagePercent, value: inputValue, selectedFiles: selectedFiles, onAddSelectedFiles: appendSelectedFiles, onValueChange: setInputValue, onSlashCommandSelect: handleSlashCommandSelect, onSlashMenuVisibilityChange: setSlashMenuVisible, onSubmit: submitWithCommands }), _jsx(ToolConfirmDialog, { visible: Boolean(pendingToolConfirm), viewportWidth: dimensions.width, viewportHeight: dimensions.height, request: pendingToolConfirm }), _jsx(FilePickerDialog, { visible: filePicker.visible, viewportWidth: dimensions.width, viewportHeight: dimensions.height, loading: filePicker.loading, error: filePicker.error, search: filePicker.search, options: filePicker.options, selectedIndex: filePicker.selectedIndex, selectedPaths: filePicker.selectedPaths, onSearchChange: filePicker.setSearch, onSelectIndex: filePicker.setSelectedIndex, onToggleSelected: filePicker.toggleSelectedIndex, onConfirm: () => {
163
+ const confirmedFiles = filePicker.confirmSelected();
164
+ setSelectedFiles(confirmedFiles);
165
+ setInputValue(appendFileTokens(inputValue, confirmedFiles));
166
+ }, onListKeyDown: filePicker.handleListKeyDown }), _jsx(ModelPickerDialog, { visible: modelPicker.visible, viewportWidth: dimensions.width, viewportHeight: dimensions.height, loading: modelPicker.loading, switching: modelPicker.switching, error: modelPicker.error, search: modelPicker.search, options: modelPicker.options, selectedIndex: modelPicker.selectedIndex, onSearchChange: modelPicker.setSearch, onSelectIndex: modelPicker.setSelectedIndex, onConfirm: () => {
167
+ void modelPicker.confirmSelected();
168
+ }, onListKeyDown: modelPicker.handleListKeyDown }), copyToastVisible ? (_jsxs("box", { position: "absolute", right: 2, top: 1, zIndex: 20, flexDirection: "row", gap: 1, borderColor: uiTheme.divider, borderStyle: "rounded", paddingX: 1, paddingY: 0, children: [_jsx("text", { fg: uiTheme.accent, attributes: TextAttributes.BOLD, children: "\u2713" }), _jsx("text", { fg: uiTheme.text, attributes: TextAttributes.BOLD, children: "Copied" })] })) : null] }));
169
+ };
170
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * System prompt builder.
3
+ * Combines kimi-cli prompt structure with coding-agent constraints.
4
+ */
5
+ type SystemPromptOptions = {
6
+ /** Working directory */
7
+ directory: string;
8
+ /** Response language */
9
+ language?: string;
10
+ /** Current datetime */
11
+ currentDateTime?: string;
12
+ /** Sandbox mode */
13
+ sandboxMode?: string;
14
+ /** Network policy */
15
+ networkPolicy?: string;
16
+ /** Runtime tool names */
17
+ runtimeToolNames?: string[];
18
+ };
19
+ /**
20
+ * Build the complete system prompt.
21
+ */
22
+ export declare function buildSystemPrompt({ directory, currentDateTime, sandboxMode, networkPolicy, runtimeToolNames, }: SystemPromptOptions): string;
23
+ export {};
24
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/agent/prompts/system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkMH,KAAK,mBAAmB,GAAG;IACzB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAyB,EAEzB,eAAe,EACf,WAAW,EACX,aAAa,EACb,gBAAgB,GACjB,EAAE,mBAAmB,GAAG,MAAM,CAuB9B"}