@itphx/synth-core 0.2.0 → 0.4.4

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 (670) hide show
  1. package/definitions/protected-paths.json +36 -0
  2. package/definitions/shell-policy.json +36 -0
  3. package/dist/auth/local.d.ts +14 -0
  4. package/dist/auth/local.d.ts.map +1 -1
  5. package/dist/auth/local.js +63 -11
  6. package/dist/auth/local.js.map +1 -1
  7. package/dist/auth/local.test.js +59 -0
  8. package/dist/auth/local.test.js.map +1 -1
  9. package/dist/definitions/protected-paths.json +36 -0
  10. package/dist/definitions/shell-policy.json +36 -0
  11. package/dist/engine/agents/definitions/admin.json +3 -1
  12. package/dist/engine/agents/definitions/analyst.json +3 -1
  13. package/dist/engine/agents/definitions/assistant.json +2 -2
  14. package/dist/engine/agents/definitions/auditor.json +4 -1
  15. package/dist/engine/agents/definitions/developer.json +4 -1
  16. package/dist/engine/agents/definitions/devops.json +4 -1
  17. package/dist/engine/agents/definitions/explore.json +3 -3
  18. package/dist/engine/agents/definitions/general.json +2 -2
  19. package/dist/engine/agents/definitions/pm.json +5 -1
  20. package/dist/engine/agents/definitions/qa.json +4 -1
  21. package/dist/engine/agents/definitions/title.json +2 -2
  22. package/dist/engine/agents/index.d.ts +4 -0
  23. package/dist/engine/agents/index.d.ts.map +1 -1
  24. package/dist/engine/agents/index.js +9 -3
  25. package/dist/engine/agents/index.js.map +1 -1
  26. package/dist/engine/agents/mode.d.ts +5 -3
  27. package/dist/engine/agents/mode.d.ts.map +1 -1
  28. package/dist/engine/agents/mode.js +6 -6
  29. package/dist/engine/agents/mode.js.map +1 -1
  30. package/dist/engine/agents/mode.test.js +9 -3
  31. package/dist/engine/agents/mode.test.js.map +1 -1
  32. package/dist/engine/agents/normalize.d.ts +9 -0
  33. package/dist/engine/agents/normalize.d.ts.map +1 -0
  34. package/dist/engine/agents/normalize.js +22 -0
  35. package/dist/engine/agents/normalize.js.map +1 -0
  36. package/dist/engine/agents/normalize.test.d.ts +2 -0
  37. package/dist/engine/agents/normalize.test.d.ts.map +1 -0
  38. package/dist/engine/agents/normalize.test.js +37 -0
  39. package/dist/engine/agents/normalize.test.js.map +1 -0
  40. package/dist/engine/agents/registry.d.ts +2 -1
  41. package/dist/engine/agents/registry.d.ts.map +1 -1
  42. package/dist/engine/agents/registry.js +7 -6
  43. package/dist/engine/agents/registry.js.map +1 -1
  44. package/dist/engine/agents/registry.test.js +24 -0
  45. package/dist/engine/agents/registry.test.js.map +1 -1
  46. package/dist/engine/context/config.d.ts +43 -6
  47. package/dist/engine/context/config.d.ts.map +1 -1
  48. package/dist/engine/context/config.js +123 -26
  49. package/dist/engine/context/config.js.map +1 -1
  50. package/dist/engine/context/config.security.test.d.ts +2 -0
  51. package/dist/engine/context/config.security.test.d.ts.map +1 -0
  52. package/dist/engine/context/config.security.test.js +82 -0
  53. package/dist/engine/context/config.security.test.js.map +1 -0
  54. package/dist/engine/context/config.test.js +199 -10
  55. package/dist/engine/context/config.test.js.map +1 -1
  56. package/dist/engine/context/optimizer.d.ts +20 -1
  57. package/dist/engine/context/optimizer.d.ts.map +1 -1
  58. package/dist/engine/context/optimizer.js +63 -29
  59. package/dist/engine/context/optimizer.js.map +1 -1
  60. package/dist/engine/context/optimizer.test.js +156 -0
  61. package/dist/engine/context/optimizer.test.js.map +1 -1
  62. package/dist/engine/gateway/gateway-provider.d.ts +4 -0
  63. package/dist/engine/gateway/gateway-provider.d.ts.map +1 -1
  64. package/dist/engine/gateway/gateway-provider.js +7 -2
  65. package/dist/engine/gateway/gateway-provider.js.map +1 -1
  66. package/dist/engine/gateway/gateway-provider.test.js +3 -3
  67. package/dist/engine/gateway/gateway-provider.test.js.map +1 -1
  68. package/dist/engine/gateway/input-guard.d.ts.map +1 -1
  69. package/dist/engine/gateway/input-guard.js +2 -1
  70. package/dist/engine/gateway/input-guard.js.map +1 -1
  71. package/dist/engine/gateway/secret-detector.d.ts.map +1 -1
  72. package/dist/engine/gateway/secret-detector.js +2 -3
  73. package/dist/engine/gateway/secret-detector.js.map +1 -1
  74. package/dist/engine/gateway/secret-detector.test.js +4 -4
  75. package/dist/engine/gateway/secret-detector.test.js.map +1 -1
  76. package/dist/engine/llm-error.d.ts +23 -0
  77. package/dist/engine/llm-error.d.ts.map +1 -0
  78. package/dist/engine/llm-error.js +86 -0
  79. package/dist/engine/llm-error.js.map +1 -0
  80. package/dist/engine/llm-error.test.d.ts +2 -0
  81. package/dist/engine/llm-error.test.d.ts.map +1 -0
  82. package/dist/engine/llm-error.test.js +101 -0
  83. package/dist/engine/llm-error.test.js.map +1 -0
  84. package/dist/engine/orchestrator-deny-abort.test.d.ts +2 -0
  85. package/dist/engine/orchestrator-deny-abort.test.d.ts.map +1 -0
  86. package/dist/engine/orchestrator-deny-abort.test.js +414 -0
  87. package/dist/engine/orchestrator-deny-abort.test.js.map +1 -0
  88. package/dist/engine/orchestrator-error.test.d.ts +2 -0
  89. package/dist/engine/orchestrator-error.test.d.ts.map +1 -0
  90. package/dist/engine/orchestrator-error.test.js +136 -0
  91. package/dist/engine/orchestrator-error.test.js.map +1 -0
  92. package/dist/engine/orchestrator.d.ts +123 -10
  93. package/dist/engine/orchestrator.d.ts.map +1 -1
  94. package/dist/engine/orchestrator.js +791 -181
  95. package/dist/engine/orchestrator.js.map +1 -1
  96. package/dist/engine/orchestrator.test.js +723 -0
  97. package/dist/engine/orchestrator.test.js.map +1 -1
  98. package/dist/engine/permission/approval.d.ts.map +1 -1
  99. package/dist/engine/permission/approval.js +29 -10
  100. package/dist/engine/permission/approval.js.map +1 -1
  101. package/dist/engine/permission/approval.test.js +57 -0
  102. package/dist/engine/permission/approval.test.js.map +1 -1
  103. package/dist/engine/permission/evaluator.d.ts +13 -0
  104. package/dist/engine/permission/evaluator.d.ts.map +1 -1
  105. package/dist/engine/permission/evaluator.js +121 -22
  106. package/dist/engine/permission/evaluator.js.map +1 -1
  107. package/dist/engine/permission/evaluator.test.js +188 -4
  108. package/dist/engine/permission/evaluator.test.js.map +1 -1
  109. package/dist/engine/permission/groups.d.ts.map +1 -1
  110. package/dist/engine/permission/groups.js +19 -1
  111. package/dist/engine/permission/groups.js.map +1 -1
  112. package/dist/engine/permission/integration.test.js +165 -4
  113. package/dist/engine/permission/integration.test.js.map +1 -1
  114. package/dist/engine/plan.integration.test.js +142 -33
  115. package/dist/engine/plan.integration.test.js.map +1 -1
  116. package/dist/engine/router/micro/tasks/classify-intent.d.ts.map +1 -1
  117. package/dist/engine/router/micro/tasks/classify-intent.js +24 -18
  118. package/dist/engine/router/micro/tasks/classify-intent.js.map +1 -1
  119. package/dist/engine/router/micro/tasks/classify-intent.test.js +4 -4
  120. package/dist/engine/router/micro/tasks/classify-intent.test.js.map +1 -1
  121. package/dist/engine/router/micro/tasks/enum-decision.d.ts.map +1 -1
  122. package/dist/engine/router/micro/tasks/enum-decision.js +14 -8
  123. package/dist/engine/router/micro/tasks/enum-decision.js.map +1 -1
  124. package/dist/engine/router/micro/tasks/enum-decision.test.js +2 -2
  125. package/dist/engine/router/micro/tasks/enum-decision.test.js.map +1 -1
  126. package/dist/engine/router/micro/tasks/small-talk.d.ts.map +1 -1
  127. package/dist/engine/router/micro/tasks/small-talk.js +20 -17
  128. package/dist/engine/router/micro/tasks/small-talk.js.map +1 -1
  129. package/dist/engine/router/micro/types.d.ts +2 -0
  130. package/dist/engine/router/micro/types.d.ts.map +1 -1
  131. package/dist/engine/router/provider-pool.d.ts +2 -2
  132. package/dist/engine/router/provider-pool.d.ts.map +1 -1
  133. package/dist/engine/router/provider-pool.js +5 -3
  134. package/dist/engine/router/provider-pool.js.map +1 -1
  135. package/dist/engine/router/quality-checker.d.ts.map +1 -1
  136. package/dist/engine/router/quality-checker.js +15 -14
  137. package/dist/engine/router/quality-checker.js.map +1 -1
  138. package/dist/engine/router/router.d.ts +2 -2
  139. package/dist/engine/router/router.d.ts.map +1 -1
  140. package/dist/engine/router/router.js +8 -5
  141. package/dist/engine/router/router.js.map +1 -1
  142. package/dist/engine/router/utils.d.ts +2 -2
  143. package/dist/engine/router/utils.d.ts.map +1 -1
  144. package/dist/engine/router/utils.js +2 -1
  145. package/dist/engine/router/utils.js.map +1 -1
  146. package/dist/engine/security/index.d.ts +6 -0
  147. package/dist/engine/security/index.d.ts.map +1 -1
  148. package/dist/engine/security/index.js +3 -0
  149. package/dist/engine/security/index.js.map +1 -1
  150. package/dist/engine/security/integration.test.js +11 -11
  151. package/dist/engine/security/integration.test.js.map +1 -1
  152. package/dist/engine/security/prompt-injection.d.ts +1 -1
  153. package/dist/engine/security/prompt-injection.d.ts.map +1 -1
  154. package/dist/engine/security/prompt-injection.js +2 -1
  155. package/dist/engine/security/prompt-injection.js.map +1 -1
  156. package/dist/engine/security/prompt-injection.test.js +1 -1
  157. package/dist/engine/security/prompt-injection.test.js.map +1 -1
  158. package/dist/engine/security/protected-paths-store.d.ts +56 -0
  159. package/dist/engine/security/protected-paths-store.d.ts.map +1 -0
  160. package/dist/engine/security/protected-paths-store.js +239 -0
  161. package/dist/engine/security/protected-paths-store.js.map +1 -0
  162. package/dist/engine/security/protected-paths.d.ts +54 -0
  163. package/dist/engine/security/protected-paths.d.ts.map +1 -0
  164. package/dist/engine/security/protected-paths.js +193 -0
  165. package/dist/engine/security/protected-paths.js.map +1 -0
  166. package/dist/engine/security/protected-paths.test.d.ts +2 -0
  167. package/dist/engine/security/protected-paths.test.d.ts.map +1 -0
  168. package/dist/engine/security/protected-paths.test.js +166 -0
  169. package/dist/engine/security/protected-paths.test.js.map +1 -0
  170. package/dist/engine/security/shell-guard.d.ts +117 -0
  171. package/dist/engine/security/shell-guard.d.ts.map +1 -0
  172. package/dist/engine/security/shell-guard.js +578 -0
  173. package/dist/engine/security/shell-guard.js.map +1 -0
  174. package/dist/engine/security/shell-guard.test.d.ts +2 -0
  175. package/dist/engine/security/shell-guard.test.d.ts.map +1 -0
  176. package/dist/engine/security/shell-guard.test.js +378 -0
  177. package/dist/engine/security/shell-guard.test.js.map +1 -0
  178. package/dist/engine/system-messages.d.ts +237 -0
  179. package/dist/engine/system-messages.d.ts.map +1 -0
  180. package/dist/engine/system-messages.js +276 -0
  181. package/dist/engine/system-messages.js.map +1 -0
  182. package/dist/engine/system-messages.test.d.ts +2 -0
  183. package/dist/engine/system-messages.test.d.ts.map +1 -0
  184. package/dist/engine/system-messages.test.js +81 -0
  185. package/dist/engine/system-messages.test.js.map +1 -0
  186. package/dist/engine/tools/abort.d.ts +21 -0
  187. package/dist/engine/tools/abort.d.ts.map +1 -0
  188. package/dist/engine/tools/abort.js +44 -0
  189. package/dist/engine/tools/abort.js.map +1 -0
  190. package/dist/engine/tools/classify-conversation.d.ts.map +1 -1
  191. package/dist/engine/tools/classify-conversation.js +7 -2
  192. package/dist/engine/tools/classify-conversation.js.map +1 -1
  193. package/dist/engine/tools/fs-read.d.ts.map +1 -1
  194. package/dist/engine/tools/fs-read.js +17 -6
  195. package/dist/engine/tools/fs-read.js.map +1 -1
  196. package/dist/engine/tools/fs-read.test.js +43 -0
  197. package/dist/engine/tools/fs-read.test.js.map +1 -1
  198. package/dist/engine/tools/fs-write.d.ts.map +1 -1
  199. package/dist/engine/tools/fs-write.js +47 -17
  200. package/dist/engine/tools/fs-write.js.map +1 -1
  201. package/dist/engine/tools/git.d.ts +2 -1
  202. package/dist/engine/tools/git.d.ts.map +1 -1
  203. package/dist/engine/tools/git.js +85 -17
  204. package/dist/engine/tools/git.js.map +1 -1
  205. package/dist/engine/tools/git.test.js +39 -0
  206. package/dist/engine/tools/git.test.js.map +1 -1
  207. package/dist/engine/tools/index.d.ts.map +1 -1
  208. package/dist/engine/tools/index.js +16 -2
  209. package/dist/engine/tools/index.js.map +1 -1
  210. package/dist/engine/tools/json-schema.js +38 -0
  211. package/dist/engine/tools/json-schema.js.map +1 -1
  212. package/dist/engine/tools/json-schema.test.d.ts +2 -0
  213. package/dist/engine/tools/json-schema.test.d.ts.map +1 -0
  214. package/dist/engine/tools/json-schema.test.js +40 -0
  215. package/dist/engine/tools/json-schema.test.js.map +1 -0
  216. package/dist/engine/tools/path-utils.d.ts.map +1 -1
  217. package/dist/engine/tools/path-utils.js +24 -0
  218. package/dist/engine/tools/path-utils.js.map +1 -1
  219. package/dist/engine/tools/path-utils.test.js +15 -0
  220. package/dist/engine/tools/path-utils.test.js.map +1 -1
  221. package/dist/engine/tools/plan.d.ts +11 -3
  222. package/dist/engine/tools/plan.d.ts.map +1 -1
  223. package/dist/engine/tools/plan.js +326 -95
  224. package/dist/engine/tools/plan.js.map +1 -1
  225. package/dist/engine/tools/plan.test.js +161 -47
  226. package/dist/engine/tools/plan.test.js.map +1 -1
  227. package/dist/engine/tools/project-context.d.ts.map +1 -1
  228. package/dist/engine/tools/project-context.js +54 -42
  229. package/dist/engine/tools/project-context.js.map +1 -1
  230. package/dist/engine/tools/project-context.test.js +37 -22
  231. package/dist/engine/tools/project-context.test.js.map +1 -1
  232. package/dist/engine/tools/project-manage.d.ts +24 -0
  233. package/dist/engine/tools/project-manage.d.ts.map +1 -0
  234. package/dist/engine/tools/project-manage.js +311 -0
  235. package/dist/engine/tools/project-manage.js.map +1 -0
  236. package/dist/engine/tools/project-manage.test.d.ts +2 -0
  237. package/dist/engine/tools/project-manage.test.d.ts.map +1 -0
  238. package/dist/engine/tools/project-manage.test.js +196 -0
  239. package/dist/engine/tools/project-manage.test.js.map +1 -0
  240. package/dist/engine/tools/read-reference.d.ts.map +1 -1
  241. package/dist/engine/tools/read-reference.js +10 -5
  242. package/dist/engine/tools/read-reference.js.map +1 -1
  243. package/dist/engine/tools/read-reference.test.js +5 -2
  244. package/dist/engine/tools/read-reference.test.js.map +1 -1
  245. package/dist/engine/tools/search.d.ts.map +1 -1
  246. package/dist/engine/tools/search.js +16 -6
  247. package/dist/engine/tools/search.js.map +1 -1
  248. package/dist/engine/tools/shell.d.ts.map +1 -1
  249. package/dist/engine/tools/shell.js +17 -4
  250. package/dist/engine/tools/shell.js.map +1 -1
  251. package/dist/engine/tools/shell.test.js +63 -1
  252. package/dist/engine/tools/shell.test.js.map +1 -1
  253. package/dist/engine/tools/task-resume.d.ts +93 -0
  254. package/dist/engine/tools/task-resume.d.ts.map +1 -0
  255. package/dist/engine/tools/task-resume.js +269 -0
  256. package/dist/engine/tools/task-resume.js.map +1 -0
  257. package/dist/engine/tools/task-resume.test.d.ts +2 -0
  258. package/dist/engine/tools/task-resume.test.d.ts.map +1 -0
  259. package/dist/engine/tools/task-resume.test.js +423 -0
  260. package/dist/engine/tools/task-resume.test.js.map +1 -0
  261. package/dist/engine/tools/task.d.ts +81 -2
  262. package/dist/engine/tools/task.d.ts.map +1 -1
  263. package/dist/engine/tools/task.js +898 -471
  264. package/dist/engine/tools/task.js.map +1 -1
  265. package/dist/engine/tools/task.test.js +371 -3
  266. package/dist/engine/tools/task.test.js.map +1 -1
  267. package/dist/engine/tools/todo.d.ts +27 -1
  268. package/dist/engine/tools/todo.d.ts.map +1 -1
  269. package/dist/engine/tools/todo.js +320 -14
  270. package/dist/engine/tools/todo.js.map +1 -1
  271. package/dist/engine/tools/todo.test.js +150 -48
  272. package/dist/engine/tools/todo.test.js.map +1 -1
  273. package/dist/engine/tools/web.d.ts.map +1 -1
  274. package/dist/engine/tools/web.js +65 -18
  275. package/dist/engine/tools/web.js.map +1 -1
  276. package/dist/engine/tools/web.test.js +94 -2
  277. package/dist/engine/tools/web.test.js.map +1 -1
  278. package/dist/events/bus.d.ts +7 -0
  279. package/dist/events/bus.d.ts.map +1 -1
  280. package/dist/events/bus.js +26 -3
  281. package/dist/events/bus.js.map +1 -1
  282. package/dist/events/bus.test.js +46 -0
  283. package/dist/events/bus.test.js.map +1 -1
  284. package/dist/index.d.ts +11 -3
  285. package/dist/index.d.ts.map +1 -1
  286. package/dist/index.js +7 -3
  287. package/dist/index.js.map +1 -1
  288. package/dist/logger.d.ts.map +1 -1
  289. package/dist/logger.js +0 -1
  290. package/dist/logger.js.map +1 -1
  291. package/dist/main.js +250 -10
  292. package/dist/main.js.map +1 -1
  293. package/dist/prompts/roles/ADMIN.en.md +12 -11
  294. package/dist/prompts/roles/ADMIN.ru.md +12 -11
  295. package/dist/prompts/roles/ANALYST.en.md +12 -11
  296. package/dist/prompts/roles/ANALYST.ru.md +12 -11
  297. package/dist/prompts/roles/ASSISTANT.en.md +12 -11
  298. package/dist/prompts/roles/ASSISTANT.ru.md +12 -11
  299. package/dist/prompts/roles/AUDITOR.en.md +12 -11
  300. package/dist/prompts/roles/AUDITOR.ru.md +12 -11
  301. package/dist/prompts/roles/DEVELOPER.en.md +12 -11
  302. package/dist/prompts/roles/DEVELOPER.ru.md +12 -11
  303. package/dist/prompts/roles/DEVOPS.en.md +12 -11
  304. package/dist/prompts/roles/DEVOPS.ru.md +12 -11
  305. package/dist/prompts/roles/PM.en.md +12 -11
  306. package/dist/prompts/roles/PM.ru.md +12 -11
  307. package/dist/prompts/roles/QA.en.md +12 -11
  308. package/dist/prompts/roles/QA.ru.md +12 -11
  309. package/dist/prompts/roles/TITLE.en.md +30 -0
  310. package/dist/prompts/roles/TITLE.ru.md +3 -11
  311. package/dist/prompts/security/ask-protected-path.en.md +1 -0
  312. package/dist/prompts/security/ask-protected-path.ru.md +1 -0
  313. package/dist/prompts/security/deny-command.en.md +1 -0
  314. package/dist/prompts/security/deny-command.ru.md +1 -0
  315. package/dist/prompts/security/deny-protected-dir.en.md +1 -0
  316. package/dist/prompts/security/deny-protected-dir.ru.md +1 -0
  317. package/dist/prompts/security/deny-protected-path.en.md +1 -0
  318. package/dist/prompts/security/deny-protected-path.ru.md +1 -0
  319. package/dist/prompts/subagents/explore.en.md +23 -0
  320. package/dist/prompts/subagents/general.en.md +19 -0
  321. package/dist/prompts/system/MODE_ACT.en.md +20 -0
  322. package/{prompts/modes/act.md → dist/prompts/system/MODE_ACT.ru.md} +2 -0
  323. package/dist/prompts/system/MODE_PLAN.en.md +22 -0
  324. package/dist/prompts/{modes/plan.md → system/MODE_PLAN.ru.md} +4 -3
  325. package/dist/prompts/system/MODE_YOLO.en.md +22 -0
  326. package/{prompts/modes/yolo.md → dist/prompts/system/MODE_YOLO.ru.md} +2 -0
  327. package/dist/prompts/system/PLAN_GUIDE.en.md +36 -0
  328. package/dist/prompts/system/PLAN_GUIDE.ru.md +33 -0
  329. package/dist/prompts/system/PLAN_MODE_AUTO.en.md +11 -0
  330. package/dist/prompts/system/PLAN_MODE_AUTO.ru.md +12 -0
  331. package/dist/prompts/system/PLAN_MODE_STRICT_APPROVED.en.md +8 -0
  332. package/dist/prompts/system/PLAN_MODE_STRICT_APPROVED.ru.md +8 -0
  333. package/dist/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.en.md +7 -0
  334. package/dist/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.ru.md +7 -0
  335. package/dist/providers/anthropic.d.ts.map +1 -1
  336. package/dist/providers/anthropic.js +28 -2
  337. package/dist/providers/anthropic.js.map +1 -1
  338. package/dist/providers/base.d.ts +20 -1
  339. package/dist/providers/base.d.ts.map +1 -1
  340. package/dist/providers/base.js +17 -0
  341. package/dist/providers/base.js.map +1 -1
  342. package/dist/providers/exceptions.d.ts.map +1 -1
  343. package/dist/providers/exceptions.js +3 -2
  344. package/dist/providers/exceptions.js.map +1 -1
  345. package/dist/providers/index.d.ts +1 -0
  346. package/dist/providers/index.d.ts.map +1 -1
  347. package/dist/providers/index.js +4 -0
  348. package/dist/providers/index.js.map +1 -1
  349. package/dist/providers/ollama.d.ts +23 -0
  350. package/dist/providers/ollama.d.ts.map +1 -1
  351. package/dist/providers/ollama.js +128 -12
  352. package/dist/providers/ollama.js.map +1 -1
  353. package/dist/providers/ollama.test.d.ts +2 -0
  354. package/dist/providers/ollama.test.d.ts.map +1 -0
  355. package/dist/providers/ollama.test.js +129 -0
  356. package/dist/providers/ollama.test.js.map +1 -0
  357. package/dist/providers/openai.d.ts.map +1 -1
  358. package/dist/providers/openai.js +82 -9
  359. package/dist/providers/openai.js.map +1 -1
  360. package/dist/providers/openai.test.d.ts +2 -0
  361. package/dist/providers/openai.test.d.ts.map +1 -0
  362. package/dist/providers/openai.test.js +84 -0
  363. package/dist/providers/openai.test.js.map +1 -0
  364. package/dist/providers/remote.d.ts +60 -0
  365. package/dist/providers/remote.d.ts.map +1 -0
  366. package/dist/providers/remote.js +394 -0
  367. package/dist/providers/remote.js.map +1 -0
  368. package/dist/providers/remote.test.d.ts +2 -0
  369. package/dist/providers/remote.test.d.ts.map +1 -0
  370. package/dist/providers/remote.test.js +258 -0
  371. package/dist/providers/remote.test.js.map +1 -0
  372. package/dist/providers/stream-error.test.d.ts +2 -0
  373. package/dist/providers/stream-error.test.d.ts.map +1 -0
  374. package/dist/providers/stream-error.test.js +63 -0
  375. package/dist/providers/stream-error.test.js.map +1 -0
  376. package/dist/providers/timeout.test.d.ts +2 -0
  377. package/dist/providers/timeout.test.d.ts.map +1 -0
  378. package/dist/providers/timeout.test.js +129 -0
  379. package/dist/providers/timeout.test.js.map +1 -0
  380. package/dist/queue/processor.d.ts +22 -0
  381. package/dist/queue/processor.d.ts.map +1 -1
  382. package/dist/queue/processor.js +150 -25
  383. package/dist/queue/processor.js.map +1 -1
  384. package/dist/queue/processor.test.d.ts +2 -0
  385. package/dist/queue/processor.test.d.ts.map +1 -0
  386. package/dist/queue/processor.test.js +211 -0
  387. package/dist/queue/processor.test.js.map +1 -0
  388. package/dist/remote/aggregate.d.ts +43 -0
  389. package/dist/remote/aggregate.d.ts.map +1 -0
  390. package/dist/remote/aggregate.js +84 -0
  391. package/dist/remote/aggregate.js.map +1 -0
  392. package/dist/remote/aggregate.test.d.ts +2 -0
  393. package/dist/remote/aggregate.test.d.ts.map +1 -0
  394. package/dist/remote/aggregate.test.js +120 -0
  395. package/dist/remote/aggregate.test.js.map +1 -0
  396. package/dist/remote/client.d.ts +142 -0
  397. package/dist/remote/client.d.ts.map +1 -0
  398. package/dist/remote/client.js +290 -0
  399. package/dist/remote/client.js.map +1 -0
  400. package/dist/remote/client.test.d.ts +2 -0
  401. package/dist/remote/client.test.d.ts.map +1 -0
  402. package/dist/remote/client.test.js +176 -0
  403. package/dist/remote/client.test.js.map +1 -0
  404. package/dist/remote/connection.d.ts +66 -0
  405. package/dist/remote/connection.d.ts.map +1 -0
  406. package/dist/remote/connection.js +298 -0
  407. package/dist/remote/connection.js.map +1 -0
  408. package/dist/remote/connection.test.d.ts +2 -0
  409. package/dist/remote/connection.test.d.ts.map +1 -0
  410. package/dist/remote/connection.test.js +323 -0
  411. package/dist/remote/connection.test.js.map +1 -0
  412. package/dist/remote/credentials.d.ts +13 -0
  413. package/dist/remote/credentials.d.ts.map +1 -0
  414. package/dist/remote/credentials.js +81 -0
  415. package/dist/remote/credentials.js.map +1 -0
  416. package/dist/remote/credentials.test.d.ts +2 -0
  417. package/dist/remote/credentials.test.d.ts.map +1 -0
  418. package/dist/remote/credentials.test.js +69 -0
  419. package/dist/remote/credentials.test.js.map +1 -0
  420. package/dist/remote/device-flow.d.ts +72 -0
  421. package/dist/remote/device-flow.d.ts.map +1 -0
  422. package/dist/remote/device-flow.js +229 -0
  423. package/dist/remote/device-flow.js.map +1 -0
  424. package/dist/remote/device-flow.test.d.ts +2 -0
  425. package/dist/remote/device-flow.test.d.ts.map +1 -0
  426. package/dist/remote/device-flow.test.js +103 -0
  427. package/dist/remote/device-flow.test.js.map +1 -0
  428. package/dist/remote/event-bridge.d.ts +46 -0
  429. package/dist/remote/event-bridge.d.ts.map +1 -0
  430. package/dist/remote/event-bridge.js +218 -0
  431. package/dist/remote/event-bridge.js.map +1 -0
  432. package/dist/remote/event-bridge.test.d.ts +2 -0
  433. package/dist/remote/event-bridge.test.d.ts.map +1 -0
  434. package/dist/remote/event-bridge.test.js +240 -0
  435. package/dist/remote/event-bridge.test.js.map +1 -0
  436. package/dist/remote/index.d.ts +19 -0
  437. package/dist/remote/index.d.ts.map +1 -0
  438. package/dist/remote/index.js +11 -0
  439. package/dist/remote/index.js.map +1 -0
  440. package/dist/remote/session.d.ts +72 -0
  441. package/dist/remote/session.d.ts.map +1 -0
  442. package/dist/remote/session.js +248 -0
  443. package/dist/remote/session.js.map +1 -0
  444. package/dist/remote/session.test.d.ts +2 -0
  445. package/dist/remote/session.test.d.ts.map +1 -0
  446. package/dist/remote/session.test.js +482 -0
  447. package/dist/remote/session.test.js.map +1 -0
  448. package/dist/remote/transfer.d.ts +75 -0
  449. package/dist/remote/transfer.d.ts.map +1 -0
  450. package/dist/remote/transfer.js +491 -0
  451. package/dist/remote/transfer.js.map +1 -0
  452. package/dist/remote/transfer.test.d.ts +2 -0
  453. package/dist/remote/transfer.test.d.ts.map +1 -0
  454. package/dist/remote/transfer.test.js +416 -0
  455. package/dist/remote/transfer.test.js.map +1 -0
  456. package/dist/remote/types.d.ts +28 -0
  457. package/dist/remote/types.d.ts.map +1 -0
  458. package/dist/remote/types.js +10 -0
  459. package/dist/remote/types.js.map +1 -0
  460. package/dist/server/app.d.ts +62 -1
  461. package/dist/server/app.d.ts.map +1 -1
  462. package/dist/server/app.js +393 -27
  463. package/dist/server/app.js.map +1 -1
  464. package/dist/server/app.proxy.test.d.ts +2 -0
  465. package/dist/server/app.proxy.test.d.ts.map +1 -0
  466. package/dist/server/app.proxy.test.js +193 -0
  467. package/dist/server/app.proxy.test.js.map +1 -0
  468. package/dist/server/app.remote.test.d.ts +2 -0
  469. package/dist/server/app.remote.test.d.ts.map +1 -0
  470. package/dist/server/app.remote.test.js +674 -0
  471. package/dist/server/app.remote.test.js.map +1 -0
  472. package/dist/server/chat.d.ts.map +1 -1
  473. package/dist/server/chat.js +18 -2
  474. package/dist/server/chat.js.map +1 -1
  475. package/dist/server/proxy.d.ts +14 -0
  476. package/dist/server/proxy.d.ts.map +1 -0
  477. package/dist/server/proxy.js +93 -0
  478. package/dist/server/proxy.js.map +1 -0
  479. package/dist/server/routes/agents.d.ts.map +1 -1
  480. package/dist/server/routes/agents.js +39 -23
  481. package/dist/server/routes/agents.js.map +1 -1
  482. package/dist/server/routes/auth.d.ts +26 -2
  483. package/dist/server/routes/auth.d.ts.map +1 -1
  484. package/dist/server/routes/auth.js +269 -36
  485. package/dist/server/routes/auth.js.map +1 -1
  486. package/dist/server/routes/auth.test.d.ts +2 -0
  487. package/dist/server/routes/auth.test.d.ts.map +1 -0
  488. package/dist/server/routes/auth.test.js +466 -0
  489. package/dist/server/routes/auth.test.js.map +1 -0
  490. package/dist/server/routes/fs.d.ts +2 -1
  491. package/dist/server/routes/fs.d.ts.map +1 -1
  492. package/dist/server/routes/fs.js +340 -7
  493. package/dist/server/routes/fs.js.map +1 -1
  494. package/dist/server/routes/hybrid.d.ts +32 -0
  495. package/dist/server/routes/hybrid.d.ts.map +1 -0
  496. package/dist/server/routes/hybrid.js +21 -0
  497. package/dist/server/routes/hybrid.js.map +1 -0
  498. package/dist/server/routes/hybrid.test.d.ts +2 -0
  499. package/dist/server/routes/hybrid.test.d.ts.map +1 -0
  500. package/dist/server/routes/hybrid.test.js +454 -0
  501. package/dist/server/routes/hybrid.test.js.map +1 -0
  502. package/dist/server/routes/messages.d.ts +2 -1
  503. package/dist/server/routes/messages.d.ts.map +1 -1
  504. package/dist/server/routes/messages.js +104 -1
  505. package/dist/server/routes/messages.js.map +1 -1
  506. package/dist/server/routes/models.cache.test.d.ts +2 -0
  507. package/dist/server/routes/models.cache.test.d.ts.map +1 -0
  508. package/dist/server/routes/models.cache.test.js +59 -0
  509. package/dist/server/routes/models.cache.test.js.map +1 -0
  510. package/dist/server/routes/models.d.ts +9 -1
  511. package/dist/server/routes/models.d.ts.map +1 -1
  512. package/dist/server/routes/models.js +38 -3
  513. package/dist/server/routes/models.js.map +1 -1
  514. package/dist/server/routes/models.remote.test.d.ts +2 -0
  515. package/dist/server/routes/models.remote.test.d.ts.map +1 -0
  516. package/dist/server/routes/models.remote.test.js +101 -0
  517. package/dist/server/routes/models.remote.test.js.map +1 -0
  518. package/dist/server/routes/project-transfer.d.ts +16 -0
  519. package/dist/server/routes/project-transfer.d.ts.map +1 -0
  520. package/dist/server/routes/project-transfer.js +141 -0
  521. package/dist/server/routes/project-transfer.js.map +1 -0
  522. package/dist/server/routes/project-transfer.test.d.ts +2 -0
  523. package/dist/server/routes/project-transfer.test.d.ts.map +1 -0
  524. package/dist/server/routes/project-transfer.test.js +199 -0
  525. package/dist/server/routes/project-transfer.test.js.map +1 -0
  526. package/dist/server/routes/projects.d.ts +2 -1
  527. package/dist/server/routes/projects.d.ts.map +1 -1
  528. package/dist/server/routes/projects.js +101 -5
  529. package/dist/server/routes/projects.js.map +1 -1
  530. package/dist/server/routes/providers.d.ts +1 -1
  531. package/dist/server/routes/providers.d.ts.map +1 -1
  532. package/dist/server/routes/providers.js +3 -1
  533. package/dist/server/routes/providers.js.map +1 -1
  534. package/dist/server/routes/providers.test.d.ts +2 -0
  535. package/dist/server/routes/providers.test.d.ts.map +1 -0
  536. package/dist/server/routes/providers.test.js +58 -0
  537. package/dist/server/routes/providers.test.js.map +1 -0
  538. package/dist/server/routes/queue.d.ts +2 -1
  539. package/dist/server/routes/queue.d.ts.map +1 -1
  540. package/dist/server/routes/queue.js +180 -18
  541. package/dist/server/routes/queue.js.map +1 -1
  542. package/dist/server/routes/sessions.d.ts +9 -1
  543. package/dist/server/routes/sessions.d.ts.map +1 -1
  544. package/dist/server/routes/sessions.js +269 -18
  545. package/dist/server/routes/sessions.js.map +1 -1
  546. package/dist/server/routes/sessions.test.js +102 -2
  547. package/dist/server/routes/sessions.test.js.map +1 -1
  548. package/dist/server/routes/settings.d.ts +6 -1
  549. package/dist/server/routes/settings.d.ts.map +1 -1
  550. package/dist/server/routes/settings.js +138 -0
  551. package/dist/server/routes/settings.js.map +1 -1
  552. package/dist/server/routes/settings.test.js +65 -1
  553. package/dist/server/routes/settings.test.js.map +1 -1
  554. package/dist/server/serialize.d.ts +11 -3
  555. package/dist/server/serialize.d.ts.map +1 -1
  556. package/dist/server/serialize.js +11 -3
  557. package/dist/server/serialize.js.map +1 -1
  558. package/dist/sessions/auto-title.d.ts +1 -1
  559. package/dist/sessions/auto-title.d.ts.map +1 -1
  560. package/dist/sessions/auto-title.js +24 -13
  561. package/dist/sessions/auto-title.js.map +1 -1
  562. package/dist/sessions/manager.d.ts +1 -2
  563. package/dist/sessions/manager.d.ts.map +1 -1
  564. package/dist/sessions/manager.js +11 -36
  565. package/dist/sessions/manager.js.map +1 -1
  566. package/dist/sessions/manager.test.js +2 -10
  567. package/dist/sessions/manager.test.js.map +1 -1
  568. package/dist/storage/file-store.d.ts.map +1 -1
  569. package/dist/storage/file-store.js +2 -6
  570. package/dist/storage/file-store.js.map +1 -1
  571. package/dist/storage/file-store.test.js +1 -6
  572. package/dist/storage/file-store.test.js.map +1 -1
  573. package/dist/storage/project-store.d.ts.map +1 -1
  574. package/dist/storage/project-store.js +12 -0
  575. package/dist/storage/project-store.js.map +1 -1
  576. package/dist/storage/runtime-settings.d.ts +25 -1
  577. package/dist/storage/runtime-settings.d.ts.map +1 -1
  578. package/dist/storage/runtime-settings.js +31 -0
  579. package/dist/storage/runtime-settings.js.map +1 -1
  580. package/package.json +10 -5
  581. package/prompts/roles/TITLE.en.md +30 -0
  582. package/prompts/security/ask-protected-path.en.md +1 -0
  583. package/prompts/security/ask-protected-path.ru.md +1 -0
  584. package/prompts/security/deny-command.en.md +1 -0
  585. package/prompts/security/deny-command.ru.md +1 -0
  586. package/prompts/security/deny-protected-dir.en.md +1 -0
  587. package/prompts/security/deny-protected-dir.ru.md +1 -0
  588. package/prompts/security/deny-protected-path.en.md +1 -0
  589. package/prompts/security/deny-protected-path.ru.md +1 -0
  590. package/prompts/subagents/explore.en.md +23 -0
  591. package/prompts/subagents/general.en.md +19 -0
  592. package/prompts/system/MODE_ACT.en.md +20 -0
  593. package/{dist/prompts/modes/act.md → prompts/system/MODE_ACT.ru.md} +2 -0
  594. package/prompts/system/MODE_PLAN.en.md +22 -0
  595. package/{dist/prompts/prompts/modes/plan.md → prompts/system/MODE_PLAN.ru.md} +4 -3
  596. package/prompts/system/MODE_YOLO.en.md +22 -0
  597. package/{dist/prompts/prompts/modes/yolo.md → prompts/system/MODE_YOLO.ru.md} +2 -0
  598. package/prompts/system/PLAN_GUIDE.en.md +36 -0
  599. package/prompts/system/PLAN_GUIDE.ru.md +33 -0
  600. package/prompts/system/PLAN_MODE_AUTO.en.md +11 -0
  601. package/prompts/system/PLAN_MODE_AUTO.ru.md +12 -0
  602. package/prompts/system/PLAN_MODE_STRICT_APPROVED.en.md +8 -0
  603. package/prompts/system/PLAN_MODE_STRICT_APPROVED.ru.md +8 -0
  604. package/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.en.md +7 -0
  605. package/prompts/system/PLAN_MODE_STRICT_NOT_APPROVED.ru.md +7 -0
  606. package/dist/dictionaries/dictionaries/coding.en.yaml +0 -20
  607. package/dist/dictionaries/dictionaries/coding.ru.yaml +0 -22
  608. package/dist/dictionaries/dictionaries/coding.tools.yaml +0 -12
  609. package/dist/dictionaries/dictionaries/enum.en.yaml +0 -54
  610. package/dist/dictionaries/dictionaries/enum.ru.yaml +0 -67
  611. package/dist/dictionaries/dictionaries/injection.en.yaml +0 -51
  612. package/dist/dictionaries/dictionaries/injection.ru.yaml +0 -51
  613. package/dist/dictionaries/dictionaries/intents.en.yaml +0 -68
  614. package/dist/dictionaries/dictionaries/intents.ru.yaml +0 -78
  615. package/dist/dictionaries/dictionaries/research.en.yaml +0 -17
  616. package/dist/dictionaries/dictionaries/research.ru.yaml +0 -17
  617. package/dist/dictionaries/dictionaries/small-talk.en.yaml +0 -67
  618. package/dist/dictionaries/dictionaries/small-talk.ru.yaml +0 -81
  619. package/dist/prompts/modes/yolo.md +0 -20
  620. package/dist/prompts/prompts/modes/act.md +0 -18
  621. package/dist/prompts/prompts/roles/ADMIN.en.md +0 -33
  622. package/dist/prompts/prompts/roles/ADMIN.ru.md +0 -33
  623. package/dist/prompts/prompts/roles/ANALYST.en.md +0 -33
  624. package/dist/prompts/prompts/roles/ANALYST.ru.md +0 -33
  625. package/dist/prompts/prompts/roles/ASSISTANT.en.md +0 -38
  626. package/dist/prompts/prompts/roles/ASSISTANT.ru.md +0 -38
  627. package/dist/prompts/prompts/roles/AUDITOR.en.md +0 -33
  628. package/dist/prompts/prompts/roles/AUDITOR.ru.md +0 -33
  629. package/dist/prompts/prompts/roles/DEVELOPER.en.md +0 -42
  630. package/dist/prompts/prompts/roles/DEVELOPER.ru.md +0 -42
  631. package/dist/prompts/prompts/roles/DEVOPS.en.md +0 -35
  632. package/dist/prompts/prompts/roles/DEVOPS.ru.md +0 -35
  633. package/dist/prompts/prompts/roles/PM.en.md +0 -33
  634. package/dist/prompts/prompts/roles/PM.ru.md +0 -33
  635. package/dist/prompts/prompts/roles/QA.en.md +0 -33
  636. package/dist/prompts/prompts/roles/QA.ru.md +0 -33
  637. package/dist/prompts/prompts/roles/TITLE.ru.md +0 -30
  638. package/dist/prompts/prompts/subagents/explore.ru.md +0 -23
  639. package/dist/prompts/prompts/subagents/general.ru.md +0 -19
  640. package/dist/prompts/prompts/system/COMPRESSED_DIALOG.en.md +0 -5
  641. package/dist/prompts/prompts/system/COMPRESSED_DIALOG.ru.md +0 -5
  642. package/dist/prompts/prompts/system/INTERVIEW.en.md +0 -18
  643. package/dist/prompts/prompts/system/INTERVIEW.ru.md +0 -18
  644. package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.en.md +0 -7
  645. package/dist/prompts/prompts/system/PARTICIPANTS_NOTICE.ru.md +0 -7
  646. package/dist/prompts/prompts/system/ROLES_DESCRIPTION.en.md +0 -16
  647. package/dist/prompts/prompts/system/ROLES_DESCRIPTION.ru.md +0 -16
  648. package/dist/prompts/prompts/system/ROUTING.en.md +0 -13
  649. package/dist/prompts/prompts/system/ROUTING.md +0 -6
  650. package/dist/prompts/prompts/system/ROUTING.ru.md +0 -13
  651. package/dist/prompts/prompts/system/RULES.en.md +0 -10
  652. package/dist/prompts/prompts/system/RULES.md +0 -10
  653. package/dist/prompts/prompts/system/RULES.ru.md +0 -10
  654. package/dist/prompts/prompts/system/STICKY_NOTES.en.md +0 -6
  655. package/dist/prompts/prompts/system/STICKY_NOTES.ru.md +0 -6
  656. package/dist/prompts/prompts/system/SUMMARIZER.en.md +0 -54
  657. package/dist/prompts/prompts/system/SUMMARIZER.ru.md +0 -54
  658. package/dist/prompts/prompts/system/USER_CONTEXT.en.md +0 -5
  659. package/dist/prompts/prompts/system/USER_CONTEXT.ru.md +0 -5
  660. package/dist/prompts/system/ROUTING.md +0 -6
  661. package/dist/prompts/system/RULES.md +0 -10
  662. package/dist/server/routes/i18n.d.ts +0 -3
  663. package/dist/server/routes/i18n.d.ts.map +0 -1
  664. package/dist/server/routes/i18n.js +0 -83
  665. package/dist/server/routes/i18n.js.map +0 -1
  666. package/prompts/modes/plan.md +0 -20
  667. package/prompts/system/ROUTING.md +0 -6
  668. package/prompts/system/RULES.md +0 -10
  669. /package/dist/prompts/{prompts/system → system}/GATEWAY.en.md +0 -0
  670. /package/dist/prompts/{prompts/system → system}/GATEWAY.ru.md +0 -0
@@ -0,0 +1,423 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { mkdtemp, rm } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { taskTool } from './task.js';
6
+ import { runSubagentResume, validateSubagentResume, } from './task-resume.js';
7
+ import { ChatOrchestrator } from '../orchestrator.js';
8
+ import { SessionManager } from '../../sessions/manager.js';
9
+ import { FileStore } from '../../storage/file-store.js';
10
+ import { EventBus } from '../../events/bus.js';
11
+ import { createToolRegistry } from './index.js';
12
+ import { BaseProvider, ProviderFactory } from '../../providers/base.js';
13
+ import { MessageRole, generateId, makeTextPart, nowISO } from '@itphx/synth-shared';
14
+ // ─────────────────────────────────────────────────────────────────────
15
+ // B1: Retry саб-агента при ошибках провайдера (taskTool)
16
+ // ─────────────────────────────────────────────────────────────────────
17
+ function makeMockAgentRegistry() {
18
+ return {
19
+ get: (id) => {
20
+ if (id === 'explore') {
21
+ return { id, agentMode: ['subagent'], subagentPrompt: 'You are a test subagent.', maxSteps: 1 };
22
+ }
23
+ return undefined;
24
+ },
25
+ getSubagents: () => [{ id: 'explore' }],
26
+ getToolsForAgent: () => [],
27
+ };
28
+ }
29
+ describe('taskTool retry — recoverable/unrecoverable/abort (B1)', () => {
30
+ let store;
31
+ let sessionManager;
32
+ let eventBus;
33
+ let tmpDir;
34
+ beforeEach(async () => {
35
+ tmpDir = await mkdtemp(join(tmpdir(), 'synth-task-retry-'));
36
+ store = new FileStore({ dataDir: tmpDir });
37
+ sessionManager = new SessionManager(store);
38
+ eventBus = new EventBus();
39
+ });
40
+ afterEach(async () => {
41
+ await rm(tmpDir, { recursive: true, force: true });
42
+ });
43
+ const FAST_RETRY = { maxRetries: 3, delaysMs: [10, 10, 10] };
44
+ function makeCtx(extra, abortSignal) {
45
+ return {
46
+ sessionId: 's',
47
+ messageId: 'm1',
48
+ abortSignal: abortSignal ?? new AbortController().signal,
49
+ workingDir: tmpDir,
50
+ extra,
51
+ };
52
+ }
53
+ it('recoverable ошибка: успех на 2-й попытке, tool_result нормальный, публикуется subagent.retry', async () => {
54
+ const parent = await sessionManager.createSession({ title: 'Parent' });
55
+ let calls = 0;
56
+ const provider = {
57
+ model: 'test-model',
58
+ name: 'test-provider',
59
+ chatAsync: vi.fn().mockImplementation(async function* () {
60
+ calls++;
61
+ if (calls === 1)
62
+ throw new Error('fetch failed: ECONNREFUSED');
63
+ yield { isFinal: true, content: 'готово со второй попытки', toolCalls: [] };
64
+ }),
65
+ };
66
+ const events = [];
67
+ const result = await taskTool.execute({ description: 'flaky', prompt: 'hello', subagent_type: 'explore' }, makeCtx({
68
+ provider,
69
+ sessionManager,
70
+ eventBus,
71
+ sessionId: parent.id,
72
+ agentRegistry: makeMockAgentRegistry(),
73
+ retry: FAST_RETRY,
74
+ publish: (type, data) => events.push({ type, data }),
75
+ }));
76
+ expect(result.isError).toBeFalsy();
77
+ expect(result.content).toContain('готово со второй попытки');
78
+ expect(provider.chatAsync).toHaveBeenCalledTimes(2);
79
+ const retryEvent = events.find((e) => e.type === 'subagent.retry');
80
+ expect(retryEvent).toBeDefined();
81
+ expect(retryEvent.data.attempt).toBe(1);
82
+ expect(retryEvent.data.max_retries).toBe(3);
83
+ expect(retryEvent.data.retry_in).toBe(10);
84
+ expect(retryEvent.data.error_type).toBe('network_error');
85
+ expect(retryEvent.data.child_session_id).toBe(result.metadata.child_session_id);
86
+ // Мусорных ERROR-сообщений в истории дочерней сессии нет — только финал
87
+ const childId = result.metadata.child_session_id;
88
+ const child = (await sessionManager.getSession(childId));
89
+ expect(child.messages.some((m) => m.metadata?.error === true)).toBe(false);
90
+ expect(child.messages.some((m) => m.role === MessageRole.ASSISTANT && m.content.includes('готово со второй'))).toBe(true);
91
+ });
92
+ it('исчерпание ретраев: isError + metadata.attempts=3, две публикации subagent.retry, ERROR в истории ребёнка один', async () => {
93
+ const parent = await sessionManager.createSession({ title: 'Parent' });
94
+ const provider = {
95
+ model: 'test-model',
96
+ name: 'test-provider',
97
+ chatAsync: vi.fn().mockImplementation(async function* () {
98
+ yield { isFinal: false, content: '' };
99
+ throw new Error('503 Service Unavailable');
100
+ }),
101
+ };
102
+ const events = [];
103
+ const result = await taskTool.execute({ description: 'down', prompt: 'hello', subagent_type: 'explore' }, makeCtx({
104
+ provider,
105
+ sessionManager,
106
+ eventBus,
107
+ sessionId: parent.id,
108
+ agentRegistry: makeMockAgentRegistry(),
109
+ retry: FAST_RETRY,
110
+ publish: (type, data) => events.push({ type, data }),
111
+ }));
112
+ expect(result.isError).toBe(true);
113
+ expect(provider.chatAsync).toHaveBeenCalledTimes(3);
114
+ expect(result.content).toContain('<attempts>3</attempts>');
115
+ expect(result.metadata.attempts).toBe(3);
116
+ expect(result.metadata.max_retries).toBe(3);
117
+ expect(result.metadata.error_type).toBe('server_error');
118
+ const retryEvents = events.filter((e) => e.type === 'subagent.retry');
119
+ expect(retryEvents).toHaveLength(2);
120
+ expect(retryEvents.map((e) => e.data.attempt)).toEqual([1, 2]);
121
+ const childId = result.metadata.child_session_id;
122
+ const child = (await sessionManager.getSession(childId));
123
+ const errors = child.messages.filter((m) => m.metadata?.error === true);
124
+ expect(errors).toHaveLength(1);
125
+ expect(errors[0].metadata.attempts).toBe(3);
126
+ });
127
+ it('unrecoverable ошибка (invalid api key): сразу финал, без ретраев и subagent.retry', async () => {
128
+ const parent = await sessionManager.createSession({ title: 'Parent' });
129
+ const provider = {
130
+ model: 'test-model',
131
+ name: 'test-provider',
132
+ chatAsync: vi.fn().mockImplementation(async function* () {
133
+ yield { isFinal: false, content: '' };
134
+ throw new Error('401 Unauthorized: invalid api key');
135
+ }),
136
+ };
137
+ const events = [];
138
+ const result = await taskTool.execute({ description: 'auth', prompt: 'hello', subagent_type: 'explore' }, makeCtx({
139
+ provider,
140
+ sessionManager,
141
+ eventBus,
142
+ sessionId: parent.id,
143
+ agentRegistry: makeMockAgentRegistry(),
144
+ retry: FAST_RETRY,
145
+ publish: (type, data) => events.push({ type, data }),
146
+ }));
147
+ expect(result.isError).toBe(true);
148
+ expect(provider.chatAsync).toHaveBeenCalledTimes(1);
149
+ expect(events.filter((e) => e.type === 'subagent.retry')).toHaveLength(0);
150
+ expect(result.metadata.attempts).toBe(1);
151
+ expect(result.metadata.error_type).toBe('auth_error');
152
+ expect(result.content).toContain('<attempts>1</attempts>');
153
+ });
154
+ it('abort во время backoff-паузы: отмена без второй попытки, tool_result — stopped_by_user', async () => {
155
+ const parent = await sessionManager.createSession({ title: 'Parent' });
156
+ const provider = {
157
+ model: 'test-model',
158
+ name: 'test-provider',
159
+ chatAsync: vi.fn().mockImplementation(async function* () {
160
+ yield { isFinal: false, content: 'частичный текст до падения ' };
161
+ throw new Error('network error: connection reset');
162
+ }),
163
+ };
164
+ const ac = new AbortController();
165
+ const events = [];
166
+ const promise = taskTool.execute({ description: 'slow retry', prompt: 'hello', subagent_type: 'explore' }, makeCtx({
167
+ provider,
168
+ sessionManager,
169
+ eventBus,
170
+ sessionId: parent.id,
171
+ agentRegistry: makeMockAgentRegistry(),
172
+ // Длинная backoff-пауза — отмена должна прервать её, не дожидаясь
173
+ retry: { maxRetries: 3, delaysMs: [10_000, 10_000, 10_000] },
174
+ publish: (type, data) => events.push({ type, data }),
175
+ }, ac.signal));
176
+ // Ждём публикации subagent.retry (начался backoff), затем «Стоп»
177
+ await vi.waitFor(() => {
178
+ expect(events.some((e) => e.type === 'subagent.retry')).toBe(true);
179
+ }, { timeout: 3000 });
180
+ ac.abort();
181
+ const result = await promise;
182
+ expect(provider.chatAsync).toHaveBeenCalledTimes(1);
183
+ expect(result.isError).toBeFalsy();
184
+ expect(result.content).toContain('<status>stopped_by_user</status>');
185
+ expect(result.metadata.stopped_by).toBe('user');
186
+ expect(result.metadata.interrupted).toBe(true);
187
+ });
188
+ });
189
+ // ─────────────────────────────────────────────────────────────────────
190
+ // B2: Resume прерванной/ошибочной дочерней сессии
191
+ // ─────────────────────────────────────────────────────────────────────
192
+ /** Успешный провайдер для resume: финальный ответ без tool-calls. */
193
+ class MockResumeOkProvider extends BaseProvider {
194
+ constructor() {
195
+ super({ url: '', apiKey: '', model: 'm', name: 'mockres', type: 'mockres' });
196
+ }
197
+ async chat() {
198
+ return { content: 'RESUMED OK', model: this.model, usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 } };
199
+ }
200
+ async *chatAsync() {
201
+ yield { isFinal: true, content: 'RESUMED OK', toolCalls: [] };
202
+ }
203
+ getProviderName() { return 'mockres'; }
204
+ }
205
+ /** Медленный провайдер: висит в стриме, пока не отменят. */
206
+ class MockResumeSlowProvider extends BaseProvider {
207
+ constructor() {
208
+ super({ url: '', apiKey: '', model: 'm', name: 'mockslow', type: 'mockslow' });
209
+ }
210
+ async chat() {
211
+ throw new Error('not used');
212
+ }
213
+ async *chatAsync(_m, _s, _t, _d, ct) {
214
+ yield { isFinal: false, content: 'работаю... ' };
215
+ for (let i = 0; i < 500; i++) {
216
+ if (ct?.cancelled)
217
+ return;
218
+ yield { isFinal: false, content: `шаг-${i} ` };
219
+ await new Promise((r) => setTimeout(r, 10));
220
+ }
221
+ }
222
+ getProviderName() { return 'mockslow'; }
223
+ }
224
+ describe('resume дочерней сессии саб-агента (B2)', () => {
225
+ let store;
226
+ let sessionManager;
227
+ let eventBus;
228
+ let tmpDir;
229
+ let orchestrator;
230
+ let events;
231
+ beforeEach(async () => {
232
+ tmpDir = await mkdtemp(join(tmpdir(), 'synth-task-resume-'));
233
+ store = new FileStore({ dataDir: tmpDir });
234
+ sessionManager = new SessionManager(store);
235
+ eventBus = new EventBus();
236
+ ProviderFactory.register('mockres', MockResumeOkProvider);
237
+ ProviderFactory.register('mockslow', MockResumeSlowProvider);
238
+ events = [];
239
+ // Перехват publish для сбора всех событий всех сессий
240
+ const origPublish = eventBus.publish.bind(eventBus);
241
+ eventBus.publish = ((sessionId, type, data) => {
242
+ events.push({ sessionId, type, data });
243
+ return origPublish(sessionId, type, data);
244
+ });
245
+ orchestrator = new ChatOrchestrator({
246
+ sessionManager,
247
+ eventBus,
248
+ contextBuilder: { buildSystemPrompt: async () => 'system prompt' },
249
+ providerLoader: (name) => {
250
+ return { name, type: name, baseUrl: '', apiKey: '', defaultModel: 'm' };
251
+ },
252
+ defaultWorkingDir: tmpDir,
253
+ agentRegistry: makeMockAgentRegistry(),
254
+ toolRegistry: createToolRegistry(),
255
+ });
256
+ });
257
+ afterEach(async () => {
258
+ ProviderFactory['_providers'].delete('mockres');
259
+ ProviderFactory['_providers'].delete('mockslow');
260
+ await rm(tmpDir, { recursive: true, force: true });
261
+ });
262
+ /** Родитель + дочерняя сессия саб-агента с оборванной историей. */
263
+ async function createInterruptedChild(providerType = 'mockres') {
264
+ const parent = await sessionManager.createSession({
265
+ title: 'Parent',
266
+ settings: { provider: providerType, model: 'm' },
267
+ });
268
+ const child = await sessionManager.createSession({
269
+ title: 'Subtask: analyse',
270
+ parentId: parent.id,
271
+ sessionOrigin: 'subagent',
272
+ settings: { provider: providerType, model: 'm', agentRole: 'explore' },
273
+ });
274
+ const userMsg = {
275
+ id: generateId(), role: MessageRole.USER, seq: 1, origin: 'local',
276
+ parts: [makeTextPart('проанализируй код')], content: 'проанализируй код',
277
+ createdAt: nowISO(), disabled: false, pinned: false, hidden: false,
278
+ };
279
+ const partialMsg = {
280
+ id: generateId(), role: MessageRole.ASSISTANT, seq: 2, origin: 'local',
281
+ parts: [makeTextPart('начал анализ...')], content: 'начал анализ...',
282
+ createdAt: nowISO(), disabled: false, pinned: false, hidden: false,
283
+ metadata: { partial: true, interrupted: true },
284
+ };
285
+ const stopMarker = {
286
+ id: generateId(), role: MessageRole.INFO, seq: 3, origin: 'local',
287
+ parts: [makeTextPart('Task stopped by the user')], content: 'Task stopped by the user',
288
+ createdAt: nowISO(), disabled: false, pinned: false, hidden: false,
289
+ metadata: { stopped_by: 'user', interrupted: true },
290
+ };
291
+ for (const m of [userMsg, partialMsg, stopMarker]) {
292
+ await sessionManager.addMessage(child.id, m);
293
+ }
294
+ return { parent: parent.id, child: child.id };
295
+ }
296
+ it('validateSubagentResume: не найденная сессия → NOT_FOUND, без родителя → NO_PARENT', async () => {
297
+ await expect(validateSubagentResume({ sessionManager }, 'missing-id'))
298
+ .rejects.toMatchObject({ code: 'NOT_FOUND', httpStatus: 404 });
299
+ const orphan = await sessionManager.createSession({ title: 'Orphan' });
300
+ await expect(validateSubagentResume({ sessionManager }, orphan.id))
301
+ .rejects.toMatchObject({ code: 'NO_PARENT', httpStatus: 400 });
302
+ });
303
+ it('startSubagentResume: активная (заблокированная) сессия → LOCKED (409), двойной resume → LOCKED', async () => {
304
+ const { child } = await createInterruptedChild();
305
+ // Захватываем блокировку — имитация активной обработки
306
+ const acquired = await sessionManager.acquireLock(child, 'other-process');
307
+ expect(acquired).toBe(true);
308
+ await expect(orchestrator.startSubagentResume(child))
309
+ .rejects.toMatchObject({ code: 'LOCKED', httpStatus: 409 });
310
+ await sessionManager.releaseLock(child, 'other-process');
311
+ // Двойной resume: первый захватил лок, второй получает 409
312
+ const first = await orchestrator.startSubagentResume(child);
313
+ await expect(orchestrator.startSubagentResume(child))
314
+ .rejects.toMatchObject({ code: 'LOCKED', httpStatus: 409 });
315
+ // Останавливаем первый прогон
316
+ orchestrator.cancel(first.stream_id);
317
+ await vi.waitFor(async () => {
318
+ const s = await sessionManager.getSession(child);
319
+ expect(s?.status.blocked).toBeFalsy();
320
+ }, { timeout: 5000 });
321
+ });
322
+ it('happy path: маркер resume в истории ребёнка, итог — в родителе, события опубликованы, лок снят', async () => {
323
+ const { parent, child } = await createInterruptedChild();
324
+ const eventsBefore = events.length;
325
+ const started = await orchestrator.startSubagentResume(child);
326
+ expect(started.status).toBe('started');
327
+ expect(started.child_session_id).toBe(child);
328
+ expect(started.parent_session_id).toBe(parent);
329
+ // Ждём завершения фонового прогона: итоговое сообщение в родителе
330
+ await vi.waitFor(async () => {
331
+ const p = await sessionManager.getSession(parent);
332
+ expect(p.messages.some((m) => m.metadata?.type === 'subagent_resumed_result')).toBe(true);
333
+ }, { timeout: 5000 });
334
+ // Synthetic user-маркер в истории дочерней сессии
335
+ const c = (await sessionManager.getSession(child));
336
+ const marker = c.messages.find((m) => m.metadata?.resume === true);
337
+ expect(marker).toBeDefined();
338
+ expect(marker.role).toBe(MessageRole.USER);
339
+ expect(marker.content).toContain('Resume the interrupted task');
340
+ // Финальный ответ саб-агента сохранён в дочерней сессии
341
+ expect(c.messages.some((m) => m.role === MessageRole.ASSISTANT && m.content === 'RESUMED OK')).toBe(true);
342
+ // Итог в родительской сессии: INFO + metadata
343
+ const p = (await sessionManager.getSession(parent));
344
+ const resumeResultMsg = p.messages.find((m) => m.metadata?.type === 'subagent_resumed_result');
345
+ expect(resumeResultMsg).toBeDefined();
346
+ expect(resumeResultMsg.role).toBe(MessageRole.INFO);
347
+ expect(resumeResultMsg.metadata.child_session_id).toBe(child);
348
+ expect(resumeResultMsg.metadata.resume_status).toBe('completed');
349
+ expect(resumeResultMsg.content).toContain('RESUMED OK');
350
+ // События: resume.started у ребёнка, message.added/session.updated у родителя
351
+ const newEvents = events.slice(eventsBefore);
352
+ expect(newEvents.some((e) => e.sessionId === child && e.type === 'subagent.resume.started')).toBe(true);
353
+ expect(newEvents.some((e) => e.sessionId === parent && e.type === 'message.added')).toBe(true);
354
+ expect(newEvents.some((e) => e.sessionId === parent && e.type === 'session.updated')).toBe(true);
355
+ expect(newEvents.some((e) => e.sessionId === child && e.type === 'subagent.resume.finished')).toBe(true);
356
+ // Блокировка и currentStream сняты
357
+ expect(c.status.blocked).toBeFalsy();
358
+ expect(c.currentStream).toBeUndefined();
359
+ });
360
+ it('abort resume (orchestrator.cancel по stream_id): статус aborted, итог в родителе — resume_aborted', async () => {
361
+ const { parent, child } = await createInterruptedChild('mockslow');
362
+ const started = await orchestrator.startSubagentResume(child);
363
+ // Даём стриму начаться (маркер resume записан → message.added у ребёнка),
364
+ // затем «Стоп» — тем же путём, что POST /sessions/:id/abort
365
+ await vi.waitFor(() => {
366
+ expect(events.some((e) => e.sessionId === child && e.type === 'message.added')).toBe(true);
367
+ }, { timeout: 5000 });
368
+ orchestrator.cancel(started.stream_id);
369
+ await vi.waitFor(async () => {
370
+ const p = await sessionManager.getSession(parent);
371
+ expect(p.messages.some((m) => m.metadata?.type === 'subagent_resumed_result')).toBe(true);
372
+ }, { timeout: 5000 });
373
+ const p = (await sessionManager.getSession(parent));
374
+ const resumeResultMsg = p.messages.find((m) => m.metadata?.type === 'subagent_resumed_result');
375
+ expect(resumeResultMsg.metadata.resume_status).toBe('aborted');
376
+ const s = (await sessionManager.getSession(child));
377
+ expect(s.status.blocked).toBeFalsy();
378
+ expect(s.currentStream).toBeUndefined();
379
+ });
380
+ it('runSubagentResume напрямую: провайдер недоступен → failed, ошибка записана в родителя', async () => {
381
+ const { parent, child } = await createInterruptedChild();
382
+ // Сессия с несуществующим провайдером: getProvider вернёт null
383
+ const result = await runSubagentResume({
384
+ sessionManager,
385
+ eventBus,
386
+ agentRegistry: makeMockAgentRegistry(),
387
+ getProvider: () => null,
388
+ getWorkingDir: async () => tmpDir,
389
+ }, { child: (await sessionManager.getSession(child)), parent: (await sessionManager.getSession(parent)), streamId: 'st-1', abortSignal: new AbortController().signal });
390
+ expect(result.status).toBe('failed');
391
+ expect(result.error).toContain('Provider is not configured');
392
+ const p = (await sessionManager.getSession(parent));
393
+ const resumeResultMsg = p.messages.find((m) => m.metadata?.type === 'subagent_resumed_result');
394
+ expect(resumeResultMsg.metadata.resume_status).toBe('failed');
395
+ });
396
+ it('LLMMessage-история resume содержит маркер последним user-сообщением', async () => {
397
+ const { parent, child } = await createInterruptedChild();
398
+ let captured = [];
399
+ const provider = {
400
+ model: 'm',
401
+ name: 'mockres',
402
+ chatAsync: vi.fn().mockImplementation(async function* (messages) {
403
+ captured = messages;
404
+ yield { isFinal: true, content: 'ok', toolCalls: [] };
405
+ }),
406
+ };
407
+ await runSubagentResume({
408
+ sessionManager,
409
+ eventBus,
410
+ agentRegistry: makeMockAgentRegistry(),
411
+ getProvider: () => provider,
412
+ getWorkingDir: async () => tmpDir,
413
+ }, { child: (await sessionManager.getSession(child)), parent: (await sessionManager.getSession(parent)), streamId: 'st-2', abortSignal: new AbortController().signal });
414
+ // system + user(промпт) + assistant(частичный) + user(маркер resume)
415
+ const roles = captured.map((m) => m.role);
416
+ expect(roles[0]).toBe('system');
417
+ expect(roles[roles.length - 1]).toBe('user');
418
+ expect(captured[captured.length - 1].content).toContain('Resume the interrupted task');
419
+ // Частичный ответ саб-агента в контексте
420
+ expect(captured.some((m) => m.role === 'assistant' && m.content === 'начал анализ...')).toBe(true);
421
+ });
422
+ });
423
+ //# sourceMappingURL=task-resume.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-resume.test.js","sourceRoot":"","sources":["../../../src/engine/tools/task-resume.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import type { ToolDefinition, SessionSettings, RouterConfig, PermissionConfig, SecurityConfig } from '@itphx/synth-shared';
1
+ import type { ToolDefinition, ToolResult, Message, Session, SessionSettings, RouterConfig, PermissionConfig, SecurityConfig, ToolForLLM, ToolContext } from '@itphx/synth-shared';
2
2
  import type { AgentRegistry } from '../agents/registry.js';
3
- import type { BaseProvider } from '../../providers/base.js';
3
+ import type { BaseProvider, LLMMessage } from '../../providers/base.js';
4
4
  import type { ToolRegistry } from './registry.js';
5
5
  import type { SessionManager } from '../../sessions/manager.js';
6
6
  import { EventBus } from '../../events/bus.js';
7
7
  import type { ContextOptimizer } from '../context/optimizer.js';
8
8
  import type { ContextConfig } from '../context/config.js';
9
9
  import type { ModelRouter } from '../router/router.js';
10
+ import type { ShellPolicy } from '../security/shell-guard.js';
11
+ import type { ProtectedPathsPolicy } from '../security/protected-paths.js';
10
12
  export interface TaskExtra {
11
13
  provider: BaseProvider;
12
14
  agentRegistry: AgentRegistry;
@@ -25,11 +27,88 @@ export interface TaskExtra {
25
27
  publish?: (type: string, data: Record<string, unknown>) => void;
26
28
  streamId?: string;
27
29
  sessionId?: string;
30
+ /** ID собственного tool-вызова `task` — как parent_call_id для внутренних вызовов саб-агента. */
31
+ callId?: string;
28
32
  callerAgentRole?: string;
29
33
  /** Permissions родительской сессии (AD-029) — наследуются саб-агентом с deny-дополнениями. */
30
34
  permissionConfig?: PermissionConfig;
31
35
  /** Секция безопасности (защита от Indirect Prompt Injection) из config.yaml. */
32
36
  securityConfig?: SecurityConfig;
37
+ /** Язык сессии (для локализованных сообщений безопасности). */
38
+ language?: string;
39
+ /** Политика безопасности execute_shell (денлист путей/команд) родительской сессии. */
40
+ shellPolicy?: ShellPolicy;
41
+ /** Единая политика защищённых путей (СКВОЗНАЯ проверка файловых тулов) родительской сессии. */
42
+ protectedPaths?: ProtectedPathsPolicy;
43
+ /** Тумблер полного отключения защищённых путей (default true). */
44
+ protectedPathsEnabled?: boolean;
45
+ /** Override retry-параметров саб-агента (по умолчанию 3 попытки, backoff 5/15/30с). */
46
+ retry?: SubagentRetryConfig;
33
47
  }
48
+ type ContextMode = 'none' | 'inherit' | 'summary' | 'last_n';
49
+ /** Retry саб-агента: максимум попыток LLM-вызова (единая политика — LLM_MAX_ATTEMPTS). */
50
+ export declare const SUBAGENT_MAX_ATTEMPTS = 3;
51
+ /** Backoff между попытками (единая политика — LLM_RETRY_DELAYS_MS). */
52
+ export declare const SUBAGENT_RETRY_DELAYS_MS: number[];
53
+ /** Параметры retry-цикла LLM-вызова саб-агента. */
54
+ export interface SubagentRetryConfig {
55
+ /** Максимум попыток (включая первую). */
56
+ maxRetries: number;
57
+ /** Задержки между попытками, мс (index = попытка - 1). */
58
+ delaysMs: number[];
59
+ }
60
+ /**
61
+ * Промпт саб-агента по языку сессии: prompts/subagents/{type}.{lang}.md →
62
+ * {type}.md → agentDef.subagentPrompt (definitions JSON, легаси).
63
+ * Каталог промптов — systemPromptsDir из ContextConfig (резолв prompts/ или dist/prompts).
64
+ */
65
+ export declare function resolveSubagentPrompt(agentDef: {
66
+ subagentPrompt?: string;
67
+ }, subagentType: string, language: string | undefined, systemPromptsDir: string | undefined): string;
68
+ export declare function messageToLLMMessage(msg: Message): LLMMessage;
69
+ export declare function publishMessageAdded(eventBus: EventBus, parentSessionId: string, childSessionId: string, msg: Message, index: number, childSession?: Session): Promise<void>;
34
70
  export declare const taskTool: ToolDefinition;
71
+ /**
72
+ * runSubagent — цикл выполнения саб-агента, общий для тула `task` и для
73
+ * возобновления прерванной дочерней сессии (task-resume.ts).
74
+ *
75
+ * Включает: связку cancel-токена с родительским сигналом отмены, permissions
76
+ * дочерней сессии (AD-029), режимную фильтрацию тулов, tool-loop со стримом
77
+ * прогресса родителю, retry-цикл LLM-вызова (recoverable → backoff, аналог
78
+ * QueueProcessor), обработку отмены (finishAborted), quality check/эскалацию
79
+ * (AD-034) и формирование tool_result.
80
+ */
81
+ export interface SubagentRunConfig {
82
+ /** Тип саб-агента (id в реестре агентов). */
83
+ subagentType: string;
84
+ description: string;
85
+ contextMode: ContextMode;
86
+ /** Лимит шагов агента (0/undefined — без ограничений). */
87
+ maxSteps?: number;
88
+ /** Сырой системный промпт саб-агента (второй аргумент chatAsync). */
89
+ systemPrompt: string;
90
+ /** Расширенный системный промпт (заметки/роутинг) — messages[0]. */
91
+ llmSystemPrompt: string;
92
+ /** Начальные LLM-сообщения БЕЗ system: история дочерней сессии + user-промпт. */
93
+ initialMessages: LLMMessage[];
94
+ /** Провайдер саб-агента (уже резолвнутый роутером/оркестратором). */
95
+ provider: BaseProvider;
96
+ tools?: ToolForLLM[];
97
+ /** Дочерняя сессия (если есть) — в неё пишется история саб-агента. */
98
+ childSessionId?: string;
99
+ /** Сессия для child.*-событий (у task — родитель, у resume — родитель resumed-сессии). */
100
+ parentSessionId: string;
101
+ /** Начальное routing-решение (AD-034) — для QA/эскалации. */
102
+ routingDecisionInfo?: {
103
+ providerName: string;
104
+ modelName: string;
105
+ strategy: string;
106
+ };
107
+ extra: TaskExtra;
108
+ ctx: ToolContext;
109
+ /** Override retry-параметров (иначе extra.retry или дефолт 3 попытки / 5-15-30с). */
110
+ retry?: SubagentRetryConfig;
111
+ }
112
+ export declare function runSubagent(config: SubagentRunConfig): Promise<ToolResult>;
113
+ export {};
35
114
  //# sourceMappingURL=task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/engine/tools/task.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAgC,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAyB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChL,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gFAAgF;IAChF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAyDD,eAAO,MAAM,QAAQ,EAAE,cA+6BtB,CAAC"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/engine/tools/task.ts"],"names":[],"mappings":"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"}