micro-models-agent 0.6.4 → 0.7.1

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 +11706 -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,40 +0,0 @@
1
- /** Переопределяет директорию хранения плана (для тестов) */
2
- export declare function setPlanDir(dir: string): void;
3
- /** Шаг плана */
4
- export interface PlanStep {
5
- id: number;
6
- title: string;
7
- status: 'pending' | 'in_progress' | 'done' | 'skipped';
8
- }
9
- /** План агента */
10
- export interface Plan {
11
- name: string;
12
- steps: PlanStep[];
13
- createdAt: string;
14
- updatedAt: string;
15
- }
16
- /** Создаёт новый план с указанными шагами */
17
- export declare function createPlan(name: string, steps: string[]): string;
18
- /** Обновляет статус шага плана */
19
- export declare function updatePlanStep(stepId: number, status: PlanStep['status']): string;
20
- /** Показывает текущий план с прогрессом */
21
- export declare function showPlan(): string;
22
- /** Удаляет текущий план */
23
- export declare function clearPlan(): string;
24
- /** Возвращает количество незавершённых шагов плана (0 = все готово или нет плана) */
25
- export declare function getPlanPendingCount(): number;
26
- /** Возвращает заголовок шага плана по его ID (или null если плана нет/шаг не найден) */
27
- export declare function getPlanStepTitle(stepId: number): string | null;
28
- /** Возвращает следующий pending шаг плана (или null) */
29
- export declare function getNextPendingStep(): PlanStep | null;
30
- /** Извлекает ожидаемую директорию из заголовка шага.
31
- * Например: "Create src/db.ts" → "src"
32
- * "Создать index.html в src/" → "src"
33
- * Возвращает null если директория не найдена. */
34
- export declare function extractDirFromStepTitle(title: string): string | null;
35
- /** Парсит аргументы команды plan (create, done, progress, show, clear) */
36
- export declare function parsePlanCommand(args: string): {
37
- action: string;
38
- params: string[];
39
- };
40
- //# sourceMappingURL=plan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"AAoBA,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG5C;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;CACxD;AAED,kBAAkB;AAClB,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAahE;AAED,kCAAkC;AAClC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAWjF;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,IAAI,MAAM,CAIjC;AAED,2BAA2B;AAC3B,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9D;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAIpD;AAED;;;kDAGkD;AAClD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpE;AAqBD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAKnF"}
@@ -1,143 +0,0 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync, unlinkSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- import { getTheme } from '../styling/index.js';
5
- /**
6
- * Управление планами агента.
7
- *
8
- * План — это список шагов со статусами (pending/in_progress/done/skipped).
9
- * Хранится в ~/.mma/state/current-plan.json.
10
- *
11
- * Используется агентом для структурирования сложных задач (3+ шагов).
12
- *
13
- * @module tools/plan
14
- */
15
- /** Директория для хранения плана (может быть переопределена через setPlanDir или env PLAN_DIR) */
16
- let PLAN_DIR = process.env.PLAN_DIR || join(homedir(), '.mma', 'state');
17
- let PLAN_FILE = join(PLAN_DIR, 'current-plan.json');
18
- /** Переопределяет директорию хранения плана (для тестов) */
19
- export function setPlanDir(dir) {
20
- PLAN_DIR = dir;
21
- PLAN_FILE = join(PLAN_DIR, 'current-plan.json');
22
- }
23
- /** Создаёт директорию для планов если не существует */
24
- function ensureDir() {
25
- if (!existsSync(PLAN_DIR))
26
- mkdirSync(PLAN_DIR, { recursive: true });
27
- }
28
- /** Загружает текущий план из файла */
29
- function loadPlan() {
30
- try {
31
- if (existsSync(PLAN_FILE)) {
32
- return JSON.parse(readFileSync(PLAN_FILE, 'utf-8'));
33
- }
34
- }
35
- catch { /* ignore */ }
36
- return null;
37
- }
38
- /** Сохраняет план в файл */
39
- function savePlan(plan) {
40
- ensureDir();
41
- writeFileSync(PLAN_FILE, JSON.stringify(plan, null, 2), 'utf-8');
42
- }
43
- /** Создаёт новый план с указанными шагами */
44
- export function createPlan(name, steps) {
45
- const plan = {
46
- name,
47
- steps: steps.map((title, i) => ({
48
- id: i + 1,
49
- title,
50
- status: 'pending',
51
- })),
52
- createdAt: new Date().toISOString(),
53
- updatedAt: new Date().toISOString(),
54
- };
55
- savePlan(plan);
56
- return formatPlan(plan);
57
- }
58
- /** Обновляет статус шага плана */
59
- export function updatePlanStep(stepId, status) {
60
- const plan = loadPlan();
61
- if (!plan)
62
- return 'No active plan. Create one first with plan(create).';
63
- const step = plan.steps.find(s => s.id === stepId);
64
- if (!step)
65
- return `Step ${stepId} not found.`;
66
- step.status = status;
67
- plan.updatedAt = new Date().toISOString();
68
- savePlan(plan);
69
- return formatPlan(plan);
70
- }
71
- /** Показывает текущий план с прогрессом */
72
- export function showPlan() {
73
- const plan = loadPlan();
74
- if (!plan)
75
- return 'No active plan. Create one with plan(create).';
76
- return formatPlan(plan);
77
- }
78
- /** Удаляет текущий план */
79
- export function clearPlan() {
80
- const plan = loadPlan();
81
- if (!plan)
82
- return 'No active plan to clear.';
83
- try {
84
- unlinkSync(PLAN_FILE);
85
- }
86
- catch { /* ignore */ }
87
- return `Plan "${plan.name}" cleared.`;
88
- }
89
- /** Возвращает количество незавершённых шагов плана (0 = все готово или нет плана) */
90
- export function getPlanPendingCount() {
91
- const plan = loadPlan();
92
- if (!plan)
93
- return 0;
94
- return plan.steps.filter(s => s.status !== 'done' && s.status !== 'skipped').length;
95
- }
96
- /** Возвращает заголовок шага плана по его ID (или null если плана нет/шаг не найден) */
97
- export function getPlanStepTitle(stepId) {
98
- const plan = loadPlan();
99
- if (!plan)
100
- return null;
101
- const step = plan.steps.find(s => s.id === stepId);
102
- return step?.title ?? null;
103
- }
104
- /** Возвращает следующий pending шаг плана (или null) */
105
- export function getNextPendingStep() {
106
- const plan = loadPlan();
107
- if (!plan)
108
- return null;
109
- return plan.steps.find(s => s.status === 'pending') ?? null;
110
- }
111
- /** Извлекает ожидаемую директорию из заголовка шага.
112
- * Например: "Create src/db.ts" → "src"
113
- * "Создать index.html в src/" → "src"
114
- * Возвращает null если директория не найдена. */
115
- export function extractDirFromStepTitle(title) {
116
- // Паттерн: "Create dir/file" или "Создать file в dir/"
117
- const match = title.match(/(?:Create|Создать|Add|Добавить)\s+(\w[\w-]*)\//i)
118
- || title.match(/(?:Create|Создать|Add|Добавить)\s+\S+\s+(?:in|в)\s+(\w[\w-]*)\//i);
119
- return match?.[1] ?? null;
120
- }
121
- /** Форматирует план для отображения (с иконками и прогрессом) */
122
- function formatPlan(plan) {
123
- const theme = getTheme();
124
- const done = plan.steps.filter(s => s.status === 'done').length;
125
- const total = plan.steps.length;
126
- const progress = total > 0 ? Math.round((done / total) * 100) : 0;
127
- const lines = [];
128
- lines.push(`${theme.heading(`Plan: ${plan.name}`)} [${done}/${total} ${progress}%]`);
129
- lines.push('');
130
- for (const step of plan.steps) {
131
- const icon = theme.stepIcon(step.status);
132
- lines.push(` ${icon} ${theme.dim(String(step.id))}. ${step.title}`);
133
- }
134
- return lines.join('\n');
135
- }
136
- /** Парсит аргументы команды plan (create, done, progress, show, clear) */
137
- export function parsePlanCommand(args) {
138
- const parts = args.trim().split(/\s+/);
139
- const action = parts[0] || 'show';
140
- const params = parts.slice(1);
141
- return { action, params };
142
- }
143
- //# sourceMappingURL=plan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Инструмент вопроса пользователю.
3
- *
4
- * Позволяет агенту задавать вопросы с вариантами ответов.
5
- * Используется когда агенту нужен выбор или уточнение.
6
- *
7
- * @module tools/question
8
- */
9
- /** Состояние вопроса */
10
- export interface QuestionState {
11
- active: boolean;
12
- question: string;
13
- choices?: string[];
14
- response?: string;
15
- }
16
- /** Создаёт новый вопрос для пользователя */
17
- export declare function askQuestion(question: string, choices?: string[]): QuestionState;
18
- /** Возвращает текущий активный вопрос */
19
- export declare function getQuestion(): QuestionState | null;
20
- /** Записывает ответ пользователя на вопрос */
21
- export declare function answerQuestion(response: string): void;
22
- /** Проверяет есть ли активный вопрос */
23
- export declare function hasActiveQuestion(): boolean;
24
- /** Форматирует вопрос для отображения (без цвета) */
25
- export declare function formatQuestion(q: QuestionState): string;
26
- /** Форматирует вопрос с цветом (Ink UI) */
27
- export declare function formatQuestionColored(q: QuestionState): string;
28
- /** Парсит аргументы команды question (формат: text | choice1 | choice2) */
29
- export declare function parseQuestionCommand(args: string): {
30
- question: string;
31
- choices: string[];
32
- };
33
- //# sourceMappingURL=question.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"question.d.ts","sourceRoot":"","sources":["../../src/tools/question.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,wBAAwB;AACxB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,CAO/E;AAED,yCAAyC;AACzC,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAElD;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wCAAwC;AACxC,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAcvD;AAED,2CAA2C;AAC3C,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAa9D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAM1F"}
@@ -1,62 +0,0 @@
1
- import { getTheme } from '../styling/index.js';
2
- let currentQuestion = null;
3
- /** Создаёт новый вопрос для пользователя */
4
- export function askQuestion(question, choices) {
5
- currentQuestion = {
6
- active: true,
7
- question,
8
- choices,
9
- };
10
- return currentQuestion;
11
- }
12
- /** Возвращает текущий активный вопрос */
13
- export function getQuestion() {
14
- return currentQuestion;
15
- }
16
- /** Записывает ответ пользователя на вопрос */
17
- export function answerQuestion(response) {
18
- if (currentQuestion) {
19
- currentQuestion.response = response;
20
- currentQuestion.active = false;
21
- }
22
- }
23
- /** Проверяет есть ли активный вопрос */
24
- export function hasActiveQuestion() {
25
- return currentQuestion?.active === true;
26
- }
27
- /** Форматирует вопрос для отображения (без цвета) */
28
- export function formatQuestion(q) {
29
- const lines = [];
30
- lines.push(`Question: ${q.question}`);
31
- if (q.choices && q.choices.length > 0) {
32
- lines.push('');
33
- for (let i = 0; i < q.choices.length; i++) {
34
- lines.push(` ${i + 1}. ${q.choices[i]}`);
35
- }
36
- lines.push('');
37
- lines.push(`Enter number (1-${q.choices.length}) or custom text:`);
38
- }
39
- return lines.join('\n');
40
- }
41
- /** Форматирует вопрос с цветом (Ink UI) */
42
- export function formatQuestionColored(q) {
43
- const theme = getTheme();
44
- const lines = [];
45
- lines.push(theme.warning(` ${theme.icon.separator} Question: ${q.question}`));
46
- if (q.choices && q.choices.length > 0) {
47
- lines.push('');
48
- for (let i = 0; i < q.choices.length; i++) {
49
- lines.push(` ${theme.highlight(String(i + 1))}. ${q.choices[i]}`);
50
- }
51
- }
52
- return lines.join('\n');
53
- }
54
- /** Парсит аргументы команды question (формат: text | choice1 | choice2) */
55
- export function parseQuestionCommand(args) {
56
- // Формат: question text | choice1 | choice2 | ...
57
- const parts = args.split('|').map(s => s.trim());
58
- const question = parts[0] || '';
59
- const choices = parts.slice(1).filter(Boolean);
60
- return { question, choices };
61
- }
62
- //# sourceMappingURL=question.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"question.js","sourceRoot":"","sources":["../../src/tools/question.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import type { ChatMessage } from "../llm/provider.js";
2
- import type { BashResult } from "./bash.js";
3
- /**
4
- * Реестр всех инструментов агента.
5
- *
6
- * Хранит определения инструментов для LLM и валидирует имена.
7
- * Исполнение вынесено в ToolExecutor (src/agent/tool-executor.ts).
8
- *
9
- * @module tools/registry
10
- */
11
- export interface ToolDefinition {
12
- type: "function";
13
- function: {
14
- name: string;
15
- description: string;
16
- parameters: Record<string, unknown>;
17
- };
18
- }
19
- export interface ToolCall {
20
- id: string;
21
- name: string;
22
- arguments: Record<string, unknown>;
23
- }
24
- export type ToolResult = BashResult;
25
- /** Все определения инструментов (для system prompt) */
26
- export declare const ALL_DEFINITIONS: ToolDefinition[];
27
- /**
28
- * Реестр инструментов — хранит определения и валидирует имена.
29
- * Исполнение — через ToolExecutor.
30
- */
31
- export declare class ToolRegistry {
32
- /** Возвращает определения всех доступных инструментов для system prompt */
33
- getDefinitions(): ToolDefinition[];
34
- isToolCall(message: ChatMessage): boolean;
35
- isValidTool(name: string): boolean;
36
- }
37
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAyBtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AAEpC,uDAAuD;AACvD,eAAO,MAAM,eAAe,EAAE,cAAc,EAuD3C,CAAC;AAIF;;;GAGG;AACH,qBAAa,YAAY;IACvB,2EAA2E;IAC3E,cAAc,IAAI,cAAc,EAAE;IAIlC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAIzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGnC"}
@@ -1,97 +0,0 @@
1
- import { readFileDefinition } from "./fs/read-file.js";
2
- import { writeFileDefinition } from "./fs/write-file.js";
3
- import { editFileDefinition } from "./fs/edit-file.js";
4
- import { listDirDefinition } from "./fs/list-dir.js";
5
- import { scaffoldDefinition } from "./native/scaffold.js";
6
- import { projectMapDefinition } from "./native/project-map.js";
7
- import { createDirDefinition } from "./fs/create-dir.js";
8
- import { deleteFileDefinition } from "./fs/delete-file.js";
9
- import { copyFileDefinition } from "./fs/copy-file.js";
10
- import { moveFileDefinition } from "./fs/move-file.js";
11
- import { fileInfoDefinition } from "./fs/file-info.js";
12
- import { globSearchDefinition } from "./fs/glob-search.js";
13
- import { grepSearchDefinition } from "./fs/grep-search.js";
14
- import { treeDefinition } from "./fs/tree.js";
15
- import { bashDefinition } from "./bash.js";
16
- import { webSearchDefinition } from "./web-search.js";
17
- import { webFetchDefinition } from "./web-fetch.js";
18
- import { webBrowseDefinition } from "./web-browse.js";
19
- import { planDefinition } from "./native/plan.js";
20
- import { todoDefinition } from "./native/todo.js";
21
- import { questionDefinition } from "./native/question.js";
22
- import { approveDefinition } from "./native/approve.js";
23
- import { userProfileDefinition } from "./native/user-profile.js";
24
- import { themeDefinition } from "./native/theme.js";
25
- /** Все определения инструментов (для system prompt) */
26
- export const ALL_DEFINITIONS = [
27
- // Native
28
- {
29
- type: "function",
30
- function: {
31
- name: "subagent",
32
- description: "Delegate a task to an isolated agent in a fresh context. Use for EACH file when creating 3+ new files. Arguments: task (required, what to do), existingFiles (optional, comma-separated files for context).",
33
- parameters: {
34
- type: "object",
35
- properties: {
36
- task: {
37
- type: "string",
38
- description: "What the subagent should create/fix/check",
39
- },
40
- existingFiles: {
41
- type: "string",
42
- description: "Comma-separated files the subagent can read for context (optional)",
43
- },
44
- },
45
- required: ["task"],
46
- },
47
- },
48
- },
49
- // Bash
50
- bashDefinition,
51
- // Scaffold
52
- scaffoldDefinition,
53
- // Project Map
54
- projectMapDefinition,
55
- // FS
56
- readFileDefinition,
57
- writeFileDefinition,
58
- editFileDefinition,
59
- listDirDefinition,
60
- createDirDefinition,
61
- deleteFileDefinition,
62
- copyFileDefinition,
63
- moveFileDefinition,
64
- fileInfoDefinition,
65
- globSearchDefinition,
66
- grepSearchDefinition,
67
- treeDefinition,
68
- // Web
69
- webSearchDefinition,
70
- webFetchDefinition,
71
- webBrowseDefinition,
72
- // Native
73
- planDefinition,
74
- todoDefinition,
75
- questionDefinition,
76
- approveDefinition,
77
- userProfileDefinition,
78
- themeDefinition,
79
- ];
80
- const VALID_TOOL_NAMES = new Set(ALL_DEFINITIONS.map((d) => d.function.name));
81
- /**
82
- * Реестр инструментов — хранит определения и валидирует имена.
83
- * Исполнение — через ToolExecutor.
84
- */
85
- export class ToolRegistry {
86
- /** Возвращает определения всех доступных инструментов для system prompt */
87
- getDefinitions() {
88
- return ALL_DEFINITIONS;
89
- }
90
- isToolCall(message) {
91
- return message.role === "assistant" && message.content === "";
92
- }
93
- isValidTool(name) {
94
- return VALID_TOOL_NAMES.has(name);
95
- }
96
- }
97
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Санитайзер shell-команд.
3
- *
4
- * Блокирует опасные паттерны:
5
- * - rm -rf / (уничтожение корневой файловой системы)
6
- * - Fork bomb (:(){ :|:& };:)
7
- * - chmod 777 (небезопасные права)
8
- * - dd if=... of=/dev/... (запись на диск)
9
- * - mkfs (форматирование)
10
- * - fdisk (разметка диска)
11
- *
12
- * Определяет read-only команды (ls, cat, git log и т.д.)
13
- *
14
- * @module tools/sanitizer
15
- */
16
- /** Результат санитайзинга */
17
- export interface SanitizeResult {
18
- safe: boolean;
19
- reason?: string;
20
- readOnly: boolean;
21
- }
22
- /**
23
- * Главная функция санитайзинга.
24
- * Проверяет команду на опасные паттерны и определяет является ли она read-only.
25
- *
26
- * @param cmd - shell-команда для проверки
27
- * @returns Результат: safe/unsafe + readOnly флаг
28
- */
29
- export declare function sanitize(cmd: string): SanitizeResult;
30
- //# sourceMappingURL=sanitizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../src/tools/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2CH,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAmBpD"}
@@ -1,77 +0,0 @@
1
- /**
2
- * Санитайзер shell-команд.
3
- *
4
- * Блокирует опасные паттерны:
5
- * - rm -rf / (уничтожение корневой файловой системы)
6
- * - Fork bomb (:(){ :|:& };:)
7
- * - chmod 777 (небезопасные права)
8
- * - dd if=... of=/dev/... (запись на диск)
9
- * - mkfs (форматирование)
10
- * - fdisk (разметка диска)
11
- *
12
- * Определяет read-only команды (ls, cat, git log и т.д.)
13
- *
14
- * @module tools/sanitizer
15
- */
16
- // ─── Опасные паттерны ────────────────────────────────────
17
- const DANGEROUS_PATTERNS = [
18
- /rm\s+-rf\s+\//i,
19
- /:\(\)\s*\{[^}]*\}.*:/,
20
- /chmod\s+777/i,
21
- /dd\s+if=.*of=\/dev\//i,
22
- />\s*\/dev\/(sda|sdb|sdc|nvme)/i,
23
- /mkfs\./i,
24
- /fdisk\s+\/dev\//i,
25
- /dd\s+if=\/dev\/zero/i,
26
- ];
27
- // Read-only команды (не модифицируют файловую систему)
28
- const READ_ONLY_COMMANDS = new Set([
29
- 'ls', 'cat', 'echo', 'pwd', 'head', 'tail', 'grep', 'find',
30
- 'git log', 'git status', 'git diff', 'git show',
31
- 'npm ls', 'npm list',
32
- ]);
33
- /** Удаляет обёртки (timeout, time, nice) для анализа базовой команды */
34
- function stripWrappers(cmd) {
35
- return cmd.replace(/^(timeout|time|nice)\s+(-\w+\s+)?/i, '');
36
- }
37
- /** Разбивает цепочку команд (&&, ||, ;) на отдельные подкоманды */
38
- function parseCommands(cmd) {
39
- const parts = cmd.split(/\s*&&\s*|\s*\|\|\s*|\s*;\s*/);
40
- const result = [];
41
- for (const part of parts) {
42
- const trimmed = part.trim();
43
- if (trimmed)
44
- result.push(trimmed);
45
- }
46
- return result;
47
- }
48
- /** Извлекает имя команды (с учётом npx/sudo/doas префиксов) */
49
- function getCommandName(cmd) {
50
- const match = cmd.match(/^(?:npx\s+|sudo\s+|doas\s+)?(\S+)/);
51
- return match ? match[1] : cmd;
52
- }
53
- /**
54
- * Главная функция санитайзинга.
55
- * Проверяет команду на опасные паттерны и определяет является ли она read-only.
56
- *
57
- * @param cmd - shell-команда для проверки
58
- * @returns Результат: safe/unsafe + readOnly флаг
59
- */
60
- export function sanitize(cmd) {
61
- const stripped = stripWrappers(cmd);
62
- const subCommands = parseCommands(stripped);
63
- for (const sub of subCommands) {
64
- for (const pattern of DANGEROUS_PATTERNS) {
65
- if (pattern.test(sub)) {
66
- return { safe: false, reason: `Command matches dangerous pattern: ${pattern}`, readOnly: false };
67
- }
68
- }
69
- }
70
- const firstCmd = getCommandName(stripped);
71
- const readOnly = subCommands.every(sub => {
72
- const name = getCommandName(sub);
73
- return READ_ONLY_COMMANDS.has(name);
74
- });
75
- return { safe: true, readOnly };
76
- }
77
- //# sourceMappingURL=sanitizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../src/tools/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,kBAAkB,GAAa;IACnC,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,uBAAuB;IACvB,gCAAgC;IAChC,SAAS;IACT,kBAAkB;IAClB,sBAAsB;CACvB,CAAC;AAEF,uDAAuD;AACvD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC1D,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU;IAC/C,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,wEAAwE;AACxE,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,mEAAmE;AACnE,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE5C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YACnG,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACvC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
@@ -1,39 +0,0 @@
1
- import type { LLMProvider } from "../llm/provider.js";
2
- import { ToolRegistry } from "./registry.js";
3
- import type { ToolExecutor } from "../agent/tool-executor.js";
4
- import type { OutputRenderer } from "../ui/renderer.js";
5
- /**
6
- * Изолированный цикл агента для субагентов.
7
- *
8
- * Субагенты работают в изолированном контексте — они не видят
9
- * историю родительского агента, но получают информацию о структуре
10
- * проекта (файлы, зависимости, tsconfig).
11
- *
12
- * Используется для:
13
- * - Создания отдельных файлов в multi-file проектах
14
- * - Запуска верификации (tsc --noEmit)
15
- * - Изоляции задач для предотвращения потери контекста
16
- *
17
- * @module tools/subagent
18
- */
19
- /** Результат выполнения изолированного цикла субагента */
20
- export interface IsolatedLoopResult {
21
- createdFiles: string[];
22
- errors: string[];
23
- summary: string;
24
- turns: number;
25
- }
26
- /**
27
- * Запуск изолированного цикла агента (субагент).
28
- *
29
- * Субагент:
30
- * - Получает свежий контекст (system prompt + задача + info о проекте)
31
- * - Работает максимум 20 ходов
32
- * - Не может создавать вложенных субагентов (max depth 1)
33
- * - Автоматически компактирует контекст при необходимости
34
- * - Отслеживает созданные файлы и ошибки
35
- *
36
- * @returns Результат: созданные файлы, ошибки, краткое описание, количество ходов
37
- */
38
- export declare function runIsolatedLoop(provider: LLMProvider, registry: ToolRegistry, task: string, existingFiles: string, cwd: string, quiet: boolean, renderer: OutputRenderer, toolExecutor?: ToolExecutor, mode?: string, toolModel?: string, maxStepsParam?: number): Promise<IsolatedLoopResult>;
39
- //# sourceMappingURL=subagent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;;;;;;;;GAaG;AAIH,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAsHD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAuM7B"}