gencode-ai 0.1.1 → 0.1.3

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 (287) hide show
  1. package/.gencode/settings.local.json +7 -0
  2. package/CLAUDE.md +86 -0
  3. package/README.md +13 -16
  4. package/dist/agent/agent.d.ts +50 -1
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/agent.js +96 -16
  7. package/dist/agent/agent.js.map +1 -1
  8. package/dist/agent/index.d.ts +1 -0
  9. package/dist/agent/index.d.ts.map +1 -1
  10. package/dist/agent/types.d.ts +14 -1
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/cli/components/App.d.ts +8 -1
  13. package/dist/cli/components/App.d.ts.map +1 -1
  14. package/dist/cli/components/App.js +266 -29
  15. package/dist/cli/components/App.js.map +1 -1
  16. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  17. package/dist/cli/components/CommandSuggestions.js +2 -0
  18. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  19. package/dist/cli/components/Header.d.ts +1 -1
  20. package/dist/cli/components/Header.d.ts.map +1 -1
  21. package/dist/cli/components/Header.js +4 -6
  22. package/dist/cli/components/Header.js.map +1 -1
  23. package/dist/cli/components/Logo.d.ts +1 -0
  24. package/dist/cli/components/Logo.d.ts.map +1 -1
  25. package/dist/cli/components/Logo.js +16 -3
  26. package/dist/cli/components/Logo.js.map +1 -1
  27. package/dist/cli/components/Messages.d.ts +4 -4
  28. package/dist/cli/components/Messages.d.ts.map +1 -1
  29. package/dist/cli/components/Messages.js +66 -23
  30. package/dist/cli/components/Messages.js.map +1 -1
  31. package/dist/cli/components/PermissionPrompt.d.ts +60 -0
  32. package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
  33. package/dist/cli/components/PermissionPrompt.js +192 -0
  34. package/dist/cli/components/PermissionPrompt.js.map +1 -0
  35. package/dist/cli/components/ProviderManager.js +3 -3
  36. package/dist/cli/components/ProviderManager.js.map +1 -1
  37. package/dist/cli/components/QuestionPrompt.d.ts +23 -0
  38. package/dist/cli/components/QuestionPrompt.d.ts.map +1 -0
  39. package/dist/cli/components/QuestionPrompt.js +231 -0
  40. package/dist/cli/components/QuestionPrompt.js.map +1 -0
  41. package/dist/cli/components/Spinner.d.ts +7 -2
  42. package/dist/cli/components/Spinner.d.ts.map +1 -1
  43. package/dist/cli/components/Spinner.js +116 -25
  44. package/dist/cli/components/Spinner.js.map +1 -1
  45. package/dist/cli/components/TodoList.d.ts +7 -0
  46. package/dist/cli/components/TodoList.d.ts.map +1 -0
  47. package/dist/cli/components/TodoList.js +34 -0
  48. package/dist/cli/components/TodoList.js.map +1 -0
  49. package/dist/cli/components/index.d.ts +2 -0
  50. package/dist/cli/components/index.d.ts.map +1 -1
  51. package/dist/cli/components/index.js +2 -0
  52. package/dist/cli/components/index.js.map +1 -1
  53. package/dist/cli/components/theme.d.ts +7 -0
  54. package/dist/cli/components/theme.d.ts.map +1 -1
  55. package/dist/cli/components/theme.js +11 -1
  56. package/dist/cli/components/theme.js.map +1 -1
  57. package/dist/cli/index.js +47 -7
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/config/index.d.ts +13 -4
  60. package/dist/config/index.d.ts.map +1 -1
  61. package/dist/config/index.js +18 -3
  62. package/dist/config/index.js.map +1 -1
  63. package/dist/config/levels.d.ts +49 -0
  64. package/dist/config/levels.d.ts.map +1 -0
  65. package/dist/config/levels.js +222 -0
  66. package/dist/config/levels.js.map +1 -0
  67. package/dist/config/loader.d.ts +46 -0
  68. package/dist/config/loader.d.ts.map +1 -0
  69. package/dist/config/loader.js +153 -0
  70. package/dist/config/loader.js.map +1 -0
  71. package/dist/config/manager.d.ts +115 -15
  72. package/dist/config/manager.d.ts.map +1 -1
  73. package/dist/config/manager.js +260 -34
  74. package/dist/config/manager.js.map +1 -1
  75. package/dist/config/manager.test.d.ts +5 -0
  76. package/dist/config/manager.test.d.ts.map +1 -0
  77. package/dist/config/manager.test.js +192 -0
  78. package/dist/config/manager.test.js.map +1 -0
  79. package/dist/config/merger.d.ts +56 -0
  80. package/dist/config/merger.d.ts.map +1 -0
  81. package/dist/config/merger.js +177 -0
  82. package/dist/config/merger.js.map +1 -0
  83. package/dist/config/test-utils.d.ts +24 -0
  84. package/dist/config/test-utils.d.ts.map +1 -0
  85. package/dist/config/test-utils.js +55 -0
  86. package/dist/config/test-utils.js.map +1 -0
  87. package/dist/config/types.d.ts +78 -9
  88. package/dist/config/types.d.ts.map +1 -1
  89. package/dist/config/types.js +52 -2
  90. package/dist/config/types.js.map +1 -1
  91. package/dist/memory/import-resolver.d.ts +46 -0
  92. package/dist/memory/import-resolver.d.ts.map +1 -0
  93. package/dist/memory/import-resolver.js +117 -0
  94. package/dist/memory/import-resolver.js.map +1 -0
  95. package/dist/memory/index.d.ts +7 -6
  96. package/dist/memory/index.d.ts.map +1 -1
  97. package/dist/memory/index.js +7 -5
  98. package/dist/memory/index.js.map +1 -1
  99. package/dist/memory/init-prompt.d.ts +22 -0
  100. package/dist/memory/init-prompt.d.ts.map +1 -0
  101. package/dist/memory/init-prompt.js +103 -0
  102. package/dist/memory/init-prompt.js.map +1 -0
  103. package/dist/memory/memory-manager.d.ts +119 -0
  104. package/dist/memory/memory-manager.d.ts.map +1 -0
  105. package/dist/memory/memory-manager.js +587 -0
  106. package/dist/memory/memory-manager.js.map +1 -0
  107. package/dist/memory/rules-parser.d.ts +38 -0
  108. package/dist/memory/rules-parser.d.ts.map +1 -0
  109. package/dist/memory/rules-parser.js +69 -0
  110. package/dist/memory/rules-parser.js.map +1 -0
  111. package/dist/memory/test-utils.d.ts +20 -0
  112. package/dist/memory/test-utils.d.ts.map +1 -0
  113. package/dist/memory/test-utils.js +44 -0
  114. package/dist/memory/test-utils.js.map +1 -0
  115. package/dist/memory/types.d.ts +70 -63
  116. package/dist/memory/types.d.ts.map +1 -1
  117. package/dist/memory/types.js +42 -2
  118. package/dist/memory/types.js.map +1 -1
  119. package/dist/permissions/audit.d.ts +82 -0
  120. package/dist/permissions/audit.d.ts.map +1 -0
  121. package/dist/permissions/audit.js +229 -0
  122. package/dist/permissions/audit.js.map +1 -0
  123. package/dist/permissions/index.d.ts +11 -1
  124. package/dist/permissions/index.d.ts.map +1 -1
  125. package/dist/permissions/index.js +15 -0
  126. package/dist/permissions/index.js.map +1 -1
  127. package/dist/permissions/manager.d.ts +149 -13
  128. package/dist/permissions/manager.d.ts.map +1 -1
  129. package/dist/permissions/manager.js +480 -35
  130. package/dist/permissions/manager.js.map +1 -1
  131. package/dist/permissions/manager.test.d.ts +5 -0
  132. package/dist/permissions/manager.test.d.ts.map +1 -0
  133. package/dist/permissions/manager.test.js +213 -0
  134. package/dist/permissions/manager.test.js.map +1 -0
  135. package/dist/permissions/persistence.d.ts +74 -0
  136. package/dist/permissions/persistence.d.ts.map +1 -0
  137. package/dist/permissions/persistence.js +248 -0
  138. package/dist/permissions/persistence.js.map +1 -0
  139. package/dist/permissions/persistence.test.d.ts +5 -0
  140. package/dist/permissions/persistence.test.d.ts.map +1 -0
  141. package/dist/permissions/persistence.test.js +171 -0
  142. package/dist/permissions/persistence.test.js.map +1 -0
  143. package/dist/permissions/prompt-matcher.d.ts +64 -0
  144. package/dist/permissions/prompt-matcher.d.ts.map +1 -0
  145. package/dist/permissions/prompt-matcher.js +415 -0
  146. package/dist/permissions/prompt-matcher.js.map +1 -0
  147. package/dist/permissions/prompt-matcher.test.d.ts +5 -0
  148. package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
  149. package/dist/permissions/prompt-matcher.test.js +107 -0
  150. package/dist/permissions/prompt-matcher.test.js.map +1 -0
  151. package/dist/permissions/types.d.ts +157 -0
  152. package/dist/permissions/types.d.ts.map +1 -1
  153. package/dist/permissions/types.js +45 -8
  154. package/dist/permissions/types.js.map +1 -1
  155. package/dist/prompts/index.d.ts +92 -0
  156. package/dist/prompts/index.d.ts.map +1 -0
  157. package/dist/prompts/index.js +241 -0
  158. package/dist/prompts/index.js.map +1 -0
  159. package/dist/tools/builtin/ask-user.d.ts +64 -0
  160. package/dist/tools/builtin/ask-user.d.ts.map +1 -0
  161. package/dist/tools/builtin/ask-user.js +148 -0
  162. package/dist/tools/builtin/ask-user.js.map +1 -0
  163. package/dist/tools/builtin/bash.d.ts.map +1 -1
  164. package/dist/tools/builtin/bash.js +2 -1
  165. package/dist/tools/builtin/bash.js.map +1 -1
  166. package/dist/tools/builtin/edit.d.ts.map +1 -1
  167. package/dist/tools/builtin/edit.js +2 -1
  168. package/dist/tools/builtin/edit.js.map +1 -1
  169. package/dist/tools/builtin/glob.d.ts.map +1 -1
  170. package/dist/tools/builtin/glob.js +2 -1
  171. package/dist/tools/builtin/glob.js.map +1 -1
  172. package/dist/tools/builtin/grep.d.ts.map +1 -1
  173. package/dist/tools/builtin/grep.js +2 -1
  174. package/dist/tools/builtin/grep.js.map +1 -1
  175. package/dist/tools/builtin/read.d.ts.map +1 -1
  176. package/dist/tools/builtin/read.js +2 -1
  177. package/dist/tools/builtin/read.js.map +1 -1
  178. package/dist/tools/builtin/todowrite.d.ts +15 -0
  179. package/dist/tools/builtin/todowrite.d.ts.map +1 -0
  180. package/dist/tools/builtin/todowrite.js +88 -0
  181. package/dist/tools/builtin/todowrite.js.map +1 -0
  182. package/dist/tools/builtin/webfetch.d.ts.map +1 -1
  183. package/dist/tools/builtin/webfetch.js +2 -5
  184. package/dist/tools/builtin/webfetch.js.map +1 -1
  185. package/dist/tools/builtin/websearch.d.ts.map +1 -1
  186. package/dist/tools/builtin/websearch.js +2 -16
  187. package/dist/tools/builtin/websearch.js.map +1 -1
  188. package/dist/tools/builtin/write.d.ts.map +1 -1
  189. package/dist/tools/builtin/write.js +2 -1
  190. package/dist/tools/builtin/write.js.map +1 -1
  191. package/dist/tools/index.d.ts +19 -0
  192. package/dist/tools/index.d.ts.map +1 -1
  193. package/dist/tools/index.js +8 -0
  194. package/dist/tools/index.js.map +1 -1
  195. package/dist/tools/types.d.ts +39 -0
  196. package/dist/tools/types.d.ts.map +1 -1
  197. package/dist/tools/types.js +8 -0
  198. package/dist/tools/types.js.map +1 -1
  199. package/docs/config-system-comparison.md +707 -0
  200. package/docs/memory-system.md +238 -0
  201. package/docs/permissions.md +368 -0
  202. package/docs/proposals/0005-todo-system.md +350 -85
  203. package/docs/proposals/0006-memory-system.md +11 -10
  204. package/docs/proposals/0012-ask-user-question.md +1007 -207
  205. package/docs/proposals/0023-permission-enhancements.md +61 -2
  206. package/docs/proposals/0041-configuration-system.md +33 -2
  207. package/docs/proposals/0042-prompt-optimization.md +866 -0
  208. package/docs/proposals/README.md +7 -6
  209. package/examples/test-ask-user.ts +167 -0
  210. package/jest.config.js +26 -0
  211. package/package.json +8 -2
  212. package/src/agent/agent.ts +130 -16
  213. package/src/agent/index.ts +1 -0
  214. package/src/agent/types.ts +13 -1
  215. package/src/cli/components/App.tsx +362 -37
  216. package/src/cli/components/CommandSuggestions.tsx +2 -0
  217. package/src/cli/components/Header.tsx +11 -17
  218. package/src/cli/components/Logo.tsx +76 -9
  219. package/src/cli/components/Messages.tsx +104 -41
  220. package/src/cli/components/PermissionPrompt.tsx +388 -0
  221. package/src/cli/components/ProviderManager.tsx +5 -5
  222. package/src/cli/components/QuestionPrompt.tsx +462 -0
  223. package/src/cli/components/Spinner.tsx +138 -25
  224. package/src/cli/components/TodoList.tsx +54 -0
  225. package/src/cli/components/index.ts +7 -0
  226. package/src/cli/components/theme.ts +11 -1
  227. package/src/cli/index.tsx +54 -6
  228. package/src/config/index.ts +78 -4
  229. package/src/config/levels.test.ts +163 -0
  230. package/src/config/levels.ts +285 -0
  231. package/src/config/loader.test.ts +120 -0
  232. package/src/config/loader.ts +178 -0
  233. package/src/config/manager.test.ts +215 -0
  234. package/src/config/manager.ts +328 -40
  235. package/src/config/merger.test.ts +360 -0
  236. package/src/config/merger.ts +221 -0
  237. package/src/config/test-utils.ts +79 -0
  238. package/src/config/types.ts +152 -9
  239. package/src/memory/import-resolver.test.ts +117 -0
  240. package/src/memory/import-resolver.ts +149 -0
  241. package/src/memory/index.ts +11 -0
  242. package/src/memory/init-prompt.ts +113 -0
  243. package/src/memory/memory-manager.test.ts +198 -0
  244. package/src/memory/memory-manager.ts +716 -0
  245. package/src/memory/rules-parser.test.ts +182 -0
  246. package/src/memory/rules-parser.ts +82 -0
  247. package/src/memory/test-utils.ts +60 -0
  248. package/src/memory/types.ts +119 -0
  249. package/src/permissions/audit.ts +284 -0
  250. package/src/permissions/index.ts +20 -1
  251. package/src/permissions/manager.test.ts +260 -0
  252. package/src/permissions/manager.ts +592 -40
  253. package/src/permissions/persistence.test.ts +220 -0
  254. package/src/permissions/persistence.ts +301 -0
  255. package/src/permissions/prompt-matcher.test.ts +213 -0
  256. package/src/permissions/prompt-matcher.ts +472 -0
  257. package/src/permissions/types.ts +238 -8
  258. package/src/prompts/index.test.ts +279 -0
  259. package/src/prompts/index.ts +306 -0
  260. package/src/prompts/system/anthropic.txt +29 -0
  261. package/src/prompts/system/base.txt +166 -0
  262. package/src/prompts/system/gemini.txt +35 -0
  263. package/src/prompts/system/generic.txt +128 -0
  264. package/src/prompts/system/openai.txt +29 -0
  265. package/src/prompts/tools/ask-user.txt +110 -0
  266. package/src/prompts/tools/bash.txt +60 -0
  267. package/src/prompts/tools/edit.txt +29 -0
  268. package/src/prompts/tools/glob.txt +35 -0
  269. package/src/prompts/tools/grep.txt +43 -0
  270. package/src/prompts/tools/read.txt +22 -0
  271. package/src/prompts/tools/todowrite.txt +71 -0
  272. package/src/prompts/tools/webfetch.txt +34 -0
  273. package/src/prompts/tools/websearch.txt +41 -0
  274. package/src/prompts/tools/write.txt +23 -0
  275. package/src/tools/builtin/ask-user.ts +185 -0
  276. package/src/tools/builtin/bash.ts +2 -1
  277. package/src/tools/builtin/edit.ts +2 -1
  278. package/src/tools/builtin/glob.ts +2 -1
  279. package/src/tools/builtin/grep.ts +2 -1
  280. package/src/tools/builtin/read.ts +2 -1
  281. package/src/tools/builtin/todowrite.ts +102 -0
  282. package/src/tools/builtin/webfetch.ts +2 -5
  283. package/src/tools/builtin/websearch.ts +2 -16
  284. package/src/tools/builtin/write.ts +2 -1
  285. package/src/tools/index.ts +19 -0
  286. package/src/tools/types.ts +30 -0
  287. package/tsconfig.json +1 -1
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Prompt Loader - Load prompts from .txt files
3
+ *
4
+ * This module provides utilities for loading system prompts and tool descriptions
5
+ * from separate .txt files, enabling easier maintenance and prompt engineering.
6
+ */
7
+ import { readFileSync, existsSync } from 'fs';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ import { homedir } from 'os';
11
+ import * as os from 'os';
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ // Path to providers.json config
14
+ const PROVIDERS_CONFIG_PATH = join(homedir(), '.gencode', 'providers.json');
15
+ // Resolve prompts directory - check both src and dist locations
16
+ function getPromptsDir() {
17
+ // If running from dist, look for prompts in src
18
+ if (__dirname.includes('/dist/')) {
19
+ const srcPath = __dirname.replace('/dist/', '/src/');
20
+ if (existsSync(srcPath)) {
21
+ return srcPath;
22
+ }
23
+ }
24
+ return __dirname;
25
+ }
26
+ const promptsDir = getPromptsDir();
27
+ /**
28
+ * Load providers config from ~/.gencode/providers.json
29
+ */
30
+ function loadProvidersConfig() {
31
+ try {
32
+ if (existsSync(PROVIDERS_CONFIG_PATH)) {
33
+ const data = readFileSync(PROVIDERS_CONFIG_PATH, 'utf-8');
34
+ return JSON.parse(data);
35
+ }
36
+ }
37
+ catch {
38
+ // Ignore parse errors
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Look up which provider owns a given model ID
44
+ * Searches through ~/.gencode/providers.json to find the provider
45
+ *
46
+ * @param model - The model ID (e.g., "claude-sonnet-4-5@20250929")
47
+ * @returns The provider name (e.g., "anthropic") or null if not found
48
+ */
49
+ export function getProviderForModel(model) {
50
+ const config = loadProvidersConfig();
51
+ if (!config?.models) {
52
+ return null;
53
+ }
54
+ for (const [provider, cache] of Object.entries(config.models)) {
55
+ if (cache.list?.some((m) => m.id === model)) {
56
+ return provider;
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * Map provider names to prompt types
63
+ * Falls back to 'generic' for unknown providers
64
+ */
65
+ export function mapProviderToPromptType(provider) {
66
+ switch (provider) {
67
+ case 'anthropic':
68
+ return 'anthropic';
69
+ case 'openai':
70
+ return 'openai';
71
+ case 'gemini':
72
+ return 'gemini';
73
+ default:
74
+ return 'generic';
75
+ }
76
+ }
77
+ /**
78
+ * Get prompt type for a model
79
+ * Flow: model → provider (from providers.json) → prompt type
80
+ *
81
+ * @param model - The model ID
82
+ * @param fallbackProvider - Provider to use if model lookup fails
83
+ * @returns The prompt type to use
84
+ */
85
+ export function getPromptTypeForModel(model, fallbackProvider) {
86
+ // First, try to look up the provider for this model
87
+ const provider = getProviderForModel(model);
88
+ if (provider) {
89
+ return mapProviderToPromptType(provider);
90
+ }
91
+ // Fall back to the provided provider if model lookup fails
92
+ if (fallbackProvider) {
93
+ return mapProviderToPromptType(fallbackProvider);
94
+ }
95
+ // Default to generic
96
+ return 'generic';
97
+ }
98
+ /**
99
+ * Load a prompt file from a category subdirectory
100
+ */
101
+ export function loadPrompt(category, name) {
102
+ const path = join(promptsDir, category, `${name}.txt`);
103
+ return readFileSync(path, 'utf-8');
104
+ }
105
+ /**
106
+ * Load the complete system prompt for a specific provider
107
+ */
108
+ export function loadSystemPrompt(provider) {
109
+ const base = loadPrompt('system', 'base');
110
+ const providerSpecific = loadPrompt('system', provider);
111
+ return `${base}\n\n${providerSpecific}`;
112
+ }
113
+ /**
114
+ * Load a tool description from the tools directory
115
+ */
116
+ export function loadToolDescription(toolName) {
117
+ try {
118
+ return loadPrompt('tools', toolName.toLowerCase());
119
+ }
120
+ catch {
121
+ // Fallback if file doesn't exist (for tools without description files)
122
+ return `Tool: ${toolName}`;
123
+ }
124
+ }
125
+ /**
126
+ * Get current environment info
127
+ */
128
+ export function getEnvironmentInfo(cwd, isGitRepo = false) {
129
+ return {
130
+ cwd,
131
+ platform: process.platform,
132
+ osVersion: `${os.type()} ${os.release()}`,
133
+ date: new Date().toISOString().split('T')[0],
134
+ isGitRepo,
135
+ };
136
+ }
137
+ /**
138
+ * Format environment info for injection into system prompt
139
+ */
140
+ export function formatEnvironmentInfo(env) {
141
+ return `<env>
142
+ Working directory: ${env.cwd}
143
+ Is directory a git repo: ${env.isGitRepo ? 'Yes' : 'No'}
144
+ Platform: ${env.platform}
145
+ OS Version: ${env.osVersion}
146
+ Today's date: ${env.date}
147
+ </env>`;
148
+ }
149
+ /**
150
+ * Build the complete system prompt with environment info
151
+ */
152
+ export function buildSystemPrompt(provider, cwd, isGitRepo = false) {
153
+ const prompt = loadSystemPrompt(provider);
154
+ const envInfo = formatEnvironmentInfo(getEnvironmentInfo(cwd, isGitRepo));
155
+ return prompt.replace('{{ENVIRONMENT}}', envInfo);
156
+ }
157
+ /**
158
+ * Format memory context for injection into system prompt
159
+ * Uses <claudeMd> tag for Claude Code compatibility
160
+ */
161
+ export function formatMemoryContext(memoryContext) {
162
+ if (!memoryContext) {
163
+ return '';
164
+ }
165
+ return `
166
+ <claudeMd>
167
+ Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.
168
+
169
+ ${memoryContext}
170
+
171
+ IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task.
172
+ </claudeMd>`;
173
+ }
174
+ /**
175
+ * Build the complete system prompt with environment info and memory context
176
+ */
177
+ export function buildSystemPromptWithMemory(provider, cwd, isGitRepo = false, memoryContext) {
178
+ let prompt = buildSystemPrompt(provider, cwd, isGitRepo);
179
+ if (memoryContext) {
180
+ prompt += formatMemoryContext(memoryContext);
181
+ }
182
+ return prompt;
183
+ }
184
+ /**
185
+ * Build system prompt for a model
186
+ * Flow: model → provider (from providers.json) → prompt
187
+ *
188
+ * This is the recommended way to build system prompts as it automatically
189
+ * looks up the provider for the given model from ~/.gencode/providers.json
190
+ *
191
+ * @param model - The model ID (e.g., "claude-sonnet-4-5@20250929")
192
+ * @param cwd - Current working directory
193
+ * @param isGitRepo - Whether the cwd is a git repository
194
+ * @param memoryContext - Optional memory context to include
195
+ * @param fallbackProvider - Provider to use if model lookup fails
196
+ */
197
+ export function buildSystemPromptForModel(model, cwd, isGitRepo = false, memoryContext, fallbackProvider) {
198
+ const promptType = getPromptTypeForModel(model, fallbackProvider);
199
+ return buildSystemPromptWithMemory(promptType, cwd, isGitRepo, memoryContext);
200
+ }
201
+ /**
202
+ * Debug utility to verify prompt loading at runtime
203
+ * Set GENCODE_DEBUG_PROMPTS=1 for summary, GENCODE_DEBUG_PROMPTS=2 for full content
204
+ */
205
+ export function debugPromptLoading(model, fallbackProvider) {
206
+ const debugLevel = process.env.GENCODE_DEBUG_PROMPTS;
207
+ if (!debugLevel || debugLevel === '0') {
208
+ return;
209
+ }
210
+ const promptType = getPromptTypeForModel(model, fallbackProvider);
211
+ const basePrompt = loadPrompt('system', 'base');
212
+ const providerPrompt = loadPrompt('system', promptType);
213
+ console.error('[PROMPT DEBUG] ================================');
214
+ console.error(`[PROMPT DEBUG] Model: ${model}`);
215
+ console.error(`[PROMPT DEBUG] Fallback Provider: ${fallbackProvider || 'none'}`);
216
+ console.error(`[PROMPT DEBUG] Resolved Prompt Type: ${promptType}`);
217
+ console.error(`[PROMPT DEBUG] base.txt lines: ${basePrompt.split('\n').length}`);
218
+ console.error(`[PROMPT DEBUG] ${promptType}.txt lines: ${providerPrompt.split('\n').length}`);
219
+ console.error(`[PROMPT DEBUG] Total chars: ${basePrompt.length + providerPrompt.length}`);
220
+ // Verify key content
221
+ const checks = [
222
+ { name: 'Token minimization', pattern: /minimize output tokens/i },
223
+ { name: 'CommonMark', pattern: /CommonMark/i },
224
+ { name: 'Examples', pattern: /<example>/ },
225
+ { name: 'Environment placeholder', pattern: /\{\{ENVIRONMENT\}\}/ },
226
+ ];
227
+ for (const check of checks) {
228
+ const found = check.pattern.test(basePrompt);
229
+ console.error(`[PROMPT DEBUG] ✓ ${check.name}: ${found ? 'OK' : 'MISSING'}`);
230
+ }
231
+ console.error('[PROMPT DEBUG] ================================');
232
+ // Print full content if level >= 2
233
+ if (debugLevel === '2') {
234
+ console.error('\n[PROMPT DEBUG] === base.txt ===\n');
235
+ console.error(basePrompt);
236
+ console.error(`\n[PROMPT DEBUG] === ${promptType}.txt ===\n`);
237
+ console.error(providerPrompt);
238
+ console.error('\n[PROMPT DEBUG] === END ===\n');
239
+ }
240
+ }
241
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * AskUserQuestion Tool - Structured user questioning
3
+ *
4
+ * Allows the agent to pause execution and present structured questions
5
+ * to the user with predefined options. Supports single-select, multi-select,
6
+ * and custom "Other" input.
7
+ */
8
+ import { z } from 'zod';
9
+ import type { Tool } from '../types.js';
10
+ export declare const QuestionOptionSchema: z.ZodObject<{
11
+ label: z.ZodString;
12
+ description: z.ZodString;
13
+ }, z.core.$strip>;
14
+ export declare const QuestionSchema: z.ZodObject<{
15
+ question: z.ZodString;
16
+ header: z.ZodString;
17
+ options: z.ZodArray<z.ZodObject<{
18
+ label: z.ZodString;
19
+ description: z.ZodString;
20
+ }, z.core.$strip>>;
21
+ multiSelect: z.ZodBoolean;
22
+ }, z.core.$strip>;
23
+ export declare const AskUserQuestionInputSchema: z.ZodObject<{
24
+ questions: z.ZodArray<z.ZodObject<{
25
+ question: z.ZodString;
26
+ header: z.ZodString;
27
+ options: z.ZodArray<z.ZodObject<{
28
+ label: z.ZodString;
29
+ description: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ multiSelect: z.ZodBoolean;
32
+ }, z.core.$strip>>;
33
+ }, z.core.$strip>;
34
+ export type QuestionOption = z.infer<typeof QuestionOptionSchema>;
35
+ export type Question = z.infer<typeof QuestionSchema>;
36
+ export type AskUserQuestionInput = z.infer<typeof AskUserQuestionInputSchema>;
37
+ export interface QuestionAnswer {
38
+ question: string;
39
+ header: string;
40
+ selectedOptions: string[];
41
+ customInput?: string;
42
+ }
43
+ export interface AskUserQuestionResult {
44
+ answers: QuestionAnswer[];
45
+ }
46
+ /**
47
+ * Format answers for display to the agent
48
+ */
49
+ export declare function formatAnswersForAgent(answers: QuestionAnswer[]): string;
50
+ /**
51
+ * Format answers for CLI confirmation display
52
+ */
53
+ export declare function formatAnswersForDisplay(answers: QuestionAnswer[]): string;
54
+ /**
55
+ * AskUserQuestion tool
56
+ *
57
+ * This tool is special - it doesn't execute immediately but signals
58
+ * the agent loop to pause and wait for user input via the CLI.
59
+ *
60
+ * The actual questioning is handled by the CLI layer (QuestionPrompt component).
61
+ * This tool just validates the input and returns a marker for the agent loop.
62
+ */
63
+ export declare const askUserQuestionTool: Tool<AskUserQuestionInput>;
64
+ //# sourceMappingURL=ask-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,aAAa,CAAC;AAOjE,eAAO,MAAM,oBAAoB;;;iBAW/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;iBAkBzB,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAMrC,CAAC;AAMH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAoBvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CASzE;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAoD1D,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * AskUserQuestion Tool - Structured user questioning
3
+ *
4
+ * Allows the agent to pause execution and present structured questions
5
+ * to the user with predefined options. Supports single-select, multi-select,
6
+ * and custom "Other" input.
7
+ */
8
+ import { z } from 'zod';
9
+ import { loadToolDescription } from '../../prompts/index.js';
10
+ // ============================================================================
11
+ // Zod Schemas
12
+ // ============================================================================
13
+ export const QuestionOptionSchema = z.object({
14
+ label: z
15
+ .string()
16
+ .min(1)
17
+ .max(50)
18
+ .describe('Display text for this option (1-5 words, concise)'),
19
+ description: z
20
+ .string()
21
+ .min(1)
22
+ .max(200)
23
+ .describe('Explanation of what this option means or implications'),
24
+ });
25
+ export const QuestionSchema = z.object({
26
+ question: z
27
+ .string()
28
+ .min(1)
29
+ .describe('The complete question to ask the user, ending with a question mark'),
30
+ header: z
31
+ .string()
32
+ .min(1)
33
+ .max(12)
34
+ .describe('Very short label displayed as a chip/tag (max 12 chars)'),
35
+ options: z
36
+ .array(QuestionOptionSchema)
37
+ .min(2)
38
+ .max(4)
39
+ .describe('2-4 options for the user to choose from'),
40
+ multiSelect: z
41
+ .boolean()
42
+ .describe('Set to true to allow multiple selections, false for single choice'),
43
+ });
44
+ export const AskUserQuestionInputSchema = z.object({
45
+ questions: z
46
+ .array(QuestionSchema)
47
+ .min(1)
48
+ .max(4)
49
+ .describe('1-4 questions to ask the user'),
50
+ });
51
+ // ============================================================================
52
+ // Answer Formatting
53
+ // ============================================================================
54
+ /**
55
+ * Format answers for display to the agent
56
+ */
57
+ export function formatAnswersForAgent(answers) {
58
+ const lines = ['User answered the following questions:', ''];
59
+ answers.forEach((answer, index) => {
60
+ lines.push(`${index + 1}. ${answer.header} (${answer.question})`);
61
+ if (answer.selectedOptions.length > 0) {
62
+ lines.push(` Selected: ${answer.selectedOptions.join(', ')}`);
63
+ }
64
+ if (answer.customInput) {
65
+ lines.push(` Custom input: ${answer.customInput}`);
66
+ }
67
+ lines.push('');
68
+ });
69
+ lines.push('Proceeding with user selections.');
70
+ return lines.join('\n');
71
+ }
72
+ /**
73
+ * Format answers for CLI confirmation display
74
+ */
75
+ export function formatAnswersForDisplay(answers) {
76
+ return answers
77
+ .map((answer) => {
78
+ const selections = answer.customInput
79
+ ? [...answer.selectedOptions, answer.customInput].join(', ')
80
+ : answer.selectedOptions.join(', ');
81
+ return `✔ ${answer.header}: ${selections}`;
82
+ })
83
+ .join('\n');
84
+ }
85
+ // ============================================================================
86
+ // Tool Implementation
87
+ // ============================================================================
88
+ /**
89
+ * AskUserQuestion tool
90
+ *
91
+ * This tool is special - it doesn't execute immediately but signals
92
+ * the agent loop to pause and wait for user input via the CLI.
93
+ *
94
+ * The actual questioning is handled by the CLI layer (QuestionPrompt component).
95
+ * This tool just validates the input and returns a marker for the agent loop.
96
+ */
97
+ export const askUserQuestionTool = {
98
+ name: 'AskUserQuestion',
99
+ description: loadToolDescription('ask-user'),
100
+ parameters: AskUserQuestionInputSchema,
101
+ async execute(input, context) {
102
+ // Validation is handled by Zod schema
103
+ // Additional validation for recommended options format
104
+ for (const question of input.questions) {
105
+ // Check if first option has (Recommended) - this is just a hint, not enforced
106
+ const firstOption = question.options[0];
107
+ if (firstOption && !firstOption.label.includes('(Recommended)')) {
108
+ // This is fine - recommended suffix is optional
109
+ }
110
+ }
111
+ // Check if context has askUser callback
112
+ if (context.askUser) {
113
+ try {
114
+ const answers = await context.askUser(input.questions);
115
+ return {
116
+ success: true,
117
+ output: formatAnswersForAgent(answers),
118
+ metadata: {
119
+ title: 'AskUserQuestion',
120
+ subtitle: `${answers.length} answer(s) received`,
121
+ },
122
+ };
123
+ }
124
+ catch (error) {
125
+ return {
126
+ success: false,
127
+ output: '',
128
+ error: `Failed to get user response: ${error instanceof Error ? error.message : String(error)}`,
129
+ };
130
+ }
131
+ }
132
+ // If no askUser callback, return a special marker
133
+ // The agent loop should detect this and handle it specially
134
+ return {
135
+ success: true,
136
+ output: JSON.stringify({
137
+ type: 'ask_user_question',
138
+ questions: input.questions,
139
+ requiresUserInput: true,
140
+ }),
141
+ metadata: {
142
+ title: 'AskUserQuestion',
143
+ subtitle: `${input.questions.length} question(s) pending`,
144
+ },
145
+ };
146
+ },
147
+ };
148
+ //# sourceMappingURL=ask-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tools/builtin/ask-user.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,aAAa,CAAC;AACjE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAmFpC,CAAC"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,aAAa,CAAC;AACjE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAG9D,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAmFpC,CAAC"}
@@ -3,9 +3,10 @@
3
3
  */
4
4
  import { spawn } from 'child_process';
5
5
  import { BashInputSchema } from '../types.js';
6
+ import { loadToolDescription } from '../../prompts/index.js';
6
7
  export const bashTool = {
7
8
  name: 'Bash',
8
- description: 'Execute a bash command and return its output. Use for running scripts, git commands, npm, etc.',
9
+ description: loadToolDescription('bash'),
9
10
  parameters: BashInputSchema,
10
11
  async execute(input, context) {
11
12
  const timeout = input.timeout ?? 30000;
@@ -1 +1 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAE5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CA4BpC,CAAC"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAG5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CA4BpC,CAAC"}
@@ -3,9 +3,10 @@
3
3
  */
4
4
  import * as fs from 'fs/promises';
5
5
  import { EditInputSchema, resolvePath, getErrorMessage } from '../types.js';
6
+ import { loadToolDescription } from '../../prompts/index.js';
6
7
  export const editTool = {
7
8
  name: 'Edit',
8
- description: 'Edit a file by replacing a specific string with another. The old_string must be unique in the file.',
9
+ description: loadToolDescription('edit'),
9
10
  parameters: EditInputSchema,
10
11
  async execute(input, context) {
11
12
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,qGAAqG;IAClH,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAE/D,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;YACnG,CAAC;YACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,gCAAgC,WAAW,8CAA8C,EAAE,CAAC;YAC1I,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,QAAQ,cAAc,QAAQ,iBAAiB,QAAQ,UAAU,EAAE,CAAC;QAC7H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAE/D,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;YACnG,CAAC;YACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,gCAAgC,WAAW,8CAA8C,EAAE,CAAC;YAC1I,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,QAAQ,cAAc,QAAQ,iBAAiB,QAAQ,UAAU,EAAE,CAAC;QAC7H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAI5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CA+BpC,CAAC"}
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAK5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CA+BpC,CAAC"}
@@ -3,10 +3,11 @@
3
3
  */
4
4
  import fastGlob from 'fast-glob';
5
5
  import { GlobInputSchema, resolvePath, getErrorMessage } from '../types.js';
6
+ import { loadToolDescription } from '../../prompts/index.js';
6
7
  const MAX_RESULTS = 100;
7
8
  export const globTool = {
8
9
  name: 'Glob',
9
- description: 'Find files matching a glob pattern. Returns a list of matching file paths.',
10
+ description: loadToolDescription('glob'),
10
11
  parameters: GlobInputSchema,
11
12
  async execute(input, context) {
12
13
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4EAA4E;IACzF,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YAEnF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC1C,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;gBAC5C,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;YAC3E,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS,KAAK,CAAC,MAAM,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAChG,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YAEnF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC1C,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;gBAC5C,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;YAC3E,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS,KAAK,CAAC,MAAM,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAChG,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAI5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAsDpC,CAAC"}
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAK5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAsDpC,CAAC"}
@@ -5,10 +5,11 @@ import * as fs from 'fs/promises';
5
5
  import * as path from 'path';
6
6
  import fastGlob from 'fast-glob';
7
7
  import { GrepInputSchema, resolvePath, getErrorMessage } from '../types.js';
8
+ import { loadToolDescription } from '../../prompts/index.js';
8
9
  const MAX_MATCHES = 50;
9
10
  export const grepTool = {
10
11
  name: 'Grep',
11
- description: 'Search for a regex pattern in files. Returns matching lines with file paths and line numbers.',
12
+ description: loadToolDescription('grep'),
12
13
  parameters: GrepInputSchema,
13
14
  async execute(input, context) {
14
15
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAE5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAyBpC,CAAC"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAmB,KAAK,SAAS,EAAgC,MAAM,aAAa,CAAC;AAG5F,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CAyBpC,CAAC"}
@@ -3,9 +3,10 @@
3
3
  */
4
4
  import * as fs from 'fs/promises';
5
5
  import { ReadInputSchema, resolvePath, getErrorMessage } from '../types.js';
6
+ import { loadToolDescription } from '../../prompts/index.js';
6
7
  export const readTool = {
7
8
  name: 'Read',
8
- description: 'Read the contents of a file. Returns the file content with line numbers.',
9
+ description: loadToolDescription('read'),
9
10
  parameters: ReadInputSchema,
10
11
  async execute(input, context) {
11
12
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/builtin/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,0EAA0E;IACvF,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YAE1C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzD,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/builtin/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,eAAe,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,eAAe;IAE3B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YAE1C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzD,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * TodoWrite Tool - Manage task list for tracking progress
3
+ */
4
+ import type { Tool, TodoItem } from '../types.js';
5
+ import { type TodoWriteInput } from '../types.js';
6
+ /**
7
+ * Get the current todo list
8
+ */
9
+ export declare function getTodos(): TodoItem[];
10
+ /**
11
+ * Clear all todos
12
+ */
13
+ export declare function clearTodos(): void;
14
+ export declare const todowriteTool: Tool<TodoWriteInput>;
15
+ //# sourceMappingURL=todowrite.d.ts.map