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,346 +0,0 @@
1
- import { runPreToolUseHooks, runPostToolUseHooks, runLintAfterWrite, } from "../tools/hooks.js";
2
- import { notifyFileChanged } from "../indexer/cache.js";
3
- import { invalidateSystemPromptCache } from "./system-prompt.js";
4
- import { resolve, dirname } from "node:path";
5
- import { existsSync } from "node:fs";
6
- import { getGroundingConfig } from "../config/config.js";
7
- /**
8
- * Диспетчер инструментов с пайплайном: pre-hooks → execute → post-hooks → truncate.
9
- *
10
- * ToolExecutor — чистый диспетчер. Никакой domain-логики.
11
- * Вся поведенческая логика (plan enforcement, write streak, syntax check)
12
- * остаётся в loop.ts.
13
- *
14
- * @module agent/tool-executor
15
- */
16
- /** Инструменты, требующие path validation: путь должен существовать */
17
- const FS_TOOLS_REQUIRE_EXIST = new Set([
18
- "read_file",
19
- "edit_file",
20
- "delete_file",
21
- "file_info",
22
- ]);
23
- /** Инструменты, для которых проверяем только родительскую директорию */
24
- const FS_TOOLS_CHECK_PARENT = new Set(["create_dir"]);
25
- /** Инструменты с source/destination */
26
- const FS_TOOLS_COPY_MOVE = new Set(["copy_file", "move_file"]);
27
- /** Инструменты, которые модифицируют файловую систему */
28
- const MODIFYING_TOOLS = new Set([
29
- "write_file",
30
- "edit_file",
31
- "delete_file",
32
- "copy_file",
33
- "move_file",
34
- ]);
35
- /** Извлекает пути изменённых файлов из аргументов инструмента */
36
- function getChangedFilePaths(toolName, args) {
37
- const normalize = (p) => String(p ?? "").replace(/\\/g, "/");
38
- switch (toolName) {
39
- case "write_file":
40
- return [normalize(args.path)];
41
- case "edit_file":
42
- return [normalize(args.path)];
43
- case "delete_file":
44
- return [normalize(args.path)];
45
- case "copy_file":
46
- return [normalize(args.destination)];
47
- case "move_file":
48
- return [normalize(args.source), normalize(args.destination)];
49
- default:
50
- return [];
51
- }
52
- }
53
- /** Лимиты обрезки вывода по инструментам (в символах) */
54
- const TRUNCATION_LIMITS = {
55
- read_file: 2000,
56
- write_file: 200,
57
- edit_file: 300,
58
- bash: 1500,
59
- list_dir: 1500,
60
- glob_search: 1000,
61
- grep_search: 1500,
62
- tree: 1500,
63
- subagent: 500,
64
- web_search: 1000,
65
- web_fetch: 1500,
66
- web_browse: 2000,
67
- };
68
- const DEFAULT_LIMIT = 800;
69
- const ERROR_LIMIT = 3000;
70
- /** Паттерны ошибок "path not found" */
71
- const PATH_NOT_FOUND_PATTERNS = [
72
- /cannot find path/i,
73
- /no such file/i,
74
- /does not exist/i,
75
- /not found/i,
76
- /enoent/i,
77
- ];
78
- /** Проверяет, является ли ошибка ошибкой "path not found" */
79
- function isPathNotFoundError(stderr) {
80
- return PATH_NOT_FOUND_PATTERNS.some((p) => p.test(stderr));
81
- }
82
- /** Извлекает путь из ошибки */
83
- function extractPathFromError(stderr) {
84
- // Windows: "Cannot find path 'E:\foo\bar' because it does not exist."
85
- const winMatch = stderr.match(/(?:cannot find path|no such file|does not exist)['"]\s*['"]?([A-Z]:\\[^'"]+)['"]?/i);
86
- if (winMatch)
87
- return winMatch[1];
88
- // Unix: "No such file or directory '/foo/bar'"
89
- const unixMatch = stderr.match(/['"]?(\/[^\s'"]+)['"]?\s*(?:because|no such)/i);
90
- if (unixMatch)
91
- return unixMatch[1];
92
- return null;
93
- }
94
- /** Обрезка вывода инструмента для экономии токенов */
95
- export function truncateOutput(toolName, output, exitCode) {
96
- if (exitCode !== 0) {
97
- return output.length > ERROR_LIMIT
98
- ? output.slice(0, ERROR_LIMIT) + "\n...[truncated]"
99
- : output;
100
- }
101
- const limit = TRUNCATION_LIMITS[toolName] ?? DEFAULT_LIMIT;
102
- if (output.length <= limit)
103
- return output;
104
- return output.slice(0, limit) + "\n...[truncated]";
105
- }
106
- /**
107
- * Диспетчер инструментов.
108
- *
109
- * Пайплайн для каждого tool call:
110
- * 1. pre-hooks (runPreToolUseHooks) — могут заблокировать выполнение
111
- * 2. handler.execute() — выполнение инструмента
112
- * 3. post-hooks (runPostToolUseHooks)
113
- * 4. Уведомление indexer (для модифицирующих инструментов)
114
- * 5. Обрезка вывода (truncateOutput)
115
- */
116
- /**
117
- * Хэш ошибки для детекции повторяющихся паттернов.
118
- * Нормализует stderr, убирая вариативные части (пути, timestamps).
119
- */
120
- function hashError(toolName, stderr) {
121
- // Убираем пути файлов, numbers, timestamps для нормализации
122
- const normalized = stderr
123
- .replace(/[A-Z]:\\[^\s"']+/gi, "<PATH>")
124
- .replace(/\/[^\s"']+/g, "<PATH>")
125
- .replace(/\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}/g, "<TS>")
126
- .replace(/\b\d{10,13}\b/g, "<ID>")
127
- .trim();
128
- return `${toolName}::${normalized}`;
129
- }
130
- export class ToolExecutor {
131
- handlers = new Map();
132
- /** Повторяющиеся ошибки: hash → { count, lastStderr } */
133
- recentErrors = new Map();
134
- /** Регистрация обработчика инструмента */
135
- register(handler) {
136
- this.handlers.set(handler.name, handler);
137
- }
138
- /** Регистрация нескольких обработчиков */
139
- registerAll(handlers) {
140
- for (const h of handlers) {
141
- this.register(h);
142
- }
143
- }
144
- /** Проверка существования обработчика */
145
- has(name) {
146
- return this.handlers.has(name);
147
- }
148
- /** Получение обработчика по имени */
149
- get(name) {
150
- return this.handlers.get(name);
151
- }
152
- /** Получение определений всех инструментов для LLM */
153
- getDefinitions() {
154
- return Array.from(this.handlers.values()).map((h) => h.definition);
155
- }
156
- /** Pre-flight проверка существования пути для FS-тулов */
157
- preFlightCheck(name, args, cwd) {
158
- const groundingCfg = getGroundingConfig();
159
- if (!groundingCfg.checkFiles)
160
- return null;
161
- const pathArg = String(args.path ?? "");
162
- const sourceArg = String(args.source ?? "");
163
- const destArg = String(args.destination ?? "");
164
- if (FS_TOOLS_REQUIRE_EXIST.has(name) && pathArg) {
165
- const resolved = resolve(cwd, pathArg);
166
- if (!existsSync(resolved)) {
167
- return `ENOENT: path not found — "${pathArg}" does not exist.\nCheck the path with glob_search before calling ${name}.`;
168
- }
169
- }
170
- if (FS_TOOLS_CHECK_PARENT.has(name) && pathArg) {
171
- const resolved = resolve(cwd, pathArg);
172
- const parent = dirname(resolved);
173
- if (parent !== resolved && !existsSync(parent)) {
174
- return `ENOENT: parent directory "${dirname(pathArg)}" does not exist.\nCreate it first with create_dir before calling ${name}.`;
175
- }
176
- }
177
- if (FS_TOOLS_COPY_MOVE.has(name)) {
178
- if (sourceArg) {
179
- const resolvedSource = resolve(cwd, sourceArg);
180
- if (!existsSync(resolvedSource)) {
181
- return `ENOENT: source path not found — "${sourceArg}" does not exist.\nCheck the source path with glob_search before calling ${name}.`;
182
- }
183
- }
184
- if (destArg && name === "copy_file") {
185
- const resolvedDest = resolve(cwd, destArg);
186
- const parent = dirname(resolvedDest);
187
- if (parent !== resolvedDest && !existsSync(parent)) {
188
- return `ENOENT: parent directory of destination "${dirname(destArg)}" does not exist.\nCreate it first with create_dir.`;
189
- }
190
- }
191
- }
192
- return null;
193
- }
194
- /**
195
- * Выполнение tool call через пайплайн.
196
- *
197
- * @param call - инструментальный вызов из LLM
198
- * @param context - контекст выполнения (cwd, renderer и т.д.)
199
- * @param hookCmd - строка для хуков (bash command или tool name + args)
200
- * @returns результат выполнения с обрезанным выводом
201
- */
202
- async execute(call, context, hookCmd) {
203
- const start = performance.now();
204
- // 1. Pre-hooks
205
- const preHook = runPreToolUseHooks(context.cwd, call.name, hookCmd);
206
- if (!preHook.continue) {
207
- return {
208
- result: {
209
- stdout: "",
210
- stderr: `Hook blocked: ${preHook.message || ""}`,
211
- exitCode: 1,
212
- truncated: false,
213
- },
214
- elapsed: (performance.now() - start) / 1000,
215
- };
216
- }
217
- // 2. Execute handler
218
- const handler = this.handlers.get(call.name);
219
- if (!handler) {
220
- return {
221
- result: {
222
- stdout: "",
223
- stderr: `Unknown tool: ${call.name}`,
224
- exitCode: 1,
225
- truncated: false,
226
- },
227
- elapsed: (performance.now() - start) / 1000,
228
- };
229
- }
230
- // 2.5 Pre-flight validation путей для FS-тулов
231
- const preFlightError = this.preFlightCheck(call.name, call.arguments, context.cwd);
232
- if (preFlightError) {
233
- return {
234
- result: {
235
- stdout: "",
236
- stderr: preFlightError,
237
- exitCode: 1,
238
- truncated: false,
239
- },
240
- elapsed: (performance.now() - start) / 1000,
241
- };
242
- }
243
- let result;
244
- try {
245
- result = await handler.execute(call.arguments, context);
246
- }
247
- catch (e) {
248
- result = {
249
- stdout: "",
250
- stderr: `Tool error: ${e.message}`,
251
- exitCode: 1,
252
- truncated: false,
253
- };
254
- }
255
- // 3. Post-hooks
256
- runPostToolUseHooks(context.cwd, call.name, hookCmd, result.stdout, result.exitCode);
257
- // 4. Notify indexer (для модифицирующих инструментов)
258
- if (result.exitCode === 0 && MODIFYING_TOOLS.has(call.name)) {
259
- const paths = getChangedFilePaths(call.name, call.arguments);
260
- for (const p of paths) {
261
- notifyFileChanged(p);
262
- }
263
- invalidateSystemPromptCache();
264
- }
265
- // 4.5. Lint-on-write hook (after write_file/edit_file)
266
- if (result.exitCode === 0 &&
267
- (call.name === "write_file" || call.name === "edit_file")) {
268
- const filePath = String(call.arguments.path ?? "");
269
- const lintError = runLintAfterWrite(context.cwd, filePath);
270
- if (lintError) {
271
- result = { ...result, stderr: result.stderr + "\n[LINT] " + lintError };
272
- }
273
- }
274
- // 5. Truncate output
275
- const truncatedStdout = truncateOutput(call.name, result.stdout, result.exitCode);
276
- let truncatedStderr = truncateOutput(call.name, result.stderr, result.exitCode);
277
- // 5.5. Path-not-found enrichment — показываем содержимое родительской директории
278
- if (result.exitCode !== 0 && isPathNotFoundError(result.stderr)) {
279
- const errPath = extractPathFromError(result.stderr) ?? call.arguments?.path;
280
- if (errPath) {
281
- const parentDir = dirname(String(errPath));
282
- const listDirHandler = this.handlers.get("list_dir");
283
- if (listDirHandler) {
284
- try {
285
- const dirResult = await listDirHandler.execute({ path: parentDir }, context);
286
- if (dirResult.exitCode === 0 && dirResult.stdout.trim()) {
287
- truncatedStderr += `\n\n[ENRICHMENT] Contents of ${parentDir}:\n${dirResult.stdout}`;
288
- }
289
- else {
290
- truncatedStderr += `\n\n[ENRICHMENT] Parent directory ${parentDir} is empty or inaccessible.`;
291
- }
292
- }
293
- catch {
294
- /* enrichment is best-effort */
295
- }
296
- }
297
- }
298
- }
299
- // 6. Error pattern detection — обогащение при повторяющихся ошибках
300
- if (result.exitCode !== 0 && truncatedStderr) {
301
- const errHash = hashError(call.name, truncatedStderr);
302
- const prev = this.recentErrors.get(errHash);
303
- if (prev) {
304
- prev.count++;
305
- if (prev.count === 2) {
306
- truncatedStderr += `\n[HINT] This error occurred ${prev.count} times. The input is likely wrong — double-check arguments before retrying.`;
307
- }
308
- else if (prev.count >= 3) {
309
- truncatedStderr += `\n[WARNING] Same error ${prev.count} times in a row. STOP retrying this exact call. Try a different approach or ask for help.`;
310
- }
311
- }
312
- else {
313
- this.recentErrors.set(errHash, {
314
- count: 1,
315
- lastStderr: truncatedStderr,
316
- });
317
- }
318
- // Ограничиваем размер карты
319
- if (this.recentErrors.size > 50) {
320
- const first = this.recentErrors.keys().next().value;
321
- this.recentErrors.delete(first);
322
- }
323
- }
324
- else if (result.exitCode === 0) {
325
- // При успехе — сбрасываем счётчик для этого инструмента
326
- for (const [key] of this.recentErrors) {
327
- if (key.startsWith(call.name + "::")) {
328
- this.recentErrors.delete(key);
329
- }
330
- }
331
- }
332
- const elapsed = (performance.now() - start) / 1000;
333
- return {
334
- result: {
335
- ...result,
336
- stdout: truncatedStdout,
337
- stderr: truncatedStderr,
338
- truncated: result.truncated ||
339
- truncatedStdout !== result.stdout ||
340
- truncatedStderr !== result.stderr,
341
- },
342
- elapsed,
343
- };
344
- }
345
- }
346
- //# sourceMappingURL=tool-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /** Секции профиля пользователя */
2
- type Section = "OS" | "Tech Stack" | "Coding Style" | "Session Patterns" | "Notes";
3
- /** Создаёт директорию профиля если не существует */
4
- export declare function ensureUserDir(): void;
5
- /** Загружает содержимое профиля пользователя */
6
- export declare function loadProfile(): string;
7
- /** Проверяет существует ли файл профиля */
8
- export declare function profileExists(): boolean;
9
- /**
10
- * Добавляет или обновляет запись в секции.
11
- * Если запись с таким же содержимым (без учёта даты) уже существует —
12
- * обновляет её дату (версия повышается). Иначе добавляет новую с сегодняшней датой.
13
- */
14
- export declare function upsertEntry(section: string, content: string): void;
15
- /** Добавляет заметку в указанную секцию профиля */
16
- export declare function appendNote(note: string, section?: Section): void;
17
- /** Собирает информацию об ОС (вызывается при старте REPL, один раз) */
18
- export declare function collectOS(): void;
19
- /**
20
- * Формирует блок для system prompt с учётом версионности.
21
- */
22
- export declare function loadProfileSummary(): string;
23
- /** Создаёт пустой профиль если не существует */
24
- export declare function initDefaultProfile(): void;
25
- export {};
26
- //# sourceMappingURL=user-profile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../../src/agent/user-profile.ts"],"names":[],"mappings":"AA0BA,kCAAkC;AAClC,KAAK,OAAO,GACV,IAAI,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAAG,OAAO,CAAC;AAEtE,oDAAoD;AACpD,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,gDAAgD;AAChD,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAwCD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkClE;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAiB,GAAG,IAAI,CAEzE;AAED,uEAAuE;AACvE,wBAAgB,SAAS,IAAI,IAAI,CAQhC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAgC3C;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
@@ -1,169 +0,0 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { homedir, platform, version as osVersion } from "node:os";
4
- /**
5
- * Профиль пользователя — автоматический сбор наблюдений.
6
- *
7
- * Собирает данные:
8
- * - OS (platform, version, hostname) — при старте REPL
9
- * - Tech Stack (dependencies из package.json) — при старте REPL
10
- * - Coding Style (indent, quotes, semicolons) — после записи файлов
11
- * - Session Patterns (время начала/конца сессии) — старт/стоп REPL
12
- *
13
- * Записи версионируются с датой: [2026-07-18] content
14
- * При повторном обнаружении того же факта дата обновляется.
15
- * Записи старше 30 дней помечаются как (stale Nd ago).
16
- *
17
- * @module agent/user-profile
18
- */
19
- // ─── Константы ──────────────────────────────────────────
20
- const USER_DIR = join(homedir(), ".mma", "user");
21
- const PROFILE_FILE = join(USER_DIR, "profile.md");
22
- const COUNTER_FILE = join(USER_DIR, ".counter");
23
- const STALE_DAYS = 30; // дни до пометки записи как stale
24
- /** Создаёт директорию профиля если не существует */
25
- export function ensureUserDir() {
26
- if (!existsSync(USER_DIR))
27
- mkdirSync(USER_DIR, { recursive: true });
28
- }
29
- /** Загружает содержимое профиля пользователя */
30
- export function loadProfile() {
31
- ensureUserDir();
32
- try {
33
- return readFileSync(PROFILE_FILE, "utf-8");
34
- }
35
- catch {
36
- return "";
37
- }
38
- }
39
- /** Проверяет существует ли файл профиля */
40
- export function profileExists() {
41
- ensureUserDir();
42
- return existsSync(PROFILE_FILE);
43
- }
44
- /** Внутренняя: загружает профиль или создаёт заголовок по умолчанию */
45
- function getProfile() {
46
- ensureUserDir();
47
- try {
48
- return readFileSync(PROFILE_FILE, "utf-8");
49
- }
50
- catch {
51
- return "# User Profile\n";
52
- }
53
- }
54
- /** Внутренняя: записывает содержимое профиля */
55
- function writeProfile(content) {
56
- ensureUserDir();
57
- writeFileSync(PROFILE_FILE, content, "utf-8");
58
- }
59
- /** Возвращает сегодняшнюю дату в формате YYYY-MM-DD */
60
- function today() {
61
- return new Date().toISOString().split("T")[0];
62
- }
63
- /** Считает количество дней между датой и текущим моментом */
64
- function daysAgo(dateStr) {
65
- const d = new Date(dateStr);
66
- if (isNaN(d.getTime()))
67
- return Infinity;
68
- return Math.floor((Date.now() - d.getTime()) / 86400000);
69
- }
70
- /** Удаляет дату из строки записи для сравнения содержимого */
71
- function stripDate(line) {
72
- return line.replace(/^-\s*\[\d{4}-\d{2}-\d{2}\]\s*/, "- ").trim();
73
- }
74
- /** Проверяет содержит ли строка дату в формате [YYYY-MM-DD] */
75
- function hasDate(line) {
76
- return /^-\s*\[\d{4}-\d{2}-\d{2}\]/.test(line);
77
- }
78
- /**
79
- * Добавляет или обновляет запись в секции.
80
- * Если запись с таким же содержимым (без учёта даты) уже существует —
81
- * обновляет её дату (версия повышается). Иначе добавляет новую с сегодняшней датой.
82
- */
83
- export function upsertEntry(section, content) {
84
- let profile = getProfile();
85
- const sectionHeader = `## ${section}`;
86
- const date = today();
87
- const newLine = `- [${date}] ${content}`;
88
- const sectionIdx = profile.indexOf(sectionHeader);
89
- if (sectionIdx === -1) {
90
- profile += `\n${sectionHeader}\n${newLine}\n`;
91
- writeProfile(profile);
92
- return;
93
- }
94
- const sectionEnd = profile.indexOf("\n## ", sectionIdx + 1);
95
- const secStart = sectionIdx + sectionHeader.length + 1;
96
- const secEnd = sectionEnd === -1 ? profile.length : sectionEnd;
97
- const before = profile.slice(0, secStart);
98
- const after = profile.slice(secEnd);
99
- const sectionBody = profile.slice(secStart, secEnd);
100
- const lines = sectionBody.split("\n").filter((l) => l.trim());
101
- const strippedNew = stripDate(newLine);
102
- let found = false;
103
- const updated = lines.map((line) => {
104
- if (hasDate(line) && stripDate(line) === strippedNew) {
105
- found = true;
106
- return newLine;
107
- }
108
- return line;
109
- });
110
- if (!found)
111
- updated.push(newLine);
112
- writeProfile(before + "\n" + updated.join("\n") + "\n" + after);
113
- }
114
- /** Добавляет заметку в указанную секцию профиля */
115
- export function appendNote(note, section = "Notes") {
116
- upsertEntry(section, note);
117
- }
118
- /** Собирает информацию об ОС (вызывается при старте REPL, один раз) */
119
- export function collectOS() {
120
- const existing = loadProfile();
121
- if (existing.includes("## OS"))
122
- return;
123
- const osVer = `${platform()} (${osVersion()})`;
124
- upsertEntry("OS", `Platform: ${platform()}`);
125
- upsertEntry("OS", `Version: ${osVer}`);
126
- upsertEntry("OS", `Node.js: ${process.version}`);
127
- }
128
- /**
129
- * Формирует блок для system prompt с учётом версионности.
130
- */
131
- export function loadProfileSummary() {
132
- const profile = loadProfile();
133
- if (!profile)
134
- return "";
135
- const lines = profile.split("\n");
136
- const sections = [];
137
- let currentSection = "";
138
- let items = [];
139
- for (const line of lines) {
140
- if (line.startsWith("## ")) {
141
- if (currentSection && currentSection !== "Notes" && items.length > 0) {
142
- sections.push(` ${currentSection}: ${items.join(", ")}`);
143
- }
144
- currentSection = line.replace("## ", "").trim();
145
- items = [];
146
- }
147
- else if (line.startsWith("- ") &&
148
- currentSection &&
149
- currentSection !== "Notes") {
150
- const match = line.match(/^-\s*\[\d{4}-\d{2}-\d{2}\]\s*(.*)/);
151
- if (match)
152
- items.push(match[1].trim());
153
- }
154
- }
155
- if (currentSection && currentSection !== "Notes" && items.length > 0) {
156
- sections.push(` ${currentSection}: ${items.join(", ")}`);
157
- }
158
- if (sections.length === 0)
159
- return "";
160
- return `\n## User Profile\n${sections.join("\n")}\n`;
161
- }
162
- /** Создаёт пустой профиль если не существует */
163
- export function initDefaultProfile() {
164
- ensureUserDir();
165
- if (existsSync(PROFILE_FILE))
166
- return;
167
- writeProfile("# User Profile\n\n");
168
- }
169
- //# sourceMappingURL=user-profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../../src/agent/user-profile.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { ParsedCall } from "../tools/parse-tool-call.js";
2
- import type { ChatMessage } from "../llm/provider.js";
3
- import type { OutputRenderer } from "../ui/renderer.js";
4
- export declare class WriteEnforcer {
5
- enforceSingleWrite(_validCalls: ParsedCall[], _messages: ChatMessage[], _quiet?: boolean, _renderer?: OutputRenderer): void;
6
- }
7
- //# sourceMappingURL=write-enforcer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-enforcer.d.ts","sourceRoot":"","sources":["../../src/agent/write-enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,aAAa;IACxB,kBAAkB,CAChB,WAAW,EAAE,UAAU,EAAE,EACzB,SAAS,EAAE,WAAW,EAAE,EACxB,MAAM,CAAC,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,cAAc,GACzB,IAAI;CAKR"}
@@ -1,8 +0,0 @@
1
- export class WriteEnforcer {
2
- enforceSingleWrite(_validCalls, _messages, _quiet, _renderer) {
3
- // Больше не блокируем множественные записи.
4
- // Синтаксическая проверка работает per-file,
5
- // а write-трекинг ведётся через createdFiles.
6
- }
7
- }
8
- //# sourceMappingURL=write-enforcer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-enforcer.js","sourceRoot":"","sources":["../../src/agent/write-enforcer.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,aAAa;IACxB,kBAAkB,CAChB,WAAyB,EACzB,SAAwB,EACxB,MAAgB,EAChB,SAA0B;QAE1B,4CAA4C;QAC5C,6CAA6C;QAC7C,8CAA8C;IAChD,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- import type { Command } from "commander";
2
- /**
3
- * CLI-команды управления конфигурацией.
4
- *
5
- * Команды:
6
- * - mma config show — показать конфигурацию
7
- * - mma config reset — сбросить к_defaults
8
- * - mma config set <key> <value> — установить значение
9
- *
10
- * @module cli/config
11
- */
12
- export declare function registerConfigCommands(program: Command): void;
13
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC;;;;;;;;;GASG;AAEH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8E7D"}