micro-models-agent 2.16.0 → 2.17.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 (427) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/assets/app.js +1 -314
  3. package/dist/assets/hljs.js +5 -1244
  4. package/dist/assets/index.html +11 -0
  5. package/dist/assets/js/api.js +1 -28
  6. package/dist/assets/js/core/menus.js +1 -0
  7. package/dist/assets/js/core/store/feed.js +1 -0
  8. package/dist/assets/js/core/store/index.js +1 -0
  9. package/dist/assets/js/core/store/session.js +1 -0
  10. package/dist/assets/js/core/store/settings.js +1 -0
  11. package/dist/assets/js/core/store/tabs.js +1 -0
  12. package/dist/assets/js/dialog.js +1 -105
  13. package/dist/assets/js/dom.js +1 -178
  14. package/dist/assets/js/feed/core.js +1 -0
  15. package/dist/assets/js/feed/history.js +1 -0
  16. package/dist/assets/js/feed/plan.js +1 -0
  17. package/dist/assets/js/feed/question.js +3 -0
  18. package/dist/assets/js/feed/sidebar.js +1 -0
  19. package/dist/assets/js/feed/stream.js +1 -0
  20. package/dist/assets/js/feed/turn.js +5 -0
  21. package/dist/assets/js/feed.js +1 -1211
  22. package/dist/assets/js/format.js +2 -122
  23. package/dist/assets/js/i18n.js +1 -46
  24. package/dist/assets/js/rail.js +1 -114
  25. package/dist/assets/js/session/cmdk.js +1 -0
  26. package/dist/assets/js/session/composer.js +1 -0
  27. package/dist/assets/js/session/sessions-menu.js +1 -0
  28. package/dist/assets/js/session/tabs.js +1 -0
  29. package/dist/assets/js/settings/controls.js +1 -0
  30. package/dist/assets/js/settings/editors.js +1 -0
  31. package/dist/assets/js/settings/form.js +1 -0
  32. package/dist/assets/js/settings/modal.js +1 -0
  33. package/dist/assets/js/settings/panels.js +1 -0
  34. package/dist/assets/js/settings/providers.js +1 -0
  35. package/dist/assets/js/settings/search.js +1 -0
  36. package/dist/assets/js/settings/subdialog.js +1 -0
  37. package/dist/assets/js/settings/write.js +1 -0
  38. package/dist/assets/js/settings.js +1 -1914
  39. package/dist/assets/js/sidebar/core.js +1 -0
  40. package/dist/assets/js/sidebar/lsp.js +2 -0
  41. package/dist/assets/js/sidebar/map.js +1 -0
  42. package/dist/assets/js/sidebar/state.js +1 -0
  43. package/dist/assets/js/sidebar/trace.js +5 -0
  44. package/dist/assets/js/sidebar.js +1 -705
  45. package/dist/assets/js/store.js +1 -82
  46. package/dist/assets/js/subdialog.js +1 -0
  47. package/dist/assets/md.js +1 -277
  48. package/dist/assets/setup.js +3 -816
  49. package/dist/assets/smd.js +29 -1665
  50. package/dist/assets/styles.css +1 -1592
  51. package/dist/certification/certifications.json +1 -494
  52. package/dist/i18n/en.json +1 -1851
  53. package/dist/i18n/ru.json +1 -1854
  54. package/dist/main.js +815 -55797
  55. package/dist/modules/browser/bridge-server.mjs +2 -252
  56. package/package.json +10 -5
  57. package/dist/assets/js/settings-controls.js +0 -452
  58. package/dist/assets/js/tabs.js +0 -867
  59. package/dist/cli/cache-line.js +0 -31
  60. package/dist/cli/command-suggest.js +0 -39
  61. package/dist/cli/commands.js +0 -781
  62. package/dist/cli/completer.js +0 -268
  63. package/dist/cli/index.js +0 -3
  64. package/dist/cli/json-payload.js +0 -32
  65. package/dist/cli/main.js +0 -346
  66. package/dist/cli/onboarding-commands.js +0 -126
  67. package/dist/cli/plugin-commands.js +0 -38
  68. package/dist/cli/relaunch.js +0 -40
  69. package/dist/cli/repl-commands-lsp.js +0 -75
  70. package/dist/cli/repl-commands-skills.js +0 -105
  71. package/dist/cli/repl-commands.js +0 -1218
  72. package/dist/cli/repl.js +0 -1238
  73. package/dist/cli/run-result.js +0 -38
  74. package/dist/cli/security-commands.js +0 -177
  75. package/dist/cli/setup-order.js +0 -6
  76. package/dist/cli/setup-prompt.js +0 -50
  77. package/dist/cli/setup.js +0 -161
  78. package/dist/cli/web-command.js +0 -98
  79. package/dist/config/budget.js +0 -48
  80. package/dist/config/config.js +0 -345
  81. package/dist/config/defaults.js +0 -197
  82. package/dist/config/domains.js +0 -135
  83. package/dist/config/env.js +0 -46
  84. package/dist/config/experts.js +0 -17
  85. package/dist/config/index.js +0 -5
  86. package/dist/config/paths.js +0 -56
  87. package/dist/config/redact.js +0 -44
  88. package/dist/config/registry-extra.js +0 -334
  89. package/dist/config/registry.js +0 -584
  90. package/dist/config/security.js +0 -212
  91. package/dist/config/timeouts.js +0 -74
  92. package/dist/config/types.js +0 -1
  93. package/dist/config/utils.js +0 -57
  94. package/dist/core/agent/artifact-progress.js +0 -59
  95. package/dist/core/agent/artifact-resolve.js +0 -79
  96. package/dist/core/agent/audit-gate.js +0 -53
  97. package/dist/core/agent/compaction.js +0 -89
  98. package/dist/core/agent/constants.js +0 -90
  99. package/dist/core/agent/context-log.js +0 -454
  100. package/dist/core/agent/context-renderer.js +0 -45
  101. package/dist/core/agent/critic-gate.js +0 -132
  102. package/dist/core/agent/hallucination-gate.js +0 -197
  103. package/dist/core/agent/loop-state.js +0 -68
  104. package/dist/core/agent/prefix-monitor.js +0 -101
  105. package/dist/core/agent/reasoning-resolver.js +0 -65
  106. package/dist/core/agent/token-tracker.js +0 -99
  107. package/dist/core/agent/tool-batch.js +0 -312
  108. package/dist/core/agent/tool-images.js +0 -18
  109. package/dist/core/agent/tool-output.js +0 -116
  110. package/dist/core/agent/tool-pairing.js +0 -60
  111. package/dist/core/agent-moe.js +0 -248
  112. package/dist/core/agent.js +0 -1299
  113. package/dist/core/bootstrap/agent-phase.js +0 -66
  114. package/dist/core/bootstrap/config-phase.js +0 -86
  115. package/dist/core/bootstrap/modules-phase.js +0 -269
  116. package/dist/core/bootstrap/provider-phase.js +0 -183
  117. package/dist/core/bootstrap/session-phase.js +0 -204
  118. package/dist/core/bootstrap/state.js +0 -94
  119. package/dist/core/bootstrap/workspace-phase.js +0 -115
  120. package/dist/core/bootstrap.js +0 -112
  121. package/dist/core/crash-handler.js +0 -62
  122. package/dist/core/environment.js +0 -224
  123. package/dist/core/host-plan.js +0 -43
  124. package/dist/core/host.js +0 -23
  125. package/dist/core/index.js +0 -3
  126. package/dist/core/prompt-builder.js +0 -95
  127. package/dist/core/prompt-overflow.js +0 -306
  128. package/dist/core/session-logger.js +0 -375
  129. package/dist/core/system-prompt.js +0 -117
  130. package/dist/core/types.js +0 -1
  131. package/dist/core/version.js +0 -28
  132. package/dist/core/web-host.js +0 -34
  133. package/dist/core/workspace.js +0 -80
  134. package/dist/i18n/index.js +0 -80
  135. package/dist/index.js +0 -30
  136. package/dist/llm/cache-usage.js +0 -76
  137. package/dist/llm/image-utils.js +0 -138
  138. package/dist/llm/index.js +0 -4
  139. package/dist/llm/llm-errors.js +0 -50
  140. package/dist/llm/model-loader.js +0 -86
  141. package/dist/llm/models-dev.js +0 -121
  142. package/dist/llm/openai-compat.js +0 -756
  143. package/dist/llm/orchestrator.js +0 -294
  144. package/dist/llm/provider-budget.js +0 -68
  145. package/dist/llm/provider-context.js +0 -233
  146. package/dist/llm/provider.js +0 -9
  147. package/dist/llm/response.js +0 -44
  148. package/dist/llm/stream-state.js +0 -26
  149. package/dist/llm/token-counter.js +0 -83
  150. package/dist/llm/types.js +0 -1
  151. package/dist/logger/app-logger.js +0 -212
  152. package/dist/logger/file-log.js +0 -160
  153. package/dist/logger/index.js +0 -2
  154. package/dist/migration/backup.js +0 -56
  155. package/dist/migration/detect.js +0 -61
  156. package/dist/migration/index.js +0 -3
  157. package/dist/modules/artifacts/store.js +0 -62
  158. package/dist/modules/browser/actions.js +0 -79
  159. package/dist/modules/browser/bridge-client.js +0 -203
  160. package/dist/modules/browser/bridge-path.js +0 -10
  161. package/dist/modules/browser/console-buffer.js +0 -37
  162. package/dist/modules/browser/cookie-store.js +0 -29
  163. package/dist/modules/browser/driver-types.js +0 -1
  164. package/dist/modules/browser/driver.js +0 -186
  165. package/dist/modules/browser/index.js +0 -9
  166. package/dist/modules/browser/module.js +0 -30
  167. package/dist/modules/browser/session.js +0 -322
  168. package/dist/modules/browser/snapshot.js +0 -154
  169. package/dist/modules/browser/types.js +0 -13
  170. package/dist/modules/certification/cli.js +0 -264
  171. package/dist/modules/certification/fact-checker.js +0 -90
  172. package/dist/modules/certification/loader.js +0 -127
  173. package/dist/modules/certification/manifest.js +0 -231
  174. package/dist/modules/certification/runner.js +0 -233
  175. package/dist/modules/certification/scenarios.js +0 -586
  176. package/dist/modules/certification/syntax-scenarios.js +0 -50
  177. package/dist/modules/certification/types.js +0 -1
  178. package/dist/modules/context/chunk-query.js +0 -122
  179. package/dist/modules/context/fact-extractor.js +0 -170
  180. package/dist/modules/context/history.js +0 -15
  181. package/dist/modules/context/index.js +0 -2
  182. package/dist/modules/context/manager.js +0 -482
  183. package/dist/modules/critic/client.js +0 -176
  184. package/dist/modules/critic/evidence.js +0 -81
  185. package/dist/modules/critic/provider.js +0 -45
  186. package/dist/modules/critic/tools.js +0 -78
  187. package/dist/modules/critic/types.js +0 -1
  188. package/dist/modules/execution/audit-runners.js +0 -206
  189. package/dist/modules/execution/auditor.js +0 -222
  190. package/dist/modules/execution/execution-plugin.js +0 -478
  191. package/dist/modules/execution/index.js +0 -8
  192. package/dist/modules/execution/input-from.js +0 -70
  193. package/dist/modules/execution/module.js +0 -891
  194. package/dist/modules/execution/moe-executor.js +0 -443
  195. package/dist/modules/execution/plan-actions.js +0 -642
  196. package/dist/modules/execution/plan-checks.js +0 -35
  197. package/dist/modules/execution/plan-coverage.js +0 -71
  198. package/dist/modules/execution/plan-persister.js +0 -46
  199. package/dist/modules/execution/plan-steps.js +0 -31
  200. package/dist/modules/execution/plan-store.js +0 -274
  201. package/dist/modules/execution/plan-tool.js +0 -249
  202. package/dist/modules/execution/plan-validator.js +0 -197
  203. package/dist/modules/execution/planner.js +0 -103
  204. package/dist/modules/execution/stuck-detector.js +0 -834
  205. package/dist/modules/execution/tracker.js +0 -92
  206. package/dist/modules/execution/transient-error.js +0 -30
  207. package/dist/modules/execution/types.js +0 -1
  208. package/dist/modules/execution/verifier.js +0 -343
  209. package/dist/modules/execution/windows-commands.js +0 -52
  210. package/dist/modules/hallucination/artifact-claim.js +0 -93
  211. package/dist/modules/hallucination/confidence.js +0 -81
  212. package/dist/modules/hallucination/consistency.js +0 -37
  213. package/dist/modules/hallucination/detector.js +0 -57
  214. package/dist/modules/hallucination/factual.js +0 -205
  215. package/dist/modules/hallucination/index.js +0 -6
  216. package/dist/modules/hallucination/js-identifiers.js +0 -261
  217. package/dist/modules/hallucination/llm-judge.js +0 -116
  218. package/dist/modules/hallucination/success-claim.js +0 -59
  219. package/dist/modules/index.js +0 -5
  220. package/dist/modules/indexer/cache.js +0 -88
  221. package/dist/modules/indexer/index.js +0 -4
  222. package/dist/modules/indexer/map-command.js +0 -33
  223. package/dist/modules/indexer/map-select.js +0 -87
  224. package/dist/modules/indexer/module.js +0 -293
  225. package/dist/modules/indexer/project-profile.js +0 -184
  226. package/dist/modules/indexer/symbols.js +0 -189
  227. package/dist/modules/indexer/walker.js +0 -285
  228. package/dist/modules/lsp/check-tool.js +0 -61
  229. package/dist/modules/lsp/client.js +0 -406
  230. package/dist/modules/lsp/command.js +0 -53
  231. package/dist/modules/lsp/config.js +0 -189
  232. package/dist/modules/lsp/index.js +0 -4
  233. package/dist/modules/lsp/module.js +0 -295
  234. package/dist/modules/lsp/probe.js +0 -86
  235. package/dist/modules/lsp/project-root.js +0 -69
  236. package/dist/modules/lsp/startup-check.js +0 -154
  237. package/dist/modules/lsp/types.js +0 -1
  238. package/dist/modules/mcp/client.js +0 -445
  239. package/dist/modules/mcp/index.js +0 -4
  240. package/dist/modules/mcp/module.js +0 -295
  241. package/dist/modules/mcp/registry.js +0 -20
  242. package/dist/modules/memory/index.js +0 -2
  243. package/dist/modules/memory/module.js +0 -101
  244. package/dist/modules/memory/search.js +0 -45
  245. package/dist/modules/memory/store.js +0 -107
  246. package/dist/modules/onboarding/init.js +0 -47
  247. package/dist/modules/onboarding/meet.js +0 -30
  248. package/dist/modules/onboarding/mode.js +0 -30
  249. package/dist/modules/onboarding/prompts.js +0 -43
  250. package/dist/modules/pipelines/engine.js +0 -70
  251. package/dist/modules/pipelines/index.js +0 -4
  252. package/dist/modules/pipelines/parser.js +0 -59
  253. package/dist/modules/pipelines/template.js +0 -18
  254. package/dist/modules/plugins/builtin/lint-on-write.js +0 -377
  255. package/dist/modules/plugins/builtin/notify.js +0 -11
  256. package/dist/modules/plugins/index.js +0 -2
  257. package/dist/modules/plugins/loader.js +0 -85
  258. package/dist/modules/plugins/manager.js +0 -244
  259. package/dist/modules/plugins/types.js +0 -1
  260. package/dist/modules/pricing/index.js +0 -70
  261. package/dist/modules/pricing/prices.js +0 -147
  262. package/dist/modules/processes/detect.js +0 -34
  263. package/dist/modules/processes/index.js +0 -4
  264. package/dist/modules/processes/kill-tree.js +0 -52
  265. package/dist/modules/processes/registry.js +0 -294
  266. package/dist/modules/processes/runner.js +0 -23
  267. package/dist/modules/providers/cache.js +0 -23
  268. package/dist/modules/providers/capabilities.js +0 -28
  269. package/dist/modules/providers/create.js +0 -21
  270. package/dist/modules/providers/factory.js +0 -28
  271. package/dist/modules/providers/fallback.js +0 -81
  272. package/dist/modules/providers/health.js +0 -47
  273. package/dist/modules/providers/index.js +0 -6
  274. package/dist/modules/providers/manager.js +0 -207
  275. package/dist/modules/providers/naming.js +0 -15
  276. package/dist/modules/providers/preflight.js +0 -71
  277. package/dist/modules/providers/presets.js +0 -232
  278. package/dist/modules/providers/registry.js +0 -27
  279. package/dist/modules/providers/types.js +0 -1
  280. package/dist/modules/reasoning/policy.js +0 -42
  281. package/dist/modules/reasoning/probe.js +0 -116
  282. package/dist/modules/registry.js +0 -48
  283. package/dist/modules/security/audit-log.js +0 -119
  284. package/dist/modules/security/audit-notifier.js +0 -267
  285. package/dist/modules/security/command-validator.js +0 -272
  286. package/dist/modules/security/content-scanner.js +0 -53
  287. package/dist/modules/security/data-sanitizer.js +0 -82
  288. package/dist/modules/security/encryption.js +0 -216
  289. package/dist/modules/security/index.js +0 -15
  290. package/dist/modules/security/network-validator.js +0 -236
  291. package/dist/modules/security/path-validator.js +0 -261
  292. package/dist/modules/security/protected-paths.js +0 -73
  293. package/dist/modules/security/rate-limiter.js +0 -98
  294. package/dist/modules/security/security-policies.js +0 -499
  295. package/dist/modules/security/session-encryption.js +0 -182
  296. package/dist/modules/security/session-isolation.js +0 -75
  297. package/dist/modules/session/auto-name.js +0 -63
  298. package/dist/modules/session/export.js +0 -98
  299. package/dist/modules/session/index.js +0 -4
  300. package/dist/modules/session/manager.js +0 -234
  301. package/dist/modules/session/module.js +0 -33
  302. package/dist/modules/session/store.js +0 -295
  303. package/dist/modules/session/types.js +0 -1
  304. package/dist/modules/setup/answers.js +0 -35
  305. package/dist/modules/setup/apply.js +0 -79
  306. package/dist/modules/setup/discovery.js +0 -72
  307. package/dist/modules/skills/index.js +0 -3
  308. package/dist/modules/skills/loader.js +0 -86
  309. package/dist/modules/skills/matcher.js +0 -27
  310. package/dist/modules/skills/module.js +0 -141
  311. package/dist/modules/types.js +0 -1
  312. package/dist/modules/updater/changelog-reader.js +0 -93
  313. package/dist/modules/updater/checker.js +0 -101
  314. package/dist/modules/updater/dev-detect.js +0 -18
  315. package/dist/modules/updater/index.js +0 -4
  316. package/dist/modules/updater/module.js +0 -129
  317. package/dist/modules/user-profile/compressor.js +0 -18
  318. package/dist/modules/user-profile/index.js +0 -2
  319. package/dist/modules/user-profile/profile.js +0 -77
  320. package/dist/modules/webui/answer-api.js +0 -29
  321. package/dist/modules/webui/assets.js +0 -50
  322. package/dist/modules/webui/body.js +0 -21
  323. package/dist/modules/webui/commands-settings.js +0 -209
  324. package/dist/modules/webui/commands-shared.js +0 -60
  325. package/dist/modules/webui/commands.js +0 -174
  326. package/dist/modules/webui/config-api.js +0 -134
  327. package/dist/modules/webui/file-api.js +0 -202
  328. package/dist/modules/webui/forward.js +0 -159
  329. package/dist/modules/webui/history-api.js +0 -112
  330. package/dist/modules/webui/host-state.js +0 -60
  331. package/dist/modules/webui/i18n-api.js +0 -9
  332. package/dist/modules/webui/limits.js +0 -6
  333. package/dist/modules/webui/log-forward.js +0 -20
  334. package/dist/modules/webui/memory-commands.js +0 -64
  335. package/dist/modules/webui/model-cache.js +0 -18
  336. package/dist/modules/webui/module.js +0 -148
  337. package/dist/modules/webui/persist.js +0 -24
  338. package/dist/modules/webui/prompt-io.js +0 -97
  339. package/dist/modules/webui/providers-api.js +0 -337
  340. package/dist/modules/webui/providers-view.js +0 -56
  341. package/dist/modules/webui/reasoning-view.js +0 -15
  342. package/dist/modules/webui/run-agent.js +0 -81
  343. package/dist/modules/webui/server.js +0 -284
  344. package/dist/modules/webui/sessions-api.js +0 -178
  345. package/dist/modules/webui/settings-api.js +0 -561
  346. package/dist/modules/webui/setup-api.js +0 -201
  347. package/dist/modules/webui/state.js +0 -74
  348. package/dist/modules/webui/util.js +0 -261
  349. package/dist/output/bus.js +0 -37
  350. package/dist/output/channel.js +0 -285
  351. package/dist/output/format.js +0 -15
  352. package/dist/output/index.js +0 -8
  353. package/dist/output/json-sink.js +0 -24
  354. package/dist/output/machine.js +0 -9
  355. package/dist/output/session-sink.js +0 -27
  356. package/dist/output/types.js +0 -1
  357. package/dist/tools/approve.js +0 -41
  358. package/dist/tools/attach-image.js +0 -102
  359. package/dist/tools/auto-fixer.js +0 -180
  360. package/dist/tools/auto-tags.js +0 -83
  361. package/dist/tools/bash.js +0 -649
  362. package/dist/tools/browser.js +0 -160
  363. package/dist/tools/chunk-query.js +0 -112
  364. package/dist/tools/create-dir.js +0 -60
  365. package/dist/tools/delete-file.js +0 -67
  366. package/dist/tools/download-file.js +0 -142
  367. package/dist/tools/edit-file.js +0 -136
  368. package/dist/tools/enable-tools.js +0 -59
  369. package/dist/tools/executor.js +0 -304
  370. package/dist/tools/file-info.js +0 -49
  371. package/dist/tools/filter-tools.js +0 -17
  372. package/dist/tools/glob-tool.js +0 -37
  373. package/dist/tools/grep-tool.js +0 -142
  374. package/dist/tools/hidden-tools-block.js +0 -37
  375. package/dist/tools/index.js +0 -88
  376. package/dist/tools/list-dir.js +0 -53
  377. package/dist/tools/load-skill.js +0 -51
  378. package/dist/tools/mcp-call.js +0 -80
  379. package/dist/tools/meet-done.js +0 -14
  380. package/dist/tools/move-file.js +0 -94
  381. package/dist/tools/path-utils.js +0 -108
  382. package/dist/tools/pipeline-run.js +0 -167
  383. package/dist/tools/preview.js +0 -2
  384. package/dist/tools/process-ids.js +0 -31
  385. package/dist/tools/process-kill.js +0 -33
  386. package/dist/tools/process-list.js +0 -38
  387. package/dist/tools/process-log.js +0 -49
  388. package/dist/tools/process-wait.js +0 -63
  389. package/dist/tools/prompt-io.js +0 -29
  390. package/dist/tools/question.js +0 -288
  391. package/dist/tools/read-file.js +0 -200
  392. package/dist/tools/recall.js +0 -124
  393. package/dist/tools/registry.js +0 -48
  394. package/dist/tools/remember.js +0 -72
  395. package/dist/tools/scope-check.js +0 -32
  396. package/dist/tools/scope-request.js +0 -96
  397. package/dist/tools/search-history.js +0 -88
  398. package/dist/tools/session-info.js +0 -46
  399. package/dist/tools/set-thinking.js +0 -75
  400. package/dist/tools/subagent.js +0 -257
  401. package/dist/tools/syntax-validator.js +0 -379
  402. package/dist/tools/types.js +0 -1
  403. package/dist/tools/user-input.js +0 -134
  404. package/dist/tools/web-browse.js +0 -93
  405. package/dist/tools/web-fetch.js +0 -108
  406. package/dist/tools/web-search.js +0 -107
  407. package/dist/tools/write-file.js +0 -128
  408. package/dist/ui/action-log.js +0 -13
  409. package/dist/ui/box.js +0 -78
  410. package/dist/ui/colors.js +0 -6
  411. package/dist/ui/diff.js +0 -189
  412. package/dist/ui/index.js +0 -7
  413. package/dist/ui/line-editor.js +0 -1083
  414. package/dist/ui/line-math.js +0 -98
  415. package/dist/ui/md-formatter.js +0 -322
  416. package/dist/ui/output.js +0 -19
  417. package/dist/ui/plan-view.js +0 -109
  418. package/dist/ui/renderer.js +0 -589
  419. package/dist/ui/spinner.js +0 -91
  420. package/dist/ui/table.js +0 -142
  421. package/dist/ui/theme.js +0 -143
  422. package/dist/utils/child-run.js +0 -20
  423. package/dist/utils/error.js +0 -4
  424. package/dist/utils/index.js +0 -6
  425. package/dist/utils/retry.js +0 -17
  426. package/dist/utils/sleep.js +0 -23
  427. package/dist/utils/truncate.js +0 -9
@@ -1,167 +0,0 @@
1
- /** Тул прогона именованного YAML-пайплайна (DAG субагентов). */
2
- import { t } from "../i18n/index";
3
- import { PipelineEngine } from "../modules/pipelines/engine";
4
- import { PipelineParser } from "../modules/pipelines/parser";
5
- import { TemplateEngine } from "../modules/pipelines/template";
6
- import { Agent } from "../core/agent";
7
- import { ContextManager } from "../modules/context/manager";
8
- import { PluginManager } from "../modules/plugins/manager";
9
- import { HallucinationDetector } from "../modules/hallucination/detector";
10
- import { logSecurityBlock } from "../modules/security/audit-log";
11
- import { getSessionSecurityConfig } from "../modules/security/session-isolation";
12
- /** Максимум параллельных шагов / попыток шага. */
13
- const MAX_CONCURRENT = 3;
14
- const MAX_ATTEMPTS = 3;
15
- /** Прогоняет шаг пайплайна субагентом с ретраями (параметры/выходы — в промпт). */
16
- async function runStep(ctx, step, params, outputs) {
17
- const prompt = TemplateEngine.render(step.prompt, params, outputs);
18
- let lastError = "";
19
- for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
20
- try {
21
- const subContextManager = new ContextManager(ctx.config.contextWindow, ctx.config.contextBudget);
22
- const subPluginManager = new PluginManager();
23
- const systemPrompt = {
24
- content: `You are a pipeline step agent ("${step.agent}"). Complete the given task using the available tools.`,
25
- priority: "critical",
26
- essential: true,
27
- estimatedTokens: 80,
28
- };
29
- const subDeps = {
30
- config: ctx.config,
31
- llmProvider: ctx.llmProvider,
32
- toolExecutor: ctx.toolExecutor,
33
- pluginManager: subPluginManager,
34
- contextManager: subContextManager,
35
- hallucinationDetector: new HallucinationDetector(ctx.baseDir, ctx.llmProvider),
36
- logger: ctx.logger,
37
- baseDir: ctx.baseDir,
38
- scope: ctx.scope,
39
- recursionDepth: (ctx.recursionDepth ?? 0) + 1,
40
- promptBlocks: [systemPrompt],
41
- };
42
- const subAgent = new Agent(subDeps);
43
- const result = await subAgent.run(prompt);
44
- if (result.success) {
45
- return { ok: true, output: result.text };
46
- }
47
- lastError = result.error || "no output";
48
- }
49
- catch (e) {
50
- lastError = e.message;
51
- }
52
- await new Promise((r) => setTimeout(r, 500 * attempt));
53
- }
54
- return { ok: false, output: "", error: lastError };
55
- }
56
- /** Запускает DAG субагентов в порядке зависимостей. Параметры: name, yaml, params. */
57
- export const pipelineRunTool = {
58
- name: "pipeline_run",
59
- icon: "▶️",
60
- description: "Run a named pipeline with YAML definition. Creates a DAG of sub-agents that execute in dependency order.",
61
- tags: ["shell"],
62
- parameters: {
63
- type: "object",
64
- properties: {
65
- name: { type: "string", description: "Pipeline name" },
66
- yaml: { type: "string", description: "Pipeline YAML definition with steps" },
67
- params: { type: "object", description: "Template params for {key} placeholders" },
68
- },
69
- required: ["name", "yaml"],
70
- },
71
- handler: async (ctx, args) => {
72
- const name = String(args.name || "");
73
- const yaml = String(args.yaml || "");
74
- const params = args.params || {};
75
- if (!yaml) {
76
- return { success: false, output: t("pipeline.invalid") };
77
- }
78
- if (!ctx.llmProvider || !ctx.toolExecutor) {
79
- return {
80
- success: false,
81
- output: t("tool.pipeline_cannot_run"),
82
- };
83
- }
84
- const securityConfig = ctx.sessionContext
85
- ? getSessionSecurityConfig(ctx.config, ctx.sessionContext)
86
- : ctx.config.security;
87
- const maxDepth = securityConfig?.maxRecursionDepth ?? 3;
88
- // Глубина — на SHARED-контексте исполнителя (вложенные субагенты/пайплайны
89
- // читают её там); `ctx.recursionDepth` снапшотится раз и не инкрементится,
90
- // поэтому старый гард не срабатывал. Зеркало subagent.ts.
91
- const executor = ctx.toolExecutor;
92
- const currentDepth = executor?.getRecursionDepth?.() ?? ctx.recursionDepth ?? 0;
93
- if (currentDepth >= maxDepth) {
94
- logSecurityBlock(ctx.sessionId, "bash_command", `Maximum recursion depth (${maxDepth}) exceeded`, name);
95
- return {
96
- success: false,
97
- output: `[SECURITY BLOCKED] Maximum pipeline recursion depth (${maxDepth}) exceeded`,
98
- };
99
- }
100
- // Свежий движок на вызов: module-level синглтон сбрасывался конкурентными
101
- // вызовами (MoE-волны делят исполнитель) и портил состояние шагов.
102
- const engine = new PipelineEngine();
103
- executor?.setRecursionDepth?.(currentDepth + 1);
104
- try {
105
- const pipeline = PipelineParser.parse(yaml);
106
- const order = engine.resolveDependencies(pipeline.steps);
107
- const completed = new Set();
108
- const outputs = {};
109
- const logs = [];
110
- const failed = new Set();
111
- while (completed.size < pipeline.steps.length) {
112
- const ready = engine
113
- .getReadySteps(pipeline.steps, completed)
114
- .filter((s) => !failed.has(s.id));
115
- if (ready.length === 0) {
116
- if (failed.size > 0)
117
- break;
118
- throw new Error(t("pipeline.circular", { stepId: order.join(", ") }));
119
- }
120
- const batch = ready.slice(0, MAX_CONCURRENT);
121
- const results = await Promise.all(batch.map((step) => runStep(ctx, step, params, outputs)));
122
- for (let i = 0; i < batch.length; i++) {
123
- const step = batch[i];
124
- const result = results[i];
125
- if (result.ok) {
126
- completed.add(step.id);
127
- outputs[step.id] = { output: result.output };
128
- engine.setStepStatus(step.id, "done");
129
- logs.push(` ✓ ${step.id}: ${result.output.split("\n")[0]}`);
130
- }
131
- else {
132
- failed.add(step.id);
133
- engine.setStepStatus(step.id, "failed");
134
- logs.push(` ✗ ${step.id}: ${result.error}`);
135
- }
136
- }
137
- if (failed.size > 0)
138
- break;
139
- }
140
- if (failed.size > 0) {
141
- return {
142
- success: false,
143
- output: t("tool.pipeline_failed", {
144
- name: pipeline.name,
145
- done: String(completed.size),
146
- total: String(pipeline.steps.length),
147
- logs: logs.join("\n"),
148
- }),
149
- };
150
- }
151
- return {
152
- success: true,
153
- output: t("tool.pipeline_completed", {
154
- name: pipeline.name,
155
- steps: String(completed.size),
156
- logs: logs.join("\n"),
157
- }),
158
- };
159
- }
160
- catch (e) {
161
- return { success: false, output: t("tool.pipeline_error", { error: e.message }) };
162
- }
163
- finally {
164
- executor?.setRecursionDepth?.(currentDepth);
165
- }
166
- },
167
- };
@@ -1,2 +0,0 @@
1
- /** Максимум строк в превью вывода тулов. */
2
- export const MAX_PREVIEW_LINES = 15;
@@ -1,31 +0,0 @@
1
- /** Общие хелперы process_*-тулов: хинт без id, валидация + lookup. */
2
- import { processRegistry } from "../modules/processes";
3
- import { t } from "../i18n/index";
4
- /**
5
- * Общий ответ "id не дан" для process_*-тулов: хинт использования плюс
6
- * известные сейчас id (или пометка пустого реестра). Одна копия, чтобы
7
- * process-kill/log/wait не расходились.
8
- */
9
- export function missingProcessIdHint() {
10
- const ids = processRegistry.list().map((p) => p.id);
11
- const listPart = ids.length
12
- ? `\n${t("proc.list_header")}: ${ids.join(", ")}`
13
- : `\n${t("proc.missing_id_list")}`;
14
- return `${t("proc.missing_id")}${listPart}`;
15
- }
16
- /**
17
- * Общая валидация id + lookup в реестре для process_*-тулов. Возвращает запись
18
- * либо `{ ok: false, output }` для прямого возврата (нет id — хинт,
19
- * неизвестный id — not-found).
20
- */
21
- export function lookupProcess(args) {
22
- if (args.id === undefined || String(args.id).trim() === "") {
23
- return { ok: false, output: missingProcessIdHint() };
24
- }
25
- const id = String(args.id);
26
- const entry = processRegistry.get(id);
27
- if (!entry) {
28
- return { ok: false, output: t("proc.not_found", { id }) };
29
- }
30
- return { ok: true, id, entry };
31
- }
@@ -1,33 +0,0 @@
1
- import { processRegistry } from "../modules/processes";
2
- import { t } from "../i18n/index";
3
- import { lookupProcess } from "./process-ids";
4
- /** Останавливает фоновый процесс по id из bash/process_list. */
5
- export const processKillTool = {
6
- name: "process_kill",
7
- icon: "⛔",
8
- description: "Stop a background process started via bash (dev server, watcher). Kills the whole process tree (children included). Use the id returned by bash or process_list.",
9
- tags: ["shell"],
10
- parameters: {
11
- type: "object",
12
- properties: {
13
- id: { type: "string", description: "Process id from bash output or process_list" },
14
- },
15
- required: ["id"],
16
- },
17
- handler: async (_ctx, args) => {
18
- // Без id отвечаем использованием: голое "not found: undefined" не
19
- // подсказывает верный формат.
20
- const found = lookupProcess(args);
21
- if (!found.ok)
22
- return { success: false, output: found.output };
23
- const { id, entry } = found;
24
- const killed = processRegistry.kill(id);
25
- if (!killed) {
26
- return { success: false, output: t("proc.kill_failed", { id }) };
27
- }
28
- return {
29
- success: true,
30
- output: t("proc.killed", { id, pid: entry.pid }),
31
- };
32
- },
33
- };
@@ -1,38 +0,0 @@
1
- import { processRegistry } from "../modules/processes";
2
- import { t } from "../i18n/index";
3
- /** Показывает фоновые процессы сессии с хинтом управления. */
4
- export const processListTool = {
5
- name: "process_list",
6
- icon: "📊",
7
- description: "List background processes started via the bash tool (dev servers, watchers, long-running commands). Shows id, pid, command, status, and recent output. Use with process_log and process_kill to inspect or stop them.",
8
- tags: ["shell"],
9
- parameters: {
10
- type: "object",
11
- properties: {},
12
- },
13
- handler: async (ctx) => {
14
- const list = processRegistry.list(ctx.sessionId);
15
- if (list.length === 0) {
16
- return { success: true, output: t("proc.none") };
17
- }
18
- const statusLabel = (status) => {
19
- if (status === "running")
20
- return t("proc.status_running");
21
- if (status === "exited")
22
- return t("proc.status_exited");
23
- return t("proc.status_killed");
24
- };
25
- const lines = [`${t("proc.list_header")} (${list.length}):`];
26
- for (const entry of list) {
27
- const tail = entry.log.length > 0 ? entry.log[entry.log.length - 1] : "";
28
- const detail = tail ? ` — ${tail.slice(0, 80)}${tail.length > 80 ? "…" : ""}` : "";
29
- lines.push(` ${entry.id} PID ${entry.pid} ${statusLabel(entry.status)} ${entry.command}${detail}`);
30
- }
31
- lines.push(`\n${t("proc.hint", {
32
- list: "process_list",
33
- log: "process_log",
34
- kill: "process_kill",
35
- })}`);
36
- return { success: true, output: lines.join("\n") };
37
- },
38
- };
@@ -1,49 +0,0 @@
1
- import { processRegistry } from "../modules/processes";
2
- import { t } from "../i18n/index";
3
- import { MAX_PREVIEW_LINES } from "./preview";
4
- import { lookupProcess } from "./process-ids";
5
- const DEFAULT_TAIL = MAX_PREVIEW_LINES;
6
- /** Потолок из описания тула; тул вне усечения по бюджету. */
7
- const MAX_TAIL = 300;
8
- /** Показывает буферизированный вывод фонового процесса (последние N строк). */
9
- export const processLogTool = {
10
- name: "process_log",
11
- icon: "📜",
12
- description: `Show the buffered output of a background process started via bash. Shows the last ${DEFAULT_TAIL} lines by default. Use after starting a dev server to verify it came up without errors, and while it runs to check its state. For a finite task that should complete, prefer process_wait over polling this tool.`,
13
- tags: ["shell"],
14
- boundedOutput: true,
15
- parameters: {
16
- type: "object",
17
- properties: {
18
- id: { type: "string", description: "Process id from bash output or process_list" },
19
- tail: {
20
- type: "number",
21
- description: `Number of trailing lines to show (default: ${DEFAULT_TAIL}, max 300)`,
22
- },
23
- },
24
- required: ["id"],
25
- },
26
- handler: async (_ctx, args) => {
27
- const found = lookupProcess(args);
28
- if (!found.ok)
29
- return { success: false, output: found.output };
30
- const { id, entry } = found;
31
- const status = entry.status === "running"
32
- ? t("proc.status_running")
33
- : entry.status === "exited"
34
- ? t("proc.status_exited")
35
- : t("proc.status_killed");
36
- const tail = Math.min(MAX_TAIL, Math.max(1, typeof args.tail === "number" ? Math.floor(args.tail) : DEFAULT_TAIL));
37
- const log = processRegistry.getLog(id, tail);
38
- if (!log) {
39
- return {
40
- success: true,
41
- output: `${t("proc.log_header", { id, status })} ${t("proc.log_empty")}`,
42
- };
43
- }
44
- return {
45
- success: true,
46
- output: `${t("proc.log_header", { id, status })}\n${log}`,
47
- };
48
- },
49
- };
@@ -1,63 +0,0 @@
1
- import { processRegistry } from "../modules/processes";
2
- import { t } from "../i18n/index";
3
- import { lookupProcess } from "./process-ids";
4
- import { PROCESS_WAIT_DEFAULT_MS as DEFAULT_WAIT_MS, PROCESS_WAIT_MAX_MS as MAX_WAIT_MS, } from "../config/timeouts";
5
- /**
6
- * Дефолтное ожидание: хватает на типичный тест/билд, но в пределах таймаута
7
- * исполнителя. `timeoutMs` тула даёт запас под явное долгое ожидание
8
- * (кламп MAX_WAIT_MS).
9
- */
10
- const DEFAULT_TAIL = 20;
11
- const MAX_TAIL = 100;
12
- /** Ждёт выхода процесса до timeoutMs; отчитывается кодом и хвостом вывода. */
13
- export const processWaitTool = {
14
- name: "process_wait",
15
- icon: "⏳",
16
- description: "Wait for a background process started via bash to finish, instead of polling process_log or sleeping (ping/timeout/sleep commands). Blocks up to timeoutMs, then reports whether the process exited (with its exit code and recent output) or is still running. For dev servers/watchers that never exit, use process_log to inspect and process_kill to stop them.",
17
- tags: ["shell"],
18
- boundedOutput: true,
19
- timeoutMs: 120000,
20
- parameters: {
21
- type: "object",
22
- properties: {
23
- id: { type: "string", description: "Process id from bash output or process_list" },
24
- timeoutMs: {
25
- type: "number",
26
- description: `How long to wait in milliseconds (default: ${DEFAULT_WAIT_MS}, max ${MAX_WAIT_MS})`,
27
- },
28
- tail: {
29
- type: "number",
30
- description: `Number of trailing output lines to include (default: ${DEFAULT_TAIL}, max ${MAX_TAIL})`,
31
- },
32
- },
33
- required: ["id"],
34
- },
35
- handler: async (_ctx, args) => {
36
- const found = lookupProcess(args);
37
- if (!found.ok)
38
- return { success: false, output: found.output };
39
- const { id } = found;
40
- const waitMs = Math.min(MAX_WAIT_MS, Math.max(1000, typeof args.timeoutMs === "number" ? Math.floor(args.timeoutMs) : DEFAULT_WAIT_MS));
41
- const started = Date.now();
42
- await processRegistry.waitForExit(id, waitMs);
43
- const elapsed = Date.now() - started;
44
- const entry = processRegistry.get(id);
45
- if (!entry) {
46
- return { success: false, output: t("proc.not_found", { id }) };
47
- }
48
- const tail = Math.min(MAX_TAIL, Math.max(1, typeof args.tail === "number" ? Math.floor(args.tail) : DEFAULT_TAIL));
49
- const log = processRegistry.getLog(id, tail);
50
- const logPart = log ? `\n${log}` : `\n${t("proc.log_empty")}`;
51
- if (entry.status !== "running") {
52
- const status = entry.status === "exited" ? t("proc.status_exited") : t("proc.status_killed");
53
- return {
54
- success: true,
55
- output: `${t("proc.wait_exited", { id, ms: elapsed, status, code: entry.exitCode ?? "?" })}${logPart}`,
56
- };
57
- }
58
- return {
59
- success: true,
60
- output: `${t("proc.wait_running", { id, ms: elapsed })}\n${t("proc.wait_hint", { id })}${logPart}`,
61
- };
62
- },
63
- };
@@ -1,29 +0,0 @@
1
- /** Терминал-независимая поверхность промпта для интерактивных тулов. */
2
- import { formatMenu, choicePrompt, parseSelection, CUSTOM_INDEX, } from "./user-input";
3
- import { t } from "../i18n/index";
4
- /** Собирает PromptIO из инжектируемых ask/print (тестируемо, без терминала). */
5
- export function createPromptIO(deps) {
6
- return {
7
- async askText(question) {
8
- return (await deps.ask(`${question} `)).trim();
9
- },
10
- async askChoice(question, options, opts = {}) {
11
- const multiple = opts.multiple ?? false;
12
- const entryCount = options.length + (opts.allowCustom ? 1 : 0);
13
- // Выбирать нечего (и кастома нет) — parseSelection не сойдётся никогда,
14
- // поэтому выходим без печати мёртвого меню и вечного цикла.
15
- if (entryCount === 0)
16
- return [];
17
- const customEntry = options.length;
18
- deps.print(formatMenu(question, options, opts));
19
- for (;;) {
20
- const answer = await deps.ask(choicePrompt(entryCount, multiple));
21
- const parsed = parseSelection(answer, entryCount, multiple);
22
- if (parsed) {
23
- return parsed.map((i) => (opts.allowCustom && i === customEntry ? CUSTOM_INDEX : i));
24
- }
25
- deps.print(t("tool.user_input.invalid"));
26
- }
27
- },
28
- };
29
- }