micro-models-agent 0.6.4 → 0.7.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 (472) hide show
  1. package/README.md +286 -436
  2. package/dist/main.js +11744 -0
  3. package/dist/skills/builtin/git.md +36 -0
  4. package/dist/skills/builtin/typescript.md +35 -0
  5. package/package.json +41 -47
  6. package/dist/agent/context.d.ts +0 -73
  7. package/dist/agent/context.d.ts.map +0 -1
  8. package/dist/agent/context.js +0 -262
  9. package/dist/agent/context.js.map +0 -1
  10. package/dist/agent/error-escalation.d.ts +0 -19
  11. package/dist/agent/error-escalation.d.ts.map +0 -1
  12. package/dist/agent/error-escalation.js +0 -168
  13. package/dist/agent/error-escalation.js.map +0 -1
  14. package/dist/agent/loop.d.ts +0 -46
  15. package/dist/agent/loop.d.ts.map +0 -1
  16. package/dist/agent/loop.js +0 -1043
  17. package/dist/agent/loop.js.map +0 -1
  18. package/dist/agent/memory.d.ts +0 -40
  19. package/dist/agent/memory.d.ts.map +0 -1
  20. package/dist/agent/memory.js +0 -231
  21. package/dist/agent/memory.js.map +0 -1
  22. package/dist/agent/modes/applier.d.ts +0 -43
  23. package/dist/agent/modes/applier.d.ts.map +0 -1
  24. package/dist/agent/modes/applier.js +0 -30
  25. package/dist/agent/modes/applier.js.map +0 -1
  26. package/dist/agent/modes/registry.d.ts +0 -35
  27. package/dist/agent/modes/registry.d.ts.map +0 -1
  28. package/dist/agent/modes/registry.js +0 -169
  29. package/dist/agent/modes/registry.js.map +0 -1
  30. package/dist/agent/modes/types.d.ts +0 -61
  31. package/dist/agent/modes/types.d.ts.map +0 -1
  32. package/dist/agent/modes/types.js +0 -13
  33. package/dist/agent/modes/types.js.map +0 -1
  34. package/dist/agent/react-loop.d.ts +0 -65
  35. package/dist/agent/react-loop.d.ts.map +0 -1
  36. package/dist/agent/react-loop.js +0 -101
  37. package/dist/agent/react-loop.js.map +0 -1
  38. package/dist/agent/system-prompt.d.ts +0 -26
  39. package/dist/agent/system-prompt.d.ts.map +0 -1
  40. package/dist/agent/system-prompt.js +0 -478
  41. package/dist/agent/system-prompt.js.map +0 -1
  42. package/dist/agent/tool-executor.d.ts +0 -36
  43. package/dist/agent/tool-executor.d.ts.map +0 -1
  44. package/dist/agent/tool-executor.js +0 -346
  45. package/dist/agent/tool-executor.js.map +0 -1
  46. package/dist/agent/user-profile.d.ts +0 -26
  47. package/dist/agent/user-profile.d.ts.map +0 -1
  48. package/dist/agent/user-profile.js +0 -169
  49. package/dist/agent/user-profile.js.map +0 -1
  50. package/dist/agent/write-enforcer.d.ts +0 -7
  51. package/dist/agent/write-enforcer.d.ts.map +0 -1
  52. package/dist/agent/write-enforcer.js +0 -8
  53. package/dist/agent/write-enforcer.js.map +0 -1
  54. package/dist/cli/config.d.ts +0 -13
  55. package/dist/cli/config.d.ts.map +0 -1
  56. package/dist/cli/config.js +0 -82
  57. package/dist/cli/config.js.map +0 -1
  58. package/dist/cli/model.d.ts +0 -13
  59. package/dist/cli/model.d.ts.map +0 -1
  60. package/dist/cli/model.js +0 -170
  61. package/dist/cli/model.js.map +0 -1
  62. package/dist/cli/provider.d.ts +0 -12
  63. package/dist/cli/provider.d.ts.map +0 -1
  64. package/dist/cli/provider.js +0 -90
  65. package/dist/cli/provider.js.map +0 -1
  66. package/dist/cli/update.d.ts +0 -12
  67. package/dist/cli/update.d.ts.map +0 -1
  68. package/dist/cli/update.js +0 -69
  69. package/dist/cli/update.js.map +0 -1
  70. package/dist/cli.d.ts +0 -3
  71. package/dist/cli.d.ts.map +0 -1
  72. package/dist/cli.js +0 -310
  73. package/dist/cli.js.map +0 -1
  74. package/dist/config/config.d.ts +0 -59
  75. package/dist/config/config.d.ts.map +0 -1
  76. package/dist/config/config.js +0 -232
  77. package/dist/config/config.js.map +0 -1
  78. package/dist/config/types.d.ts +0 -122
  79. package/dist/config/types.d.ts.map +0 -1
  80. package/dist/config/types.js +0 -13
  81. package/dist/config/types.js.map +0 -1
  82. package/dist/file-loader.d.ts +0 -20
  83. package/dist/file-loader.d.ts.map +0 -1
  84. package/dist/file-loader.js +0 -121
  85. package/dist/file-loader.js.map +0 -1
  86. package/dist/index.d.ts +0 -9
  87. package/dist/index.d.ts.map +0 -1
  88. package/dist/index.js +0 -11
  89. package/dist/index.js.map +0 -1
  90. package/dist/indexer/cache.d.ts +0 -34
  91. package/dist/indexer/cache.d.ts.map +0 -1
  92. package/dist/indexer/cache.js +0 -221
  93. package/dist/indexer/cache.js.map +0 -1
  94. package/dist/indexer/code-index.d.ts +0 -27
  95. package/dist/indexer/code-index.d.ts.map +0 -1
  96. package/dist/indexer/code-index.js +0 -219
  97. package/dist/indexer/code-index.js.map +0 -1
  98. package/dist/indexer/project-map.d.ts +0 -23
  99. package/dist/indexer/project-map.d.ts.map +0 -1
  100. package/dist/indexer/project-map.js +0 -264
  101. package/dist/indexer/project-map.js.map +0 -1
  102. package/dist/llm/lmstudio-native.d.ts +0 -10
  103. package/dist/llm/lmstudio-native.d.ts.map +0 -1
  104. package/dist/llm/lmstudio-native.js +0 -179
  105. package/dist/llm/lmstudio-native.js.map +0 -1
  106. package/dist/llm/openai-compat.d.ts +0 -11
  107. package/dist/llm/openai-compat.d.ts.map +0 -1
  108. package/dist/llm/openai-compat.js +0 -161
  109. package/dist/llm/openai-compat.js.map +0 -1
  110. package/dist/llm/provider.d.ts +0 -46
  111. package/dist/llm/provider.d.ts.map +0 -1
  112. package/dist/llm/provider.js +0 -13
  113. package/dist/llm/provider.js.map +0 -1
  114. package/dist/llm/token-counter.d.ts +0 -15
  115. package/dist/llm/token-counter.d.ts.map +0 -1
  116. package/dist/llm/token-counter.js +0 -51
  117. package/dist/llm/token-counter.js.map +0 -1
  118. package/dist/logger.d.ts +0 -24
  119. package/dist/logger.d.ts.map +0 -1
  120. package/dist/logger.js +0 -156
  121. package/dist/logger.js.map +0 -1
  122. package/dist/plugins/adapters/hooks-adapter.d.ts +0 -12
  123. package/dist/plugins/adapters/hooks-adapter.d.ts.map +0 -1
  124. package/dist/plugins/adapters/hooks-adapter.js +0 -23
  125. package/dist/plugins/adapters/hooks-adapter.js.map +0 -1
  126. package/dist/plugins/builtin/lint-on-write/index.d.ts +0 -12
  127. package/dist/plugins/builtin/lint-on-write/index.d.ts.map +0 -1
  128. package/dist/plugins/builtin/lint-on-write/index.js +0 -98
  129. package/dist/plugins/builtin/lint-on-write/index.js.map +0 -1
  130. package/dist/plugins/builtin/lint-on-write/index.ts +0 -97
  131. package/dist/plugins/builtin/lint-on-write/manifest.json +0 -13
  132. package/dist/plugins/builtin/notify/index.d.ts +0 -11
  133. package/dist/plugins/builtin/notify/index.d.ts.map +0 -1
  134. package/dist/plugins/builtin/notify/index.js +0 -102
  135. package/dist/plugins/builtin/notify/index.js.map +0 -1
  136. package/dist/plugins/builtin/notify/index.ts +0 -105
  137. package/dist/plugins/builtin/notify/manifest.json +0 -16
  138. package/dist/plugins/loader.d.ts +0 -18
  139. package/dist/plugins/loader.d.ts.map +0 -1
  140. package/dist/plugins/loader.js +0 -182
  141. package/dist/plugins/loader.js.map +0 -1
  142. package/dist/plugins/manager.d.ts +0 -55
  143. package/dist/plugins/manager.d.ts.map +0 -1
  144. package/dist/plugins/manager.js +0 -190
  145. package/dist/plugins/manager.js.map +0 -1
  146. package/dist/plugins/types.d.ts +0 -76
  147. package/dist/plugins/types.d.ts.map +0 -1
  148. package/dist/plugins/types.js +0 -8
  149. package/dist/plugins/types.js.map +0 -1
  150. package/dist/repl/commands.d.ts +0 -63
  151. package/dist/repl/commands.d.ts.map +0 -1
  152. package/dist/repl/commands.js +0 -1070
  153. package/dist/repl/commands.js.map +0 -1
  154. package/dist/repl/history.d.ts +0 -32
  155. package/dist/repl/history.d.ts.map +0 -1
  156. package/dist/repl/history.js +0 -40
  157. package/dist/repl/history.js.map +0 -1
  158. package/dist/repl/index.d.ts +0 -14
  159. package/dist/repl/index.d.ts.map +0 -1
  160. package/dist/repl/index.js +0 -235
  161. package/dist/repl/index.js.map +0 -1
  162. package/dist/session/store.d.ts +0 -46
  163. package/dist/session/store.d.ts.map +0 -1
  164. package/dist/session/store.js +0 -154
  165. package/dist/session/store.js.map +0 -1
  166. package/dist/setup-wizard.d.ts +0 -3
  167. package/dist/setup-wizard.d.ts.map +0 -1
  168. package/dist/setup-wizard.js +0 -410
  169. package/dist/setup-wizard.js.map +0 -1
  170. package/dist/skills/builtin/agent-test/SKILL.md +0 -68
  171. package/dist/skills/builtin/cli-expert/SKILL.md +0 -848
  172. package/dist/skills/builtin/code-review/SKILL.md +0 -424
  173. package/dist/skills/builtin/git-expert/SKILL.md +0 -522
  174. package/dist/skills/builtin/grill-me/SKILL.md +0 -46
  175. package/dist/skills/builtin/jest-testing-expert/SKILL.md +0 -957
  176. package/dist/skills/builtin/nodejs-expert/SKILL.md +0 -192
  177. package/dist/skills/builtin/systematic-debugging/SKILL.md +0 -296
  178. package/dist/skills/builtin/test-driven-development/SKILL.md +0 -371
  179. package/dist/skills/builtin/typescript-expert/SKILL.md +0 -429
  180. package/dist/skills/builtin/web-scraping/SKILL.md +0 -422
  181. package/dist/skills/loader.d.ts +0 -49
  182. package/dist/skills/loader.d.ts.map +0 -1
  183. package/dist/skills/loader.js +0 -401
  184. package/dist/skills/loader.js.map +0 -1
  185. package/dist/styling/engine.d.ts +0 -39
  186. package/dist/styling/engine.d.ts.map +0 -1
  187. package/dist/styling/engine.js +0 -122
  188. package/dist/styling/engine.js.map +0 -1
  189. package/dist/styling/index.d.ts +0 -15
  190. package/dist/styling/index.d.ts.map +0 -1
  191. package/dist/styling/index.js +0 -40
  192. package/dist/styling/index.js.map +0 -1
  193. package/dist/styling/loader.d.ts +0 -9
  194. package/dist/styling/loader.d.ts.map +0 -1
  195. package/dist/styling/loader.js +0 -169
  196. package/dist/styling/loader.js.map +0 -1
  197. package/dist/styling/types.d.ts +0 -64
  198. package/dist/styling/types.d.ts.map +0 -1
  199. package/dist/styling/types.js +0 -12
  200. package/dist/styling/types.js.map +0 -1
  201. package/dist/subagent/chat.d.ts +0 -19
  202. package/dist/subagent/chat.d.ts.map +0 -1
  203. package/dist/subagent/chat.js +0 -279
  204. package/dist/subagent/chat.js.map +0 -1
  205. package/dist/subagent/context.d.ts +0 -9
  206. package/dist/subagent/context.d.ts.map +0 -1
  207. package/dist/subagent/context.js +0 -75
  208. package/dist/subagent/context.js.map +0 -1
  209. package/dist/subagent/definition.d.ts +0 -7
  210. package/dist/subagent/definition.d.ts.map +0 -1
  211. package/dist/subagent/definition.js +0 -26
  212. package/dist/subagent/definition.js.map +0 -1
  213. package/dist/subagent/errors.d.ts +0 -24
  214. package/dist/subagent/errors.d.ts.map +0 -1
  215. package/dist/subagent/errors.js +0 -85
  216. package/dist/subagent/errors.js.map +0 -1
  217. package/dist/subagent/validation.d.ts +0 -17
  218. package/dist/subagent/validation.d.ts.map +0 -1
  219. package/dist/subagent/validation.js +0 -83
  220. package/dist/subagent/validation.js.map +0 -1
  221. package/dist/tools/adapters/bash-to-fs.d.ts +0 -20
  222. package/dist/tools/adapters/bash-to-fs.d.ts.map +0 -1
  223. package/dist/tools/adapters/bash-to-fs.js +0 -74
  224. package/dist/tools/adapters/bash-to-fs.js.map +0 -1
  225. package/dist/tools/adapters/content-sanitizer.d.ts +0 -13
  226. package/dist/tools/adapters/content-sanitizer.d.ts.map +0 -1
  227. package/dist/tools/adapters/content-sanitizer.js +0 -73
  228. package/dist/tools/adapters/content-sanitizer.js.map +0 -1
  229. package/dist/tools/adapters/grounding-fixer.d.ts +0 -15
  230. package/dist/tools/adapters/grounding-fixer.d.ts.map +0 -1
  231. package/dist/tools/adapters/grounding-fixer.js +0 -57
  232. package/dist/tools/adapters/grounding-fixer.js.map +0 -1
  233. package/dist/tools/adapters/index.d.ts +0 -6
  234. package/dist/tools/adapters/index.d.ts.map +0 -1
  235. package/dist/tools/adapters/index.js +0 -5
  236. package/dist/tools/adapters/index.js.map +0 -1
  237. package/dist/tools/adapters/pipeline.d.ts +0 -34
  238. package/dist/tools/adapters/pipeline.d.ts.map +0 -1
  239. package/dist/tools/adapters/pipeline.js +0 -58
  240. package/dist/tools/adapters/pipeline.js.map +0 -1
  241. package/dist/tools/adapters/types.d.ts +0 -46
  242. package/dist/tools/adapters/types.d.ts.map +0 -1
  243. package/dist/tools/adapters/types.js +0 -2
  244. package/dist/tools/adapters/types.js.map +0 -1
  245. package/dist/tools/approve.d.ts +0 -27
  246. package/dist/tools/approve.d.ts.map +0 -1
  247. package/dist/tools/approve.js +0 -45
  248. package/dist/tools/approve.js.map +0 -1
  249. package/dist/tools/bash.d.ts +0 -25
  250. package/dist/tools/bash.d.ts.map +0 -1
  251. package/dist/tools/bash.js +0 -292
  252. package/dist/tools/bash.js.map +0 -1
  253. package/dist/tools/fs/copy-file.d.ts +0 -13
  254. package/dist/tools/fs/copy-file.d.ts.map +0 -1
  255. package/dist/tools/fs/copy-file.js +0 -54
  256. package/dist/tools/fs/copy-file.js.map +0 -1
  257. package/dist/tools/fs/create-dir.d.ts +0 -13
  258. package/dist/tools/fs/create-dir.d.ts.map +0 -1
  259. package/dist/tools/fs/create-dir.js +0 -44
  260. package/dist/tools/fs/create-dir.js.map +0 -1
  261. package/dist/tools/fs/delete-file.d.ts +0 -13
  262. package/dist/tools/fs/delete-file.d.ts.map +0 -1
  263. package/dist/tools/fs/delete-file.js +0 -52
  264. package/dist/tools/fs/delete-file.js.map +0 -1
  265. package/dist/tools/fs/edit-file.d.ts +0 -15
  266. package/dist/tools/fs/edit-file.d.ts.map +0 -1
  267. package/dist/tools/fs/edit-file.js +0 -95
  268. package/dist/tools/fs/edit-file.js.map +0 -1
  269. package/dist/tools/fs/file-info.d.ts +0 -13
  270. package/dist/tools/fs/file-info.d.ts.map +0 -1
  271. package/dist/tools/fs/file-info.js +0 -50
  272. package/dist/tools/fs/file-info.js.map +0 -1
  273. package/dist/tools/fs/glob-search.d.ts +0 -13
  274. package/dist/tools/fs/glob-search.d.ts.map +0 -1
  275. package/dist/tools/fs/glob-search.js +0 -112
  276. package/dist/tools/fs/glob-search.js.map +0 -1
  277. package/dist/tools/fs/grep-search.d.ts +0 -14
  278. package/dist/tools/fs/grep-search.d.ts.map +0 -1
  279. package/dist/tools/fs/grep-search.js +0 -135
  280. package/dist/tools/fs/grep-search.js.map +0 -1
  281. package/dist/tools/fs/list-dir.d.ts +0 -13
  282. package/dist/tools/fs/list-dir.d.ts.map +0 -1
  283. package/dist/tools/fs/list-dir.js +0 -74
  284. package/dist/tools/fs/list-dir.js.map +0 -1
  285. package/dist/tools/fs/move-file.d.ts +0 -13
  286. package/dist/tools/fs/move-file.d.ts.map +0 -1
  287. package/dist/tools/fs/move-file.js +0 -54
  288. package/dist/tools/fs/move-file.js.map +0 -1
  289. package/dist/tools/fs/path-utils.d.ts +0 -51
  290. package/dist/tools/fs/path-utils.d.ts.map +0 -1
  291. package/dist/tools/fs/path-utils.js +0 -103
  292. package/dist/tools/fs/path-utils.js.map +0 -1
  293. package/dist/tools/fs/read-file.d.ts +0 -13
  294. package/dist/tools/fs/read-file.d.ts.map +0 -1
  295. package/dist/tools/fs/read-file.js +0 -64
  296. package/dist/tools/fs/read-file.js.map +0 -1
  297. package/dist/tools/fs/tree.d.ts +0 -13
  298. package/dist/tools/fs/tree.d.ts.map +0 -1
  299. package/dist/tools/fs/tree.js +0 -89
  300. package/dist/tools/fs/tree.js.map +0 -1
  301. package/dist/tools/fs/types.d.ts +0 -14
  302. package/dist/tools/fs/types.d.ts.map +0 -1
  303. package/dist/tools/fs/types.js +0 -11
  304. package/dist/tools/fs/types.js.map +0 -1
  305. package/dist/tools/fs/write-file.d.ts +0 -14
  306. package/dist/tools/fs/write-file.d.ts.map +0 -1
  307. package/dist/tools/fs/write-file.js +0 -83
  308. package/dist/tools/fs/write-file.js.map +0 -1
  309. package/dist/tools/hooks.d.ts +0 -44
  310. package/dist/tools/hooks.d.ts.map +0 -1
  311. package/dist/tools/hooks.js +0 -217
  312. package/dist/tools/hooks.js.map +0 -1
  313. package/dist/tools/id-gen.d.ts +0 -4
  314. package/dist/tools/id-gen.d.ts.map +0 -1
  315. package/dist/tools/id-gen.js +0 -12
  316. package/dist/tools/id-gen.js.map +0 -1
  317. package/dist/tools/mcp.d.ts +0 -36
  318. package/dist/tools/mcp.d.ts.map +0 -1
  319. package/dist/tools/mcp.js +0 -93
  320. package/dist/tools/mcp.js.map +0 -1
  321. package/dist/tools/native/approve.d.ts +0 -11
  322. package/dist/tools/native/approve.d.ts.map +0 -1
  323. package/dist/tools/native/approve.js +0 -39
  324. package/dist/tools/native/approve.js.map +0 -1
  325. package/dist/tools/native/plan.d.ts +0 -10
  326. package/dist/tools/native/plan.d.ts.map +0 -1
  327. package/dist/tools/native/plan.js +0 -115
  328. package/dist/tools/native/plan.js.map +0 -1
  329. package/dist/tools/native/project-map.d.ts +0 -15
  330. package/dist/tools/native/project-map.d.ts.map +0 -1
  331. package/dist/tools/native/project-map.js +0 -203
  332. package/dist/tools/native/project-map.js.map +0 -1
  333. package/dist/tools/native/question.d.ts +0 -11
  334. package/dist/tools/native/question.d.ts.map +0 -1
  335. package/dist/tools/native/question.js +0 -41
  336. package/dist/tools/native/question.js.map +0 -1
  337. package/dist/tools/native/scaffold.d.ts +0 -5
  338. package/dist/tools/native/scaffold.d.ts.map +0 -1
  339. package/dist/tools/native/scaffold.js +0 -246
  340. package/dist/tools/native/scaffold.js.map +0 -1
  341. package/dist/tools/native/theme.d.ts +0 -10
  342. package/dist/tools/native/theme.d.ts.map +0 -1
  343. package/dist/tools/native/theme.js +0 -101
  344. package/dist/tools/native/theme.js.map +0 -1
  345. package/dist/tools/native/todo.d.ts +0 -10
  346. package/dist/tools/native/todo.d.ts.map +0 -1
  347. package/dist/tools/native/todo.js +0 -58
  348. package/dist/tools/native/todo.js.map +0 -1
  349. package/dist/tools/native/user-profile.d.ts +0 -10
  350. package/dist/tools/native/user-profile.d.ts.map +0 -1
  351. package/dist/tools/native/user-profile.js +0 -58
  352. package/dist/tools/native/user-profile.js.map +0 -1
  353. package/dist/tools/parse-tool-call.d.ts +0 -11
  354. package/dist/tools/parse-tool-call.d.ts.map +0 -1
  355. package/dist/tools/parse-tool-call.js +0 -87
  356. package/dist/tools/parse-tool-call.js.map +0 -1
  357. package/dist/tools/plan.d.ts +0 -40
  358. package/dist/tools/plan.d.ts.map +0 -1
  359. package/dist/tools/plan.js +0 -143
  360. package/dist/tools/plan.js.map +0 -1
  361. package/dist/tools/question.d.ts +0 -33
  362. package/dist/tools/question.d.ts.map +0 -1
  363. package/dist/tools/question.js +0 -62
  364. package/dist/tools/question.js.map +0 -1
  365. package/dist/tools/registry.d.ts +0 -37
  366. package/dist/tools/registry.d.ts.map +0 -1
  367. package/dist/tools/registry.js +0 -97
  368. package/dist/tools/registry.js.map +0 -1
  369. package/dist/tools/sanitizer.d.ts +0 -30
  370. package/dist/tools/sanitizer.d.ts.map +0 -1
  371. package/dist/tools/sanitizer.js +0 -77
  372. package/dist/tools/sanitizer.js.map +0 -1
  373. package/dist/tools/subagent.d.ts +0 -39
  374. package/dist/tools/subagent.d.ts.map +0 -1
  375. package/dist/tools/subagent.js +0 -225
  376. package/dist/tools/subagent.js.map +0 -1
  377. package/dist/tools/syntax-check.d.ts +0 -32
  378. package/dist/tools/syntax-check.d.ts.map +0 -1
  379. package/dist/tools/syntax-check.js +0 -272
  380. package/dist/tools/syntax-check.js.map +0 -1
  381. package/dist/tools/todo.d.ts +0 -28
  382. package/dist/tools/todo.d.ts.map +0 -1
  383. package/dist/tools/todo.js +0 -125
  384. package/dist/tools/todo.js.map +0 -1
  385. package/dist/tools/types.d.ts +0 -51
  386. package/dist/tools/types.d.ts.map +0 -1
  387. package/dist/tools/types.js +0 -2
  388. package/dist/tools/types.js.map +0 -1
  389. package/dist/tools/web-browse.d.ts +0 -5
  390. package/dist/tools/web-browse.d.ts.map +0 -1
  391. package/dist/tools/web-browse.js +0 -757
  392. package/dist/tools/web-browse.js.map +0 -1
  393. package/dist/tools/web-fetch.d.ts +0 -19
  394. package/dist/tools/web-fetch.d.ts.map +0 -1
  395. package/dist/tools/web-fetch.js +0 -90
  396. package/dist/tools/web-fetch.js.map +0 -1
  397. package/dist/tools/web-search.d.ts +0 -19
  398. package/dist/tools/web-search.d.ts.map +0 -1
  399. package/dist/tools/web-search.js +0 -97
  400. package/dist/tools/web-search.js.map +0 -1
  401. package/dist/ui/components/status-bar.d.ts +0 -11
  402. package/dist/ui/components/status-bar.d.ts.map +0 -1
  403. package/dist/ui/components/status-bar.js +0 -20
  404. package/dist/ui/components/status-bar.js.map +0 -1
  405. package/dist/ui/index.d.ts +0 -8
  406. package/dist/ui/index.d.ts.map +0 -1
  407. package/dist/ui/index.js +0 -9
  408. package/dist/ui/index.js.map +0 -1
  409. package/dist/ui/ink/components/App.d.ts +0 -98
  410. package/dist/ui/ink/components/App.d.ts.map +0 -1
  411. package/dist/ui/ink/components/App.js +0 -212
  412. package/dist/ui/ink/components/App.js.map +0 -1
  413. package/dist/ui/ink/components/Conversation.d.ts +0 -20
  414. package/dist/ui/ink/components/Conversation.d.ts.map +0 -1
  415. package/dist/ui/ink/components/Conversation.js +0 -15
  416. package/dist/ui/ink/components/Conversation.js.map +0 -1
  417. package/dist/ui/ink/components/MessageBlock.d.ts +0 -27
  418. package/dist/ui/ink/components/MessageBlock.d.ts.map +0 -1
  419. package/dist/ui/ink/components/MessageBlock.js +0 -41
  420. package/dist/ui/ink/components/MessageBlock.js.map +0 -1
  421. package/dist/ui/ink/components/PromptInput.d.ts +0 -25
  422. package/dist/ui/ink/components/PromptInput.d.ts.map +0 -1
  423. package/dist/ui/ink/components/PromptInput.js +0 -167
  424. package/dist/ui/ink/components/PromptInput.js.map +0 -1
  425. package/dist/ui/ink/components/SelectInput.d.ts +0 -9
  426. package/dist/ui/ink/components/SelectInput.d.ts.map +0 -1
  427. package/dist/ui/ink/components/SelectInput.js +0 -30
  428. package/dist/ui/ink/components/SelectInput.js.map +0 -1
  429. package/dist/ui/ink/components/StatusBar.d.ts +0 -14
  430. package/dist/ui/ink/components/StatusBar.d.ts.map +0 -1
  431. package/dist/ui/ink/components/StatusBar.js +0 -20
  432. package/dist/ui/ink/components/StatusBar.js.map +0 -1
  433. package/dist/ui/ink/components/StreamBlock.d.ts +0 -8
  434. package/dist/ui/ink/components/StreamBlock.d.ts.map +0 -1
  435. package/dist/ui/ink/components/StreamBlock.js +0 -15
  436. package/dist/ui/ink/components/StreamBlock.js.map +0 -1
  437. package/dist/ui/ink/components/Tags.d.ts +0 -26
  438. package/dist/ui/ink/components/Tags.d.ts.map +0 -1
  439. package/dist/ui/ink/components/Tags.js +0 -37
  440. package/dist/ui/ink/components/Tags.js.map +0 -1
  441. package/dist/ui/ink/components/ToolCallBlock.d.ts +0 -31
  442. package/dist/ui/ink/components/ToolCallBlock.d.ts.map +0 -1
  443. package/dist/ui/ink/components/ToolCallBlock.js +0 -17
  444. package/dist/ui/ink/components/ToolCallBlock.js.map +0 -1
  445. package/dist/ui/ink/renderer.d.ts +0 -69
  446. package/dist/ui/ink/renderer.d.ts.map +0 -1
  447. package/dist/ui/ink/renderer.js +0 -142
  448. package/dist/ui/ink/renderer.js.map +0 -1
  449. package/dist/ui/ink/theme.d.ts +0 -28
  450. package/dist/ui/ink/theme.d.ts.map +0 -1
  451. package/dist/ui/ink/theme.js +0 -45
  452. package/dist/ui/ink/theme.js.map +0 -1
  453. package/dist/ui/md-formatter.d.ts +0 -16
  454. package/dist/ui/md-formatter.d.ts.map +0 -1
  455. package/dist/ui/md-formatter.js +0 -448
  456. package/dist/ui/md-formatter.js.map +0 -1
  457. package/dist/ui/readline-renderer.d.ts +0 -45
  458. package/dist/ui/readline-renderer.d.ts.map +0 -1
  459. package/dist/ui/readline-renderer.js +0 -181
  460. package/dist/ui/readline-renderer.js.map +0 -1
  461. package/dist/ui/renderer.d.ts +0 -66
  462. package/dist/ui/renderer.d.ts.map +0 -1
  463. package/dist/ui/renderer.js +0 -16
  464. package/dist/ui/renderer.js.map +0 -1
  465. package/dist/ui/subagent-renderer.d.ts +0 -58
  466. package/dist/ui/subagent-renderer.d.ts.map +0 -1
  467. package/dist/ui/subagent-renderer.js +0 -100
  468. package/dist/ui/subagent-renderer.js.map +0 -1
  469. package/dist/updater.d.ts +0 -15
  470. package/dist/updater.d.ts.map +0 -1
  471. package/dist/updater.js +0 -166
  472. package/dist/updater.js.map +0 -1
@@ -1,135 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { resolvePath, IGNORE_DIRS, normalizePath, truncateOutput, readDirEntries } from './path-utils.js';
4
- import { fsError, fsOk, MAX_OUTPUT_CHARS } from './types.js';
5
- /**
6
- * Инструмент поиска по содержимому файлов (grep).
7
- * Возвращает совпадающие строки с указанием файла и номера строки.
8
- * Поддерживает regex-паттерны и фильтрацию по расширению.
9
- *
10
- * @module tools/fs/grep-search
11
- */
12
- export const grepSearchDefinition = {
13
- type: 'function',
14
- function: {
15
- name: 'grep_search',
16
- description: 'Search file contents by regex pattern. Returns matching lines with file:line.',
17
- parameters: {
18
- type: 'object',
19
- properties: {
20
- pattern: { type: 'string', description: 'Regex pattern (e.g. "function", "\\.ts$", "import.*from"). Escape special chars: \\. \\( \\) \\[' },
21
- path: { type: 'string', description: 'Search root directory (default: project root)' },
22
- include: { type: 'string', description: 'File filter (e.g. "*.ts", "*.py")' },
23
- max_results: { type: 'number', description: 'Max results (default: 50)' },
24
- },
25
- required: ['pattern'],
26
- },
27
- },
28
- };
29
- /** Конвертирует glob-паттерн в regex */
30
- function globToRegex(pattern) {
31
- let re = '^';
32
- let i = 0;
33
- while (i < pattern.length) {
34
- const c = pattern[i];
35
- if (c === '*' && i + 2 < pattern.length && pattern[i + 1] === '*' && pattern[i + 2] === '/') {
36
- re += '(.+/)?';
37
- i += 3;
38
- }
39
- else if (c === '*' && i + 1 < pattern.length && pattern[i + 1] === '*') {
40
- re += '.*';
41
- i += 2;
42
- }
43
- else if (c === '*') {
44
- re += '[^/]*';
45
- i++;
46
- }
47
- else if (c === '?') {
48
- re += '[^/]';
49
- i++;
50
- }
51
- else if (c === '.') {
52
- re += '\\.';
53
- i++;
54
- }
55
- else if (/[+^${}()|[\]\\]/.test(c)) {
56
- re += '\\' + c;
57
- i++;
58
- }
59
- else {
60
- re += c;
61
- i++;
62
- }
63
- }
64
- return new RegExp(re + '$');
65
- }
66
- function walkGrep(dir, baseDir, regex, includePattern, results, maxResults) {
67
- if (results.length >= maxResults)
68
- return;
69
- const entries = readDirEntries(dir);
70
- for (const entry of entries) {
71
- if (results.length >= maxResults)
72
- break;
73
- const name = String(entry.name);
74
- if (IGNORE_DIRS.has(name) || name.startsWith('.'))
75
- continue;
76
- const fullPath = join(dir, name);
77
- if (entry.isDirectory()) {
78
- walkGrep(fullPath, baseDir, regex, includePattern, results, maxResults);
79
- }
80
- else if (entry.isFile()) {
81
- if (includePattern && !includePattern.test(name))
82
- continue;
83
- try {
84
- const content = readFileSync(fullPath, 'utf-8');
85
- const lines = content.split('\n');
86
- const rel = normalizePath(fullPath.slice(baseDir.length + 1));
87
- for (let i = 0; i < lines.length; i++) {
88
- if (results.length >= maxResults)
89
- break;
90
- if (regex.test(lines[i])) {
91
- results.push(`${rel}:${i + 1}: ${lines[i].trim()}`);
92
- }
93
- }
94
- }
95
- catch {
96
- // skip binary/unreadable files
97
- }
98
- }
99
- }
100
- }
101
- export function handleGrepSearch(args, cwd) {
102
- const pattern = String(args.pattern ?? '');
103
- const searchPath = String(args.path ?? '.');
104
- const include = args.include ? String(args.include) : null;
105
- const maxResults = Math.min(200, Math.max(1, Number(args.max_results ?? 50)));
106
- if (!pattern)
107
- return fsError('Pattern is required');
108
- let regex;
109
- try {
110
- regex = new RegExp(pattern, 'i');
111
- }
112
- catch (e) {
113
- return fsError(`Invalid regex: ${e.message}`);
114
- }
115
- const resolved = resolvePath(searchPath, cwd);
116
- if (!resolved.ok)
117
- return fsError(resolved.error);
118
- const includeRegex = include ? globToRegex(include) : null;
119
- const results = [];
120
- walkGrep(resolved.abs, resolved.abs, regex, includeRegex, results, maxResults);
121
- if (results.length === 0) {
122
- return fsOk(`No matches for pattern: ${pattern}`);
123
- }
124
- const truncated = results.length >= maxResults;
125
- const { text, truncated: truncatedOutput } = truncateOutput(results.join('\n'), MAX_OUTPUT_CHARS);
126
- return fsOk(`${results.length} match(es) for "${pattern}":\n${text}`, truncated || truncatedOutput);
127
- }
128
- export const grepSearchHandler = {
129
- name: 'grep_search',
130
- definition: grepSearchDefinition,
131
- async execute(args, ctx) {
132
- return handleGrepSearch(args, ctx.cwd);
133
- },
134
- };
135
- //# sourceMappingURL=grep-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grep-search.js","sourceRoot":"","sources":["../../../src/tools/fs/grep-search.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { ToolDefinition } from '../registry.js';
2
- import type { ToolHandler } from '../types.js';
3
- import { fsOk } from './types.js';
4
- /**
5
- * Инструмент просмотра содержимого директории.
6
- * Показывает размеры и типы файлов/папок.
7
- *
8
- * @module tools/fs/list-dir
9
- */
10
- export declare const listDirDefinition: ToolDefinition;
11
- export declare function handleListDir(args: Record<string, unknown>, cwd: string): ReturnType<typeof fsOk>;
12
- export declare const listDirHandler: ToolHandler;
13
- //# sourceMappingURL=list-dir.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-dir.d.ts","sourceRoot":"","sources":["../../../src/tools/fs/list-dir.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAW,IAAI,EAAoB,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,EAAE,cAa/B,CAAC;AAEF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,OAAO,IAAI,CAAC,CAgDzB;AAED,eAAO,MAAM,cAAc,EAAE,WAM5B,CAAC"}
@@ -1,74 +0,0 @@
1
- import { statSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { resolvePath, formatSize, normalizePath, readDirEntries } from './path-utils.js';
4
- import { fsError, fsOk, MAX_OUTPUT_CHARS } from './types.js';
5
- /**
6
- * Инструмент просмотра содержимого директории.
7
- * Показывает размеры и типы файлов/папок.
8
- *
9
- * @module tools/fs/list-dir
10
- */
11
- export const listDirDefinition = {
12
- type: 'function',
13
- function: {
14
- name: 'list_dir',
15
- description: 'List directory contents with sizes and type indicators.',
16
- parameters: {
17
- type: 'object',
18
- properties: {
19
- path: { type: 'string', description: 'Directory path (default: current directory)' },
20
- show_hidden: { type: 'boolean', description: 'Show hidden files (default: false)' },
21
- },
22
- },
23
- },
24
- };
25
- export function handleListDir(args, cwd) {
26
- const rawPath = String(args.path ?? '.');
27
- const showHidden = Boolean(args.show_hidden);
28
- const resolved = resolvePath(rawPath, cwd);
29
- if (!resolved.ok)
30
- return fsError(resolved.error);
31
- const entries = readDirEntries(resolved.abs);
32
- if (entries.length === 0 && !resolved.abs) {
33
- return fsError(`Cannot list directory: ${resolved.abs}`);
34
- }
35
- const lines = [];
36
- const sorted = entries
37
- .filter(e => showHidden || !String(e.name).startsWith('.'))
38
- .sort((a, b) => {
39
- if (a.isDirectory() !== b.isDirectory())
40
- return a.isDirectory() ? -1 : 1;
41
- return String(a.name).localeCompare(String(b.name));
42
- });
43
- for (const entry of sorted) {
44
- const name = String(entry.name);
45
- const fullPath = join(resolved.abs, name);
46
- const isDir = entry.isDirectory();
47
- try {
48
- const stat = statSync(fullPath);
49
- const size = isDir ? '' : ` ${formatSize(Number(stat.size))}`;
50
- const icon = isDir ? 'd' : '-';
51
- lines.push(`${icon} ${name}${isDir ? '/' : ''}${size}`);
52
- }
53
- catch {
54
- lines.push(`? ${name}`);
55
- }
56
- }
57
- if (lines.length === 0) {
58
- return fsOk(`(empty directory) ${normalizePath(rawPath)}`);
59
- }
60
- const header = `${normalizePath(rawPath)}/ (${lines.length} entries)`;
61
- const result = header + '\n' + lines.join('\n');
62
- if (result.length > MAX_OUTPUT_CHARS) {
63
- return fsOk(result.slice(0, MAX_OUTPUT_CHARS) + `\n... (${lines.length} entries total)`, true);
64
- }
65
- return fsOk(result);
66
- }
67
- export const listDirHandler = {
68
- name: 'list_dir',
69
- definition: listDirDefinition,
70
- async execute(args, ctx) {
71
- return handleListDir(args, ctx.cwd);
72
- },
73
- };
74
- //# sourceMappingURL=list-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-dir.js","sourceRoot":"","sources":["../../../src/tools/fs/list-dir.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { ToolDefinition } from '../registry.js';
2
- import type { ToolHandler } from '../types.js';
3
- import { fsOk } from './types.js';
4
- /**
5
- * Инструмент переменования/переименования файлов.
6
- * Создаёт родительские директории автоматически.
7
- *
8
- * @module tools/fs/move-file
9
- */
10
- export declare const moveFileDefinition: ToolDefinition;
11
- export declare function handleMoveFile(args: Record<string, unknown>, cwd: string): ReturnType<typeof fsOk>;
12
- export declare const moveFileHandler: ToolHandler;
13
- //# sourceMappingURL=move-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"move-file.d.ts","sourceRoot":"","sources":["../../../src/tools/fs/move-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAW,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AAEH,eAAO,MAAM,kBAAkB,EAAE,cAchC,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,OAAO,IAAI,CAAC,CAqBzB;AAED,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAC"}
@@ -1,54 +0,0 @@
1
- import { renameSync, mkdirSync } from 'node:fs';
2
- import { dirname } from 'node:path';
3
- import { resolvePath, assertExists, normalizePath } from './path-utils.js';
4
- import { fsError, fsOk } from './types.js';
5
- /**
6
- * Инструмент переменования/переименования файлов.
7
- * Создаёт родительские директории автоматически.
8
- *
9
- * @module tools/fs/move-file
10
- */
11
- export const moveFileDefinition = {
12
- type: 'function',
13
- function: {
14
- name: 'move_file',
15
- description: 'Move or rename a file.',
16
- parameters: {
17
- type: 'object',
18
- properties: {
19
- source: { type: 'string', description: 'Source file path' },
20
- destination: { type: 'string', description: 'Destination file path' },
21
- },
22
- required: ['source', 'destination'],
23
- },
24
- },
25
- };
26
- export function handleMoveFile(args, cwd) {
27
- const source = String(args.source ?? '');
28
- const dest = String(args.destination ?? '');
29
- const srcResolved = resolvePath(source, cwd);
30
- if (!srcResolved.ok)
31
- return fsError(`Source: ${srcResolved.error}`);
32
- const srcExists = assertExists(srcResolved.abs);
33
- if (!srcExists.ok)
34
- return fsError(srcExists.error);
35
- const dstResolved = resolvePath(dest, cwd);
36
- if (!dstResolved.ok)
37
- return fsError(`Destination: ${dstResolved.error}`);
38
- try {
39
- mkdirSync(dirname(dstResolved.abs), { recursive: true });
40
- renameSync(srcResolved.abs, dstResolved.abs);
41
- }
42
- catch (e) {
43
- return fsError(`Move failed: ${e.message}`);
44
- }
45
- return fsOk(`Moved ${normalizePath(source)} → ${normalizePath(dest)}`);
46
- }
47
- export const moveFileHandler = {
48
- name: 'move_file',
49
- definition: moveFileDefinition,
50
- async execute(args, ctx) {
51
- return handleMoveFile(args, ctx.cwd);
52
- },
53
- };
54
- //# sourceMappingURL=move-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"move-file.js","sourceRoot":"","sources":["../../../src/tools/fs/move-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wBAAwB;QACrC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;aACtE;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;SACpC;KACF;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAC5B,IAA6B,EAC7B,GAAW;IAEX,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,WAAW,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,gBAAgB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,IAAI,EAAE,WAAW;IACjB,UAAU,EAAE,kBAAkB;IAC9B,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}
@@ -1,51 +0,0 @@
1
- import { statSync } from 'node:fs';
2
- import type { Dirent } from 'node:fs';
3
- /**
4
- * Утилиты для работы с путями в fs-инструментах.
5
- *
6
- * Обеспечивают:
7
- * - Безопасное разрешение путей (относительно cwd)
8
- * - Предотвращение выхода за пределы проекта (path traversal)
9
- * - Форматирование размера файлов
10
- * - Обрезка вывода по лимитам
11
- *
12
- * @module tools/fs/path-utils
13
- */
14
- export declare const IGNORE_DIRS: Set<string>;
15
- /**
16
- * Безопасно разрешает путь относительно cwd.
17
- * Предотвращает path traversal (выход за пределы проекта).
18
- */
19
- export declare function resolvePath(userPath: string, cwd: string): {
20
- ok: true;
21
- abs: string;
22
- rel: string;
23
- } | {
24
- ok: false;
25
- error: string;
26
- };
27
- /** Проверяет существование файла/директории и его тип */
28
- export declare function assertExists(abs: string, expectedType?: 'file' | 'dir'): {
29
- ok: true;
30
- stat: ReturnType<typeof statSync>;
31
- } | {
32
- ok: false;
33
- error: string;
34
- stat: undefined;
35
- };
36
- /** Форматирует размер файла (B, KB, MB) */
37
- export declare function formatSize(bytes: number): string;
38
- /** Нормализует путь (заменяет обратные слэши на прямые) */
39
- export declare function normalizePath(p: string): string;
40
- /** Обрезает вывод по лимиту символов */
41
- export declare function truncateOutput(text: string, maxChars: number): {
42
- text: string;
43
- truncated: boolean;
44
- };
45
- /** Читает записи директории (с обработкой ошибок) */
46
- export declare function readDirEntries(dir: string): Dirent[];
47
- /** Рекурсивно обходит директорию, пропуская IGNORE_DIRS и скрытые папки */
48
- export declare function walkDirFiltered(dir: string, baseDir: string, callback: (filePath: string, relPath: string) => void, opts?: {
49
- maxResults?: number;
50
- }): number;
51
- //# sourceMappingURL=path-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../../src/tools/fs/path-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,QAAQ,EAAe,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;;;;;;GAUG;AAGH,eAAO,MAAM,WAAW,aAItB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAcvE;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAejG;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAMnG;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAMpD;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EACrD,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,MAAM,CAsBR"}
@@ -1,103 +0,0 @@
1
- import { resolve, relative, normalize, join, isAbsolute } from 'node:path';
2
- import { existsSync, statSync, readdirSync } from 'node:fs';
3
- /**
4
- * Утилиты для работы с путями в fs-инструментах.
5
- *
6
- * Обеспечивают:
7
- * - Безопасное разрешение путей (относительно cwd)
8
- * - Предотвращение выхода за пределы проекта (path traversal)
9
- * - Форматирование размера файлов
10
- * - Обрезка вывода по лимитам
11
- *
12
- * @module tools/fs/path-utils
13
- */
14
- // Игнорируемые директории (не сканируются)
15
- export const IGNORE_DIRS = new Set([
16
- 'node_modules', '.git', '.mma', 'dist', 'build', '__pycache__',
17
- 'vendor', '.next', '.nuxt', 'coverage', '.cache', 'target',
18
- 'out', '.output', '.turbo',
19
- ]);
20
- /**
21
- * Безопасно разрешает путь относительно cwd.
22
- * Предотвращает path traversal (выход за пределы проекта).
23
- */
24
- export function resolvePath(userPath, cwd) {
25
- if (!userPath || typeof userPath !== 'string') {
26
- return { ok: false, error: 'Path is required' };
27
- }
28
- const normalized = normalize(userPath.replace(/\//g, '\\'));
29
- const abs = isAbsolute(normalized) ? resolve(normalized) : resolve(cwd, normalized);
30
- const rel = relative(cwd, abs);
31
- if (rel.startsWith('..')) {
32
- return { ok: false, error: `Path escapes project root: ${userPath}` };
33
- }
34
- return { ok: true, abs, rel: rel.replace(/\\/g, '/') };
35
- }
36
- /** Проверяет существование файла/директории и его тип */
37
- export function assertExists(abs, expectedType) {
38
- if (!existsSync(abs)) {
39
- return { ok: false, error: `Not found: ${abs}`, stat: undefined };
40
- }
41
- const stat = statSync(abs);
42
- if (expectedType === 'file' && !stat.isFile()) {
43
- return { ok: false, error: `Not a file: ${abs}`, stat: undefined };
44
- }
45
- if (expectedType === 'dir' && !stat.isDirectory()) {
46
- return { ok: false, error: `Not a directory: ${abs}`, stat: undefined };
47
- }
48
- return { ok: true, stat };
49
- }
50
- /** Форматирует размер файла (B, KB, MB) */
51
- export function formatSize(bytes) {
52
- if (bytes < 1024)
53
- return `${bytes} B`;
54
- if (bytes < 1024 * 1024)
55
- return `${(bytes / 1024).toFixed(1)} KB`;
56
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
57
- }
58
- /** Нормализует путь (заменяет обратные слэши на прямые) */
59
- export function normalizePath(p) {
60
- return p.replace(/\\/g, '/');
61
- }
62
- /** Обрезает вывод по лимиту символов */
63
- export function truncateOutput(text, maxChars) {
64
- if (text.length <= maxChars)
65
- return { text, truncated: false };
66
- return {
67
- text: text.slice(0, maxChars) + `\n... (truncated, ${text.length} total chars)`,
68
- truncated: true,
69
- };
70
- }
71
- /** Читает записи директории (с обработкой ошибок) */
72
- export function readDirEntries(dir) {
73
- try {
74
- return readdirSync(dir, { withFileTypes: true });
75
- }
76
- catch {
77
- return [];
78
- }
79
- }
80
- /** Рекурсивно обходит директорию, пропуская IGNORE_DIRS и скрытые папки */
81
- export function walkDirFiltered(dir, baseDir, callback, opts) {
82
- let count = 0;
83
- const max = opts?.maxResults ?? Infinity;
84
- const entries = readDirEntries(dir);
85
- for (const entry of entries) {
86
- if (count >= max)
87
- break;
88
- const name = String(entry.name);
89
- if (IGNORE_DIRS.has(name) || name.startsWith('.'))
90
- continue;
91
- const fullPath = join(dir, name);
92
- if (entry.isDirectory()) {
93
- count += walkDirFiltered(fullPath, baseDir, callback, { maxResults: max - count });
94
- }
95
- else if (entry.isFile()) {
96
- const rel = normalizePath(fullPath.slice(baseDir.length + 1));
97
- callback(fullPath, rel);
98
- count++;
99
- }
100
- }
101
- return count;
102
- }
103
- //# sourceMappingURL=path-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../../src/tools/fs/path-utils.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { ToolDefinition } from '../registry.js';
2
- import type { ToolHandler } from '../types.js';
3
- import { fsOk } from './types.js';
4
- /**
5
- * Инструмент чтения файла с номерами строк.
6
- * Поддерживает offset/limit для больших файлов.
7
- *
8
- * @module tools/fs/read-file
9
- */
10
- export declare const readFileDefinition: ToolDefinition;
11
- export declare function handleReadFile(args: Record<string, unknown>, cwd: string): ReturnType<typeof fsOk>;
12
- export declare const readFileHandler: ToolHandler;
13
- //# sourceMappingURL=read-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../../src/tools/fs/read-file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAW,IAAI,EAAoB,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AAEH,eAAO,MAAM,kBAAkB,EAAE,cAehC,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,OAAO,IAAI,CAAC,CAmCzB;AAED,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAC"}
@@ -1,64 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { resolvePath, assertExists, truncateOutput } from './path-utils.js';
3
- import { fsError, fsOk, MAX_OUTPUT_CHARS } from './types.js';
4
- /**
5
- * Инструмент чтения файла с номерами строк.
6
- * Поддерживает offset/limit для больших файлов.
7
- *
8
- * @module tools/fs/read-file
9
- */
10
- export const readFileDefinition = {
11
- type: 'function',
12
- function: {
13
- name: 'read_file',
14
- description: 'Read file contents with line numbers. Use offset/limit for large files.',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- path: { type: 'string', description: 'File path (relative to project root)' },
19
- offset: { type: 'number', description: 'Start line (1-indexed). Default 1.' },
20
- limit: { type: 'number', description: 'Max lines to read. Default 500.' },
21
- },
22
- required: ['path'],
23
- },
24
- },
25
- };
26
- export function handleReadFile(args, cwd) {
27
- const path = String(args.path ?? '');
28
- const offset = Math.max(1, Number(args.offset ?? 1));
29
- const limit = Math.min(1000, Math.max(1, Number(args.limit ?? 500)));
30
- const resolved = resolvePath(path, cwd);
31
- if (!resolved.ok)
32
- return fsError(resolved.error);
33
- const exists = assertExists(resolved.abs, 'file');
34
- if (!exists.ok)
35
- return fsError(exists.error);
36
- let content;
37
- try {
38
- content = readFileSync(resolved.abs, 'utf-8');
39
- }
40
- catch (e) {
41
- return fsError(`Cannot read file: ${e.message}`);
42
- }
43
- const lines = content.split('\n');
44
- const totalLines = lines.length;
45
- const start = offset - 1;
46
- const end = Math.min(start + limit, totalLines);
47
- const selected = lines.slice(start, end);
48
- const numbered = selected.map((line, i) => `${start + i + 1}: ${line}`);
49
- const output = numbered.join('\n');
50
- const footer = end < totalLines
51
- ? `\n... (showing ${start + 1}-${end} of ${totalLines} lines)`
52
- : '';
53
- const result = output + footer;
54
- const { text, truncated } = truncateOutput(result, MAX_OUTPUT_CHARS);
55
- return fsOk(text, truncated);
56
- }
57
- export const readFileHandler = {
58
- name: 'read_file',
59
- definition: readFileDefinition,
60
- async execute(args, ctx) {
61
- return handleReadFile(args, ctx.cwd);
62
- },
63
- };
64
- //# sourceMappingURL=read-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../../src/tools/fs/read-file.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { ToolDefinition } from '../registry.js';
2
- import type { ToolHandler } from '../types.js';
3
- import { fsOk } from './types.js';
4
- /**
5
- * Инструмент отображения дерева директорий.
6
- * Показывает структуру файлов с ограничением глубины.
7
- *
8
- * @module tools/fs/tree
9
- */
10
- export declare const treeDefinition: ToolDefinition;
11
- export declare function handleTree(args: Record<string, unknown>, cwd: string): ReturnType<typeof fsOk>;
12
- export declare const treeHandler: ToolHandler;
13
- //# sourceMappingURL=tree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tools/fs/tree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAW,IAAI,EAAoB,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,EAAE,cAc5B,CAAC;AAkDF,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,OAAO,IAAI,CAAC,CAwBzB;AAED,eAAO,MAAM,WAAW,EAAE,WAMzB,CAAC"}