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,105 +0,0 @@
1
- import { execSync } from 'node:child_process';
2
- import { writeFileSync, unlinkSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { tmpdir } from 'node:os';
5
- import { platform } from 'node:os';
6
- import type { AgentPlugin, PluginContext } from '../../types.js';
7
-
8
- /**
9
- * Плагин notify — OS desktop-уведомления.
10
- *
11
- * Отправляет toast-уведомление при:
12
- * - agent:done — задача выполнена
13
- * - tool:blocked — агент заблокирован
14
- * - tool:after (question) — агент ждёт ответа
15
- *
16
- * Zero-dependency: shell-out по платформе.
17
- *
18
- * @module plugins/builtin/notify
19
- */
20
-
21
- function sendNotification(title: string, body: string): void {
22
- const p = platform();
23
- try {
24
- if (p === 'win32') {
25
- // Write temp .ps1 file to avoid $ escaping issues in shell
26
- const safeTitle = title.replace(/'/g, "''");
27
- const safeBody = body.replace(/'/g, "''");
28
- const psScript = `Add-Type -AssemblyName System.Windows.Forms
29
- $n = New-Object System.Windows.Forms.NotifyIcon
30
- $n.Icon = [System.Drawing.SystemIcons]::Information
31
- $n.Visible = $true
32
- $n.ShowBalloonTip(5000, '${safeTitle}', '${safeBody}', [System.Windows.Forms.ToolTipIcon]::Info)
33
- Start-Sleep -Seconds 2
34
- $n.Dispose()`;
35
- const tmpFile = join(tmpdir(), `mma-notify-${Date.now()}.ps1`);
36
- writeFileSync(tmpFile, psScript, 'utf-8');
37
- try {
38
- execSync(`powershell -ExecutionPolicy Bypass -File "${tmpFile}"`, {
39
- timeout: 8000,
40
- windowsHide: true,
41
- stdio: 'pipe',
42
- });
43
- } finally {
44
- try { unlinkSync(tmpFile); } catch { /* ignore */ }
45
- }
46
- } else if (p === 'darwin') {
47
- execSync(`osascript -e 'display notification "${body.replace(/"/g, '\\"')}" with title "${title.replace(/"/g, '\\"')}"'`, {
48
- timeout: 5000,
49
- stdio: 'pipe',
50
- });
51
- } else {
52
- // Linux
53
- execSync(`notify-send "${title.replace(/"/g, '\\"')}" "${body.replace(/"/g, '\\"')}"`, {
54
- timeout: 5000,
55
- stdio: 'pipe',
56
- });
57
- }
58
- } catch {
59
- // Best-effort
60
- }
61
- }
62
-
63
- export default function createNotify(): AgentPlugin {
64
- let ctx: PluginContext | null = null;
65
- let config = { onDone: true, onBlocked: true, onQuestion: true };
66
-
67
- return {
68
- name: 'notify',
69
- version: '1.0.0',
70
- description: 'OS desktop notifications for agent events',
71
-
72
- onActivate(pluginCtx: PluginContext) {
73
- ctx = pluginCtx;
74
- if (pluginCtx.config) {
75
- config = { ...config, ...pluginCtx.config as Record<string, unknown> } as typeof config;
76
- }
77
- pluginCtx.logger.info(`notify: active (done=${config.onDone}, blocked=${config.onBlocked}, question=${config.onQuestion})`);
78
- },
79
-
80
- onDeactivate() {
81
- ctx = null;
82
- },
83
-
84
- getPromptSection() {
85
- return '## Notify Plugin\nDesktop notifications are enabled. You don\'t need to notify the user about completion — it happens automatically.';
86
- },
87
- };
88
- }
89
-
90
- /**
91
- * Обработчики событий — вызываются извне через PluginManager.on().
92
- */
93
- export function handleAgentDone(): void {
94
- sendNotification('MMA', 'Agent finished the task');
95
- }
96
-
97
- export function handleToolBlocked(toolName: string, _args: unknown): void {
98
- sendNotification('MMA', `Tool blocked: ${toolName}`);
99
- }
100
-
101
- export function handleToolAfter(toolName: string, _args: unknown, result: { exitCode: number }): void {
102
- if (toolName === 'question') {
103
- sendNotification('MMA', 'Agent needs your answer');
104
- }
105
- }
@@ -1,16 +0,0 @@
1
- {
2
- "version": "1.0.0",
3
- "name": "notify",
4
- "events": [
5
- "agent:done",
6
- "tool:blocked",
7
- "tool:after"
8
- ],
9
- "description": "OS desktop notifications when agent finishes, gets blocked, or needs attention",
10
- "config": {
11
- "onDone": true,
12
- "onQuestion": true,
13
- "onBlocked": true
14
- },
15
- "entry": "index.js"
16
- }
@@ -1,18 +0,0 @@
1
- import type { PluginManifest, PluginInfo } from './types.js';
2
- import type { PluginManager } from './manager.js';
3
- /**
4
- * Загружает все плагины из директорий поиска.
5
- */
6
- export declare function loadAllPlugins(manager: PluginManager): Promise<void>;
7
- /**
8
- * Загружает все плагины и возвращает информацию о них (с источником).
9
- * Используется для отображения при старте сессии.
10
- */
11
- export declare function loadAllPluginsWithInfo(manager: PluginManager): Promise<PluginInfo[]>;
12
- /**
13
- * Включает hot-reload для плагина.
14
- *
15
- * При изменении entry point файла — деактивирует и перезагружает плагин.
16
- */
17
- export declare function enableHotReload(pluginDir: string, manifest: PluginManifest, manager: PluginManager, reloadCallback?: (name: string) => void): () => void;
18
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,cAAc,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAwGlD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA2B1F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACtC,MAAM,IAAI,CAkCZ"}
@@ -1,182 +0,0 @@
1
- import { existsSync, readFileSync, readdirSync, watch } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
- import { fileURLToPath } from 'node:url';
5
- import { logInfo, logWarn, logError } from '../logger.js';
6
- /**
7
- * Загрузчик плагинов.
8
- *
9
- * Discovery (в порядке приоритета):
10
- * 1. Builtin — src/plugins/builtin/ (сборка копирует в dist/)
11
- * 2. Project — .mma/plugins/ (локально проекта)
12
- * 3. User — ~/.mma/plugins/ (публичные пользователя)
13
- *
14
- * Hot-reload: fs.watch на директорию плагина.
15
- *
16
- * @module plugins/loader
17
- */
18
- const __filename = fileURLToPath(import.meta.url);
19
- const __dirname = join(__filename, '..', '..');
20
- /** Builtin плагины (bundled с MMA) */
21
- const BUILTIN_PLUGINS_DIR = join(__dirname, 'plugins', 'builtin');
22
- /** Директории поиска плагинов (source → dir) */
23
- const PLUGIN_SCAN_DIRS = [
24
- { source: 'builtin', dir: BUILTIN_PLUGINS_DIR },
25
- { source: 'project', dir: '.mma/plugins' },
26
- { source: 'user', dir: join(process.env.HOME || process.env.USERPROFILE || '', '.mma', 'plugins') },
27
- ];
28
- /**
29
- * Сканирует директорию на наличие плагинов.
30
- * Плагин = директория с manifest.json.
31
- */
32
- function scanPluginDir(dir) {
33
- if (!existsSync(dir))
34
- return [];
35
- const plugins = [];
36
- try {
37
- const entries = readdirSync(dir, { withFileTypes: true });
38
- for (const entry of entries) {
39
- if (!entry.isDirectory())
40
- continue;
41
- const manifestPath = join(dir, entry.name, 'manifest.json');
42
- if (existsSync(manifestPath)) {
43
- plugins.push(join(dir, entry.name));
44
- }
45
- }
46
- }
47
- catch { /* ignore */ }
48
- return plugins;
49
- }
50
- /**
51
- * Загружает манифест плагина.
52
- */
53
- function loadManifest(pluginDir) {
54
- const manifestPath = join(pluginDir, 'manifest.json');
55
- try {
56
- const content = readFileSync(manifestPath, 'utf-8');
57
- const manifest = JSON.parse(content);
58
- if (!manifest.name || !manifest.entry) {
59
- logWarn('PLUGIN', `Invalid manifest in ${pluginDir}: missing name or entry`);
60
- return null;
61
- }
62
- return manifest;
63
- }
64
- catch (e) {
65
- logError('PLUGIN', `Failed to load manifest ${manifestPath}: ${e.message}`);
66
- return null;
67
- }
68
- }
69
- /**
70
- * Загружает плагин из директории.
71
- *
72
- * Entry point может быть .ts (загружается через tsx) или .js/.mjs.
73
- */
74
- async function loadPluginFromDir(pluginDir) {
75
- const manifest = loadManifest(pluginDir);
76
- if (!manifest)
77
- return null;
78
- const entryPath = join(pluginDir, manifest.entry);
79
- try {
80
- // Используем dynamic import для загрузки модуля
81
- const moduleUrl = pathToFileURL(entryPath).href;
82
- const mod = await import(moduleUrl);
83
- // Экспорт по умолчанию — фабрика плагина
84
- const createPlugin = mod.default || mod;
85
- const plugin = typeof createPlugin === 'function'
86
- ? createPlugin()
87
- : createPlugin;
88
- if (!plugin.name) {
89
- logWarn('PLUGIN', `Plugin from ${pluginDir} has no name`);
90
- return null;
91
- }
92
- return plugin;
93
- }
94
- catch (e) {
95
- logError('PLUGIN', `Failed to load plugin from ${pluginDir}: ${e.message}`);
96
- return null;
97
- }
98
- }
99
- /**
100
- * Загружает все плагины из директорий поиска.
101
- */
102
- export async function loadAllPlugins(manager) {
103
- for (const { dir } of PLUGIN_SCAN_DIRS) {
104
- const pluginDirs = scanPluginDir(dir);
105
- for (const pluginDir of pluginDirs) {
106
- const plugin = await loadPluginFromDir(pluginDir);
107
- if (plugin) {
108
- manager.register(plugin);
109
- }
110
- }
111
- }
112
- }
113
- /**
114
- * Загружает все плагины и возвращает информацию о них (с источником).
115
- * Используется для отображения при старте сессии.
116
- */
117
- export async function loadAllPluginsWithInfo(manager) {
118
- const infos = [];
119
- const seen = new Set();
120
- for (const { source, dir } of PLUGIN_SCAN_DIRS) {
121
- const pluginDirs = scanPluginDir(dir);
122
- for (const pluginDir of pluginDirs) {
123
- const manifest = loadManifest(pluginDir);
124
- if (!manifest || seen.has(manifest.name))
125
- continue;
126
- seen.add(manifest.name);
127
- const plugin = await loadPluginFromDir(pluginDir);
128
- if (plugin) {
129
- manager.register(plugin, source);
130
- infos.push({
131
- name: plugin.name,
132
- version: plugin.version || manifest.version,
133
- description: plugin.description || manifest.description,
134
- active: false,
135
- events: manifest.events || [],
136
- source,
137
- });
138
- }
139
- }
140
- }
141
- return infos;
142
- }
143
- /**
144
- * Включает hot-reload для плагина.
145
- *
146
- * При изменении entry point файла — деактивирует и перезагружает плагин.
147
- */
148
- export function enableHotReload(pluginDir, manifest, manager, reloadCallback) {
149
- const entryPath = join(pluginDir, manifest.entry);
150
- let debounceTimer = null;
151
- try {
152
- const watcher = watch(entryPath, async (eventType) => {
153
- if (eventType !== 'change')
154
- return;
155
- // Debounce — ждём 500ms после последнего изменения
156
- if (debounceTimer)
157
- clearTimeout(debounceTimer);
158
- debounceTimer = setTimeout(async () => {
159
- logInfo('PLUGIN', `hot-reload: ${manifest.name} changed, reloading...`);
160
- // Деактивируем старый
161
- await manager.deactivate(manifest.name);
162
- // Перезагружаем
163
- const plugin = await loadPluginFromDir(pluginDir);
164
- if (plugin) {
165
- manager.register(plugin);
166
- reloadCallback?.(manifest.name);
167
- logInfo('PLUGIN', `hot-reload: ${manifest.name} reloaded`);
168
- }
169
- }, 500);
170
- });
171
- return () => {
172
- if (debounceTimer)
173
- clearTimeout(debounceTimer);
174
- watcher.close();
175
- };
176
- }
177
- catch (e) {
178
- logWarn('PLUGIN', `hot-reload not available for ${pluginDir}: ${e.message}`);
179
- return () => { };
180
- }
181
- }
182
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import type { AgentPlugin, PluginEvent, PluginHandler, PluginContext, PluginInfo, PluginSource } from './types.js';
2
- /**
3
- * Менеджер плагинов.
4
- *
5
- * Использование:
6
- * ```ts
7
- * const pm = new PluginManager();
8
- * pm.register(myPlugin);
9
- * await pm.emit('tool:before', toolName, args);
10
- * const sections = pm.getPromptSections();
11
- * ```
12
- */
13
- export declare class PluginManager {
14
- private plugins;
15
- private listeners;
16
- private active;
17
- private sources;
18
- /** Регистрация плагина */
19
- register(plugin: AgentPlugin, source?: PluginSource): void;
20
- /** Активация плагина */
21
- activate(name: string, ctx: PluginContext): Promise<void>;
22
- /** Деактивация плагина */
23
- deactivate(name: string): Promise<void>;
24
- /** Активация нескольких плагинов */
25
- activateAll(names: string[], ctx: PluginContext): Promise<void>;
26
- /** Подписка на событие (внутренняя, вызывается при register) */
27
- on(event: PluginEvent, pluginName: string, handler: PluginHandler): void;
28
- /**
29
- * Диспатч события (sync middleware chain).
30
- *
31
- * Каждый handler получает результат предыдущего.
32
- * Возвращает финальное значение после всех handler'ов.
33
- */
34
- emit<T>(event: PluginEvent, ...args: unknown[]): Promise<T | undefined>;
35
- /**
36
- * Диспатч события с middleware chain для модификации данных.
37
- *
38
- * Handler может вернуть модифицированное значение или void (пропуск).
39
- * Возвращает финальное значение.
40
- */
41
- emitModify<T>(event: PluginEvent, initial: T, ...args: unknown[]): Promise<T>;
42
- /** Агрегация секций system prompt от всех плагинов */
43
- getPromptSections(): Promise<string[]>;
44
- /** Агрегация behaviors от всех плагинов */
45
- getBehaviors(): Promise<Record<string, unknown>>;
46
- /** Список загруженных плагинов */
47
- listPlugins(): PluginInfo[];
48
- /** Получить список активных плагинов (имена) */
49
- getActivePluginNames(): string[];
50
- /** Проверка активности плагина */
51
- isActive(name: string): boolean;
52
- /** Проверка наличия плагина */
53
- has(name: string): boolean;
54
- }
55
- //# sourceMappingURL=manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBnH;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,SAAS,CAA2D;IAC5E,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAwC;IAEvD,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,YAAqB,GAAG,IAAI;IAMlE,wBAAwB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/D,0BAA0B;IACpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7C,oCAAoC;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,gEAAgE;IAChE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAOxE;;;;;OAKG;IACG,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA2B7E;;;;;OAKG;IACG,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAwBnF,sDAAsD;IAChD,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB5C,2CAA2C;IACrC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkBtD,kCAAkC;IAClC,WAAW,IAAI,UAAU,EAAE;IAW3B,gDAAgD;IAChD,oBAAoB,IAAI,MAAM,EAAE;IAIhC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,+BAA+B;IAC/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3B"}
@@ -1,190 +0,0 @@
1
- import { logInfo, logWarn, logError } from '../logger.js';
2
- /**
3
- * Менеджер плагинов.
4
- *
5
- * Использование:
6
- * ```ts
7
- * const pm = new PluginManager();
8
- * pm.register(myPlugin);
9
- * await pm.emit('tool:before', toolName, args);
10
- * const sections = pm.getPromptSections();
11
- * ```
12
- */
13
- export class PluginManager {
14
- plugins = new Map();
15
- listeners = new Map();
16
- active = new Set();
17
- sources = new Map();
18
- /** Регистрация плагина */
19
- register(plugin, source = 'user') {
20
- this.plugins.set(plugin.name, plugin);
21
- this.sources.set(plugin.name, source);
22
- logInfo('PLUGIN', `registered: ${plugin.name}${plugin.version ? ` v${plugin.version}` : ''} (${source})`);
23
- }
24
- /** Активация плагина */
25
- async activate(name, ctx) {
26
- const plugin = this.plugins.get(name);
27
- if (!plugin) {
28
- logWarn('PLUGIN', `activate: unknown plugin "${name}"`);
29
- return;
30
- }
31
- if (this.active.has(name))
32
- return;
33
- try {
34
- await plugin.onActivate?.(ctx);
35
- this.active.add(name);
36
- logInfo('PLUGIN', `activated: ${name}`);
37
- }
38
- catch (e) {
39
- logError('PLUGIN', `activate failed: ${name}: ${e.message}`);
40
- }
41
- }
42
- /** Деактивация плагина */
43
- async deactivate(name) {
44
- const plugin = this.plugins.get(name);
45
- if (!plugin || !this.active.has(name))
46
- return;
47
- try {
48
- await plugin.onDeactivate?.();
49
- this.active.delete(name);
50
- logInfo('PLUGIN', `deactivated: ${name}`);
51
- }
52
- catch (e) {
53
- logError('PLUGIN', `deactivate failed: ${name}: ${e.message}`);
54
- }
55
- }
56
- /** Активация нескольких плагинов */
57
- async activateAll(names, ctx) {
58
- for (const name of names) {
59
- await this.activate(name, ctx);
60
- }
61
- }
62
- /** Подписка на событие (внутренняя, вызывается при register) */
63
- on(event, pluginName, handler) {
64
- if (!this.listeners.has(event)) {
65
- this.listeners.set(event, new Map());
66
- }
67
- this.listeners.get(event).set(`${pluginName}:${event}`, handler);
68
- }
69
- /**
70
- * Диспатч события (sync middleware chain).
71
- *
72
- * Каждый handler получает результат предыдущего.
73
- * Возвращает финальное значение после всех handler'ов.
74
- */
75
- async emit(event, ...args) {
76
- const eventListeners = this.listeners.get(event);
77
- if (!eventListeners || eventListeners.size === 0)
78
- return undefined;
79
- let value = undefined;
80
- for (const [key, handler] of Array.from(eventListeners.entries())) {
81
- const pluginName = key.split(':')[0];
82
- if (!this.active.has(pluginName))
83
- continue;
84
- try {
85
- const result = await handler(...args, value);
86
- if (result !== undefined && result !== null) {
87
- value = result;
88
- }
89
- }
90
- catch (e) {
91
- if (e.name === 'PluginError') {
92
- logWarn('PLUGIN', `blocked by ${pluginName}: ${e.message}`);
93
- throw e;
94
- }
95
- logError('PLUGIN', `event ${event} handler ${pluginName} error: ${e.message}`);
96
- }
97
- }
98
- return value;
99
- }
100
- /**
101
- * Диспатч события с middleware chain для модификации данных.
102
- *
103
- * Handler может вернуть модифицированное значение или void (пропуск).
104
- * Возвращает финальное значение.
105
- */
106
- async emitModify(event, initial, ...args) {
107
- const eventListeners = this.listeners.get(event);
108
- if (!eventListeners || eventListeners.size === 0)
109
- return initial;
110
- let current = initial;
111
- for (const [key, handler] of Array.from(eventListeners.entries())) {
112
- const pluginName = key.split(':')[0];
113
- if (!this.active.has(pluginName))
114
- continue;
115
- try {
116
- const result = await handler(current, ...args);
117
- if (result !== undefined && result !== null) {
118
- current = result;
119
- }
120
- }
121
- catch (e) {
122
- if (e.name === 'PluginError')
123
- throw e;
124
- logError('PLUGIN', `emitModify ${event} handler ${pluginName} error: ${e.message}`);
125
- }
126
- }
127
- return current;
128
- }
129
- /** Агрегация секций system prompt от всех плагинов */
130
- async getPromptSections() {
131
- const sections = [];
132
- for (const [name, plugin] of Array.from(this.plugins.entries())) {
133
- if (!this.active.has(name))
134
- continue;
135
- if (!plugin.getPromptSection)
136
- continue;
137
- try {
138
- const section = await plugin.getPromptSection();
139
- if (section)
140
- sections.push(section);
141
- }
142
- catch (e) {
143
- logError('PLUGIN', `getPromptSection ${name} error: ${e.message}`);
144
- }
145
- }
146
- return sections;
147
- }
148
- /** Агрегация behaviors от всех плагинов */
149
- async getBehaviors() {
150
- const behaviors = {};
151
- for (const [name, plugin] of Array.from(this.plugins.entries())) {
152
- if (!this.active.has(name))
153
- continue;
154
- if (!plugin.getBehaviors)
155
- continue;
156
- try {
157
- const pluginBehaviors = await plugin.getBehaviors();
158
- Object.assign(behaviors, pluginBehaviors);
159
- }
160
- catch (e) {
161
- logError('PLUGIN', `getBehaviors ${name} error: ${e.message}`);
162
- }
163
- }
164
- return behaviors;
165
- }
166
- /** Список загруженных плагинов */
167
- listPlugins() {
168
- return Array.from(this.plugins.entries()).map(([name, plugin]) => ({
169
- name,
170
- version: plugin.version,
171
- description: plugin.description,
172
- active: this.active.has(name),
173
- events: [],
174
- source: this.sources.get(name) || 'user',
175
- }));
176
- }
177
- /** Получить список активных плагинов (имена) */
178
- getActivePluginNames() {
179
- return Array.from(this.active);
180
- }
181
- /** Проверка активности плагина */
182
- isActive(name) {
183
- return this.active.has(name);
184
- }
185
- /** Проверка наличия плагина */
186
- has(name) {
187
- return this.plugins.has(name);
188
- }
189
- }
190
- //# sourceMappingURL=manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}