@itphx/synth-core 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (814) hide show
  1. package/LICENSE +18 -0
  2. package/dictionaries/coding.en.yaml +20 -0
  3. package/dictionaries/coding.ru.yaml +22 -0
  4. package/dictionaries/coding.tools.yaml +12 -0
  5. package/dictionaries/enum.en.yaml +54 -0
  6. package/dictionaries/enum.ru.yaml +67 -0
  7. package/dictionaries/injection.en.yaml +51 -0
  8. package/dictionaries/injection.ru.yaml +51 -0
  9. package/dictionaries/intents.en.yaml +68 -0
  10. package/dictionaries/intents.ru.yaml +78 -0
  11. package/dictionaries/research.en.yaml +17 -0
  12. package/dictionaries/research.ru.yaml +17 -0
  13. package/dictionaries/small-talk.en.yaml +67 -0
  14. package/dictionaries/small-talk.ru.yaml +81 -0
  15. package/dist/auth/local.d.ts +29 -0
  16. package/dist/auth/local.d.ts.map +1 -0
  17. package/dist/auth/local.js +107 -0
  18. package/dist/auth/local.js.map +1 -0
  19. package/dist/auth/local.test.d.ts +2 -0
  20. package/dist/auth/local.test.d.ts.map +1 -0
  21. package/dist/auth/local.test.js +131 -0
  22. package/dist/auth/local.test.js.map +1 -0
  23. package/dist/debug.d.ts +36 -0
  24. package/dist/debug.d.ts.map +1 -0
  25. package/dist/debug.js +171 -0
  26. package/dist/debug.js.map +1 -0
  27. package/dist/dictionaries/coding.en.yaml +20 -0
  28. package/dist/dictionaries/coding.ru.yaml +22 -0
  29. package/dist/dictionaries/coding.tools.yaml +12 -0
  30. package/dist/dictionaries/dictionaries/coding.en.yaml +20 -0
  31. package/dist/dictionaries/dictionaries/coding.ru.yaml +22 -0
  32. package/dist/dictionaries/dictionaries/coding.tools.yaml +12 -0
  33. package/dist/dictionaries/dictionaries/enum.en.yaml +54 -0
  34. package/dist/dictionaries/dictionaries/enum.ru.yaml +67 -0
  35. package/dist/dictionaries/dictionaries/injection.en.yaml +51 -0
  36. package/dist/dictionaries/dictionaries/injection.ru.yaml +51 -0
  37. package/dist/dictionaries/dictionaries/intents.en.yaml +68 -0
  38. package/dist/dictionaries/dictionaries/intents.ru.yaml +78 -0
  39. package/dist/dictionaries/dictionaries/research.en.yaml +17 -0
  40. package/dist/dictionaries/dictionaries/research.ru.yaml +17 -0
  41. package/dist/dictionaries/dictionaries/small-talk.en.yaml +67 -0
  42. package/dist/dictionaries/dictionaries/small-talk.ru.yaml +81 -0
  43. package/dist/dictionaries/enum.en.yaml +54 -0
  44. package/dist/dictionaries/enum.ru.yaml +67 -0
  45. package/dist/dictionaries/injection.en.yaml +51 -0
  46. package/dist/dictionaries/injection.ru.yaml +51 -0
  47. package/dist/dictionaries/intents.en.yaml +68 -0
  48. package/dist/dictionaries/intents.ru.yaml +78 -0
  49. package/dist/dictionaries/research.en.yaml +17 -0
  50. package/dist/dictionaries/research.ru.yaml +17 -0
  51. package/dist/dictionaries/small-talk.en.yaml +67 -0
  52. package/dist/dictionaries/small-talk.ru.yaml +81 -0
  53. package/dist/engine/agents/definitions/admin.json +24 -0
  54. package/dist/engine/agents/definitions/analyst.json +20 -0
  55. package/dist/engine/agents/definitions/assistant.json +25 -0
  56. package/dist/engine/agents/definitions/auditor.json +19 -0
  57. package/dist/engine/agents/definitions/developer.json +23 -0
  58. package/dist/engine/agents/definitions/devops.json +23 -0
  59. package/dist/engine/agents/definitions/explore.json +15 -0
  60. package/dist/engine/agents/definitions/general.json +15 -0
  61. package/dist/engine/agents/definitions/pm.json +20 -0
  62. package/dist/engine/agents/definitions/qa.json +22 -0
  63. package/dist/engine/agents/definitions/title.json +19 -0
  64. package/dist/engine/agents/index.d.ts +8 -0
  65. package/dist/engine/agents/index.d.ts.map +1 -0
  66. package/dist/engine/agents/index.js +71 -0
  67. package/dist/engine/agents/index.js.map +1 -0
  68. package/dist/engine/agents/mode.d.ts +14 -0
  69. package/dist/engine/agents/mode.d.ts.map +1 -0
  70. package/dist/engine/agents/mode.js +21 -0
  71. package/dist/engine/agents/mode.js.map +1 -0
  72. package/dist/engine/agents/mode.test.d.ts +2 -0
  73. package/dist/engine/agents/mode.test.d.ts.map +1 -0
  74. package/dist/engine/agents/mode.test.js +27 -0
  75. package/dist/engine/agents/mode.test.js.map +1 -0
  76. package/dist/engine/agents/registry.d.ts +17 -0
  77. package/dist/engine/agents/registry.d.ts.map +1 -0
  78. package/dist/engine/agents/registry.js +48 -0
  79. package/dist/engine/agents/registry.js.map +1 -0
  80. package/dist/engine/agents/registry.test.d.ts +2 -0
  81. package/dist/engine/agents/registry.test.d.ts.map +1 -0
  82. package/dist/engine/agents/registry.test.js +76 -0
  83. package/dist/engine/agents/registry.test.js.map +1 -0
  84. package/dist/engine/context/builder.d.ts +44 -0
  85. package/dist/engine/context/builder.d.ts.map +1 -0
  86. package/dist/engine/context/builder.js +225 -0
  87. package/dist/engine/context/builder.js.map +1 -0
  88. package/dist/engine/context/builder.test.d.ts +2 -0
  89. package/dist/engine/context/builder.test.d.ts.map +1 -0
  90. package/dist/engine/context/builder.test.js +69 -0
  91. package/dist/engine/context/builder.test.js.map +1 -0
  92. package/dist/engine/context/config.d.ts +56 -0
  93. package/dist/engine/context/config.d.ts.map +1 -0
  94. package/dist/engine/context/config.js +391 -0
  95. package/dist/engine/context/config.js.map +1 -0
  96. package/dist/engine/context/config.test.d.ts +2 -0
  97. package/dist/engine/context/config.test.d.ts.map +1 -0
  98. package/dist/engine/context/config.test.js +54 -0
  99. package/dist/engine/context/config.test.js.map +1 -0
  100. package/dist/engine/context/index.d.ts +5 -0
  101. package/dist/engine/context/index.d.ts.map +1 -0
  102. package/dist/engine/context/index.js +5 -0
  103. package/dist/engine/context/index.js.map +1 -0
  104. package/dist/engine/context/interview.d.ts +17 -0
  105. package/dist/engine/context/interview.d.ts.map +1 -0
  106. package/dist/engine/context/interview.js +84 -0
  107. package/dist/engine/context/interview.js.map +1 -0
  108. package/dist/engine/context/optimizer.d.ts +112 -0
  109. package/dist/engine/context/optimizer.d.ts.map +1 -0
  110. package/dist/engine/context/optimizer.js +517 -0
  111. package/dist/engine/context/optimizer.js.map +1 -0
  112. package/dist/engine/context/optimizer.test.d.ts +2 -0
  113. package/dist/engine/context/optimizer.test.d.ts.map +1 -0
  114. package/dist/engine/context/optimizer.test.js +101 -0
  115. package/dist/engine/context/optimizer.test.js.map +1 -0
  116. package/dist/engine/gateway/audit-logger.d.ts +52 -0
  117. package/dist/engine/gateway/audit-logger.d.ts.map +1 -0
  118. package/dist/engine/gateway/audit-logger.js +86 -0
  119. package/dist/engine/gateway/audit-logger.js.map +1 -0
  120. package/dist/engine/gateway/audit-logger.test.d.ts +6 -0
  121. package/dist/engine/gateway/audit-logger.test.d.ts.map +1 -0
  122. package/dist/engine/gateway/audit-logger.test.js +86 -0
  123. package/dist/engine/gateway/audit-logger.test.js.map +1 -0
  124. package/dist/engine/gateway/gateway-provider.d.ts +46 -0
  125. package/dist/engine/gateway/gateway-provider.d.ts.map +1 -0
  126. package/dist/engine/gateway/gateway-provider.js +223 -0
  127. package/dist/engine/gateway/gateway-provider.js.map +1 -0
  128. package/dist/engine/gateway/gateway-provider.test.d.ts +7 -0
  129. package/dist/engine/gateway/gateway-provider.test.d.ts.map +1 -0
  130. package/dist/engine/gateway/gateway-provider.test.js +251 -0
  131. package/dist/engine/gateway/gateway-provider.test.js.map +1 -0
  132. package/dist/engine/gateway/index.d.ts +23 -0
  133. package/dist/engine/gateway/index.d.ts.map +1 -0
  134. package/dist/engine/gateway/index.js +15 -0
  135. package/dist/engine/gateway/index.js.map +1 -0
  136. package/dist/engine/gateway/input-guard.d.ts +38 -0
  137. package/dist/engine/gateway/input-guard.d.ts.map +1 -0
  138. package/dist/engine/gateway/input-guard.js +109 -0
  139. package/dist/engine/gateway/input-guard.js.map +1 -0
  140. package/dist/engine/gateway/input-guard.test.d.ts +6 -0
  141. package/dist/engine/gateway/input-guard.test.d.ts.map +1 -0
  142. package/dist/engine/gateway/input-guard.test.js +109 -0
  143. package/dist/engine/gateway/input-guard.test.js.map +1 -0
  144. package/dist/engine/gateway/integration.test.d.ts +8 -0
  145. package/dist/engine/gateway/integration.test.d.ts.map +1 -0
  146. package/dist/engine/gateway/integration.test.js +341 -0
  147. package/dist/engine/gateway/integration.test.js.map +1 -0
  148. package/dist/engine/gateway/obfuscation-map-store.d.ts +14 -0
  149. package/dist/engine/gateway/obfuscation-map-store.d.ts.map +1 -0
  150. package/dist/engine/gateway/obfuscation-map-store.js +30 -0
  151. package/dist/engine/gateway/obfuscation-map-store.js.map +1 -0
  152. package/dist/engine/gateway/obfuscator.d.ts +32 -0
  153. package/dist/engine/gateway/obfuscator.d.ts.map +1 -0
  154. package/dist/engine/gateway/obfuscator.js +83 -0
  155. package/dist/engine/gateway/obfuscator.js.map +1 -0
  156. package/dist/engine/gateway/obfuscator.test.d.ts +6 -0
  157. package/dist/engine/gateway/obfuscator.test.d.ts.map +1 -0
  158. package/dist/engine/gateway/obfuscator.test.js +104 -0
  159. package/dist/engine/gateway/obfuscator.test.js.map +1 -0
  160. package/dist/engine/gateway/output-guard.d.ts +12 -0
  161. package/dist/engine/gateway/output-guard.d.ts.map +1 -0
  162. package/dist/engine/gateway/output-guard.js +12 -0
  163. package/dist/engine/gateway/output-guard.js.map +1 -0
  164. package/dist/engine/gateway/output-guard.test.d.ts +5 -0
  165. package/dist/engine/gateway/output-guard.test.d.ts.map +1 -0
  166. package/dist/engine/gateway/output-guard.test.js +31 -0
  167. package/dist/engine/gateway/output-guard.test.js.map +1 -0
  168. package/dist/engine/gateway/payload-logger.d.ts +52 -0
  169. package/dist/engine/gateway/payload-logger.d.ts.map +1 -0
  170. package/dist/engine/gateway/payload-logger.js +82 -0
  171. package/dist/engine/gateway/payload-logger.js.map +1 -0
  172. package/dist/engine/gateway/payload-logger.test.d.ts +6 -0
  173. package/dist/engine/gateway/payload-logger.test.d.ts.map +1 -0
  174. package/dist/engine/gateway/payload-logger.test.js +106 -0
  175. package/dist/engine/gateway/payload-logger.test.js.map +1 -0
  176. package/dist/engine/gateway/rate-limiter.d.ts +18 -0
  177. package/dist/engine/gateway/rate-limiter.d.ts.map +1 -0
  178. package/dist/engine/gateway/rate-limiter.js +44 -0
  179. package/dist/engine/gateway/rate-limiter.js.map +1 -0
  180. package/dist/engine/gateway/rate-limiter.test.d.ts +5 -0
  181. package/dist/engine/gateway/rate-limiter.test.d.ts.map +1 -0
  182. package/dist/engine/gateway/rate-limiter.test.js +61 -0
  183. package/dist/engine/gateway/rate-limiter.test.js.map +1 -0
  184. package/dist/engine/gateway/secret-detector.d.ts +25 -0
  185. package/dist/engine/gateway/secret-detector.d.ts.map +1 -0
  186. package/dist/engine/gateway/secret-detector.js +109 -0
  187. package/dist/engine/gateway/secret-detector.js.map +1 -0
  188. package/dist/engine/gateway/secret-detector.test.d.ts +6 -0
  189. package/dist/engine/gateway/secret-detector.test.d.ts.map +1 -0
  190. package/dist/engine/gateway/secret-detector.test.js +107 -0
  191. package/dist/engine/gateway/secret-detector.test.js.map +1 -0
  192. package/dist/engine/gateway/secret-pattern-store.d.ts +54 -0
  193. package/dist/engine/gateway/secret-pattern-store.d.ts.map +1 -0
  194. package/dist/engine/gateway/secret-pattern-store.js +133 -0
  195. package/dist/engine/gateway/secret-pattern-store.js.map +1 -0
  196. package/dist/engine/gateway/secret-pattern-store.test.d.ts +7 -0
  197. package/dist/engine/gateway/secret-pattern-store.test.d.ts.map +1 -0
  198. package/dist/engine/gateway/secret-pattern-store.test.js +102 -0
  199. package/dist/engine/gateway/secret-pattern-store.test.js.map +1 -0
  200. package/dist/engine/mcp/client.d.ts +31 -0
  201. package/dist/engine/mcp/client.d.ts.map +1 -0
  202. package/dist/engine/mcp/client.js +150 -0
  203. package/dist/engine/mcp/client.js.map +1 -0
  204. package/dist/engine/mcp/client.test.d.ts +2 -0
  205. package/dist/engine/mcp/client.test.d.ts.map +1 -0
  206. package/dist/engine/mcp/client.test.js +204 -0
  207. package/dist/engine/mcp/client.test.js.map +1 -0
  208. package/dist/engine/mcp/index.d.ts +5 -0
  209. package/dist/engine/mcp/index.d.ts.map +1 -0
  210. package/dist/engine/mcp/index.js +4 -0
  211. package/dist/engine/mcp/index.js.map +1 -0
  212. package/dist/engine/mcp/manager.d.ts +46 -0
  213. package/dist/engine/mcp/manager.d.ts.map +1 -0
  214. package/dist/engine/mcp/manager.js +227 -0
  215. package/dist/engine/mcp/manager.js.map +1 -0
  216. package/dist/engine/mcp/manager.test.d.ts +2 -0
  217. package/dist/engine/mcp/manager.test.d.ts.map +1 -0
  218. package/dist/engine/mcp/manager.test.js +269 -0
  219. package/dist/engine/mcp/manager.test.js.map +1 -0
  220. package/dist/engine/mcp/settings.d.ts +23 -0
  221. package/dist/engine/mcp/settings.d.ts.map +1 -0
  222. package/dist/engine/mcp/settings.js +56 -0
  223. package/dist/engine/mcp/settings.js.map +1 -0
  224. package/dist/engine/orchestrator.d.ts +171 -0
  225. package/dist/engine/orchestrator.d.ts.map +1 -0
  226. package/dist/engine/orchestrator.js +1651 -0
  227. package/dist/engine/orchestrator.js.map +1 -0
  228. package/dist/engine/orchestrator.test.d.ts +2 -0
  229. package/dist/engine/orchestrator.test.d.ts.map +1 -0
  230. package/dist/engine/orchestrator.test.js +83 -0
  231. package/dist/engine/orchestrator.test.js.map +1 -0
  232. package/dist/engine/permission/approval.d.ts +32 -0
  233. package/dist/engine/permission/approval.d.ts.map +1 -0
  234. package/dist/engine/permission/approval.js +66 -0
  235. package/dist/engine/permission/approval.js.map +1 -0
  236. package/dist/engine/permission/approval.test.d.ts +2 -0
  237. package/dist/engine/permission/approval.test.d.ts.map +1 -0
  238. package/dist/engine/permission/approval.test.js +139 -0
  239. package/dist/engine/permission/approval.test.js.map +1 -0
  240. package/dist/engine/permission/derive.d.ts +12 -0
  241. package/dist/engine/permission/derive.d.ts.map +1 -0
  242. package/dist/engine/permission/derive.js +25 -0
  243. package/dist/engine/permission/derive.js.map +1 -0
  244. package/dist/engine/permission/evaluator.d.ts +64 -0
  245. package/dist/engine/permission/evaluator.d.ts.map +1 -0
  246. package/dist/engine/permission/evaluator.js +236 -0
  247. package/dist/engine/permission/evaluator.js.map +1 -0
  248. package/dist/engine/permission/evaluator.test.d.ts +2 -0
  249. package/dist/engine/permission/evaluator.test.d.ts.map +1 -0
  250. package/dist/engine/permission/evaluator.test.js +367 -0
  251. package/dist/engine/permission/evaluator.test.js.map +1 -0
  252. package/dist/engine/permission/groups.d.ts +10 -0
  253. package/dist/engine/permission/groups.d.ts.map +1 -0
  254. package/dist/engine/permission/groups.js +96 -0
  255. package/dist/engine/permission/groups.js.map +1 -0
  256. package/dist/engine/permission/index.d.ts +8 -0
  257. package/dist/engine/permission/index.d.ts.map +1 -0
  258. package/dist/engine/permission/index.js +6 -0
  259. package/dist/engine/permission/index.js.map +1 -0
  260. package/dist/engine/permission/integration.test.d.ts +2 -0
  261. package/dist/engine/permission/integration.test.d.ts.map +1 -0
  262. package/dist/engine/permission/integration.test.js +433 -0
  263. package/dist/engine/permission/integration.test.js.map +1 -0
  264. package/dist/engine/plan.integration.test.d.ts +2 -0
  265. package/dist/engine/plan.integration.test.d.ts.map +1 -0
  266. package/dist/engine/plan.integration.test.js +363 -0
  267. package/dist/engine/plan.integration.test.js.map +1 -0
  268. package/dist/engine/router/content-classifier.d.ts +27 -0
  269. package/dist/engine/router/content-classifier.d.ts.map +1 -0
  270. package/dist/engine/router/content-classifier.js +72 -0
  271. package/dist/engine/router/content-classifier.js.map +1 -0
  272. package/dist/engine/router/dictionary-store.d.ts +41 -0
  273. package/dist/engine/router/dictionary-store.d.ts.map +1 -0
  274. package/dist/engine/router/dictionary-store.js +239 -0
  275. package/dist/engine/router/dictionary-store.js.map +1 -0
  276. package/dist/engine/router/index.d.ts +21 -0
  277. package/dist/engine/router/index.d.ts.map +1 -0
  278. package/dist/engine/router/index.js +15 -0
  279. package/dist/engine/router/index.js.map +1 -0
  280. package/dist/engine/router/micro/index.d.ts +22 -0
  281. package/dist/engine/router/micro/index.d.ts.map +1 -0
  282. package/dist/engine/router/micro/index.js +72 -0
  283. package/dist/engine/router/micro/index.js.map +1 -0
  284. package/dist/engine/router/micro/index.test.d.ts +2 -0
  285. package/dist/engine/router/micro/index.test.d.ts.map +1 -0
  286. package/dist/engine/router/micro/index.test.js +81 -0
  287. package/dist/engine/router/micro/index.test.js.map +1 -0
  288. package/dist/engine/router/micro/models/base.d.ts +18 -0
  289. package/dist/engine/router/micro/models/base.d.ts.map +1 -0
  290. package/dist/engine/router/micro/models/base.js +2 -0
  291. package/dist/engine/router/micro/models/base.js.map +1 -0
  292. package/dist/engine/router/micro/models/embedding-model.d.ts +38 -0
  293. package/dist/engine/router/micro/models/embedding-model.d.ts.map +1 -0
  294. package/dist/engine/router/micro/models/embedding-model.js +248 -0
  295. package/dist/engine/router/micro/models/embedding-model.js.map +1 -0
  296. package/dist/engine/router/micro/models/index.d.ts +9 -0
  297. package/dist/engine/router/micro/models/index.d.ts.map +1 -0
  298. package/dist/engine/router/micro/models/index.js +4 -0
  299. package/dist/engine/router/micro/models/index.js.map +1 -0
  300. package/dist/engine/router/micro/models/micro-llm-model.d.ts +28 -0
  301. package/dist/engine/router/micro/models/micro-llm-model.d.ts.map +1 -0
  302. package/dist/engine/router/micro/models/micro-llm-model.js +115 -0
  303. package/dist/engine/router/micro/models/micro-llm-model.js.map +1 -0
  304. package/dist/engine/router/micro/models/rules-model.d.ts +23 -0
  305. package/dist/engine/router/micro/models/rules-model.d.ts.map +1 -0
  306. package/dist/engine/router/micro/models/rules-model.js +186 -0
  307. package/dist/engine/router/micro/models/rules-model.js.map +1 -0
  308. package/dist/engine/router/micro/models/rules-model.test.d.ts +2 -0
  309. package/dist/engine/router/micro/models/rules-model.test.d.ts.map +1 -0
  310. package/dist/engine/router/micro/models/rules-model.test.js +77 -0
  311. package/dist/engine/router/micro/models/rules-model.test.js.map +1 -0
  312. package/dist/engine/router/micro/task-classifier.d.ts +29 -0
  313. package/dist/engine/router/micro/task-classifier.d.ts.map +1 -0
  314. package/dist/engine/router/micro/task-classifier.js +106 -0
  315. package/dist/engine/router/micro/task-classifier.js.map +1 -0
  316. package/dist/engine/router/micro/task-classifier.test.d.ts +2 -0
  317. package/dist/engine/router/micro/task-classifier.test.d.ts.map +1 -0
  318. package/dist/engine/router/micro/task-classifier.test.js +134 -0
  319. package/dist/engine/router/micro/task-classifier.test.js.map +1 -0
  320. package/dist/engine/router/micro/tasks/classify-intent.d.ts +8 -0
  321. package/dist/engine/router/micro/tasks/classify-intent.d.ts.map +1 -0
  322. package/dist/engine/router/micro/tasks/classify-intent.js +36 -0
  323. package/dist/engine/router/micro/tasks/classify-intent.js.map +1 -0
  324. package/dist/engine/router/micro/tasks/classify-intent.test.d.ts +2 -0
  325. package/dist/engine/router/micro/tasks/classify-intent.test.d.ts.map +1 -0
  326. package/dist/engine/router/micro/tasks/classify-intent.test.js +107 -0
  327. package/dist/engine/router/micro/tasks/classify-intent.test.js.map +1 -0
  328. package/dist/engine/router/micro/tasks/enum-decision.d.ts +7 -0
  329. package/dist/engine/router/micro/tasks/enum-decision.d.ts.map +1 -0
  330. package/dist/engine/router/micro/tasks/enum-decision.js +36 -0
  331. package/dist/engine/router/micro/tasks/enum-decision.js.map +1 -0
  332. package/dist/engine/router/micro/tasks/enum-decision.test.d.ts +2 -0
  333. package/dist/engine/router/micro/tasks/enum-decision.test.d.ts.map +1 -0
  334. package/dist/engine/router/micro/tasks/enum-decision.test.js +96 -0
  335. package/dist/engine/router/micro/tasks/enum-decision.test.js.map +1 -0
  336. package/dist/engine/router/micro/tasks/index.d.ts +7 -0
  337. package/dist/engine/router/micro/tasks/index.d.ts.map +1 -0
  338. package/dist/engine/router/micro/tasks/index.js +7 -0
  339. package/dist/engine/router/micro/tasks/index.js.map +1 -0
  340. package/dist/engine/router/micro/tasks/small-talk.d.ts +7 -0
  341. package/dist/engine/router/micro/tasks/small-talk.d.ts.map +1 -0
  342. package/dist/engine/router/micro/tasks/small-talk.js +29 -0
  343. package/dist/engine/router/micro/tasks/small-talk.js.map +1 -0
  344. package/dist/engine/router/micro/tasks/small-talk.test.d.ts +2 -0
  345. package/dist/engine/router/micro/tasks/small-talk.test.d.ts.map +1 -0
  346. package/dist/engine/router/micro/tasks/small-talk.test.js +71 -0
  347. package/dist/engine/router/micro/tasks/small-talk.test.js.map +1 -0
  348. package/dist/engine/router/micro/types.d.ts +42 -0
  349. package/dist/engine/router/micro/types.d.ts.map +1 -0
  350. package/dist/engine/router/micro/types.js +2 -0
  351. package/dist/engine/router/micro/types.js.map +1 -0
  352. package/dist/engine/router/provider-pool.d.ts +24 -0
  353. package/dist/engine/router/provider-pool.d.ts.map +1 -0
  354. package/dist/engine/router/provider-pool.js +57 -0
  355. package/dist/engine/router/provider-pool.js.map +1 -0
  356. package/dist/engine/router/provider-pool.test.d.ts +7 -0
  357. package/dist/engine/router/provider-pool.test.d.ts.map +1 -0
  358. package/dist/engine/router/provider-pool.test.js +138 -0
  359. package/dist/engine/router/provider-pool.test.js.map +1 -0
  360. package/dist/engine/router/quality-checker.d.ts +25 -0
  361. package/dist/engine/router/quality-checker.d.ts.map +1 -0
  362. package/dist/engine/router/quality-checker.js +121 -0
  363. package/dist/engine/router/quality-checker.js.map +1 -0
  364. package/dist/engine/router/router.d.ts +48 -0
  365. package/dist/engine/router/router.d.ts.map +1 -0
  366. package/dist/engine/router/router.js +195 -0
  367. package/dist/engine/router/router.js.map +1 -0
  368. package/dist/engine/router/utils.d.ts +7 -0
  369. package/dist/engine/router/utils.d.ts.map +1 -0
  370. package/dist/engine/router/utils.js +14 -0
  371. package/dist/engine/router/utils.js.map +1 -0
  372. package/dist/engine/security/index.d.ts +5 -0
  373. package/dist/engine/security/index.d.ts.map +1 -0
  374. package/dist/engine/security/index.js +3 -0
  375. package/dist/engine/security/index.js.map +1 -0
  376. package/dist/engine/security/integration.test.d.ts +2 -0
  377. package/dist/engine/security/integration.test.d.ts.map +1 -0
  378. package/dist/engine/security/integration.test.js +246 -0
  379. package/dist/engine/security/integration.test.js.map +1 -0
  380. package/dist/engine/security/prompt-injection.d.ts +52 -0
  381. package/dist/engine/security/prompt-injection.d.ts.map +1 -0
  382. package/dist/engine/security/prompt-injection.js +78 -0
  383. package/dist/engine/security/prompt-injection.js.map +1 -0
  384. package/dist/engine/security/prompt-injection.test.d.ts +2 -0
  385. package/dist/engine/security/prompt-injection.test.d.ts.map +1 -0
  386. package/dist/engine/security/prompt-injection.test.js +110 -0
  387. package/dist/engine/security/prompt-injection.test.js.map +1 -0
  388. package/dist/engine/security/trust.d.ts +22 -0
  389. package/dist/engine/security/trust.d.ts.map +1 -0
  390. package/dist/engine/security/trust.js +107 -0
  391. package/dist/engine/security/trust.js.map +1 -0
  392. package/dist/engine/security/trust.test.d.ts +2 -0
  393. package/dist/engine/security/trust.test.d.ts.map +1 -0
  394. package/dist/engine/security/trust.test.js +92 -0
  395. package/dist/engine/security/trust.test.js.map +1 -0
  396. package/dist/engine/tools/classify-conversation.d.ts +3 -0
  397. package/dist/engine/tools/classify-conversation.d.ts.map +1 -0
  398. package/dist/engine/tools/classify-conversation.js +28 -0
  399. package/dist/engine/tools/classify-conversation.js.map +1 -0
  400. package/dist/engine/tools/fs-read.d.ts +5 -0
  401. package/dist/engine/tools/fs-read.d.ts.map +1 -0
  402. package/dist/engine/tools/fs-read.js +123 -0
  403. package/dist/engine/tools/fs-read.js.map +1 -0
  404. package/dist/engine/tools/fs-read.test.d.ts +2 -0
  405. package/dist/engine/tools/fs-read.test.d.ts.map +1 -0
  406. package/dist/engine/tools/fs-read.test.js +69 -0
  407. package/dist/engine/tools/fs-read.test.js.map +1 -0
  408. package/dist/engine/tools/fs-write.d.ts +6 -0
  409. package/dist/engine/tools/fs-write.d.ts.map +1 -0
  410. package/dist/engine/tools/fs-write.js +196 -0
  411. package/dist/engine/tools/fs-write.js.map +1 -0
  412. package/dist/engine/tools/fs-write.test.d.ts +2 -0
  413. package/dist/engine/tools/fs-write.test.d.ts.map +1 -0
  414. package/dist/engine/tools/fs-write.test.js +58 -0
  415. package/dist/engine/tools/fs-write.test.js.map +1 -0
  416. package/dist/engine/tools/git.d.ts +17 -0
  417. package/dist/engine/tools/git.d.ts.map +1 -0
  418. package/dist/engine/tools/git.js +501 -0
  419. package/dist/engine/tools/git.js.map +1 -0
  420. package/dist/engine/tools/git.test.d.ts +2 -0
  421. package/dist/engine/tools/git.test.d.ts.map +1 -0
  422. package/dist/engine/tools/git.test.js +47 -0
  423. package/dist/engine/tools/git.test.js.map +1 -0
  424. package/dist/engine/tools/index.d.ts +7 -0
  425. package/dist/engine/tools/index.d.ts.map +1 -0
  426. package/dist/engine/tools/index.js +53 -0
  427. package/dist/engine/tools/index.js.map +1 -0
  428. package/dist/engine/tools/json-schema.d.ts +3 -0
  429. package/dist/engine/tools/json-schema.d.ts.map +1 -0
  430. package/dist/engine/tools/json-schema.js +131 -0
  431. package/dist/engine/tools/json-schema.js.map +1 -0
  432. package/dist/engine/tools/obfuscation.d.ts +12 -0
  433. package/dist/engine/tools/obfuscation.d.ts.map +1 -0
  434. package/dist/engine/tools/obfuscation.js +24 -0
  435. package/dist/engine/tools/obfuscation.js.map +1 -0
  436. package/dist/engine/tools/path-utils.d.ts +3 -0
  437. package/dist/engine/tools/path-utils.d.ts.map +1 -0
  438. package/dist/engine/tools/path-utils.js +20 -0
  439. package/dist/engine/tools/path-utils.js.map +1 -0
  440. package/dist/engine/tools/path-utils.test.d.ts +2 -0
  441. package/dist/engine/tools/path-utils.test.d.ts.map +1 -0
  442. package/dist/engine/tools/path-utils.test.js +38 -0
  443. package/dist/engine/tools/path-utils.test.js.map +1 -0
  444. package/dist/engine/tools/plan.d.ts +13 -0
  445. package/dist/engine/tools/plan.d.ts.map +1 -0
  446. package/dist/engine/tools/plan.js +153 -0
  447. package/dist/engine/tools/plan.js.map +1 -0
  448. package/dist/engine/tools/plan.test.d.ts +2 -0
  449. package/dist/engine/tools/plan.test.d.ts.map +1 -0
  450. package/dist/engine/tools/plan.test.js +106 -0
  451. package/dist/engine/tools/plan.test.js.map +1 -0
  452. package/dist/engine/tools/project-context.d.ts +4 -0
  453. package/dist/engine/tools/project-context.d.ts.map +1 -0
  454. package/dist/engine/tools/project-context.js +232 -0
  455. package/dist/engine/tools/project-context.js.map +1 -0
  456. package/dist/engine/tools/project-context.test.d.ts +2 -0
  457. package/dist/engine/tools/project-context.test.d.ts.map +1 -0
  458. package/dist/engine/tools/project-context.test.js +175 -0
  459. package/dist/engine/tools/project-context.test.js.map +1 -0
  460. package/dist/engine/tools/read-reference.d.ts +3 -0
  461. package/dist/engine/tools/read-reference.d.ts.map +1 -0
  462. package/dist/engine/tools/read-reference.js +41 -0
  463. package/dist/engine/tools/read-reference.js.map +1 -0
  464. package/dist/engine/tools/read-reference.test.d.ts +2 -0
  465. package/dist/engine/tools/read-reference.test.d.ts.map +1 -0
  466. package/dist/engine/tools/read-reference.test.js +57 -0
  467. package/dist/engine/tools/read-reference.test.js.map +1 -0
  468. package/dist/engine/tools/registry.d.ts +15 -0
  469. package/dist/engine/tools/registry.d.ts.map +1 -0
  470. package/dist/engine/tools/registry.js +66 -0
  471. package/dist/engine/tools/registry.js.map +1 -0
  472. package/dist/engine/tools/search.d.ts +3 -0
  473. package/dist/engine/tools/search.d.ts.map +1 -0
  474. package/dist/engine/tools/search.js +70 -0
  475. package/dist/engine/tools/search.js.map +1 -0
  476. package/dist/engine/tools/shell.d.ts +3 -0
  477. package/dist/engine/tools/shell.d.ts.map +1 -0
  478. package/dist/engine/tools/shell.js +69 -0
  479. package/dist/engine/tools/shell.js.map +1 -0
  480. package/dist/engine/tools/shell.test.d.ts +2 -0
  481. package/dist/engine/tools/shell.test.d.ts.map +1 -0
  482. package/dist/engine/tools/shell.test.js +39 -0
  483. package/dist/engine/tools/shell.test.js.map +1 -0
  484. package/dist/engine/tools/task.d.ts +35 -0
  485. package/dist/engine/tools/task.d.ts.map +1 -0
  486. package/dist/engine/tools/task.js +944 -0
  487. package/dist/engine/tools/task.js.map +1 -0
  488. package/dist/engine/tools/task.test.d.ts +2 -0
  489. package/dist/engine/tools/task.test.d.ts.map +1 -0
  490. package/dist/engine/tools/task.test.js +707 -0
  491. package/dist/engine/tools/task.test.js.map +1 -0
  492. package/dist/engine/tools/todo.d.ts +10 -0
  493. package/dist/engine/tools/todo.d.ts.map +1 -0
  494. package/dist/engine/tools/todo.js +56 -0
  495. package/dist/engine/tools/todo.js.map +1 -0
  496. package/dist/engine/tools/todo.test.d.ts +2 -0
  497. package/dist/engine/tools/todo.test.d.ts.map +1 -0
  498. package/dist/engine/tools/todo.test.js +90 -0
  499. package/dist/engine/tools/todo.test.js.map +1 -0
  500. package/dist/engine/tools/web.d.ts +12 -0
  501. package/dist/engine/tools/web.d.ts.map +1 -0
  502. package/dist/engine/tools/web.js +355 -0
  503. package/dist/engine/tools/web.js.map +1 -0
  504. package/dist/engine/tools/web.test.d.ts +2 -0
  505. package/dist/engine/tools/web.test.d.ts.map +1 -0
  506. package/dist/engine/tools/web.test.js +223 -0
  507. package/dist/engine/tools/web.test.js.map +1 -0
  508. package/dist/events/bus.d.ts +20 -0
  509. package/dist/events/bus.d.ts.map +1 -0
  510. package/dist/events/bus.js +93 -0
  511. package/dist/events/bus.js.map +1 -0
  512. package/dist/events/bus.test.d.ts +2 -0
  513. package/dist/events/bus.test.d.ts.map +1 -0
  514. package/dist/events/bus.test.js +147 -0
  515. package/dist/events/bus.test.js.map +1 -0
  516. package/dist/index.d.ts +40 -0
  517. package/dist/index.d.ts.map +1 -0
  518. package/dist/index.js +27 -0
  519. package/dist/index.js.map +1 -0
  520. package/dist/logger.d.ts +11 -0
  521. package/dist/logger.d.ts.map +1 -0
  522. package/dist/logger.js +98 -0
  523. package/dist/logger.js.map +1 -0
  524. package/dist/main.d.ts +2 -0
  525. package/dist/main.d.ts.map +1 -0
  526. package/dist/main.js +520 -0
  527. package/dist/main.js.map +1 -0
  528. package/dist/prompts/modes/act.md +18 -0
  529. package/dist/prompts/modes/plan.md +20 -0
  530. package/dist/prompts/modes/yolo.md +20 -0
  531. package/dist/prompts/prompts/modes/act.md +18 -0
  532. package/dist/prompts/prompts/modes/plan.md +20 -0
  533. package/dist/prompts/prompts/modes/yolo.md +20 -0
  534. package/dist/prompts/prompts/roles/ADMIN.en.md +33 -0
  535. package/dist/prompts/prompts/roles/ADMIN.ru.md +33 -0
  536. package/dist/prompts/prompts/roles/ANALYST.en.md +33 -0
  537. package/dist/prompts/prompts/roles/ANALYST.ru.md +33 -0
  538. package/dist/prompts/prompts/roles/ASSISTANT.en.md +38 -0
  539. package/dist/prompts/prompts/roles/ASSISTANT.ru.md +38 -0
  540. package/dist/prompts/prompts/roles/AUDITOR.en.md +33 -0
  541. package/dist/prompts/prompts/roles/AUDITOR.ru.md +33 -0
  542. package/dist/prompts/prompts/roles/DEVELOPER.en.md +42 -0
  543. package/dist/prompts/prompts/roles/DEVELOPER.ru.md +42 -0
  544. package/dist/prompts/prompts/roles/DEVOPS.en.md +35 -0
  545. package/dist/prompts/prompts/roles/DEVOPS.ru.md +35 -0
  546. package/dist/prompts/prompts/roles/PM.en.md +33 -0
  547. package/dist/prompts/prompts/roles/PM.ru.md +33 -0
  548. package/dist/prompts/prompts/roles/QA.en.md +33 -0
  549. package/dist/prompts/prompts/roles/QA.ru.md +33 -0
  550. package/dist/prompts/prompts/roles/TITLE.ru.md +30 -0
  551. package/dist/prompts/prompts/subagents/explore.ru.md +23 -0
  552. package/dist/prompts/prompts/subagents/general.ru.md +19 -0
  553. package/dist/prompts/prompts/system/COMPRESSED_DIALOG.en.md +5 -0
  554. package/dist/prompts/prompts/system/COMPRESSED_DIALOG.ru.md +5 -0
  555. package/dist/prompts/prompts/system/GATEWAY.en.md +10 -0
  556. package/dist/prompts/prompts/system/GATEWAY.ru.md +10 -0
  557. package/dist/prompts/prompts/system/INTERVIEW.en.md +18 -0
  558. package/dist/prompts/prompts/system/INTERVIEW.ru.md +18 -0
  559. package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.en.md +7 -0
  560. package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.ru.md +7 -0
  561. package/dist/prompts/prompts/system/ROLES_DESCRIPTION.en.md +16 -0
  562. package/dist/prompts/prompts/system/ROLES_DESCRIPTION.ru.md +16 -0
  563. package/dist/prompts/prompts/system/ROUTING.en.md +13 -0
  564. package/dist/prompts/prompts/system/ROUTING.md +6 -0
  565. package/dist/prompts/prompts/system/ROUTING.ru.md +13 -0
  566. package/dist/prompts/prompts/system/RULES.en.md +10 -0
  567. package/dist/prompts/prompts/system/RULES.md +10 -0
  568. package/dist/prompts/prompts/system/RULES.ru.md +10 -0
  569. package/dist/prompts/prompts/system/STICKY_NOTES.en.md +6 -0
  570. package/dist/prompts/prompts/system/STICKY_NOTES.ru.md +6 -0
  571. package/dist/prompts/prompts/system/SUMMARIZER.en.md +54 -0
  572. package/dist/prompts/prompts/system/SUMMARIZER.ru.md +54 -0
  573. package/dist/prompts/prompts/system/USER_CONTEXT.en.md +5 -0
  574. package/dist/prompts/prompts/system/USER_CONTEXT.ru.md +5 -0
  575. package/dist/prompts/roles/ADMIN.en.md +32 -0
  576. package/dist/prompts/roles/ADMIN.ru.md +32 -0
  577. package/dist/prompts/roles/ANALYST.en.md +32 -0
  578. package/dist/prompts/roles/ANALYST.ru.md +32 -0
  579. package/dist/prompts/roles/ASSISTANT.en.md +37 -0
  580. package/dist/prompts/roles/ASSISTANT.ru.md +37 -0
  581. package/dist/prompts/roles/AUDITOR.en.md +32 -0
  582. package/dist/prompts/roles/AUDITOR.ru.md +32 -0
  583. package/dist/prompts/roles/DEVELOPER.en.md +41 -0
  584. package/dist/prompts/roles/DEVELOPER.ru.md +41 -0
  585. package/dist/prompts/roles/DEVOPS.en.md +34 -0
  586. package/dist/prompts/roles/DEVOPS.ru.md +34 -0
  587. package/dist/prompts/roles/PM.en.md +32 -0
  588. package/dist/prompts/roles/PM.ru.md +32 -0
  589. package/dist/prompts/roles/QA.en.md +32 -0
  590. package/dist/prompts/roles/QA.ru.md +32 -0
  591. package/dist/prompts/roles/TITLE.ru.md +38 -0
  592. package/dist/prompts/subagents/explore.ru.md +23 -0
  593. package/dist/prompts/subagents/general.ru.md +19 -0
  594. package/dist/prompts/system/COMPRESSED_DIALOG.en.md +5 -0
  595. package/dist/prompts/system/COMPRESSED_DIALOG.ru.md +5 -0
  596. package/dist/prompts/system/INTERVIEW.en.md +18 -0
  597. package/dist/prompts/system/INTERVIEW.ru.md +18 -0
  598. package/dist/prompts/system/PARTICIPANTS_NOTICE.en.md +7 -0
  599. package/dist/prompts/system/PARTICIPANTS_NOTICE.ru.md +7 -0
  600. package/dist/prompts/system/ROLES_DESCRIPTION.en.md +16 -0
  601. package/dist/prompts/system/ROLES_DESCRIPTION.ru.md +16 -0
  602. package/dist/prompts/system/ROUTING.en.md +13 -0
  603. package/dist/prompts/system/ROUTING.md +6 -0
  604. package/dist/prompts/system/ROUTING.ru.md +13 -0
  605. package/dist/prompts/system/RULES.en.md +10 -0
  606. package/dist/prompts/system/RULES.md +10 -0
  607. package/dist/prompts/system/RULES.ru.md +10 -0
  608. package/dist/prompts/system/STICKY_NOTES.en.md +6 -0
  609. package/dist/prompts/system/STICKY_NOTES.ru.md +6 -0
  610. package/dist/prompts/system/SUMMARIZER.en.md +54 -0
  611. package/dist/prompts/system/SUMMARIZER.ru.md +54 -0
  612. package/dist/prompts/system/USER_CONTEXT.en.md +5 -0
  613. package/dist/prompts/system/USER_CONTEXT.ru.md +5 -0
  614. package/dist/providers/anthropic.d.ts +15 -0
  615. package/dist/providers/anthropic.d.ts.map +1 -0
  616. package/dist/providers/anthropic.js +378 -0
  617. package/dist/providers/anthropic.js.map +1 -0
  618. package/dist/providers/base.d.ts +72 -0
  619. package/dist/providers/base.d.ts.map +1 -0
  620. package/dist/providers/base.js +94 -0
  621. package/dist/providers/base.js.map +1 -0
  622. package/dist/providers/exceptions.d.ts +13 -0
  623. package/dist/providers/exceptions.d.ts.map +1 -0
  624. package/dist/providers/exceptions.js +25 -0
  625. package/dist/providers/exceptions.js.map +1 -0
  626. package/dist/providers/index.d.ts +7 -0
  627. package/dist/providers/index.d.ts.map +1 -0
  628. package/dist/providers/index.js +14 -0
  629. package/dist/providers/index.js.map +1 -0
  630. package/dist/providers/ollama.d.ts +15 -0
  631. package/dist/providers/ollama.d.ts.map +1 -0
  632. package/dist/providers/ollama.js +301 -0
  633. package/dist/providers/ollama.js.map +1 -0
  634. package/dist/providers/openai.d.ts +14 -0
  635. package/dist/providers/openai.d.ts.map +1 -0
  636. package/dist/providers/openai.js +292 -0
  637. package/dist/providers/openai.js.map +1 -0
  638. package/dist/queue/processor.d.ts +51 -0
  639. package/dist/queue/processor.d.ts.map +1 -0
  640. package/dist/queue/processor.js +363 -0
  641. package/dist/queue/processor.js.map +1 -0
  642. package/dist/server/app.d.ts +31 -0
  643. package/dist/server/app.d.ts.map +1 -0
  644. package/dist/server/app.js +573 -0
  645. package/dist/server/app.js.map +1 -0
  646. package/dist/server/chat.d.ts +11 -0
  647. package/dist/server/chat.d.ts.map +1 -0
  648. package/dist/server/chat.js +140 -0
  649. package/dist/server/chat.js.map +1 -0
  650. package/dist/server/routes/agents.d.ts +7 -0
  651. package/dist/server/routes/agents.d.ts.map +1 -0
  652. package/dist/server/routes/agents.js +91 -0
  653. package/dist/server/routes/agents.js.map +1 -0
  654. package/dist/server/routes/auth.d.ts +4 -0
  655. package/dist/server/routes/auth.d.ts.map +1 -0
  656. package/dist/server/routes/auth.js +82 -0
  657. package/dist/server/routes/auth.js.map +1 -0
  658. package/dist/server/routes/fs.d.ts +4 -0
  659. package/dist/server/routes/fs.d.ts.map +1 -0
  660. package/dist/server/routes/fs.js +67 -0
  661. package/dist/server/routes/fs.js.map +1 -0
  662. package/dist/server/routes/health.d.ts +3 -0
  663. package/dist/server/routes/health.d.ts.map +1 -0
  664. package/dist/server/routes/health.js +9 -0
  665. package/dist/server/routes/health.js.map +1 -0
  666. package/dist/server/routes/i18n.d.ts +3 -0
  667. package/dist/server/routes/i18n.d.ts.map +1 -0
  668. package/dist/server/routes/i18n.js +83 -0
  669. package/dist/server/routes/i18n.js.map +1 -0
  670. package/dist/server/routes/mcp.d.ts +15 -0
  671. package/dist/server/routes/mcp.d.ts.map +1 -0
  672. package/dist/server/routes/mcp.js +43 -0
  673. package/dist/server/routes/mcp.js.map +1 -0
  674. package/dist/server/routes/mcp.test.d.ts +2 -0
  675. package/dist/server/routes/mcp.test.d.ts.map +1 -0
  676. package/dist/server/routes/mcp.test.js +88 -0
  677. package/dist/server/routes/mcp.test.js.map +1 -0
  678. package/dist/server/routes/messages.d.ts +5 -0
  679. package/dist/server/routes/messages.d.ts.map +1 -0
  680. package/dist/server/routes/messages.js +122 -0
  681. package/dist/server/routes/messages.js.map +1 -0
  682. package/dist/server/routes/models.d.ts +6 -0
  683. package/dist/server/routes/models.d.ts.map +1 -0
  684. package/dist/server/routes/models.js +96 -0
  685. package/dist/server/routes/models.js.map +1 -0
  686. package/dist/server/routes/projects.d.ts +5 -0
  687. package/dist/server/routes/projects.d.ts.map +1 -0
  688. package/dist/server/routes/projects.js +92 -0
  689. package/dist/server/routes/projects.js.map +1 -0
  690. package/dist/server/routes/projects.test.d.ts +2 -0
  691. package/dist/server/routes/projects.test.d.ts.map +1 -0
  692. package/dist/server/routes/projects.test.js +65 -0
  693. package/dist/server/routes/projects.test.js.map +1 -0
  694. package/dist/server/routes/providers.d.ts +6 -0
  695. package/dist/server/routes/providers.d.ts.map +1 -0
  696. package/dist/server/routes/providers.js +118 -0
  697. package/dist/server/routes/providers.js.map +1 -0
  698. package/dist/server/routes/queue.d.ts +5 -0
  699. package/dist/server/routes/queue.d.ts.map +1 -0
  700. package/dist/server/routes/queue.js +64 -0
  701. package/dist/server/routes/queue.js.map +1 -0
  702. package/dist/server/routes/sessions.d.ts +5 -0
  703. package/dist/server/routes/sessions.d.ts.map +1 -0
  704. package/dist/server/routes/sessions.js +346 -0
  705. package/dist/server/routes/sessions.js.map +1 -0
  706. package/dist/server/routes/sessions.test.d.ts +2 -0
  707. package/dist/server/routes/sessions.test.d.ts.map +1 -0
  708. package/dist/server/routes/sessions.test.js +162 -0
  709. package/dist/server/routes/sessions.test.js.map +1 -0
  710. package/dist/server/routes/settings.d.ts +21 -0
  711. package/dist/server/routes/settings.d.ts.map +1 -0
  712. package/dist/server/routes/settings.js +125 -0
  713. package/dist/server/routes/settings.js.map +1 -0
  714. package/dist/server/routes/settings.test.d.ts +2 -0
  715. package/dist/server/routes/settings.test.d.ts.map +1 -0
  716. package/dist/server/routes/settings.test.js +358 -0
  717. package/dist/server/routes/settings.test.js.map +1 -0
  718. package/dist/server/routes/updates.d.ts +4 -0
  719. package/dist/server/routes/updates.d.ts.map +1 -0
  720. package/dist/server/routes/updates.js +82 -0
  721. package/dist/server/routes/updates.js.map +1 -0
  722. package/dist/server/serialize.d.ts +204 -0
  723. package/dist/server/serialize.d.ts.map +1 -0
  724. package/dist/server/serialize.js +133 -0
  725. package/dist/server/serialize.js.map +1 -0
  726. package/dist/sessions/auto-title.d.ts +5 -0
  727. package/dist/sessions/auto-title.d.ts.map +1 -0
  728. package/dist/sessions/auto-title.js +75 -0
  729. package/dist/sessions/auto-title.js.map +1 -0
  730. package/dist/sessions/manager.d.ts +81 -0
  731. package/dist/sessions/manager.d.ts.map +1 -0
  732. package/dist/sessions/manager.js +508 -0
  733. package/dist/sessions/manager.js.map +1 -0
  734. package/dist/sessions/manager.test.d.ts +2 -0
  735. package/dist/sessions/manager.test.d.ts.map +1 -0
  736. package/dist/sessions/manager.test.js +525 -0
  737. package/dist/sessions/manager.test.js.map +1 -0
  738. package/dist/storage/file-store.d.ts +27 -0
  739. package/dist/storage/file-store.d.ts.map +1 -0
  740. package/dist/storage/file-store.js +398 -0
  741. package/dist/storage/file-store.js.map +1 -0
  742. package/dist/storage/file-store.test.d.ts +2 -0
  743. package/dist/storage/file-store.test.d.ts.map +1 -0
  744. package/dist/storage/file-store.test.js +169 -0
  745. package/dist/storage/file-store.test.js.map +1 -0
  746. package/dist/storage/json-store.d.ts +19 -0
  747. package/dist/storage/json-store.d.ts.map +1 -0
  748. package/dist/storage/json-store.js +85 -0
  749. package/dist/storage/json-store.js.map +1 -0
  750. package/dist/storage/profile-store.d.ts +20 -0
  751. package/dist/storage/profile-store.d.ts.map +1 -0
  752. package/dist/storage/profile-store.js +147 -0
  753. package/dist/storage/profile-store.js.map +1 -0
  754. package/dist/storage/project-store.d.ts +23 -0
  755. package/dist/storage/project-store.d.ts.map +1 -0
  756. package/dist/storage/project-store.js +94 -0
  757. package/dist/storage/project-store.js.map +1 -0
  758. package/dist/storage/project-store.test.d.ts +2 -0
  759. package/dist/storage/project-store.test.d.ts.map +1 -0
  760. package/dist/storage/project-store.test.js +122 -0
  761. package/dist/storage/project-store.test.js.map +1 -0
  762. package/dist/storage/runtime-settings.d.ts +53 -0
  763. package/dist/storage/runtime-settings.d.ts.map +1 -0
  764. package/dist/storage/runtime-settings.js +95 -0
  765. package/dist/storage/runtime-settings.js.map +1 -0
  766. package/dist/update-checker.d.ts +9 -0
  767. package/dist/update-checker.d.ts.map +1 -0
  768. package/dist/update-checker.js +81 -0
  769. package/dist/update-checker.js.map +1 -0
  770. package/package.json +72 -0
  771. package/prompts/modes/act.md +18 -0
  772. package/prompts/modes/plan.md +20 -0
  773. package/prompts/modes/yolo.md +20 -0
  774. package/prompts/roles/ADMIN.en.md +33 -0
  775. package/prompts/roles/ADMIN.ru.md +33 -0
  776. package/prompts/roles/ANALYST.en.md +33 -0
  777. package/prompts/roles/ANALYST.ru.md +33 -0
  778. package/prompts/roles/ASSISTANT.en.md +38 -0
  779. package/prompts/roles/ASSISTANT.ru.md +38 -0
  780. package/prompts/roles/AUDITOR.en.md +33 -0
  781. package/prompts/roles/AUDITOR.ru.md +33 -0
  782. package/prompts/roles/DEVELOPER.en.md +42 -0
  783. package/prompts/roles/DEVELOPER.ru.md +42 -0
  784. package/prompts/roles/DEVOPS.en.md +35 -0
  785. package/prompts/roles/DEVOPS.ru.md +35 -0
  786. package/prompts/roles/PM.en.md +33 -0
  787. package/prompts/roles/PM.ru.md +33 -0
  788. package/prompts/roles/QA.en.md +33 -0
  789. package/prompts/roles/QA.ru.md +33 -0
  790. package/prompts/roles/TITLE.ru.md +30 -0
  791. package/prompts/subagents/explore.ru.md +23 -0
  792. package/prompts/subagents/general.ru.md +19 -0
  793. package/prompts/system/COMPRESSED_DIALOG.en.md +5 -0
  794. package/prompts/system/COMPRESSED_DIALOG.ru.md +5 -0
  795. package/prompts/system/GATEWAY.en.md +10 -0
  796. package/prompts/system/GATEWAY.ru.md +10 -0
  797. package/prompts/system/INTERVIEW.en.md +18 -0
  798. package/prompts/system/INTERVIEW.ru.md +18 -0
  799. package/prompts/system/PARTICIPANTS_NOTICE.en.md +7 -0
  800. package/prompts/system/PARTICIPANTS_NOTICE.ru.md +7 -0
  801. package/prompts/system/ROLES_DESCRIPTION.en.md +16 -0
  802. package/prompts/system/ROLES_DESCRIPTION.ru.md +16 -0
  803. package/prompts/system/ROUTING.en.md +13 -0
  804. package/prompts/system/ROUTING.md +6 -0
  805. package/prompts/system/ROUTING.ru.md +13 -0
  806. package/prompts/system/RULES.en.md +10 -0
  807. package/prompts/system/RULES.md +10 -0
  808. package/prompts/system/RULES.ru.md +10 -0
  809. package/prompts/system/STICKY_NOTES.en.md +6 -0
  810. package/prompts/system/STICKY_NOTES.ru.md +6 -0
  811. package/prompts/system/SUMMARIZER.en.md +54 -0
  812. package/prompts/system/SUMMARIZER.ru.md +54 -0
  813. package/prompts/system/USER_CONTEXT.en.md +5 -0
  814. package/prompts/system/USER_CONTEXT.ru.md +5 -0
@@ -0,0 +1,944 @@
1
+ import { z } from 'zod';
2
+ import { ToolCapability, MessageRole, nowISO, generateId, makeTextPart, TsmState } from '@itphx/synth-shared';
3
+ import { EventBus } from '../../events/bus.js';
4
+ import { deriveSubagentPermission } from '../permission/derive.js';
5
+ import { PermissionEvaluator } from '../permission/evaluator.js';
6
+ import { PermissionApprovalManager } from '../permission/approval.js';
7
+ import { serializeSession, serializeMessage } from '../../server/serialize.js';
8
+ const DEFAULT_SUBAGENT_MAX_STEPS = 15;
9
+ const DEFAULT_LAST_N = 4;
10
+ function messageToLLMMessage(msg) {
11
+ const roleMap = {
12
+ [MessageRole.USER]: 'user',
13
+ [MessageRole.ASSISTANT]: 'assistant',
14
+ [MessageRole.TOOL]: 'tool',
15
+ [MessageRole.SYSTEM]: 'system',
16
+ [MessageRole.SUMMARY]: 'user',
17
+ [MessageRole.DEBUG]: 'user',
18
+ [MessageRole.INFO]: 'user',
19
+ [MessageRole.ERROR]: 'user',
20
+ };
21
+ return {
22
+ id: msg.id,
23
+ role: roleMap[msg.role] || 'user',
24
+ content: msg.content,
25
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
26
+ disabled: false,
27
+ pinned: false,
28
+ branchId: '',
29
+ toolCallId: msg.toolCallId,
30
+ };
31
+ }
32
+ async function publishMessageAdded(eventBus, parentSessionId, childSessionId, msg, index, childSession) {
33
+ const serialized = serializeMessage(msg, index);
34
+ const payload = {
35
+ session_id: childSessionId,
36
+ message: serialized,
37
+ index,
38
+ };
39
+ eventBus.publish(childSessionId, 'message.added', payload);
40
+ eventBus.publish(parentSessionId, 'child.message.added', {
41
+ ...payload,
42
+ child_session_id: childSessionId,
43
+ });
44
+ if (childSession) {
45
+ eventBus.publish(parentSessionId, 'child.session.updated', {
46
+ session: serializeSession(childSession),
47
+ });
48
+ }
49
+ }
50
+ export const taskTool = {
51
+ name: 'task',
52
+ description: 'Launch a new agent to handle complex, multistep tasks autonomously. '
53
+ + 'Available subagent types: "general" (full tool access), "explore" (read-only code exploration). '
54
+ + 'Use for tasks that require multiple tool calls. '
55
+ + 'IMPORTANT: You must NOT ask the user to use the task tool — use it yourself proactively.',
56
+ parameters: z.object({
57
+ description: z.string().describe('A short (3-5 words) description of the task'),
58
+ prompt: z.string().describe('The task for the subagent to perform'),
59
+ subagent_type: z.string().describe('Type of subagent: "general" or "explore"'),
60
+ task_id: z.string().optional().describe('ID for resuming an existing subagent session'),
61
+ context_mode: z.enum(['none', 'inherit', 'summary', 'last_n']).optional()
62
+ .describe('Context passing mode: none — only prompt, inherit — full parent history, summary — compressed via LLM, last_n — last N messages (default: none)'),
63
+ context_count: z.number().int().min(1).max(50).optional()
64
+ .describe('Number of last messages to include (only for last_n mode, default: 4)'),
65
+ model: z.string().optional()
66
+ .describe('Override model for the subagent'),
67
+ provider: z.string().optional()
68
+ .describe('Override provider for the subagent'),
69
+ routing_strategy: z.enum(['auto', 'content', 'cost', 'none']).optional()
70
+ .describe('Routing strategy for the subagent (default: inherit from parent)'),
71
+ }),
72
+ capabilities: [ToolCapability.TASK],
73
+ async execute(args, ctx) {
74
+ const parsed = this.parameters.safeParse(args);
75
+ if (!parsed.success) {
76
+ return { content: `Ошибка аргументов инструмента "${this.name}": ${parsed.error.issues.map(i => `${i.path.join('.') || 'root'}: ${i.message}`).join('; ')}`, isError: true };
77
+ }
78
+ const params = parsed.data;
79
+ const extra = ctx.extra;
80
+ if (!extra?.provider || !extra?.agentRegistry) {
81
+ return {
82
+ content: 'Ошибка: провайдер или реестр агентов недоступны для запуска сабагента',
83
+ isError: true,
84
+ };
85
+ }
86
+ const agentDef = extra.agentRegistry.get(params.subagent_type);
87
+ if (!agentDef) {
88
+ return {
89
+ content: `Сабагент "${params.subagent_type}" не найден. Доступные типы: ${extra.agentRegistry.getSubagents().map((a) => a.id).join(', ')}`,
90
+ isError: true,
91
+ };
92
+ }
93
+ if (agentDef.agentMode !== 'subagent' && agentDef.agentMode !== 'all') {
94
+ return {
95
+ content: `Агент "${params.subagent_type}" не может использоваться как сабагент (agentMode: ${agentDef.agentMode ?? 'primary'})`,
96
+ isError: true,
97
+ };
98
+ }
99
+ const contextMode = params.context_mode || 'none';
100
+ const contextCount = params.context_count || DEFAULT_LAST_N;
101
+ const systemPrompt = agentDef.subagentPrompt || '';
102
+ const tools = extra.agentRegistry.getToolsForAgent(agentDef.id);
103
+ const maxSteps = agentDef.maxSteps ?? DEFAULT_SUBAGENT_MAX_STEPS;
104
+ const effectiveMaxSteps = (maxSteps === 0)
105
+ ? Number.POSITIVE_INFINITY
106
+ : maxSteps;
107
+ const publish = extra.publish;
108
+ // ─── Настройки роутинга для дочерней сессии (AD-034 Фаза 4) ──
109
+ const childRoutingOverrides = {};
110
+ if (params.model)
111
+ childRoutingOverrides.model = params.model;
112
+ if (params.provider)
113
+ childRoutingOverrides.provider = params.provider;
114
+ if (params.routing_strategy) {
115
+ if (params.routing_strategy === 'none') {
116
+ childRoutingOverrides.routingEnabled = false;
117
+ }
118
+ else {
119
+ childRoutingOverrides.routingStrategy = params.routing_strategy;
120
+ }
121
+ }
122
+ // Если subagentRouting включён в routerConfig, наследуем routing от родителя
123
+ const subagentRoutingCfg = extra.routerConfig?.subagent;
124
+ if (subagentRoutingCfg?.enabled && params.routing_strategy !== 'none') {
125
+ childRoutingOverrides.routingEnabled = true;
126
+ // Если есть дефолтная модель саб-агента в конфиге и не переопределена
127
+ if (!params.model && subagentRoutingCfg.model) {
128
+ childRoutingOverrides.model = subagentRoutingCfg.model;
129
+ }
130
+ if (!params.provider && subagentRoutingCfg.provider) {
131
+ childRoutingOverrides.provider = subagentRoutingCfg.provider;
132
+ }
133
+ }
134
+ let childSessionId;
135
+ let childMessages = [];
136
+ let parentNotesText = '';
137
+ // ─── Permissions дочерней сессии (AD-029): наследуем родителя + deny-дополнения ──
138
+ const derivedPermission = deriveSubagentPermission(extra.permissionConfig);
139
+ // ─── Создание дочерней сессии с контекстом ───────────────────────
140
+ if (extra.sessionManager && extra.sessionId) {
141
+ try {
142
+ const parentSession = await extra.sessionManager.getSession(extra.sessionId);
143
+ if (parentSession) {
144
+ // Извлекаем активные заметки родителя для передачи саб-агенту
145
+ const activeNotes = parentSession.stickyNotes.filter((n) => !n.disabled);
146
+ if (activeNotes.length > 0) {
147
+ parentNotesText = activeNotes.map((n) => n.content).join('\n\n---\n\n');
148
+ }
149
+ const effectiveMode = contextMode === 'summary' && !extra.contextOptimizer ? 'none' : contextMode;
150
+ if (effectiveMode === 'inherit') {
151
+ const fork = await extra.sessionManager.forkSession(extra.sessionId, {
152
+ title: `Подзадача: ${params.description}`,
153
+ });
154
+ fork.sessionOrigin = 'subagent';
155
+ fork.userId = parentSession.userId;
156
+ fork.ownerId = parentSession.ownerId;
157
+ fork.mode = parentSession.mode;
158
+ fork.settings = { ...fork.settings, agentRole: params.subagent_type, permission: derivedPermission, planMode: 'auto', ...childRoutingOverrides };
159
+ await extra.sessionManager.updateSession(fork);
160
+ childSessionId = fork.id;
161
+ childMessages = fork.messages;
162
+ }
163
+ else if (effectiveMode === 'last_n') {
164
+ const startIdx = Math.max(0, parentSession.messages.length - contextCount);
165
+ const fork = await extra.sessionManager.forkSession(extra.sessionId, {
166
+ messageIndex: startIdx,
167
+ title: `Подзадача: ${params.description}`,
168
+ });
169
+ fork.sessionOrigin = 'subagent';
170
+ fork.userId = parentSession.userId;
171
+ fork.ownerId = parentSession.ownerId;
172
+ fork.mode = parentSession.mode;
173
+ fork.settings = { ...fork.settings, agentRole: params.subagent_type, permission: derivedPermission, planMode: 'auto', ...childRoutingOverrides };
174
+ await extra.sessionManager.updateSession(fork);
175
+ childSessionId = fork.id;
176
+ childMessages = fork.messages;
177
+ }
178
+ else if (effectiveMode === 'summary') {
179
+ const fork = await extra.sessionManager.forkSession(extra.sessionId, {
180
+ title: `Подзадача: ${params.description}`,
181
+ });
182
+ fork.sessionOrigin = 'subagent';
183
+ fork.userId = parentSession.userId;
184
+ fork.ownerId = parentSession.ownerId;
185
+ fork.mode = parentSession.mode;
186
+ fork.settings = { ...fork.settings, agentRole: params.subagent_type, permission: derivedPermission, planMode: 'auto', ...childRoutingOverrides };
187
+ await extra.sessionManager.updateSession(fork);
188
+ childSessionId = fork.id;
189
+ childMessages = fork.messages;
190
+ try {
191
+ const summaryMsg = await extra.contextOptimizer.summarize(fork);
192
+ if (summaryMsg.content) {
193
+ await extra.sessionManager.addMessage(childSessionId, {
194
+ ...summaryMsg,
195
+ id: generateId(),
196
+ origin: 'local',
197
+ hidden: false,
198
+ });
199
+ }
200
+ }
201
+ catch {
202
+ // fallback: без саммари, только prompt с полной историей
203
+ }
204
+ // Всегда отключаем унаследованные сообщения — в summary-режиме
205
+ // они заменены суммаризацией (или мы fallback-нули без неё)
206
+ {
207
+ const child = await extra.sessionManager.getSession(childSessionId);
208
+ if (child) {
209
+ let changed = false;
210
+ for (const msg of child.messages) {
211
+ if (msg.role !== MessageRole.SUMMARY && !msg.disabled) {
212
+ msg.disabled = true;
213
+ changed = true;
214
+ }
215
+ }
216
+ if (changed) {
217
+ await extra.sessionManager.updateSession(child);
218
+ }
219
+ childMessages = child.messages;
220
+ }
221
+ }
222
+ }
223
+ else {
224
+ // none mode (default)
225
+ const child = await extra.sessionManager.createSession({
226
+ title: `Подзадача: ${params.description}`,
227
+ projectId: parentSession.projectId,
228
+ engine: parentSession.engine,
229
+ parentId: extra.sessionId,
230
+ sessionOrigin: 'subagent',
231
+ settings: { ...parentSession.settings, agentRole: params.subagent_type, permission: derivedPermission, planMode: 'auto', ...childRoutingOverrides },
232
+ });
233
+ child.userId = parentSession.userId;
234
+ child.ownerId = parentSession.ownerId;
235
+ child.mode = parentSession.mode;
236
+ await extra.sessionManager.updateSession(child);
237
+ childSessionId = child.id;
238
+ }
239
+ if (extra.eventBus && childSessionId) {
240
+ const child = await extra.sessionManager.getSession(childSessionId);
241
+ if (child) {
242
+ extra.eventBus.publish(extra.sessionId, 'session.created', serializeSession(child));
243
+ }
244
+ }
245
+ }
246
+ }
247
+ catch {
248
+ // не фатально — продолжаем без дочерней сессии
249
+ }
250
+ }
251
+ // ─── Сборка LLM-сообщений ────────────────────────────────────────
252
+ const llmSystemPrompt = (() => {
253
+ let prompt = systemPrompt;
254
+ // Заметки родительской сессии — передаём во всех режимах с контекстом
255
+ // (inherit, summary, last_n), но НЕ в none (чистый лист)
256
+ if (contextMode !== 'none' && parentNotesText) {
257
+ prompt += `\n\n[PARENT NOTES]\nНиже — важные заметки из основной сессии. Учитывай их при выполнении задачи.\n\n${parentNotesText}`;
258
+ }
259
+ if (contextMode === 'summary' && childMessages.length > 0) {
260
+ const summaryMsg = childMessages.find(m => m.role === MessageRole.SUMMARY);
261
+ if (summaryMsg?.content) {
262
+ prompt += `\n\n[PARENT SUMMARY]\n${summaryMsg.content}`;
263
+ }
264
+ }
265
+ // ─── Информация о маршрутизации (AD-034 Фаза 4) ──────────────
266
+ // Загружается из контекстных файлов prompts/system/ROUTING.{lang}.md
267
+ const parentSettings = extra.parentSessionSettings;
268
+ const routingEnabled = extra.routerConfig?.enabled && (parentSettings?.routingEnabled !== false);
269
+ const shouldShowRouting = routingEnabled || childRoutingOverrides.model || childRoutingOverrides.provider;
270
+ if (shouldShowRouting && extra.routerConfig) {
271
+ const lang = parentSettings?.language || 'ru';
272
+ const template = extra.contextConfig?.getRoutingInstructions(lang) || '';
273
+ // Строим список доступных моделей
274
+ const contentCfg = extra.routerConfig.content;
275
+ const effectiveContent = parentSettings?.routingContent;
276
+ const routingLines = [];
277
+ const addLine = (cat, cfg, globalCfg) => {
278
+ if (cfg?.provider && cfg?.model) {
279
+ routingLines.push(`- ${cat} (сессия): **${cfg.provider}/${cfg.model}**`);
280
+ }
281
+ else if (globalCfg.provider && globalCfg.model) {
282
+ routingLines.push(`- ${cat} (глобально): **${globalCfg.provider}/${globalCfg.model}**`);
283
+ }
284
+ };
285
+ addLine('coding', effectiveContent?.coding, contentCfg.coding);
286
+ addLine('chat', effectiveContent?.chat, contentCfg.chat);
287
+ addLine('research', effectiveContent?.research, contentCfg.research);
288
+ const modelsText = routingLines.length > 0
289
+ ? 'Доступные провайдеры и модели:\n' + routingLines.join('\n')
290
+ : '';
291
+ const routingBlock = template
292
+ ? template.replace('{routing_models}', modelsText ? modelsText + '\n' : '')
293
+ : ('\n\n[ROUTING]\n\n' +
294
+ 'Для запуска дочерних агентов ты можешь указать модель:\n' +
295
+ '- Используй параметр `model` для выбора модели под задачу\n' +
296
+ (modelsText ? modelsText + '\n' : '') +
297
+ '- Если модель не указана, будет использована стратегия родительской сессии\n');
298
+ prompt += routingBlock;
299
+ }
300
+ return prompt;
301
+ })();
302
+ // ─── Выбор провайдера для саб-агента через роутер (AD-034 Фаза 4) ──
303
+ let effectiveProvider = extra.provider;
304
+ let routingDecisionInfo;
305
+ const parentSettings = extra.parentSessionSettings;
306
+ if (extra.modelRouter && (parentSettings?.routingEnabled !== false) && extra.routerConfig) {
307
+ try {
308
+ const decision = extra.modelRouter.route({
309
+ sessionSettings: parentSettings,
310
+ userMessage: params.prompt,
311
+ systemPrompt: llmSystemPrompt,
312
+ });
313
+ const routedProvider = extra.modelRouter.getProvider(decision);
314
+ if (routedProvider && (decision.providerName !== parentSettings?.provider || decision.modelName !== parentSettings?.model)) {
315
+ effectiveProvider = routedProvider;
316
+ routingDecisionInfo = {
317
+ providerName: decision.providerName,
318
+ modelName: decision.modelName,
319
+ strategy: decision.strategy,
320
+ };
321
+ }
322
+ }
323
+ catch {
324
+ // fallback на провайдер родителя
325
+ }
326
+ }
327
+ const messages = [
328
+ {
329
+ id: '',
330
+ role: 'system',
331
+ content: llmSystemPrompt,
332
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
333
+ disabled: false,
334
+ pinned: false,
335
+ branchId: '',
336
+ },
337
+ ];
338
+ if ((contextMode === 'inherit' || contextMode === 'last_n') && childMessages.length > 0) {
339
+ for (const msg of childMessages) {
340
+ if (msg.hidden || msg.disabled)
341
+ continue;
342
+ messages.push(messageToLLMMessage(msg));
343
+ }
344
+ }
345
+ const userPromptMsg = {
346
+ id: '',
347
+ role: 'user',
348
+ content: params.prompt,
349
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
350
+ disabled: false,
351
+ pinned: false,
352
+ branchId: '',
353
+ };
354
+ messages.push(userPromptMsg);
355
+ // Сохранить промпт в дочернюю сессию
356
+ if (childSessionId && extra.sessionManager) {
357
+ try {
358
+ const userMsg = {
359
+ id: generateId(),
360
+ role: MessageRole.USER,
361
+ seq: childMessages.length + 1,
362
+ origin: 'local',
363
+ parts: [makeTextPart(params.prompt)],
364
+ content: params.prompt,
365
+ createdAt: nowISO(),
366
+ disabled: false,
367
+ pinned: false,
368
+ hidden: false,
369
+ agentRole: extra.callerAgentRole,
370
+ author: extra.callerAgentRole,
371
+ };
372
+ const updated = await extra.sessionManager.addMessage(childSessionId, userMsg);
373
+ if (updated) {
374
+ childMessages = updated.messages;
375
+ if (extra.eventBus) {
376
+ const idx = updated.messages.length - 1;
377
+ await publishMessageAdded(extra.eventBus, extra.sessionId, childSessionId, updated.messages[idx], idx, updated);
378
+ }
379
+ }
380
+ }
381
+ catch {
382
+ // не фатально
383
+ }
384
+ }
385
+ const cancelToken = { cancelled: false, cancel: () => { cancelToken.cancelled = true; } };
386
+ // ─── Permissions саб-агента (AD-029): проверка перед каждым tool_call ──
387
+ // Дочерняя сессия наследует permissions родителя (deriveSubagentPermission).
388
+ // ask-запросы публикуются в EventBus РОДИТЕЛЬСКОЙ сессии — подтверждение
389
+ // видит пользователь основной сессии, approval_id связывает ответ.
390
+ const childEvaluator = new PermissionEvaluator(derivedPermission);
391
+ const childApprovalManager = new PermissionApprovalManager(extra.eventBus ?? new EventBus());
392
+ let childSessionMode = 'act';
393
+ let childPlanApproved = false;
394
+ let childPlanMode = 'auto';
395
+ let childMcpToolSettings;
396
+ if (childSessionId && extra.sessionManager) {
397
+ try {
398
+ const child = await extra.sessionManager.getSession(childSessionId);
399
+ if (child) {
400
+ childSessionMode = child.mode ?? 'act';
401
+ childPlanApproved = Boolean(child.planContent);
402
+ childPlanMode = child.settings.planMode ?? 'auto';
403
+ childMcpToolSettings = child.settings.mcpToolSettings;
404
+ }
405
+ }
406
+ catch {
407
+ // не фатально — остаёмся в act/auto
408
+ }
409
+ }
410
+ try {
411
+ let finalContent = '';
412
+ let iteration = 0;
413
+ const doomTracker = new Map();
414
+ let subagentReasoning = '';
415
+ let subagentDenied = false;
416
+ const allSubagentReasoning = [];
417
+ const allSubagentIntermediateTexts = [];
418
+ const allSubagentToolCalls = [];
419
+ while (iteration < effectiveMaxSteps) {
420
+ if (cancelToken.cancelled)
421
+ break;
422
+ let accumulatedContent = '';
423
+ let toolCalls = [];
424
+ let reasoning = '';
425
+ try {
426
+ for await (const chunk of effectiveProvider.chatAsync(messages, systemPrompt || undefined, tools, undefined, cancelToken)) {
427
+ if (cancelToken.cancelled)
428
+ break;
429
+ if (chunk.isFinal) {
430
+ accumulatedContent = chunk.content;
431
+ reasoning = chunk.reasoning || reasoning;
432
+ }
433
+ else {
434
+ accumulatedContent += chunk.content;
435
+ }
436
+ if (chunk.toolCalls && chunk.toolCalls.length > 0) {
437
+ toolCalls = chunk.toolCalls;
438
+ }
439
+ }
440
+ }
441
+ catch (err) {
442
+ return {
443
+ content: `Ошибка выполнения сабагента "${params.subagent_type}": ${String(err)}`,
444
+ isError: true,
445
+ metadata: { subagent_type: params.subagent_type },
446
+ };
447
+ }
448
+ if (cancelToken.cancelled)
449
+ break;
450
+ if (reasoning) {
451
+ allSubagentReasoning.push({ text: reasoning, iteration });
452
+ }
453
+ if (!toolCalls || toolCalls.length === 0) {
454
+ finalContent = accumulatedContent;
455
+ if (reasoning)
456
+ subagentReasoning = reasoning;
457
+ // Сохранить финальный ответ ассистента в дочернюю сессию
458
+ if (childSessionId && extra.sessionManager) {
459
+ try {
460
+ const assistantMsg = {
461
+ id: generateId(),
462
+ role: MessageRole.ASSISTANT,
463
+ seq: 0,
464
+ origin: 'local',
465
+ parts: [makeTextPart(accumulatedContent)],
466
+ content: accumulatedContent,
467
+ createdAt: nowISO(),
468
+ disabled: false,
469
+ pinned: false,
470
+ hidden: false,
471
+ agentRole: params.subagent_type,
472
+ reasoning: reasoning || undefined,
473
+ };
474
+ const updated = await extra.sessionManager.addMessage(childSessionId, assistantMsg);
475
+ if (updated && extra.eventBus) {
476
+ const idx = updated.messages.length - 1;
477
+ await publishMessageAdded(extra.eventBus, extra.sessionId, childSessionId, updated.messages[idx], idx, updated);
478
+ }
479
+ }
480
+ catch {
481
+ // не фатально
482
+ }
483
+ }
484
+ break;
485
+ }
486
+ if (accumulatedContent) {
487
+ allSubagentIntermediateTexts.push({ text: accumulatedContent, iteration });
488
+ }
489
+ iteration++;
490
+ // Сохранить ответ ассистента с tool calls в дочернюю сессию
491
+ if (childSessionId && extra.sessionManager) {
492
+ try {
493
+ const assistantMsg = {
494
+ id: generateId(),
495
+ role: MessageRole.ASSISTANT,
496
+ seq: 0,
497
+ origin: 'local',
498
+ parts: [makeTextPart(accumulatedContent || '')],
499
+ content: accumulatedContent || '',
500
+ createdAt: nowISO(),
501
+ disabled: false,
502
+ pinned: false,
503
+ hidden: false,
504
+ agentRole: params.subagent_type,
505
+ reasoning: reasoning || undefined,
506
+ };
507
+ const updated = await extra.sessionManager.addMessage(childSessionId, assistantMsg);
508
+ if (updated && extra.eventBus) {
509
+ const idx = updated.messages.length - 1;
510
+ await publishMessageAdded(extra.eventBus, extra.sessionId, childSessionId, updated.messages[idx], idx, updated);
511
+ }
512
+ }
513
+ catch {
514
+ // не фатально
515
+ }
516
+ }
517
+ messages.push({
518
+ id: '',
519
+ role: 'assistant',
520
+ content: accumulatedContent || '',
521
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
522
+ disabled: false,
523
+ pinned: false,
524
+ branchId: '',
525
+ toolUse: toolCalls,
526
+ });
527
+ for (const tc of toolCalls) {
528
+ const tcId = tc.id || `subcall_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
529
+ const func = tc.function;
530
+ if (!func?.name)
531
+ continue;
532
+ const toolName = func.name;
533
+ let toolArgs;
534
+ if (typeof func.arguments === 'string') {
535
+ try {
536
+ toolArgs = JSON.parse(func.arguments);
537
+ }
538
+ catch {
539
+ toolArgs = {};
540
+ }
541
+ }
542
+ else {
543
+ toolArgs = func.arguments || {};
544
+ }
545
+ const tcStartedAt = new Date().toISOString();
546
+ const doomKey = `${toolName}:${JSON.stringify(toolArgs)}`;
547
+ const doomCount = (doomTracker.get(doomKey) || 0) + 1;
548
+ doomTracker.set(doomKey, doomCount);
549
+ if (doomCount >= 3) {
550
+ const doomMsg = {
551
+ id: '', role: 'tool',
552
+ content: `Ошибка: инструмент "${toolName}" вызван ${doomCount} раз(а) с одинаковыми аргументами. Цикл прерван.`,
553
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
554
+ disabled: false, pinned: false, branchId: '',
555
+ toolCallId: tcId,
556
+ };
557
+ messages.push(doomMsg);
558
+ if (childSessionId && extra.sessionManager) {
559
+ try {
560
+ const toolResultMsg = {
561
+ id: generateId(),
562
+ role: MessageRole.TOOL,
563
+ seq: 0,
564
+ origin: 'local',
565
+ parts: [makeTextPart(doomMsg.content)],
566
+ content: doomMsg.content,
567
+ createdAt: nowISO(),
568
+ disabled: false,
569
+ pinned: false,
570
+ hidden: false,
571
+ toolCallId: tcId,
572
+ };
573
+ const updated = await extra.sessionManager.addMessage(childSessionId, toolResultMsg);
574
+ if (updated && extra.eventBus) {
575
+ const idx = updated.messages.length - 1;
576
+ await publishMessageAdded(extra.eventBus, extra.sessionId, childSessionId, updated.messages[idx], idx, updated);
577
+ }
578
+ }
579
+ catch {
580
+ // не фатально
581
+ }
582
+ }
583
+ continue;
584
+ }
585
+ publish?.('tool_call.started', {
586
+ stream_id: extra.streamId,
587
+ session_id: extra.sessionId,
588
+ call_id: tcId,
589
+ name: toolName,
590
+ arguments: toolArgs,
591
+ iteration,
592
+ });
593
+ const toolDef = extra.toolRegistry?.get(toolName);
594
+ let toolResult;
595
+ let subagentUserDenied = false;
596
+ // AD-029: permission-check саб-агента — permissions дочерней сессии
597
+ // (родитель + deny-дополнения) применяются к каждому tool_call.
598
+ const permissionDecision = childEvaluator.check({
599
+ toolName,
600
+ params: toolArgs,
601
+ workingDir: ctx.workingDir,
602
+ capabilities: toolDef?.capabilities,
603
+ sessionMode: childSessionMode,
604
+ planMode: childPlanMode,
605
+ planApproved: childPlanApproved,
606
+ mcpToolSettings: childMcpToolSettings,
607
+ });
608
+ if (permissionDecision.action === 'deny') {
609
+ toolResult = {
610
+ content: `Permission denied: ${permissionDecision.reason}`,
611
+ isError: true,
612
+ metadata: {
613
+ permission: {
614
+ action: 'deny',
615
+ reason: permissionDecision.reason,
616
+ matched_rule: permissionDecision.matchedRule,
617
+ },
618
+ },
619
+ };
620
+ }
621
+ else if (permissionDecision.action === 'ask') {
622
+ // ask публикуется в родительскую сессию (extra.sessionId) —
623
+ // пользователь основной сессии видит запрос и отвечает.
624
+ const approval = await childApprovalManager.waitForDecision(extra.sessionId, {
625
+ approvalId: `approval_${tcId}`,
626
+ callId: tcId,
627
+ toolName,
628
+ arguments: toolArgs,
629
+ reason: permissionDecision.reason,
630
+ }, derivedPermission.askTimeoutMs);
631
+ if (approval.approved) {
632
+ if (approval.once === false) {
633
+ // «Разрешить в сессии» — allow-правило в permissions дочерней сессии
634
+ derivedPermission.rules[toolName] = 'allow';
635
+ if (childSessionId && extra.sessionManager) {
636
+ try {
637
+ const child = await extra.sessionManager.getSession(childSessionId);
638
+ if (child) {
639
+ child.settings.permission = { ...derivedPermission };
640
+ await extra.sessionManager.updateSession(child);
641
+ }
642
+ }
643
+ catch {
644
+ // не фатально
645
+ }
646
+ }
647
+ }
648
+ if (toolDef) {
649
+ const parsed2 = toolDef.parameters.safeParse(toolArgs);
650
+ if (!parsed2.success) {
651
+ toolResult = {
652
+ content: `Ошибка аргументов инструмента "${toolName}": ${parsed2.error.issues.map(i => `${i.path.join('.') || 'root'}: ${i.message}`).join('; ')}`,
653
+ isError: true,
654
+ };
655
+ }
656
+ else {
657
+ try {
658
+ toolResult = await toolDef.execute(parsed2.data, {
659
+ ...ctx,
660
+ abortSignal: ctx.abortSignal,
661
+ extra: extra,
662
+ });
663
+ }
664
+ catch (execError) {
665
+ toolResult = {
666
+ content: `Ошибка исполнения инструмента "${toolName}": ${String(execError)}`,
667
+ isError: true,
668
+ };
669
+ }
670
+ }
671
+ }
672
+ else {
673
+ toolResult = {
674
+ content: `Инструмент "${toolName}" не найден`,
675
+ isError: true,
676
+ };
677
+ }
678
+ }
679
+ else {
680
+ const why = approval.timeout
681
+ ? 'истекло время ожидания подтверждения'
682
+ : approval.noSubscribers
683
+ ? 'нет подключённого пользователя для подтверждения'
684
+ : 'отклонено пользователем';
685
+ toolResult = {
686
+ content: `Permission denied: ${permissionDecision.reason} (${why})`,
687
+ isError: true,
688
+ metadata: {
689
+ permission: {
690
+ action: 'deny',
691
+ reason: permissionDecision.reason,
692
+ matched_rule: permissionDecision.matchedRule,
693
+ },
694
+ },
695
+ };
696
+ subagentUserDenied = !approval.timeout && !approval.noSubscribers;
697
+ }
698
+ }
699
+ else {
700
+ // allow — обычное выполнение
701
+ if (toolDef) {
702
+ const parsed2 = toolDef.parameters.safeParse(toolArgs);
703
+ if (!parsed2.success) {
704
+ toolResult = {
705
+ content: `Ошибка аргументов инструмента "${toolName}": ${parsed2.error.issues.map(i => `${i.path.join('.') || 'root'}: ${i.message}`).join('; ')}`,
706
+ isError: true,
707
+ };
708
+ }
709
+ else {
710
+ try {
711
+ toolResult = await toolDef.execute(parsed2.data, {
712
+ ...ctx,
713
+ abortSignal: ctx.abortSignal,
714
+ extra: extra,
715
+ });
716
+ }
717
+ catch (execError) {
718
+ toolResult = {
719
+ content: `Ошибка исполнения инструмента "${toolName}": ${String(execError)}`,
720
+ isError: true,
721
+ };
722
+ }
723
+ }
724
+ }
725
+ else {
726
+ toolResult = {
727
+ content: `Инструмент "${toolName}" не найден`,
728
+ isError: true,
729
+ };
730
+ }
731
+ }
732
+ publish?.('tool_call.result', {
733
+ stream_id: extra.streamId,
734
+ session_id: extra.sessionId,
735
+ call_id: tcId,
736
+ name: toolName,
737
+ result: toolResult,
738
+ iteration,
739
+ });
740
+ allSubagentToolCalls.push({
741
+ name: toolName,
742
+ args: toolArgs,
743
+ id: tcId,
744
+ result: { content: toolResult.content, isError: toolResult.isError },
745
+ started_at: tcStartedAt,
746
+ completed_at: new Date().toISOString(),
747
+ iteration,
748
+ });
749
+ const toolResultLLMMsg = {
750
+ id: '', role: 'tool',
751
+ content: toolResult.content,
752
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
753
+ disabled: false, pinned: false, branchId: '',
754
+ toolCallId: tcId,
755
+ };
756
+ messages.push(toolResultLLMMsg);
757
+ // Сохранить tool_result в дочернюю сессию
758
+ if (childSessionId && extra.sessionManager) {
759
+ try {
760
+ const toolResultMsg = {
761
+ id: generateId(),
762
+ role: MessageRole.TOOL,
763
+ seq: 0,
764
+ origin: 'local',
765
+ parts: [makeTextPart(toolResult.content)],
766
+ content: toolResult.content,
767
+ createdAt: nowISO(),
768
+ disabled: false,
769
+ pinned: false,
770
+ hidden: false,
771
+ toolCallId: tcId,
772
+ };
773
+ const updated = await extra.sessionManager.addMessage(childSessionId, toolResultMsg);
774
+ if (updated && extra.eventBus) {
775
+ const idx = updated.messages.length - 1;
776
+ await publishMessageAdded(extra.eventBus, extra.sessionId, childSessionId, updated.messages[idx], idx, updated);
777
+ }
778
+ }
779
+ catch {
780
+ // не фатально
781
+ }
782
+ }
783
+ // AD-029: пользователь отклонил ask саб-агента — прекращаем выполнение.
784
+ if (subagentUserDenied) {
785
+ subagentDenied = true;
786
+ break;
787
+ }
788
+ }
789
+ publish?.('tool_call.loop', {
790
+ stream_id: extra.streamId,
791
+ session_id: extra.sessionId,
792
+ iteration,
793
+ total_tool_calls: toolCalls.length,
794
+ });
795
+ if (subagentDenied)
796
+ break;
797
+ }
798
+ if (subagentDenied && !finalContent) {
799
+ finalContent = 'Обработка остановлена: пользователь отклонил запрос на выполнение инструмента';
800
+ }
801
+ const output = finalContent || '(пустой ответ сабагента)';
802
+ // ─── Quality check результата саб-агента (AD-034 Фаза 4) ─────
803
+ let qaPass;
804
+ let qaReason;
805
+ let qualityOutput = output;
806
+ const escalationCfg = extra.routerConfig?.escalation;
807
+ const sessionEscalation = extra.parentSessionSettings?.routingEscalation;
808
+ const escalationEnabled = sessionEscalation?.enabled ?? escalationCfg?.enabled ?? false;
809
+ if (extra.modelRouter && escalationEnabled && finalContent && routingDecisionInfo) {
810
+ try {
811
+ const qaResult = await extra.modelRouter.checkQuality(finalContent, {
812
+ providerName: routingDecisionInfo.providerName,
813
+ modelName: routingDecisionInfo.modelName,
814
+ reason: routingDecisionInfo.strategy,
815
+ strategy: routingDecisionInfo.strategy,
816
+ }, extra.parentSessionSettings);
817
+ qaPass = qaResult.pass;
818
+ qaReason = qaResult.reason;
819
+ // Пометить QA-информацию в дочерней сессии
820
+ if (childSessionId && extra.sessionManager) {
821
+ try {
822
+ const childSession = await extra.sessionManager.getSession(childSessionId);
823
+ if (childSession) {
824
+ const lastAssistantMsg = [...childSession.messages].reverse()
825
+ .find(m => m.role === MessageRole.ASSISTANT);
826
+ if (lastAssistantMsg) {
827
+ lastAssistantMsg.qa_pass = qaResult.pass;
828
+ lastAssistantMsg.qa_reason = qaResult.reason;
829
+ await extra.sessionManager.updateSession(childSession);
830
+ }
831
+ }
832
+ }
833
+ catch {
834
+ // не фатально
835
+ }
836
+ }
837
+ // Эскалация на fallback-модель при FAIL
838
+ if (!qaResult.pass) {
839
+ const fallbackProvider = sessionEscalation?.fallbackProvider || escalationCfg?.fallbackProvider;
840
+ const fallbackModel = sessionEscalation?.fallbackModel || escalationCfg?.fallbackModel;
841
+ if (fallbackProvider && fallbackModel && extra.modelRouter) {
842
+ const fbDecision = {
843
+ providerName: fallbackProvider,
844
+ modelName: fallbackModel,
845
+ reason: 'escalation_fallback',
846
+ strategy: 'default',
847
+ };
848
+ const fbEffectiveProvider = extra.modelRouter.getProvider(fbDecision);
849
+ if (fbEffectiveProvider) {
850
+ try {
851
+ // Перевызываем с fallback-моделью (только последний user-запрос)
852
+ const fbMessages = [messages[0]];
853
+ // Добавляем только user-сообщение без tool-результатов
854
+ const userMsg = messages.find(m => m.role === 'user');
855
+ if (userMsg)
856
+ fbMessages.push(userMsg);
857
+ const fbResponse = await fbEffectiveProvider.chat(fbMessages, systemPrompt || undefined, undefined, false);
858
+ if (fbResponse.content) {
859
+ finalContent = fbResponse.content;
860
+ qualityOutput = fbResponse.content;
861
+ qaPass = true;
862
+ qaReason = `Эскалация на ${fallbackProvider}/${fallbackModel}: ${qaResult.reason}`;
863
+ routingDecisionInfo = {
864
+ providerName: fallbackProvider,
865
+ modelName: fallbackModel,
866
+ strategy: 'escalation_fallback',
867
+ };
868
+ }
869
+ }
870
+ catch {
871
+ // fallback не удался, оставляем оригинальный ответ
872
+ }
873
+ }
874
+ }
875
+ }
876
+ }
877
+ catch {
878
+ // QA не удался, не блокируем
879
+ }
880
+ }
881
+ // Финализировать дочернюю сессию — обновить TSM
882
+ if (childSessionId && extra.sessionManager) {
883
+ try {
884
+ const childSession = await extra.sessionManager.getSession(childSessionId);
885
+ if (childSession) {
886
+ childSession.status.state = TsmState.DONE;
887
+ childSession.updatedAt = nowISO();
888
+ await extra.sessionManager.updateSession(childSession);
889
+ if (extra.eventBus) {
890
+ extra.eventBus.publish(childSessionId, 'session.updated', {
891
+ session_id: childSessionId,
892
+ status: { state: TsmState.DONE },
893
+ });
894
+ extra.eventBus.publish(extra.sessionId, 'child.session.updated', {
895
+ session: serializeSession(childSession),
896
+ });
897
+ }
898
+ }
899
+ }
900
+ catch {
901
+ // не фатально
902
+ }
903
+ }
904
+ // ─── Формирование результата tool_result ──────────────────────
905
+ const qualityBlock = qaPass !== undefined
906
+ ? `<quality pass="${qaPass}" reason="${qaReason || ''}"/>\n`
907
+ : '';
908
+ const routedByBlock = routingDecisionInfo && routingDecisionInfo.strategy !== 'default'
909
+ ? `<routed_by strategy="${routingDecisionInfo.strategy}" provider="${routingDecisionInfo.providerName}" model="${routingDecisionInfo.modelName}"/>\n`
910
+ : '';
911
+ const qaWarningText = qaPass === false
912
+ ? `\n\n⚠️ Ответ не прошёл контроль качества: ${qaReason || 'неизвестная причина'}`
913
+ : '';
914
+ return {
915
+ content: `<task_result>\n<summary>${params.description}</summary>\n${qualityBlock}${routedByBlock}\n${qualityOutput}${qaWarningText}\n</task_result>`,
916
+ metadata: {
917
+ subagent_type: params.subagent_type,
918
+ description: params.description,
919
+ context_mode: contextMode,
920
+ steps: iteration,
921
+ child_session_id: childSessionId,
922
+ reasoning: subagentReasoning || undefined,
923
+ reasoning_blocks: allSubagentReasoning.length > 0 ? allSubagentReasoning : undefined,
924
+ intermediate_text_blocks: allSubagentIntermediateTexts.length > 0 ? allSubagentIntermediateTexts : undefined,
925
+ tool_calls: allSubagentToolCalls.length > 0 ? allSubagentToolCalls : undefined,
926
+ final_content: finalContent || undefined,
927
+ qa_pass: qaPass,
928
+ qa_reason: qaReason || undefined,
929
+ routing_strategy: routingDecisionInfo?.strategy,
930
+ routing_provider: routingDecisionInfo?.providerName,
931
+ routing_model: routingDecisionInfo?.modelName,
932
+ },
933
+ };
934
+ }
935
+ catch (err) {
936
+ return {
937
+ content: `Ошибка выполнения сабагента "${params.subagent_type}": ${String(err)}`,
938
+ isError: true,
939
+ metadata: { subagent_type: params.subagent_type },
940
+ };
941
+ }
942
+ },
943
+ };
944
+ //# sourceMappingURL=task.js.map