@zds-ai/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +497 -0
  3. package/dist/agent/grok-agent.d.ts +250 -0
  4. package/dist/agent/grok-agent.js +2480 -0
  5. package/dist/agent/grok-agent.js.map +1 -0
  6. package/dist/agent/index.d.ts +14 -0
  7. package/dist/agent/index.js +136 -0
  8. package/dist/agent/index.js.map +1 -0
  9. package/dist/commands/mcp.d.ts +2 -0
  10. package/dist/commands/mcp.js +239 -0
  11. package/dist/commands/mcp.js.map +1 -0
  12. package/dist/grok/client.d.ts +55 -0
  13. package/dist/grok/client.js +276 -0
  14. package/dist/grok/client.js.map +1 -0
  15. package/dist/grok/tools.d.ts +8 -0
  16. package/dist/grok/tools.js +878 -0
  17. package/dist/grok/tools.js.map +1 -0
  18. package/dist/hooks/use-enhanced-input.d.ts +38 -0
  19. package/dist/hooks/use-enhanced-input.js +228 -0
  20. package/dist/hooks/use-enhanced-input.js.map +1 -0
  21. package/dist/hooks/use-input-handler.d.ts +36 -0
  22. package/dist/hooks/use-input-handler.js +1099 -0
  23. package/dist/hooks/use-input-handler.js.map +1 -0
  24. package/dist/hooks/use-input-history.d.ts +9 -0
  25. package/dist/hooks/use-input-history.js +61 -0
  26. package/dist/hooks/use-input-history.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +869 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/mcp/client.d.ts +41 -0
  31. package/dist/mcp/client.js +224 -0
  32. package/dist/mcp/client.js.map +1 -0
  33. package/dist/mcp/config.d.ts +13 -0
  34. package/dist/mcp/config.js +56 -0
  35. package/dist/mcp/config.js.map +1 -0
  36. package/dist/mcp/transports.d.ts +53 -0
  37. package/dist/mcp/transports.js +256 -0
  38. package/dist/mcp/transports.js.map +1 -0
  39. package/dist/tools/character-tool.d.ts +27 -0
  40. package/dist/tools/character-tool.js +194 -0
  41. package/dist/tools/character-tool.js.map +1 -0
  42. package/dist/tools/clear-cache-tool.d.ts +14 -0
  43. package/dist/tools/clear-cache-tool.js +82 -0
  44. package/dist/tools/clear-cache-tool.js.map +1 -0
  45. package/dist/tools/confirmation-tool.d.ts +16 -0
  46. package/dist/tools/confirmation-tool.js +72 -0
  47. package/dist/tools/confirmation-tool.js.map +1 -0
  48. package/dist/tools/env-tool.d.ts +17 -0
  49. package/dist/tools/env-tool.js +89 -0
  50. package/dist/tools/env-tool.js.map +1 -0
  51. package/dist/tools/file-conversion-tool.d.ts +16 -0
  52. package/dist/tools/file-conversion-tool.js +181 -0
  53. package/dist/tools/file-conversion-tool.js.map +1 -0
  54. package/dist/tools/image-tool.d.ts +22 -0
  55. package/dist/tools/image-tool.js +268 -0
  56. package/dist/tools/image-tool.js.map +1 -0
  57. package/dist/tools/index.d.ts +14 -0
  58. package/dist/tools/index.js +15 -0
  59. package/dist/tools/index.js.map +1 -0
  60. package/dist/tools/internet-tool.d.ts +11 -0
  61. package/dist/tools/internet-tool.js +108 -0
  62. package/dist/tools/internet-tool.js.map +1 -0
  63. package/dist/tools/introspect-tool.d.ts +11 -0
  64. package/dist/tools/introspect-tool.js +243 -0
  65. package/dist/tools/introspect-tool.js.map +1 -0
  66. package/dist/tools/morph-editor.d.ts +38 -0
  67. package/dist/tools/morph-editor.js +318 -0
  68. package/dist/tools/morph-editor.js.map +1 -0
  69. package/dist/tools/restart-tool.d.ts +7 -0
  70. package/dist/tools/restart-tool.js +24 -0
  71. package/dist/tools/restart-tool.js.map +1 -0
  72. package/dist/tools/search.d.ts +71 -0
  73. package/dist/tools/search.js +340 -0
  74. package/dist/tools/search.js.map +1 -0
  75. package/dist/tools/task-tool.d.ts +19 -0
  76. package/dist/tools/task-tool.js +115 -0
  77. package/dist/tools/task-tool.js.map +1 -0
  78. package/dist/tools/text-editor.d.ts +35 -0
  79. package/dist/tools/text-editor.js +669 -0
  80. package/dist/tools/text-editor.js.map +1 -0
  81. package/dist/tools/tool-discovery.d.ts +20 -0
  82. package/dist/tools/tool-discovery.js +45 -0
  83. package/dist/tools/tool-discovery.js.map +1 -0
  84. package/dist/tools/zsh.d.ts +13 -0
  85. package/dist/tools/zsh.js +168 -0
  86. package/dist/tools/zsh.js.map +1 -0
  87. package/dist/types/index.d.ts +31 -0
  88. package/dist/types/index.js +2 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/dist/ui/app.d.ts +7 -0
  91. package/dist/ui/app.js +99 -0
  92. package/dist/ui/app.js.map +1 -0
  93. package/dist/ui/components/active-task-status.d.ts +7 -0
  94. package/dist/ui/components/active-task-status.js +37 -0
  95. package/dist/ui/components/active-task-status.js.map +1 -0
  96. package/dist/ui/components/api-key-input.d.ts +7 -0
  97. package/dist/ui/components/api-key-input.js +80 -0
  98. package/dist/ui/components/api-key-input.js.map +1 -0
  99. package/dist/ui/components/backend-status.d.ts +7 -0
  100. package/dist/ui/components/backend-status.js +85 -0
  101. package/dist/ui/components/backend-status.js.map +1 -0
  102. package/dist/ui/components/chat-history.d.ts +8 -0
  103. package/dist/ui/components/chat-history.js +187 -0
  104. package/dist/ui/components/chat-history.js.map +1 -0
  105. package/dist/ui/components/chat-input.d.ts +9 -0
  106. package/dist/ui/components/chat-input.js +63 -0
  107. package/dist/ui/components/chat-input.js.map +1 -0
  108. package/dist/ui/components/chat-interface.d.ts +9 -0
  109. package/dist/ui/components/chat-interface.js +389 -0
  110. package/dist/ui/components/chat-interface.js.map +1 -0
  111. package/dist/ui/components/command-suggestions.d.ts +17 -0
  112. package/dist/ui/components/command-suggestions.js +22 -0
  113. package/dist/ui/components/command-suggestions.js.map +1 -0
  114. package/dist/ui/components/confirmation-dialog.d.ts +11 -0
  115. package/dist/ui/components/confirmation-dialog.js +105 -0
  116. package/dist/ui/components/confirmation-dialog.js.map +1 -0
  117. package/dist/ui/components/context-status.d.ts +7 -0
  118. package/dist/ui/components/context-status.js +36 -0
  119. package/dist/ui/components/context-status.js.map +1 -0
  120. package/dist/ui/components/diff-renderer.d.ts +13 -0
  121. package/dist/ui/components/diff-renderer.js +206 -0
  122. package/dist/ui/components/diff-renderer.js.map +1 -0
  123. package/dist/ui/components/loading-spinner.d.ts +8 -0
  124. package/dist/ui/components/loading-spinner.js +64 -0
  125. package/dist/ui/components/loading-spinner.js.map +1 -0
  126. package/dist/ui/components/mcp-status.d.ts +5 -0
  127. package/dist/ui/components/mcp-status.js +57 -0
  128. package/dist/ui/components/mcp-status.js.map +1 -0
  129. package/dist/ui/components/model-selection.d.ts +12 -0
  130. package/dist/ui/components/model-selection.js +17 -0
  131. package/dist/ui/components/model-selection.js.map +1 -0
  132. package/dist/ui/components/mood-status.d.ts +7 -0
  133. package/dist/ui/components/mood-status.js +34 -0
  134. package/dist/ui/components/mood-status.js.map +1 -0
  135. package/dist/ui/components/persona-status.d.ts +7 -0
  136. package/dist/ui/components/persona-status.js +34 -0
  137. package/dist/ui/components/persona-status.js.map +1 -0
  138. package/dist/ui/shared/max-sized-box.d.ts +8 -0
  139. package/dist/ui/shared/max-sized-box.js +6 -0
  140. package/dist/ui/shared/max-sized-box.js.map +1 -0
  141. package/dist/ui/utils/code-colorizer.d.ts +2 -0
  142. package/dist/ui/utils/code-colorizer.js +7 -0
  143. package/dist/ui/utils/code-colorizer.js.map +1 -0
  144. package/dist/ui/utils/colors.d.ts +14 -0
  145. package/dist/ui/utils/colors.js +15 -0
  146. package/dist/ui/utils/colors.js.map +1 -0
  147. package/dist/ui/utils/markdown-renderer.d.ts +4 -0
  148. package/dist/ui/utils/markdown-renderer.js +40 -0
  149. package/dist/ui/utils/markdown-renderer.js.map +1 -0
  150. package/dist/utils/auth-helper.d.ts +63 -0
  151. package/dist/utils/auth-helper.js +129 -0
  152. package/dist/utils/auth-helper.js.map +1 -0
  153. package/dist/utils/chat-history-manager-sqlite.d.ts +92 -0
  154. package/dist/utils/chat-history-manager-sqlite.js +334 -0
  155. package/dist/utils/chat-history-manager-sqlite.js.map +1 -0
  156. package/dist/utils/chat-history-manager.d.ts +87 -0
  157. package/dist/utils/chat-history-manager.js +273 -0
  158. package/dist/utils/chat-history-manager.js.map +1 -0
  159. package/dist/utils/chat-history-manager.json-backup.d.ts +69 -0
  160. package/dist/utils/chat-history-manager.json-backup.js +215 -0
  161. package/dist/utils/chat-history-manager.json-backup.js.map +1 -0
  162. package/dist/utils/confirmation-service.d.ts +46 -0
  163. package/dist/utils/confirmation-service.js +165 -0
  164. package/dist/utils/confirmation-service.js.map +1 -0
  165. package/dist/utils/custom-instructions.d.ts +1 -0
  166. package/dist/utils/custom-instructions.js +30 -0
  167. package/dist/utils/custom-instructions.js.map +1 -0
  168. package/dist/utils/database-connection.d.ts +27 -0
  169. package/dist/utils/database-connection.js +81 -0
  170. package/dist/utils/database-connection.js.map +1 -0
  171. package/dist/utils/database-schema.d.ts +17 -0
  172. package/dist/utils/database-schema.js +93 -0
  173. package/dist/utils/database-schema.js.map +1 -0
  174. package/dist/utils/error-logger.d.ts +13 -0
  175. package/dist/utils/error-logger.js +56 -0
  176. package/dist/utils/error-logger.js.map +1 -0
  177. package/dist/utils/hook-executor.d.ts +59 -0
  178. package/dist/utils/hook-executor.js +351 -0
  179. package/dist/utils/hook-executor.js.map +1 -0
  180. package/dist/utils/model-config.d.ts +28 -0
  181. package/dist/utils/model-config.js +42 -0
  182. package/dist/utils/model-config.js.map +1 -0
  183. package/dist/utils/path-utils.d.ts +4 -0
  184. package/dist/utils/path-utils.js +12 -0
  185. package/dist/utils/path-utils.js.map +1 -0
  186. package/dist/utils/settings-manager.d.ts +169 -0
  187. package/dist/utils/settings-manager.js +403 -0
  188. package/dist/utils/settings-manager.js.map +1 -0
  189. package/dist/utils/settings.d.ts +1 -0
  190. package/dist/utils/settings.js +4 -0
  191. package/dist/utils/settings.js.map +1 -0
  192. package/dist/utils/slash-commands.d.ts +25 -0
  193. package/dist/utils/slash-commands.js +454 -0
  194. package/dist/utils/slash-commands.js.map +1 -0
  195. package/dist/utils/startup-hook.d.ts +13 -0
  196. package/dist/utils/startup-hook.js +44 -0
  197. package/dist/utils/startup-hook.js.map +1 -0
  198. package/dist/utils/text-utils.d.ts +80 -0
  199. package/dist/utils/text-utils.js +182 -0
  200. package/dist/utils/text-utils.js.map +1 -0
  201. package/dist/utils/token-counter.d.ts +33 -0
  202. package/dist/utils/token-counter.js +78 -0
  203. package/dist/utils/token-counter.js.map +1 -0
  204. package/package.json +102 -0
@@ -0,0 +1,250 @@
1
+ import { GrokMessage, GrokToolCall } from "../grok/client.js";
2
+ import { ToolResult } from "../types/index.js";
3
+ import { EventEmitter } from "events";
4
+ export interface ChatEntry {
5
+ type: "user" | "assistant" | "tool_result" | "tool_call" | "system";
6
+ content?: string;
7
+ timestamp: Date;
8
+ tool_calls?: GrokToolCall[];
9
+ toolCall?: GrokToolCall;
10
+ toolResult?: {
11
+ success: boolean;
12
+ output?: string;
13
+ error?: string;
14
+ displayOutput?: string;
15
+ };
16
+ isStreaming?: boolean;
17
+ preserveFormatting?: boolean;
18
+ }
19
+ export interface StreamingChunk {
20
+ type: "content" | "tool_calls" | "tool_result" | "done" | "token_count" | "user_message";
21
+ content?: string;
22
+ tool_calls?: GrokToolCall[];
23
+ toolCall?: GrokToolCall;
24
+ toolResult?: ToolResult;
25
+ tokenCount?: number;
26
+ userEntry?: ChatEntry;
27
+ systemMessages?: ChatEntry[];
28
+ }
29
+ export declare class GrokAgent extends EventEmitter {
30
+ private grokClient;
31
+ private textEditor;
32
+ private morphEditor;
33
+ private zsh;
34
+ private confirmationTool;
35
+ private search;
36
+ private env;
37
+ private introspect;
38
+ private clearCacheTool;
39
+ private characterTool;
40
+ private taskTool;
41
+ private internetTool;
42
+ private imageTool;
43
+ private fileConversionTool;
44
+ private restartTool;
45
+ private chatHistory;
46
+ private messages;
47
+ private tokenCounter;
48
+ private abortController;
49
+ private mcpInitialized;
50
+ private maxToolRounds;
51
+ private temperature;
52
+ private maxTokens;
53
+ private firstMessageProcessed;
54
+ private contextWarningAt80;
55
+ private contextWarningAt90;
56
+ private persona;
57
+ private personaColor;
58
+ private mood;
59
+ private moodColor;
60
+ private activeTask;
61
+ private activeTaskAction;
62
+ private activeTaskColor;
63
+ private apiKeyEnvVar;
64
+ private pendingContextEdit;
65
+ constructor(apiKey: string, baseURL?: string, model?: string, maxToolRounds?: number, debugLogFile?: string, startupHookOutput?: string, temperature?: number, maxTokens?: number);
66
+ private startupHookOutput?;
67
+ private systemPrompt;
68
+ /**
69
+ * Initialize the agent with dynamic system prompt
70
+ * Must be called after construction
71
+ */
72
+ initialize(): Promise<void>;
73
+ /**
74
+ * Build/rebuild the system message with current tool availability
75
+ * Updates this.systemPrompt which is always used for messages[0]
76
+ */
77
+ buildSystemMessage(): Promise<void>;
78
+ loadInitialHistory(history: ChatEntry[], systemPrompt?: string): Promise<void>;
79
+ private initializeMCP;
80
+ private isGrokModel;
81
+ private shouldUseSearchFor;
82
+ processUserMessage(message: string): Promise<ChatEntry[]>;
83
+ /**
84
+ * Parse XML-formatted tool calls from message content (x.ai format)
85
+ * Converts <xai:function_call> elements to standard GrokToolCall format
86
+ */
87
+ private parseXMLToolCalls;
88
+ private messageReducer;
89
+ processUserMessageStream(message: string): AsyncGenerator<StreamingChunk, void, unknown>;
90
+ /**
91
+ * Apply default parameter values for tools
92
+ * This ensures the approval hook sees the same parameters that will be used during execution
93
+ */
94
+ private applyToolParameterDefaults;
95
+ /**
96
+ * Validate tool arguments against the tool's schema
97
+ * Returns null if valid, or an error message if invalid
98
+ */
99
+ private validateToolArguments;
100
+ private executeTool;
101
+ private executeMCPTool;
102
+ getChatHistory(): ChatEntry[];
103
+ setChatHistory(history: ChatEntry[]): void;
104
+ getSystemPrompt(): string;
105
+ setSystemPrompt(prompt: string): void;
106
+ getMessages(): any[];
107
+ getCurrentTokenCount(): number;
108
+ getMaxContextSize(): number;
109
+ getContextUsagePercent(): number;
110
+ /**
111
+ * Convert context messages to markdown format for viewing
112
+ * Format: (N) Name (role) - timestamp
113
+ */
114
+ convertContextToMarkdown(): Promise<string>;
115
+ getPersona(): string;
116
+ getPersonaColor(): string;
117
+ getMood(): string;
118
+ getMoodColor(): string;
119
+ getActiveTask(): string;
120
+ getActiveTaskAction(): string;
121
+ getActiveTaskColor(): string;
122
+ setPendingContextEdit(tmpJsonPath: string, contextFilePath: string): void;
123
+ getPendingContextEdit(): {
124
+ tmpJsonPath: string;
125
+ contextFilePath: string;
126
+ } | null;
127
+ clearPendingContextEdit(): void;
128
+ setPersona(persona: string, color?: string): Promise<{
129
+ success: boolean;
130
+ error?: string;
131
+ }>;
132
+ setMood(mood: string, color?: string): Promise<{
133
+ success: boolean;
134
+ error?: string;
135
+ }>;
136
+ startActiveTask(activeTask: string, action: string, color?: string): Promise<{
137
+ success: boolean;
138
+ error?: string;
139
+ }>;
140
+ transitionActiveTaskStatus(action: string, color?: string): Promise<{
141
+ success: boolean;
142
+ error?: string;
143
+ }>;
144
+ stopActiveTask(reason: string, documentationFile: string, color?: string): Promise<{
145
+ success: boolean;
146
+ error?: string;
147
+ }>;
148
+ private emitContextChange;
149
+ private addContextWarningIfNeeded;
150
+ executeCommand(command: string, skipConfirmation?: boolean): Promise<ToolResult>;
151
+ getCurrentModel(): string;
152
+ setModel(model: string): void;
153
+ /**
154
+ * Strip in-progress tool calls from messages for backend/model testing
155
+ * Removes tool_calls from the last assistant message and any corresponding tool results
156
+ * @returns Cleaned copy of messages array, or original if no stripping needed
157
+ */
158
+ static stripInProgressToolCalls(messages: GrokMessage[]): GrokMessage[];
159
+ /**
160
+ * Test a model change by making a test API call with current conversation context
161
+ * Rolls back to previous model if test fails
162
+ * @param newModel Model to test
163
+ * @returns Promise with success status and optional error message
164
+ */
165
+ testModel(newModel: string): Promise<{
166
+ success: boolean;
167
+ error?: string;
168
+ }>;
169
+ /**
170
+ * Test backend/baseUrl/model changes by making a test API call with current conversation context
171
+ * Rolls back all changes if test fails
172
+ * @param backend Backend display name
173
+ * @param baseUrl Base URL for API calls
174
+ * @param apiKeyEnvVar Name of environment variable containing API key
175
+ * @param model Model to use (optional, uses current model if not specified)
176
+ * @returns Promise with success status and optional error message
177
+ */
178
+ testBackendModelChange(backend: string, baseUrl: string, apiKeyEnvVar: string, model?: string): Promise<{
179
+ success: boolean;
180
+ error?: string;
181
+ }>;
182
+ /**
183
+ * Process hook result including commands and transformations
184
+ * Handles ENV transformations, model/backend testing, and error messaging
185
+ * @param hookResult Hook execution result
186
+ * @param envKey Optional ENV key to check for transformation (e.g., ZDS_AI_AGENT_PERSONA)
187
+ * @returns Object with success status and transformed value (if any)
188
+ */
189
+ private processHookResult;
190
+ /**
191
+ * Process hook commands (MODEL, BACKEND, BASE_URL, SYSTEM, ENV)
192
+ * Handles model/backend testing and error messaging
193
+ * @param commands Hook commands from applyHookCommands()
194
+ */
195
+ private processHookCommands;
196
+ getBackend(): string;
197
+ abortCurrentOperation(): void;
198
+ clearCache(): Promise<void>;
199
+ /**
200
+ * Get current session state for persistence
201
+ */
202
+ getSessionState(): {
203
+ session: string;
204
+ persona: string;
205
+ personaColor: string;
206
+ mood: string;
207
+ moodColor: string;
208
+ activeTask: string;
209
+ activeTaskAction: string;
210
+ activeTaskColor: string;
211
+ cwd: string;
212
+ contextCurrent: number;
213
+ contextMax: number;
214
+ backend: string;
215
+ baseUrl: string;
216
+ apiKeyEnvVar: string;
217
+ model: string;
218
+ };
219
+ /**
220
+ * Restore session state from persistence
221
+ */
222
+ restoreSessionState(state: {
223
+ session?: string;
224
+ persona: string;
225
+ personaColor: string;
226
+ mood: string;
227
+ moodColor: string;
228
+ activeTask: string;
229
+ activeTaskAction: string;
230
+ activeTaskColor: string;
231
+ cwd: string;
232
+ contextCurrent?: number;
233
+ contextMax?: number;
234
+ backend?: string;
235
+ baseUrl?: string;
236
+ apiKeyEnvVar?: string;
237
+ model?: string;
238
+ }): Promise<void>;
239
+ /**
240
+ * Get all tool instances and their class names for display purposes
241
+ */
242
+ getToolClassInfo(): Array<{
243
+ className: string;
244
+ methods: string[];
245
+ }>;
246
+ /**
247
+ * Get all tool instances via reflection
248
+ */
249
+ private getToolInstances;
250
+ }