@vetala/vetala 0.1.0-beta

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.

Potentially problematic release.


This version of @vetala/vetala might be problematic. Click here for more details.

Files changed (271) hide show
  1. package/CONTRIBUTING.md +77 -0
  2. package/LICENSE +184 -0
  3. package/README.md +136 -0
  4. package/THIRD_PARTY_LICENSES.md +17 -0
  5. package/dist/src/agent.d.ts +30 -0
  6. package/dist/src/agent.js +216 -0
  7. package/dist/src/agent.js.map +1 -0
  8. package/dist/src/approvals.d.ts +18 -0
  9. package/dist/src/approvals.js +81 -0
  10. package/dist/src/approvals.js.map +1 -0
  11. package/dist/src/cli.d.ts +2 -0
  12. package/dist/src/cli.js +87 -0
  13. package/dist/src/cli.js.map +1 -0
  14. package/dist/src/config.d.ts +12 -0
  15. package/dist/src/config.js +183 -0
  16. package/dist/src/config.js.map +1 -0
  17. package/dist/src/context-memory.d.ts +7 -0
  18. package/dist/src/context-memory.js +96 -0
  19. package/dist/src/context-memory.js.map +1 -0
  20. package/dist/src/ink/command-suggestions.d.ts +7 -0
  21. package/dist/src/ink/command-suggestions.js +179 -0
  22. package/dist/src/ink/command-suggestions.js.map +1 -0
  23. package/dist/src/ink/ink-terminal-ui.d.ts +36 -0
  24. package/dist/src/ink/ink-terminal-ui.js +79 -0
  25. package/dist/src/ink/ink-terminal-ui.js.map +1 -0
  26. package/dist/src/ink/repl-app.d.ts +9 -0
  27. package/dist/src/ink/repl-app.js +789 -0
  28. package/dist/src/ink/repl-app.js.map +1 -0
  29. package/dist/src/ink/transcript-cards.d.ts +6 -0
  30. package/dist/src/ink/transcript-cards.js +24 -0
  31. package/dist/src/ink/transcript-cards.js.map +1 -0
  32. package/dist/src/path-policy.d.ts +11 -0
  33. package/dist/src/path-policy.js +67 -0
  34. package/dist/src/path-policy.js.map +1 -0
  35. package/dist/src/process-utils.d.ts +13 -0
  36. package/dist/src/process-utils.js +52 -0
  37. package/dist/src/process-utils.js.map +1 -0
  38. package/dist/src/repl.d.ts +9 -0
  39. package/dist/src/repl.js +13 -0
  40. package/dist/src/repl.js.map +1 -0
  41. package/dist/src/sarvam/client.d.ts +15 -0
  42. package/dist/src/sarvam/client.js +208 -0
  43. package/dist/src/sarvam/client.js.map +1 -0
  44. package/dist/src/sarvam/models.d.ts +2 -0
  45. package/dist/src/sarvam/models.js +7 -0
  46. package/dist/src/sarvam/models.js.map +1 -0
  47. package/dist/src/search-provider.d.ts +6 -0
  48. package/dist/src/search-provider.js +8 -0
  49. package/dist/src/search-provider.js.map +1 -0
  50. package/dist/src/session-store.d.ts +19 -0
  51. package/dist/src/session-store.js +318 -0
  52. package/dist/src/session-store.js.map +1 -0
  53. package/dist/src/skills/runtime.d.ts +26 -0
  54. package/dist/src/skills/runtime.js +317 -0
  55. package/dist/src/skills/runtime.js.map +1 -0
  56. package/dist/src/skills/types.d.ts +25 -0
  57. package/dist/src/skills/types.js +2 -0
  58. package/dist/src/skills/types.js.map +1 -0
  59. package/dist/src/terminal-ui.d.ts +29 -0
  60. package/dist/src/terminal-ui.js +236 -0
  61. package/dist/src/terminal-ui.js.map +1 -0
  62. package/dist/src/tools/filesystem.d.ts +2 -0
  63. package/dist/src/tools/filesystem.js +622 -0
  64. package/dist/src/tools/filesystem.js.map +1 -0
  65. package/dist/src/tools/git.d.ts +2 -0
  66. package/dist/src/tools/git.js +326 -0
  67. package/dist/src/tools/git.js.map +1 -0
  68. package/dist/src/tools/index.d.ts +6 -0
  69. package/dist/src/tools/index.js +21 -0
  70. package/dist/src/tools/index.js.map +1 -0
  71. package/dist/src/tools/registry.d.ts +15 -0
  72. package/dist/src/tools/registry.js +59 -0
  73. package/dist/src/tools/registry.js.map +1 -0
  74. package/dist/src/tools/shell.d.ts +2 -0
  75. package/dist/src/tools/shell.js +97 -0
  76. package/dist/src/tools/shell.js.map +1 -0
  77. package/dist/src/tools/skill.d.ts +3 -0
  78. package/dist/src/tools/skill.js +130 -0
  79. package/dist/src/tools/skill.js.map +1 -0
  80. package/dist/src/tools/web.d.ts +3 -0
  81. package/dist/src/tools/web.js +144 -0
  82. package/dist/src/tools/web.js.map +1 -0
  83. package/dist/src/types.d.ts +236 -0
  84. package/dist/src/types.js +2 -0
  85. package/dist/src/types.js.map +1 -0
  86. package/dist/src/workspace-trust.d.ts +3 -0
  87. package/dist/src/workspace-trust.js +31 -0
  88. package/dist/src/workspace-trust.js.map +1 -0
  89. package/dist/src/xdg.d.ts +9 -0
  90. package/dist/src/xdg.js +77 -0
  91. package/dist/src/xdg.js.map +1 -0
  92. package/package.json +57 -0
  93. package/skill/agents-md-generator/SKILL.md +75 -0
  94. package/skill/agents-md-generator/references/agents_md_template.md +160 -0
  95. package/skill/agents-md-generator/references/loc_measurement.md +67 -0
  96. package/skill/agents-md-generator/references/monorepo_detection.md +78 -0
  97. package/skill/agents-md-generator/references/monorepo_strategy.md +60 -0
  98. package/skill/agents-md-generator/references/read_only_commands.md +151 -0
  99. package/skill/agents-md-generator/references/update_strategy.md +160 -0
  100. package/skill/agents-md-generator/references/working_agreements.md +53 -0
  101. package/skill/biz-opportunity-scout/SKILL.md +53 -0
  102. package/skill/biz-opportunity-scout/references/competitive_analysis.md +84 -0
  103. package/skill/biz-opportunity-scout/references/market_sizing.md +68 -0
  104. package/skill/biz-opportunity-scout/references/pmf_indicators.md +94 -0
  105. package/skill/biz-opportunity-scout/references/report_template.md +243 -0
  106. package/skill/biz-opportunity-scout/references/unit_economics.md +97 -0
  107. package/skill/code-review/SKILL.md +86 -0
  108. package/skill/code-review/references/change_analysis.md +116 -0
  109. package/skill/code-review/references/git_operations.md +115 -0
  110. package/skill/code-review/references/impact_detection.md +149 -0
  111. package/skill/code-review/references/output_format.md +137 -0
  112. package/skill/code-review/references/severity_criteria.md +100 -0
  113. package/skill/code-security-audit/SKILL.md +123 -0
  114. package/skill/code-security-audit/references/audit_process.md +277 -0
  115. package/skill/code-security-audit/references/remediation_patterns.md +599 -0
  116. package/skill/code-security-audit/references/report_format.md +391 -0
  117. package/skill/code-security-audit/references/security_domains.md +830 -0
  118. package/skill/code-security-audit/references/vulnerability_patterns.md +813 -0
  119. package/skill/composition-patterns/SKILL.md +83 -0
  120. package/skill/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  121. package/skill/composition-patterns/rules/architecture-compound-components.md +112 -0
  122. package/skill/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  123. package/skill/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  124. package/skill/composition-patterns/rules/react19-no-forwardref.md +42 -0
  125. package/skill/composition-patterns/rules/state-context-interface.md +191 -0
  126. package/skill/composition-patterns/rules/state-decouple-implementation.md +113 -0
  127. package/skill/composition-patterns/rules/state-lift-state.md +125 -0
  128. package/skill/deploy-to-vercel/SKILL.md +293 -0
  129. package/skill/deploy-to-vercel/resources/deploy-sandbox.sh +301 -0
  130. package/skill/deploy-to-vercel/resources/deploy.sh +301 -0
  131. package/skill/doc/SKILL_GUIDELINES.md +138 -0
  132. package/skill/git-workflow/SKILL.md +94 -0
  133. package/skill/git-workflow/references/advanced-git.md +632 -0
  134. package/skill/git-workflow/references/branching-strategies.md +344 -0
  135. package/skill/git-workflow/references/ci-cd-integration.md +683 -0
  136. package/skill/git-workflow/references/code-quality-tools.md +351 -0
  137. package/skill/git-workflow/references/commit-conventions.md +439 -0
  138. package/skill/git-workflow/references/github-releases.md +288 -0
  139. package/skill/git-workflow/references/pull-request-workflow.md +773 -0
  140. package/skill/git-workflow/scripts/verify-git-workflow.sh +263 -0
  141. package/skill/jetbrains-vmoptions/SKILL.md +51 -0
  142. package/skill/jetbrains-vmoptions/references/common-options.md +357 -0
  143. package/skill/jetbrains-vmoptions/references/gc-options.md +350 -0
  144. package/skill/jetbrains-vmoptions/references/memory-options.md +339 -0
  145. package/skill/jetbrains-vmoptions/references/prerequisite-check.md +65 -0
  146. package/skill/kysely-converter/SKILL.md +62 -0
  147. package/skill/kysely-converter/references/delete.md +323 -0
  148. package/skill/kysely-converter/references/insert.md +386 -0
  149. package/skill/kysely-converter/references/operators.md +331 -0
  150. package/skill/kysely-converter/references/select.md +1000 -0
  151. package/skill/kysely-converter/references/update.md +349 -0
  152. package/skill/kysely-converter/references/window_function.md +537 -0
  153. package/skill/react-best-practices/SKILL.md +131 -0
  154. package/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  155. package/skill/react-best-practices/rules/advanced-init-once.md +42 -0
  156. package/skill/react-best-practices/rules/advanced-use-latest.md +39 -0
  157. package/skill/react-best-practices/rules/async-api-routes.md +38 -0
  158. package/skill/react-best-practices/rules/async-defer-await.md +80 -0
  159. package/skill/react-best-practices/rules/async-dependencies.md +51 -0
  160. package/skill/react-best-practices/rules/async-parallel.md +28 -0
  161. package/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  162. package/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  163. package/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  164. package/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  165. package/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  166. package/skill/react-best-practices/rules/bundle-preload.md +50 -0
  167. package/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  168. package/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  169. package/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  170. package/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  171. package/skill/react-best-practices/rules/js-batch-dom-css.md +107 -0
  172. package/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  173. package/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  174. package/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  175. package/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  176. package/skill/react-best-practices/rules/js-early-exit.md +50 -0
  177. package/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  178. package/skill/react-best-practices/rules/js-index-maps.md +37 -0
  179. package/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  180. package/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  181. package/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  182. package/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  183. package/skill/react-best-practices/rules/rendering-activity.md +26 -0
  184. package/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  185. package/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  186. package/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  187. package/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  188. package/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  189. package/skill/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  190. package/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  191. package/skill/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  192. package/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  193. package/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  194. package/skill/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  195. package/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  196. package/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  197. package/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  198. package/skill/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  199. package/skill/react-best-practices/rules/rerender-memo.md +44 -0
  200. package/skill/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  201. package/skill/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  202. package/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  203. package/skill/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  204. package/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  205. package/skill/react-best-practices/rules/server-auth-actions.md +96 -0
  206. package/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  207. package/skill/react-best-practices/rules/server-cache-react.md +76 -0
  208. package/skill/react-best-practices/rules/server-dedup-props.md +65 -0
  209. package/skill/react-best-practices/rules/server-hoist-static-io.md +142 -0
  210. package/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  211. package/skill/react-best-practices/rules/server-serialization.md +38 -0
  212. package/skill/react-native-skills/SKILL.md +115 -0
  213. package/skill/react-native-skills/rules/animation-derived-value.md +53 -0
  214. package/skill/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  215. package/skill/react-native-skills/rules/animation-gpu-properties.md +65 -0
  216. package/skill/react-native-skills/rules/design-system-compound-components.md +66 -0
  217. package/skill/react-native-skills/rules/fonts-config-plugin.md +71 -0
  218. package/skill/react-native-skills/rules/imports-design-system-folder.md +68 -0
  219. package/skill/react-native-skills/rules/js-hoist-intl.md +61 -0
  220. package/skill/react-native-skills/rules/list-performance-callbacks.md +44 -0
  221. package/skill/react-native-skills/rules/list-performance-function-references.md +132 -0
  222. package/skill/react-native-skills/rules/list-performance-images.md +53 -0
  223. package/skill/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  224. package/skill/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  225. package/skill/react-native-skills/rules/list-performance-item-memo.md +82 -0
  226. package/skill/react-native-skills/rules/list-performance-item-types.md +104 -0
  227. package/skill/react-native-skills/rules/list-performance-virtualize.md +67 -0
  228. package/skill/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  229. package/skill/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  230. package/skill/react-native-skills/rules/navigation-native-navigators.md +188 -0
  231. package/skill/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  232. package/skill/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  233. package/skill/react-native-skills/rules/react-state-dispatcher.md +91 -0
  234. package/skill/react-native-skills/rules/react-state-fallback.md +56 -0
  235. package/skill/react-native-skills/rules/react-state-minimize.md +65 -0
  236. package/skill/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  237. package/skill/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  238. package/skill/react-native-skills/rules/scroll-position-no-state.md +82 -0
  239. package/skill/react-native-skills/rules/state-ground-truth.md +80 -0
  240. package/skill/react-native-skills/rules/ui-expo-image.md +66 -0
  241. package/skill/react-native-skills/rules/ui-image-gallery.md +104 -0
  242. package/skill/react-native-skills/rules/ui-measure-views.md +78 -0
  243. package/skill/react-native-skills/rules/ui-menus.md +174 -0
  244. package/skill/react-native-skills/rules/ui-native-modals.md +77 -0
  245. package/skill/react-native-skills/rules/ui-pressable.md +61 -0
  246. package/skill/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  247. package/skill/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  248. package/skill/react-native-skills/rules/ui-styling.md +87 -0
  249. package/skill/react-vite-guide/SKILL.md +101 -0
  250. package/skill/react-vite-guide/references/composition-patterns.md +709 -0
  251. package/skill/react-vite-guide/references/performance-optimization.md +1222 -0
  252. package/skill/react-vite-guide/references/vite-specific.md +385 -0
  253. package/skill/react-vite-guide/references/web-interface.md +146 -0
  254. package/skill/skill-maker/SKILL.md +52 -0
  255. package/skill/skill-maker/references/content_spec.md +67 -0
  256. package/skill/skill-maker/references/frontmatter_spec.md +96 -0
  257. package/skill/skill-maker/references/input_validation.md +90 -0
  258. package/skill/skill-maker/references/skill_structure.md +74 -0
  259. package/skill/system-prompt-creator/SKILL.md +50 -0
  260. package/skill/system-prompt-creator/references/data_format_selection.md +135 -0
  261. package/skill/system-prompt-creator/references/multi_prompt_architecture.md +386 -0
  262. package/skill/system-prompt-creator/references/prompt_structure.md +140 -0
  263. package/skill/system-prompt-creator/references/quality_criteria.md +83 -0
  264. package/skill/typst-creator/SKILL.md +51 -0
  265. package/skill/typst-creator/references/layout.md +401 -0
  266. package/skill/typst-creator/references/math.md +297 -0
  267. package/skill/typst-creator/references/scripting.md +237 -0
  268. package/skill/typst-creator/references/styling.md +217 -0
  269. package/skill/typst-creator/references/syntax.md +234 -0
  270. package/skill/web-design-guidelines/SKILL.md +35 -0
  271. package/terminal.png +0 -0
@@ -0,0 +1,622 @@
1
+ import path from "node:path";
2
+ import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
3
+ import { runExecFile } from "../process-utils.js";
4
+ const MAX_READ_LINES = 400;
5
+ const DEFAULT_SEARCH_LIMIT = 20;
6
+ const DEFAULT_SYMBOL_LIMIT = 3;
7
+ const DEFAULT_SYMBOL_CONTEXT = 20;
8
+ export function createFilesystemTools() {
9
+ return [
10
+ listDirTool,
11
+ searchRepoTool,
12
+ searchFilesTool,
13
+ readFileTool,
14
+ readFileChunkTool,
15
+ readSymbolTool,
16
+ writeFileTool,
17
+ applyPatchTool,
18
+ replaceInFileTool
19
+ ];
20
+ }
21
+ const listDirTool = {
22
+ name: "list_dir",
23
+ description: "List files and directories for a path within the approved workspace roots.",
24
+ jsonSchema: {
25
+ type: "object",
26
+ properties: {
27
+ path: {
28
+ type: "string",
29
+ description: "Directory to list. Defaults to the current working directory."
30
+ }
31
+ },
32
+ additionalProperties: false
33
+ },
34
+ readOnly: true,
35
+ async execute(rawArgs, context) {
36
+ const args = expectObject(rawArgs);
37
+ const target = await context.paths.ensureReadable(stringOrDefault(args.path, "."));
38
+ const entries = await readdir(target, { withFileTypes: true });
39
+ const rows = await Promise.all(entries
40
+ .sort((left, right) => left.name.localeCompare(right.name))
41
+ .slice(0, 200)
42
+ .map(async (entry) => {
43
+ const entryPath = path.join(target, entry.name);
44
+ const entryStats = await stat(entryPath);
45
+ const kind = entry.isDirectory() ? "dir " : entry.isSymbolicLink() ? "link" : "file";
46
+ return `${kind} ${entryStats.size.toString().padStart(8, " ")} ${entry.name}`;
47
+ }));
48
+ return {
49
+ summary: `Listed ${rows.length} entries in ${target}`,
50
+ content: rows.join("\n") || "(empty directory)",
51
+ isError: false,
52
+ referencedFiles: [target]
53
+ };
54
+ }
55
+ };
56
+ const searchRepoTool = {
57
+ name: "search_repo",
58
+ description: "Search the repo for a fixed string and return file:line matches. Use this before reading or editing files.",
59
+ jsonSchema: {
60
+ type: "object",
61
+ properties: {
62
+ query: {
63
+ type: "string",
64
+ description: "Fixed string to search for."
65
+ },
66
+ path: {
67
+ type: "string",
68
+ description: "Directory or file to search. Defaults to the current working directory."
69
+ },
70
+ limit: {
71
+ type: "integer",
72
+ description: "Maximum number of matches to return. Defaults to 20."
73
+ }
74
+ },
75
+ required: ["query"],
76
+ additionalProperties: false
77
+ },
78
+ readOnly: true,
79
+ async execute(rawArgs, context) {
80
+ const args = expectObject(rawArgs);
81
+ return executeSearchTool(args, context);
82
+ }
83
+ };
84
+ const searchFilesTool = {
85
+ name: "search_files",
86
+ description: "Legacy alias for search_repo.",
87
+ jsonSchema: searchRepoTool.jsonSchema,
88
+ readOnly: true,
89
+ async execute(rawArgs, context) {
90
+ const args = expectObject(rawArgs);
91
+ return executeSearchTool(args, context);
92
+ }
93
+ };
94
+ const readFileTool = {
95
+ name: "read_file",
96
+ description: "Read a UTF-8 text file, optionally limiting the output to a line range.",
97
+ jsonSchema: {
98
+ type: "object",
99
+ properties: {
100
+ path: {
101
+ type: "string",
102
+ description: "Path to the file to read."
103
+ },
104
+ startLine: {
105
+ type: "integer",
106
+ description: "Optional 1-based starting line."
107
+ },
108
+ endLine: {
109
+ type: "integer",
110
+ description: "Optional 1-based ending line."
111
+ }
112
+ },
113
+ required: ["path"],
114
+ additionalProperties: false
115
+ },
116
+ readOnly: true,
117
+ async execute(rawArgs, context) {
118
+ const args = expectObject(rawArgs);
119
+ const target = await context.paths.ensureReadable(requiredString(args.path, "path"));
120
+ const fileContent = await readFile(target, "utf8");
121
+ const lines = fileContent.split("\n");
122
+ const startLine = integerOrDefault(args.startLine, 1);
123
+ const endLine = integerOrDefault(args.endLine, Math.min(lines.length, startLine + MAX_READ_LINES - 1));
124
+ return renderReadSlice(target, lines, startLine, endLine);
125
+ }
126
+ };
127
+ const readFileChunkTool = {
128
+ name: "read_file_chunk",
129
+ description: "Read only a specific line range from a UTF-8 text file.",
130
+ jsonSchema: {
131
+ type: "object",
132
+ properties: {
133
+ path: {
134
+ type: "string",
135
+ description: "Path to the file to read."
136
+ },
137
+ startLine: {
138
+ type: "integer",
139
+ description: "1-based starting line."
140
+ },
141
+ endLine: {
142
+ type: "integer",
143
+ description: "1-based ending line."
144
+ }
145
+ },
146
+ required: ["path", "startLine", "endLine"],
147
+ additionalProperties: false
148
+ },
149
+ readOnly: true,
150
+ async execute(rawArgs, context) {
151
+ const args = expectObject(rawArgs);
152
+ const target = await context.paths.ensureReadable(requiredString(args.path, "path"));
153
+ const startLine = requiredInteger(args.startLine, "startLine");
154
+ const endLine = requiredInteger(args.endLine, "endLine");
155
+ const fileContent = await readFile(target, "utf8");
156
+ const lines = fileContent.split("\n");
157
+ return renderReadSlice(target, lines, startLine, endLine);
158
+ }
159
+ };
160
+ const readSymbolTool = {
161
+ name: "read_symbol",
162
+ description: "Search for a symbol or definition string and read matching code chunks with surrounding context.",
163
+ jsonSchema: {
164
+ type: "object",
165
+ properties: {
166
+ symbol: {
167
+ type: "string",
168
+ description: "Fixed string to search for, such as a function name or signature."
169
+ },
170
+ path: {
171
+ type: "string",
172
+ description: "Directory or file to search. Defaults to the current working directory."
173
+ },
174
+ limit: {
175
+ type: "integer",
176
+ description: "Maximum number of symbol matches to read. Defaults to 3."
177
+ },
178
+ contextLines: {
179
+ type: "integer",
180
+ description: "Number of surrounding lines to include before and after the match. Defaults to 20."
181
+ }
182
+ },
183
+ required: ["symbol"],
184
+ additionalProperties: false
185
+ },
186
+ readOnly: true,
187
+ async execute(rawArgs, context) {
188
+ const args = expectObject(rawArgs);
189
+ const symbol = requiredString(args.symbol, "symbol");
190
+ const target = await context.paths.ensureReadable(stringOrDefault(args.path, "."));
191
+ const limit = clampInteger(integerOrDefault(args.limit, DEFAULT_SYMBOL_LIMIT), 1, 8);
192
+ const contextLines = clampInteger(integerOrDefault(args.contextLines, DEFAULT_SYMBOL_CONTEXT), 1, 80);
193
+ const matches = await findTextMatches(symbol, target, limit, context);
194
+ if (matches.length === 0) {
195
+ return {
196
+ summary: `No symbol matches for "${symbol}"`,
197
+ content: "(no matches)",
198
+ isError: false,
199
+ referencedFiles: [target]
200
+ };
201
+ }
202
+ const rendered = await Promise.all(matches.map(async (match) => {
203
+ const fileContent = await readFile(match.filePath, "utf8");
204
+ const lines = fileContent.split("\n");
205
+ const startLine = Math.max(1, match.lineNumber - contextLines);
206
+ const endLine = Math.min(lines.length, match.lineNumber + contextLines);
207
+ return [
208
+ `${match.filePath}:${match.lineNumber}`,
209
+ renderNumberedLines(lines, startLine, endLine)
210
+ ].join("\n");
211
+ }));
212
+ const files = unique(matches.map((match) => match.filePath));
213
+ return {
214
+ summary: `Read ${matches.length} symbol match${matches.length === 1 ? "" : "es"} for "${symbol}"`,
215
+ content: rendered.join("\n\n"),
216
+ isError: false,
217
+ referencedFiles: files,
218
+ readFiles: files
219
+ };
220
+ }
221
+ };
222
+ const writeFileTool = {
223
+ name: "write_file",
224
+ description: "Write or create a UTF-8 file after approval. Existing files must be read first.",
225
+ jsonSchema: {
226
+ type: "object",
227
+ properties: {
228
+ path: {
229
+ type: "string",
230
+ description: "Path to the file to write."
231
+ },
232
+ content: {
233
+ type: "string",
234
+ description: "Full file contents to write."
235
+ }
236
+ },
237
+ required: ["path", "content"],
238
+ additionalProperties: false
239
+ },
240
+ readOnly: false,
241
+ async execute(rawArgs, context) {
242
+ const args = expectObject(rawArgs);
243
+ const target = await context.paths.ensureWritable(requiredString(args.path, "path"));
244
+ const guard = await denyUnreadEdit(target, context, "write to");
245
+ if (guard) {
246
+ return guard;
247
+ }
248
+ const approved = await context.approvals.requestApproval({
249
+ kind: "write_file",
250
+ key: `write_file:${target}`,
251
+ label: `Allow writing file?\npath: ${target}`
252
+ });
253
+ if (!approved) {
254
+ return denied(`Write denied for ${target}`);
255
+ }
256
+ await mkdir(path.dirname(target), { recursive: true });
257
+ await writeFile(target, requiredString(args.content, "content"), "utf8");
258
+ return {
259
+ summary: `Wrote ${target}`,
260
+ content: `File written successfully:\n${target}`,
261
+ isError: false,
262
+ referencedFiles: [target]
263
+ };
264
+ }
265
+ };
266
+ const applyPatchTool = {
267
+ name: "apply_patch",
268
+ description: "Apply one or more search-and-replace patch hunks to an existing UTF-8 file after it has been read.",
269
+ jsonSchema: {
270
+ type: "object",
271
+ properties: {
272
+ path: {
273
+ type: "string",
274
+ description: "Path to the file to patch."
275
+ },
276
+ changes: {
277
+ type: "array",
278
+ description: "Ordered patch hunks to apply.",
279
+ items: {
280
+ type: "object",
281
+ properties: {
282
+ search: {
283
+ type: "string",
284
+ description: "Text to find."
285
+ },
286
+ replace: {
287
+ type: "string",
288
+ description: "Replacement text."
289
+ },
290
+ all: {
291
+ type: "boolean",
292
+ description: "Replace every occurrence of search within the current file state."
293
+ }
294
+ },
295
+ required: ["search", "replace"],
296
+ additionalProperties: false
297
+ }
298
+ }
299
+ },
300
+ required: ["path", "changes"],
301
+ additionalProperties: false
302
+ },
303
+ readOnly: false,
304
+ async execute(rawArgs, context) {
305
+ const args = expectObject(rawArgs);
306
+ const target = await context.paths.ensureWritable(requiredString(args.path, "path"));
307
+ const guard = await denyUnreadEdit(target, context, "patch");
308
+ if (guard) {
309
+ return guard;
310
+ }
311
+ const changes = requiredPatchChanges(args.changes);
312
+ const approved = await context.approvals.requestApproval({
313
+ kind: "replace_in_file",
314
+ key: `replace_in_file:${target}`,
315
+ label: `Allow patching file?\npath: ${target}\nchanges: ${changes.length}`
316
+ });
317
+ if (!approved) {
318
+ return denied(`Patch denied for ${target}`);
319
+ }
320
+ return applyPatchChanges(target, changes);
321
+ }
322
+ };
323
+ const replaceInFileTool = {
324
+ name: "replace_in_file",
325
+ description: "Replace text inside an existing UTF-8 file after approval. The file must be read first.",
326
+ jsonSchema: {
327
+ type: "object",
328
+ properties: {
329
+ path: {
330
+ type: "string",
331
+ description: "Path to the file to edit."
332
+ },
333
+ search: {
334
+ type: "string",
335
+ description: "Text to find."
336
+ },
337
+ replace: {
338
+ type: "string",
339
+ description: "Replacement text."
340
+ },
341
+ all: {
342
+ type: "boolean",
343
+ description: "Replace every occurrence. Defaults to false."
344
+ }
345
+ },
346
+ required: ["path", "search", "replace"],
347
+ additionalProperties: false
348
+ },
349
+ readOnly: false,
350
+ async execute(rawArgs, context) {
351
+ const args = expectObject(rawArgs);
352
+ const target = await context.paths.ensureWritable(requiredString(args.path, "path"));
353
+ const guard = await denyUnreadEdit(target, context, "edit");
354
+ if (guard) {
355
+ return guard;
356
+ }
357
+ const approved = await context.approvals.requestApproval({
358
+ kind: "replace_in_file",
359
+ key: `replace_in_file:${target}`,
360
+ label: `Allow editing file?\npath: ${target}`
361
+ });
362
+ if (!approved) {
363
+ return denied(`Replace denied for ${target}`);
364
+ }
365
+ return applyPatchChanges(target, [
366
+ {
367
+ search: requiredString(args.search, "search"),
368
+ replace: requiredString(args.replace, "replace"),
369
+ all: booleanOrDefault(args.all, false)
370
+ }
371
+ ]);
372
+ }
373
+ };
374
+ async function executeSearchTool(args, context) {
375
+ const query = requiredString(args.query, "query");
376
+ const target = await context.paths.ensureReadable(stringOrDefault(args.path, "."));
377
+ const limit = clampInteger(integerOrDefault(args.limit, DEFAULT_SEARCH_LIMIT), 1, 200);
378
+ const matches = await findTextMatches(query, target, limit, context);
379
+ return {
380
+ summary: matches.length > 0 ? `Found matches for "${query}"` : `No matches for "${query}"`,
381
+ content: matches.length > 0
382
+ ? matches.map((match) => `${match.filePath}:${match.lineNumber}:${match.lineText}`).join("\n")
383
+ : "(no matches)",
384
+ isError: false,
385
+ referencedFiles: [target]
386
+ };
387
+ }
388
+ function renderReadSlice(target, lines, startLine, endLine) {
389
+ if (startLine < 1 || endLine < startLine) {
390
+ return {
391
+ summary: `Invalid line range for ${target}`,
392
+ content: `Invalid line range: ${startLine}-${endLine}`,
393
+ isError: true,
394
+ referencedFiles: [target]
395
+ };
396
+ }
397
+ const boundedEndLine = Math.min(lines.length, Math.min(endLine, startLine + MAX_READ_LINES - 1));
398
+ return {
399
+ summary: `Read ${target} lines ${startLine}-${boundedEndLine}`,
400
+ content: renderNumberedLines(lines, startLine, boundedEndLine),
401
+ isError: false,
402
+ referencedFiles: [target],
403
+ readFiles: [target]
404
+ };
405
+ }
406
+ function renderNumberedLines(lines, startLine, endLine) {
407
+ const slice = lines.slice(Math.max(0, startLine - 1), Math.min(lines.length, endLine));
408
+ return slice.map((line, index) => `${startLine + index}`.padStart(4, " ") + ` ${line}`).join("\n");
409
+ }
410
+ async function denyUnreadEdit(target, context, action) {
411
+ if (!await existsPath(target)) {
412
+ return null;
413
+ }
414
+ if (context.reads.hasRead(target)) {
415
+ return null;
416
+ }
417
+ return denied(`Refusing to ${action} ${target} before reading it. Use search_repo to find it, then read_file, read_file_chunk, or read_symbol first.`);
418
+ }
419
+ async function applyPatchChanges(target, changes) {
420
+ const original = await readFile(target, "utf8");
421
+ let updated = original;
422
+ let replacements = 0;
423
+ for (const change of changes) {
424
+ const occurrenceCount = countOccurrences(updated, change.search);
425
+ if (occurrenceCount === 0) {
426
+ return {
427
+ summary: `Patch text not found in ${target}`,
428
+ content: `No occurrences of the requested text were found in ${target}.`,
429
+ isError: true,
430
+ referencedFiles: [target]
431
+ };
432
+ }
433
+ replacements += change.all ? occurrenceCount : 1;
434
+ updated = change.all
435
+ ? updated.split(change.search).join(change.replace)
436
+ : updated.replace(change.search, change.replace);
437
+ }
438
+ await writeFile(target, updated, "utf8");
439
+ return {
440
+ summary: `Patched ${target} (${changes.length} change${changes.length === 1 ? "" : "s"}, ${replacements} replacement${replacements === 1 ? "" : "s"})`,
441
+ content: `Applied ${changes.length} patch change${changes.length === 1 ? "" : "s"} in ${target}.`,
442
+ isError: false,
443
+ referencedFiles: [target]
444
+ };
445
+ }
446
+ async function findTextMatches(query, target, limit, context) {
447
+ try {
448
+ const result = await runExecFile("rg", [
449
+ "--fixed-strings",
450
+ "--line-number",
451
+ "--no-heading",
452
+ "--color",
453
+ "never",
454
+ "--max-count",
455
+ String(limit),
456
+ query,
457
+ target
458
+ ], { cwd: context.cwd });
459
+ return parseSearchMatches(`${result.stdout}${result.stderr}`, limit);
460
+ }
461
+ catch (error) {
462
+ if (!isMissingBinary(error)) {
463
+ throw error;
464
+ }
465
+ return fallbackSearch(query, target, limit);
466
+ }
467
+ }
468
+ function parseSearchMatches(output, limit) {
469
+ const matches = [];
470
+ for (const line of output.split(/\r?\n/)) {
471
+ if (!line.trim()) {
472
+ continue;
473
+ }
474
+ const match = line.match(/^(.*?):(\d+):(.*)$/);
475
+ if (!match) {
476
+ continue;
477
+ }
478
+ matches.push({
479
+ filePath: match[1] ?? "",
480
+ lineNumber: Number(match[2]),
481
+ lineText: match[3] ?? ""
482
+ });
483
+ if (matches.length >= limit) {
484
+ break;
485
+ }
486
+ }
487
+ return matches;
488
+ }
489
+ function requiredPatchChanges(value) {
490
+ if (!Array.isArray(value) || value.length === 0) {
491
+ throw new Error("Missing patch changes.");
492
+ }
493
+ return value.map((entry, index) => {
494
+ const object = expectObject(entry);
495
+ return {
496
+ search: requiredString(object.search, `changes[${index}].search`),
497
+ replace: requiredStringOrEmpty(object.replace, `changes[${index}].replace`),
498
+ all: booleanOrDefault(object.all, false)
499
+ };
500
+ });
501
+ }
502
+ function expectObject(value) {
503
+ if (value && typeof value === "object" && !Array.isArray(value)) {
504
+ return value;
505
+ }
506
+ throw new Error("Tool arguments must be a JSON object.");
507
+ }
508
+ function requiredString(value, key) {
509
+ if (typeof value === "string" && value.length > 0) {
510
+ return value;
511
+ }
512
+ throw new Error(`Missing string argument: ${key}`);
513
+ }
514
+ function requiredStringOrEmpty(value, key) {
515
+ if (typeof value === "string") {
516
+ return value;
517
+ }
518
+ throw new Error(`Missing string argument: ${key}`);
519
+ }
520
+ function stringOrDefault(value, fallback) {
521
+ return typeof value === "string" && value.length > 0 ? value : fallback;
522
+ }
523
+ function requiredInteger(value, key) {
524
+ if (typeof value === "number" && Number.isInteger(value)) {
525
+ return value;
526
+ }
527
+ throw new Error(`Missing integer argument: ${key}`);
528
+ }
529
+ function integerOrDefault(value, fallback) {
530
+ return typeof value === "number" && Number.isInteger(value) ? value : fallback;
531
+ }
532
+ function clampInteger(value, min, max) {
533
+ return Math.max(min, Math.min(max, value));
534
+ }
535
+ function booleanOrDefault(value, fallback) {
536
+ return typeof value === "boolean" ? value : fallback;
537
+ }
538
+ function denied(message) {
539
+ return {
540
+ summary: message,
541
+ content: message,
542
+ isError: true
543
+ };
544
+ }
545
+ function isMissingBinary(error) {
546
+ return error !== null && typeof error === "object" && "code" in error && error.code === "ENOENT";
547
+ }
548
+ async function existsPath(target) {
549
+ try {
550
+ await stat(target);
551
+ return true;
552
+ }
553
+ catch (error) {
554
+ if (error !== null && typeof error === "object" && "code" in error && error.code === "ENOENT") {
555
+ return false;
556
+ }
557
+ throw error;
558
+ }
559
+ }
560
+ function countOccurrences(content, search) {
561
+ if (search.length === 0) {
562
+ return 0;
563
+ }
564
+ return content.split(search).length - 1;
565
+ }
566
+ function unique(values) {
567
+ return [...new Set(values)];
568
+ }
569
+ async function fallbackSearch(query, target, limit) {
570
+ const matches = [];
571
+ const stats = await stat(target);
572
+ if (stats.isFile()) {
573
+ await searchFile(query, target, matches, limit);
574
+ return matches;
575
+ }
576
+ const queue = [target];
577
+ while (queue.length > 0 && matches.length < limit) {
578
+ const current = queue.shift();
579
+ if (!current) {
580
+ continue;
581
+ }
582
+ const entries = await readdir(current, { withFileTypes: true });
583
+ for (const entry of entries) {
584
+ if (matches.length >= limit) {
585
+ break;
586
+ }
587
+ if (entry.name === "node_modules" || entry.name.startsWith(".")) {
588
+ continue;
589
+ }
590
+ const entryPath = path.join(current, entry.name);
591
+ if (entry.isDirectory()) {
592
+ queue.push(entryPath);
593
+ }
594
+ else if (entry.isFile()) {
595
+ await searchFile(query, entryPath, matches, limit);
596
+ }
597
+ }
598
+ }
599
+ return matches;
600
+ }
601
+ async function searchFile(query, filePath, matches, limit) {
602
+ try {
603
+ const content = await readFile(filePath, "utf8");
604
+ const lines = content.split("\n");
605
+ for (const [index, line] of lines.entries()) {
606
+ if (line.includes(query)) {
607
+ matches.push({
608
+ filePath,
609
+ lineNumber: index + 1,
610
+ lineText: line
611
+ });
612
+ }
613
+ if (matches.length >= limit) {
614
+ return;
615
+ }
616
+ }
617
+ }
618
+ catch {
619
+ // Skip unreadable or binary files in the fallback path.
620
+ }
621
+ }
622
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../types.js";
2
+ export declare function createGitTools(): ToolSpec[];