gencode-ai 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 (274) hide show
  1. package/.env.example +11 -0
  2. package/CLAUDE.md +70 -0
  3. package/LICENSE +21 -0
  4. package/README.md +117 -0
  5. package/dist/agent/agent.d.ts +84 -0
  6. package/dist/agent/agent.d.ts.map +1 -0
  7. package/dist/agent/agent.js +233 -0
  8. package/dist/agent/agent.js.map +1 -0
  9. package/dist/agent/index.d.ts +6 -0
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +6 -0
  12. package/dist/agent/index.js.map +1 -0
  13. package/dist/agent/types.d.ts +47 -0
  14. package/dist/agent/types.d.ts.map +1 -0
  15. package/dist/agent/types.js +5 -0
  16. package/dist/agent/types.js.map +1 -0
  17. package/dist/cli/components/App.d.ts +14 -0
  18. package/dist/cli/components/App.d.ts.map +1 -0
  19. package/dist/cli/components/App.js +395 -0
  20. package/dist/cli/components/App.js.map +1 -0
  21. package/dist/cli/components/CommandSuggestions.d.ts +13 -0
  22. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -0
  23. package/dist/cli/components/CommandSuggestions.js +32 -0
  24. package/dist/cli/components/CommandSuggestions.js.map +1 -0
  25. package/dist/cli/components/Header.d.ts +9 -0
  26. package/dist/cli/components/Header.d.ts.map +1 -0
  27. package/dist/cli/components/Header.js +13 -0
  28. package/dist/cli/components/Header.js.map +1 -0
  29. package/dist/cli/components/Input.d.ts +13 -0
  30. package/dist/cli/components/Input.d.ts.map +1 -0
  31. package/dist/cli/components/Input.js +27 -0
  32. package/dist/cli/components/Input.js.map +1 -0
  33. package/dist/cli/components/Logo.d.ts +2 -0
  34. package/dist/cli/components/Logo.d.ts.map +1 -0
  35. package/dist/cli/components/Logo.js +8 -0
  36. package/dist/cli/components/Logo.js.map +1 -0
  37. package/dist/cli/components/Messages.d.ts +37 -0
  38. package/dist/cli/components/Messages.d.ts.map +1 -0
  39. package/dist/cli/components/Messages.js +106 -0
  40. package/dist/cli/components/Messages.js.map +1 -0
  41. package/dist/cli/components/ModelSelector.d.ts +13 -0
  42. package/dist/cli/components/ModelSelector.d.ts.map +1 -0
  43. package/dist/cli/components/ModelSelector.js +72 -0
  44. package/dist/cli/components/ModelSelector.js.map +1 -0
  45. package/dist/cli/components/Spinner.d.ts +12 -0
  46. package/dist/cli/components/Spinner.d.ts.map +1 -0
  47. package/dist/cli/components/Spinner.js +45 -0
  48. package/dist/cli/components/Spinner.js.map +1 -0
  49. package/dist/cli/components/index.d.ts +12 -0
  50. package/dist/cli/components/index.d.ts.map +1 -0
  51. package/dist/cli/components/index.js +12 -0
  52. package/dist/cli/components/index.js.map +1 -0
  53. package/dist/cli/components/theme.d.ts +31 -0
  54. package/dist/cli/components/theme.d.ts.map +1 -0
  55. package/dist/cli/components/theme.js +36 -0
  56. package/dist/cli/components/theme.js.map +1 -0
  57. package/dist/cli/index-legacy.d.ts +7 -0
  58. package/dist/cli/index-legacy.d.ts.map +1 -0
  59. package/dist/cli/index-legacy.js +431 -0
  60. package/dist/cli/index-legacy.js.map +1 -0
  61. package/dist/cli/index.d.ts +7 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +116 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/ink-cli.d.ts +7 -0
  66. package/dist/cli/ink-cli.d.ts.map +1 -0
  67. package/dist/cli/ink-cli.js +105 -0
  68. package/dist/cli/ink-cli.js.map +1 -0
  69. package/dist/cli/session-picker.d.ts +16 -0
  70. package/dist/cli/session-picker.d.ts.map +1 -0
  71. package/dist/cli/session-picker.js +280 -0
  72. package/dist/cli/session-picker.js.map +1 -0
  73. package/dist/cli/ui.d.ts +61 -0
  74. package/dist/cli/ui.d.ts.map +1 -0
  75. package/dist/cli/ui.js +364 -0
  76. package/dist/cli/ui.js.map +1 -0
  77. package/dist/config/index.d.ts +7 -0
  78. package/dist/config/index.d.ts.map +1 -0
  79. package/dist/config/index.js +6 -0
  80. package/dist/config/index.js.map +1 -0
  81. package/dist/config/manager.d.ts +31 -0
  82. package/dist/config/manager.d.ts.map +1 -0
  83. package/dist/config/manager.js +65 -0
  84. package/dist/config/manager.js.map +1 -0
  85. package/dist/config/types.d.ts +22 -0
  86. package/dist/config/types.d.ts.map +1 -0
  87. package/dist/config/types.js +6 -0
  88. package/dist/config/types.js.map +1 -0
  89. package/dist/index.d.ts +12 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +21 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/memory/index.d.ts +10 -0
  94. package/dist/memory/index.d.ts.map +1 -0
  95. package/dist/memory/index.js +9 -0
  96. package/dist/memory/index.js.map +1 -0
  97. package/dist/memory/init.d.ts +20 -0
  98. package/dist/memory/init.d.ts.map +1 -0
  99. package/dist/memory/init.js +332 -0
  100. package/dist/memory/init.js.map +1 -0
  101. package/dist/memory/manager.d.ts +85 -0
  102. package/dist/memory/manager.d.ts.map +1 -0
  103. package/dist/memory/manager.js +234 -0
  104. package/dist/memory/manager.js.map +1 -0
  105. package/dist/memory/types.d.ts +74 -0
  106. package/dist/memory/types.d.ts.map +1 -0
  107. package/dist/memory/types.js +6 -0
  108. package/dist/memory/types.js.map +1 -0
  109. package/dist/permissions/index.d.ts +7 -0
  110. package/dist/permissions/index.d.ts.map +1 -0
  111. package/dist/permissions/index.js +6 -0
  112. package/dist/permissions/index.js.map +1 -0
  113. package/dist/permissions/manager.d.ts +32 -0
  114. package/dist/permissions/manager.d.ts.map +1 -0
  115. package/dist/permissions/manager.js +79 -0
  116. package/dist/permissions/manager.js.map +1 -0
  117. package/dist/permissions/types.d.ts +14 -0
  118. package/dist/permissions/types.d.ts.map +1 -0
  119. package/dist/permissions/types.js +17 -0
  120. package/dist/permissions/types.js.map +1 -0
  121. package/dist/providers/anthropic.d.ts +20 -0
  122. package/dist/providers/anthropic.d.ts.map +1 -0
  123. package/dist/providers/anthropic.js +185 -0
  124. package/dist/providers/anthropic.js.map +1 -0
  125. package/dist/providers/gemini.d.ts +21 -0
  126. package/dist/providers/gemini.d.ts.map +1 -0
  127. package/dist/providers/gemini.js +241 -0
  128. package/dist/providers/gemini.js.map +1 -0
  129. package/dist/providers/index.d.ts +34 -0
  130. package/dist/providers/index.d.ts.map +1 -0
  131. package/dist/providers/index.js +72 -0
  132. package/dist/providers/index.js.map +1 -0
  133. package/dist/providers/openai.d.ts +19 -0
  134. package/dist/providers/openai.d.ts.map +1 -0
  135. package/dist/providers/openai.js +221 -0
  136. package/dist/providers/openai.js.map +1 -0
  137. package/dist/providers/types.d.ts +125 -0
  138. package/dist/providers/types.d.ts.map +1 -0
  139. package/dist/providers/types.js +6 -0
  140. package/dist/providers/types.js.map +1 -0
  141. package/dist/session/index.d.ts +6 -0
  142. package/dist/session/index.d.ts.map +1 -0
  143. package/dist/session/index.js +6 -0
  144. package/dist/session/index.js.map +1 -0
  145. package/dist/session/manager.d.ts +101 -0
  146. package/dist/session/manager.d.ts.map +1 -0
  147. package/dist/session/manager.js +295 -0
  148. package/dist/session/manager.js.map +1 -0
  149. package/dist/session/types.d.ts +39 -0
  150. package/dist/session/types.d.ts.map +1 -0
  151. package/dist/session/types.js +10 -0
  152. package/dist/session/types.js.map +1 -0
  153. package/dist/tools/builtin/bash.d.ts +7 -0
  154. package/dist/tools/builtin/bash.d.ts.map +1 -0
  155. package/dist/tools/builtin/bash.js +80 -0
  156. package/dist/tools/builtin/bash.js.map +1 -0
  157. package/dist/tools/builtin/edit.d.ts +7 -0
  158. package/dist/tools/builtin/edit.d.ts.map +1 -0
  159. package/dist/tools/builtin/edit.js +32 -0
  160. package/dist/tools/builtin/edit.js.map +1 -0
  161. package/dist/tools/builtin/glob.d.ts +7 -0
  162. package/dist/tools/builtin/glob.d.ts.map +1 -0
  163. package/dist/tools/builtin/glob.js +36 -0
  164. package/dist/tools/builtin/glob.js.map +1 -0
  165. package/dist/tools/builtin/grep.d.ts +7 -0
  166. package/dist/tools/builtin/grep.d.ts.map +1 -0
  167. package/dist/tools/builtin/grep.js +59 -0
  168. package/dist/tools/builtin/grep.js.map +1 -0
  169. package/dist/tools/builtin/read.d.ts +7 -0
  170. package/dist/tools/builtin/read.d.ts.map +1 -0
  171. package/dist/tools/builtin/read.js +29 -0
  172. package/dist/tools/builtin/read.js.map +1 -0
  173. package/dist/tools/builtin/write.d.ts +7 -0
  174. package/dist/tools/builtin/write.d.ts.map +1 -0
  175. package/dist/tools/builtin/write.js +24 -0
  176. package/dist/tools/builtin/write.js.map +1 -0
  177. package/dist/tools/index.d.ts +38 -0
  178. package/dist/tools/index.d.ts.map +1 -0
  179. package/dist/tools/index.js +32 -0
  180. package/dist/tools/index.js.map +1 -0
  181. package/dist/tools/registry.d.ts +22 -0
  182. package/dist/tools/registry.d.ts.map +1 -0
  183. package/dist/tools/registry.js +71 -0
  184. package/dist/tools/registry.js.map +1 -0
  185. package/dist/tools/types.d.ts +62 -0
  186. package/dist/tools/types.d.ts.map +1 -0
  187. package/dist/tools/types.js +126 -0
  188. package/dist/tools/types.js.map +1 -0
  189. package/docs/README.md +16 -0
  190. package/docs/proposals/0001-web-fetch-tool.md +293 -0
  191. package/docs/proposals/0002-web-search-tool.md +306 -0
  192. package/docs/proposals/0003-task-subagents.md +333 -0
  193. package/docs/proposals/0004-plan-mode.md +338 -0
  194. package/docs/proposals/0005-todo-system.md +299 -0
  195. package/docs/proposals/0006-memory-system.md +539 -0
  196. package/docs/proposals/0007-context-management.md +429 -0
  197. package/docs/proposals/0008-checkpointing.md +327 -0
  198. package/docs/proposals/0009-hooks-system.md +343 -0
  199. package/docs/proposals/0010-mcp-integration.md +382 -0
  200. package/docs/proposals/0011-custom-commands.md +374 -0
  201. package/docs/proposals/0012-ask-user-question.md +317 -0
  202. package/docs/proposals/0013-multi-edit-tool.md +345 -0
  203. package/docs/proposals/0014-lsp-tool.md +478 -0
  204. package/docs/proposals/0015-ls-tool.md +407 -0
  205. package/docs/proposals/0016-kill-shell-tool.md +455 -0
  206. package/docs/proposals/0017-background-tasks.md +489 -0
  207. package/docs/proposals/0018-parallel-tool-execution.md +415 -0
  208. package/docs/proposals/0019-session-enhancements.md +462 -0
  209. package/docs/proposals/0020-session-summarization.md +447 -0
  210. package/docs/proposals/0021-skills-system.md +409 -0
  211. package/docs/proposals/0022-plugin-system.md +467 -0
  212. package/docs/proposals/0023-permission-enhancements.md +470 -0
  213. package/docs/proposals/0024-keyboard-shortcuts.md +443 -0
  214. package/docs/proposals/0025-cost-tracking.md +447 -0
  215. package/docs/proposals/0026-git-integration.md +475 -0
  216. package/docs/proposals/0027-enhanced-read-tool.md +514 -0
  217. package/docs/proposals/0028-enhanced-bash-tool.md +511 -0
  218. package/docs/proposals/0029-notebook-edit-tool.md +413 -0
  219. package/docs/proposals/0030-plugin-marketplace.md +360 -0
  220. package/docs/proposals/0031-command-suggestions.md +295 -0
  221. package/docs/proposals/0032-ide-integrations.md +328 -0
  222. package/docs/proposals/0033-enterprise-deployment.md +221 -0
  223. package/docs/proposals/0034-sandboxing.md +273 -0
  224. package/docs/proposals/0035-auto-updater.md +311 -0
  225. package/docs/proposals/0036-enhanced-glob-tool.md +267 -0
  226. package/docs/proposals/0037-enhanced-grep-tool.md +360 -0
  227. package/docs/proposals/0038-interactive-cli-ui.md +373 -0
  228. package/docs/proposals/0039-streaming-enhancements.md +359 -0
  229. package/docs/proposals/0040-multi-provider-enhancements.md +369 -0
  230. package/docs/proposals/README.md +84 -0
  231. package/docs/proposals/TEMPLATE.md +57 -0
  232. package/docs/proposals/research/claude-code-research.md +307 -0
  233. package/examples/agent-demo.ts +115 -0
  234. package/examples/basic.ts +166 -0
  235. package/package.json +50 -0
  236. package/src/agent/agent.ts +276 -0
  237. package/src/agent/index.ts +6 -0
  238. package/src/agent/types.ts +62 -0
  239. package/src/cli/components/App.tsx +565 -0
  240. package/src/cli/components/CommandSuggestions.tsx +58 -0
  241. package/src/cli/components/Header.tsx +36 -0
  242. package/src/cli/components/Input.tsx +60 -0
  243. package/src/cli/components/Logo.tsx +16 -0
  244. package/src/cli/components/Messages.tsx +210 -0
  245. package/src/cli/components/ModelSelector.tsx +135 -0
  246. package/src/cli/components/Spinner.tsx +72 -0
  247. package/src/cli/components/index.ts +21 -0
  248. package/src/cli/components/theme.ts +36 -0
  249. package/src/cli/index.tsx +136 -0
  250. package/src/config/index.ts +7 -0
  251. package/src/config/manager.ts +77 -0
  252. package/src/config/types.ts +25 -0
  253. package/src/index.ts +86 -0
  254. package/src/permissions/index.ts +7 -0
  255. package/src/permissions/manager.ts +97 -0
  256. package/src/permissions/types.ts +29 -0
  257. package/src/providers/anthropic.ts +224 -0
  258. package/src/providers/gemini.ts +295 -0
  259. package/src/providers/index.ts +97 -0
  260. package/src/providers/openai.ts +261 -0
  261. package/src/providers/types.ts +181 -0
  262. package/src/session/index.ts +6 -0
  263. package/src/session/manager.ts +354 -0
  264. package/src/session/types.ts +49 -0
  265. package/src/tools/builtin/bash.ts +92 -0
  266. package/src/tools/builtin/edit.ts +37 -0
  267. package/src/tools/builtin/glob.ts +42 -0
  268. package/src/tools/builtin/grep.ts +67 -0
  269. package/src/tools/builtin/read.ts +34 -0
  270. package/src/tools/builtin/write.ts +27 -0
  271. package/src/tools/index.ts +36 -0
  272. package/src/tools/registry.ts +83 -0
  273. package/src/tools/types.ts +172 -0
  274. package/tsconfig.json +21 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Read Tool - Read file contents
3
+ */
4
+ import type { Tool } from '../types.js';
5
+ import { type ReadInput } from '../types.js';
6
+ export declare const readTool: Tool<ReadInput>;
7
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Read Tool - Read file contents
3
+ */
4
+ import * as fs from 'fs/promises';
5
+ import { ReadInputSchema, resolvePath, getErrorMessage } from '../types.js';
6
+ export const readTool = {
7
+ name: 'Read',
8
+ description: 'Read the contents of a file. Returns the file content with line numbers.',
9
+ parameters: ReadInputSchema,
10
+ async execute(input, context) {
11
+ try {
12
+ const filePath = resolvePath(input.file_path, context.cwd);
13
+ const content = await fs.readFile(filePath, 'utf-8');
14
+ const lines = content.split('\n');
15
+ const offset = input.offset ?? 1;
16
+ const limit = input.limit ?? lines.length;
17
+ const selectedLines = lines.slice(offset - 1, offset - 1 + limit);
18
+ const numberedLines = selectedLines.map((line, i) => {
19
+ const lineNum = (offset + i).toString().padStart(5, ' ');
20
+ return `${lineNum}│${line}`;
21
+ });
22
+ return { success: true, output: numberedLines.join('\n') };
23
+ }
24
+ catch (error) {
25
+ return { success: false, output: '', error: `Failed to read file: ${getErrorMessage(error)}` };
26
+ }
27
+ },
28
+ };
29
+ //# sourceMappingURL=read.js.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Write Tool - Write content to a file
3
+ */
4
+ import type { Tool } from '../types.js';
5
+ import { type WriteInput } from '../types.js';
6
+ export declare const writeTool: Tool<WriteInput>;
7
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/write.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAoB,KAAK,UAAU,EAAgC,MAAM,aAAa,CAAC;AAE9F,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU,CAiBtC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Write Tool - Write content to a file
3
+ */
4
+ import * as fs from 'fs/promises';
5
+ import * as path from 'path';
6
+ import { WriteInputSchema, resolvePath, getErrorMessage } from '../types.js';
7
+ export const writeTool = {
8
+ name: 'Write',
9
+ description: 'Write content to a file. Creates the file if it does not exist, overwrites if it does.',
10
+ parameters: WriteInputSchema,
11
+ async execute(input, context) {
12
+ try {
13
+ const filePath = resolvePath(input.file_path, context.cwd);
14
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
15
+ await fs.writeFile(filePath, input.content, 'utf-8');
16
+ const lineCount = input.content.split('\n').length;
17
+ return { success: true, output: `Successfully wrote ${lineCount} lines to ${filePath}` };
18
+ }
19
+ catch (error) {
20
+ return { success: false, output: '', error: `Failed to write file: ${getErrorMessage(error)}` };
21
+ }
22
+ },
23
+ };
24
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/tools/builtin/write.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAmB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9F,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,wFAAwF;IACrG,UAAU,EAAE,gBAAgB;IAE5B,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,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAErD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,SAAS,aAAa,QAAQ,EAAE,EAAE,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,yBAAyB,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Tools System - Built-in tools and registry
3
+ */
4
+ export * from './types.js';
5
+ export { ToolRegistry } from './registry.js';
6
+ export { readTool } from './builtin/read.js';
7
+ export { writeTool } from './builtin/write.js';
8
+ export { editTool } from './builtin/edit.js';
9
+ export { bashTool } from './builtin/bash.js';
10
+ export { globTool } from './builtin/glob.js';
11
+ export { grepTool } from './builtin/grep.js';
12
+ import { ToolRegistry } from './registry.js';
13
+ /**
14
+ * Create a registry with all built-in tools
15
+ */
16
+ export declare function createDefaultRegistry(): ToolRegistry;
17
+ /**
18
+ * All built-in tools
19
+ */
20
+ export declare const builtinTools: (import("./types.js").Tool<{
21
+ file_path: string;
22
+ offset?: number | undefined;
23
+ limit?: number | undefined;
24
+ }> | import("./types.js").Tool<{
25
+ file_path: string;
26
+ content: string;
27
+ }> | import("./types.js").Tool<{
28
+ file_path: string;
29
+ old_string: string;
30
+ new_string: string;
31
+ }> | import("./types.js").Tool<{
32
+ command: string;
33
+ timeout?: number | undefined;
34
+ }> | import("./types.js").Tool<{
35
+ pattern: string;
36
+ path?: string | undefined;
37
+ }>)[];
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQ7C;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAIpD;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;KAAgE,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Tools System - Built-in tools and registry
3
+ */
4
+ export * from './types.js';
5
+ export { ToolRegistry } from './registry.js';
6
+ // Built-in tools
7
+ export { readTool } from './builtin/read.js';
8
+ export { writeTool } from './builtin/write.js';
9
+ export { editTool } from './builtin/edit.js';
10
+ export { bashTool } from './builtin/bash.js';
11
+ export { globTool } from './builtin/glob.js';
12
+ export { grepTool } from './builtin/grep.js';
13
+ import { ToolRegistry } from './registry.js';
14
+ import { readTool } from './builtin/read.js';
15
+ import { writeTool } from './builtin/write.js';
16
+ import { editTool } from './builtin/edit.js';
17
+ import { bashTool } from './builtin/bash.js';
18
+ import { globTool } from './builtin/glob.js';
19
+ import { grepTool } from './builtin/grep.js';
20
+ /**
21
+ * Create a registry with all built-in tools
22
+ */
23
+ export function createDefaultRegistry() {
24
+ const registry = new ToolRegistry();
25
+ registry.registerAll([readTool, writeTool, editTool, bashTool, globTool, grepTool]);
26
+ return registry;
27
+ }
28
+ /**
29
+ * All built-in tools
30
+ */
31
+ export const builtinTools = [readTool, writeTool, editTool, bashTool, globTool, grepTool];
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tool Registry - Manages available tools
3
+ */
4
+ import type { Tool, ToolContext, ToolResult } from './types.js';
5
+ import type { ToolDefinition } from '../providers/types.js';
6
+ export declare class ToolRegistry {
7
+ private tools;
8
+ register(tool: Tool): void;
9
+ registerAll(tools: Tool[]): void;
10
+ get(name: string): Tool | undefined;
11
+ has(name: string): boolean;
12
+ list(): string[];
13
+ /**
14
+ * Get tool definitions for LLM
15
+ */
16
+ getDefinitions(toolNames?: string[]): ToolDefinition[];
17
+ /**
18
+ * Execute a tool by name
19
+ */
20
+ execute(name: string, input: unknown, context: ToolContext): Promise<ToolResult>;
21
+ }
22
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAgC;IAE7C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAgBtD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA2BvF"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Tool Registry - Manages available tools
3
+ */
4
+ import { zodToJsonSchema, getErrorMessage } from './types.js';
5
+ export class ToolRegistry {
6
+ tools = new Map();
7
+ register(tool) {
8
+ this.tools.set(tool.name, tool);
9
+ }
10
+ registerAll(tools) {
11
+ for (const tool of tools) {
12
+ this.register(tool);
13
+ }
14
+ }
15
+ get(name) {
16
+ return this.tools.get(name);
17
+ }
18
+ has(name) {
19
+ return this.tools.has(name);
20
+ }
21
+ list() {
22
+ return Array.from(this.tools.keys());
23
+ }
24
+ /**
25
+ * Get tool definitions for LLM
26
+ */
27
+ getDefinitions(toolNames) {
28
+ const names = toolNames ?? this.list();
29
+ return names
30
+ .map((name) => {
31
+ const tool = this.tools.get(name);
32
+ if (!tool)
33
+ return null;
34
+ return {
35
+ name: tool.name,
36
+ description: tool.description,
37
+ parameters: zodToJsonSchema(tool.parameters),
38
+ };
39
+ })
40
+ .filter((t) => t !== null);
41
+ }
42
+ /**
43
+ * Execute a tool by name
44
+ */
45
+ async execute(name, input, context) {
46
+ const tool = this.tools.get(name);
47
+ if (!tool) {
48
+ return {
49
+ success: false,
50
+ output: '',
51
+ error: `Unknown tool: ${name}`,
52
+ };
53
+ }
54
+ try {
55
+ // Validate input
56
+ const parsed = tool.parameters.safeParse(input);
57
+ if (!parsed.success) {
58
+ return {
59
+ success: false,
60
+ output: '',
61
+ error: `Invalid input: ${parsed.error.message}`,
62
+ };
63
+ }
64
+ return await tool.execute(parsed.data, context);
65
+ }
66
+ catch (error) {
67
+ return { success: false, output: '', error: `Tool execution failed: ${getErrorMessage(error)}` };
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,OAAO,YAAY;IACf,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IAE7C,QAAQ,CAAC,IAAU;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAoB;QACjC,MAAM,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YAEvB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;aAC7C,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,KAAc,EAAE,OAAoB;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,iBAAiB,IAAI,EAAE;aAC/B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;iBAChD,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,0BAA0B,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Tool System Type Definitions
3
+ */
4
+ import { z } from 'zod';
5
+ export interface ToolContext {
6
+ cwd: string;
7
+ abortSignal?: AbortSignal;
8
+ }
9
+ export interface ToolResult {
10
+ success: boolean;
11
+ output: string;
12
+ error?: string;
13
+ }
14
+ export interface Tool<TInput = unknown> {
15
+ name: string;
16
+ description: string;
17
+ parameters: z.ZodSchema<TInput>;
18
+ execute(input: TInput, context: ToolContext): Promise<ToolResult>;
19
+ }
20
+ /**
21
+ * Resolve a file path relative to the context's working directory
22
+ */
23
+ export declare function resolvePath(filePath: string, cwd: string): string;
24
+ /**
25
+ * Extract error message from unknown error
26
+ */
27
+ export declare function getErrorMessage(error: unknown): string;
28
+ export declare const ReadInputSchema: z.ZodObject<{
29
+ file_path: z.ZodString;
30
+ offset: z.ZodOptional<z.ZodNumber>;
31
+ limit: z.ZodOptional<z.ZodNumber>;
32
+ }, z.core.$strip>;
33
+ export type ReadInput = z.infer<typeof ReadInputSchema>;
34
+ export declare const WriteInputSchema: z.ZodObject<{
35
+ file_path: z.ZodString;
36
+ content: z.ZodString;
37
+ }, z.core.$strip>;
38
+ export type WriteInput = z.infer<typeof WriteInputSchema>;
39
+ export declare const EditInputSchema: z.ZodObject<{
40
+ file_path: z.ZodString;
41
+ old_string: z.ZodString;
42
+ new_string: z.ZodString;
43
+ }, z.core.$strip>;
44
+ export type EditInput = z.infer<typeof EditInputSchema>;
45
+ export declare const BashInputSchema: z.ZodObject<{
46
+ command: z.ZodString;
47
+ timeout: z.ZodOptional<z.ZodNumber>;
48
+ }, z.core.$strip>;
49
+ export type BashInput = z.infer<typeof BashInputSchema>;
50
+ export declare const GlobInputSchema: z.ZodObject<{
51
+ pattern: z.ZodString;
52
+ path: z.ZodOptional<z.ZodString>;
53
+ }, z.core.$strip>;
54
+ export type GlobInput = z.infer<typeof GlobInputSchema>;
55
+ export declare const GrepInputSchema: z.ZodObject<{
56
+ pattern: z.ZodString;
57
+ path: z.ZodOptional<z.ZodString>;
58
+ include: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>;
60
+ export type GrepInput = z.infer<typeof GrepInputSchema>;
61
+ export declare function zodToJsonSchema(schema: z.ZodSchema<any>): Record<string, unknown>;
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,IAAI,CAAC,MAAM,GAAG,OAAO;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnE;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD;AAMD,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAOxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwCjF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Tool System Type Definitions
3
+ */
4
+ import * as path from 'path';
5
+ import { z } from 'zod';
6
+ // ============================================================================
7
+ // Helper Functions
8
+ // ============================================================================
9
+ /**
10
+ * Resolve a file path relative to the context's working directory
11
+ */
12
+ export function resolvePath(filePath, cwd) {
13
+ return path.isAbsolute(filePath) ? filePath : path.resolve(cwd, filePath);
14
+ }
15
+ /**
16
+ * Extract error message from unknown error
17
+ */
18
+ export function getErrorMessage(error) {
19
+ return error instanceof Error ? error.message : String(error);
20
+ }
21
+ // ============================================================================
22
+ // Built-in Tool Input Types
23
+ // ============================================================================
24
+ export const ReadInputSchema = z.object({
25
+ file_path: z.string().describe('The absolute path to the file to read'),
26
+ offset: z.number().optional().describe('Line number to start reading from (1-based)'),
27
+ limit: z.number().optional().describe('Number of lines to read'),
28
+ });
29
+ export const WriteInputSchema = z.object({
30
+ file_path: z.string().describe('The absolute path to the file to write'),
31
+ content: z.string().describe('The content to write to the file'),
32
+ });
33
+ export const EditInputSchema = z.object({
34
+ file_path: z.string().describe('The absolute path to the file to modify'),
35
+ old_string: z.string().describe('The text to replace'),
36
+ new_string: z.string().describe('The replacement text'),
37
+ });
38
+ export const BashInputSchema = z.object({
39
+ command: z.string().describe('The bash command to execute'),
40
+ timeout: z.number().optional().describe('Timeout in milliseconds (default: 30000)'),
41
+ });
42
+ export const GlobInputSchema = z.object({
43
+ pattern: z.string().describe('The glob pattern to match files'),
44
+ path: z.string().optional().describe('The directory to search in'),
45
+ });
46
+ export const GrepInputSchema = z.object({
47
+ pattern: z.string().describe('The regex pattern to search for'),
48
+ path: z.string().optional().describe('The file or directory to search in'),
49
+ include: z.string().optional().describe('File pattern to include (e.g., "*.ts")'),
50
+ });
51
+ // ============================================================================
52
+ // JSON Schema Conversion
53
+ // ============================================================================
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ export function zodToJsonSchema(schema) {
56
+ // Use Zod's built-in JSON schema support or manual conversion
57
+ try {
58
+ // Zod v4 approach - check if toJsonSchema exists
59
+ if ('toJsonSchema' in z && typeof z.toJsonSchema === 'function') {
60
+ return z.toJsonSchema(schema);
61
+ }
62
+ }
63
+ catch {
64
+ // Fall through to manual conversion
65
+ }
66
+ // Manual conversion for object schemas
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ const def = schema._zod ?? schema._def;
69
+ if (def?.typeName === 'ZodObject' || def?.def?.typeName === 'object') {
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ const shape = schema.shape ?? schema._zod?.def?.shape;
72
+ if (shape) {
73
+ const properties = {};
74
+ const required = [];
75
+ for (const [key, value] of Object.entries(shape)) {
76
+ properties[key] = zodFieldToJsonSchema(value);
77
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
+ const valDef = value._zod ?? value._def;
79
+ const isOptional = valDef?.typeName === 'ZodOptional' || valDef?.def?.typeName === 'optional';
80
+ if (!isOptional) {
81
+ required.push(key);
82
+ }
83
+ }
84
+ return {
85
+ type: 'object',
86
+ properties,
87
+ required: required.length > 0 ? required : undefined,
88
+ };
89
+ }
90
+ }
91
+ return { type: 'object' };
92
+ }
93
+ function zodFieldToJsonSchema(field) {
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ const f = field;
96
+ const def = f._zod ?? f._def;
97
+ const description = def?.def?.description ?? def?.description;
98
+ // Get the inner type for optionals
99
+ let typeName = def?.typeName ?? def?.def?.typeName ?? 'string';
100
+ // Unwrap optional
101
+ if (typeName === 'ZodOptional' || typeName === 'optional') {
102
+ const inner = def?.def?.innerType ?? def?.innerType;
103
+ if (inner) {
104
+ const innerDef = inner._zod ?? inner._def;
105
+ typeName = innerDef?.typeName ?? innerDef?.def?.typeName ?? 'string';
106
+ }
107
+ }
108
+ // Map Zod types to JSON Schema types
109
+ let type = 'string';
110
+ if (typeName === 'ZodNumber' || typeName === 'number') {
111
+ type = 'number';
112
+ }
113
+ else if (typeName === 'ZodBoolean' || typeName === 'boolean') {
114
+ type = 'boolean';
115
+ }
116
+ else if (typeName === 'ZodArray' || typeName === 'array') {
117
+ const items = def?.def?.element ?? def?.element;
118
+ return {
119
+ type: 'array',
120
+ items: items ? zodFieldToJsonSchema(items) : { type: 'string' },
121
+ description,
122
+ };
123
+ }
124
+ return { type, description };
125
+ }
126
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
package/docs/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # mycode Documentation
2
+
3
+ This directory contains documentation for the mycode project.
4
+
5
+ ## Contents
6
+
7
+ - [**proposals/**](./proposals/) - Enhancement proposals for new features
8
+
9
+ ## About mycode
10
+
11
+ mycode is an open-source, provider-agnostic alternative to Claude Code. It brings Claude Code's excellent interactive CLI experience while allowing flexible switching between different LLM providers (OpenAI, Anthropic, Google Gemini).
12
+
13
+ ## Quick Links
14
+
15
+ - [Enhancement Proposals](./proposals/README.md)
16
+ - [Main README](../README.md)