qlogicagent 0.1.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 (450) hide show
  1. package/README.md +45 -0
  2. package/dist/agent/agent.d.ts +44 -0
  3. package/dist/agent/agent.d.ts.map +1 -0
  4. package/dist/agent/agent.js +114 -0
  5. package/dist/agent/agent.js.map +1 -0
  6. package/dist/agent/tool-loop.d.ts +65 -0
  7. package/dist/agent/tool-loop.d.ts.map +1 -0
  8. package/dist/agent/tool-loop.js +576 -0
  9. package/dist/agent/tool-loop.js.map +1 -0
  10. package/dist/agent/types.d.ts +176 -0
  11. package/dist/agent/types.d.ts.map +1 -0
  12. package/dist/agent/types.js +15 -0
  13. package/dist/agent/types.js.map +1 -0
  14. package/dist/cli/main.d.ts +12 -0
  15. package/dist/cli/main.d.ts.map +1 -0
  16. package/dist/cli/main.js +24 -0
  17. package/dist/cli/main.js.map +1 -0
  18. package/dist/cli/stdio-server.d.ts +46 -0
  19. package/dist/cli/stdio-server.d.ts.map +1 -0
  20. package/dist/cli/stdio-server.js +464 -0
  21. package/dist/cli/stdio-server.js.map +1 -0
  22. package/dist/config/config.d.ts +18 -0
  23. package/dist/config/config.d.ts.map +1 -0
  24. package/dist/config/config.js +22 -0
  25. package/dist/config/config.js.map +1 -0
  26. package/dist/contracts/hooks.d.ts +121 -0
  27. package/dist/contracts/hooks.d.ts.map +1 -0
  28. package/dist/contracts/hooks.js +8 -0
  29. package/dist/contracts/hooks.js.map +1 -0
  30. package/dist/contracts/index.d.ts +11 -0
  31. package/dist/contracts/index.d.ts.map +1 -0
  32. package/dist/contracts/index.js +11 -0
  33. package/dist/contracts/index.js.map +1 -0
  34. package/dist/contracts/planner.d.ts +36 -0
  35. package/dist/contracts/planner.d.ts.map +1 -0
  36. package/dist/contracts/planner.js +3 -0
  37. package/dist/contracts/planner.js.map +1 -0
  38. package/dist/contracts/skill-candidate.d.ts +64 -0
  39. package/dist/contracts/skill-candidate.d.ts.map +1 -0
  40. package/dist/contracts/skill-candidate.js +196 -0
  41. package/dist/contracts/skill-candidate.js.map +1 -0
  42. package/dist/contracts/todo.d.ts +15 -0
  43. package/dist/contracts/todo.d.ts.map +1 -0
  44. package/dist/contracts/todo.js +10 -0
  45. package/dist/contracts/todo.js.map +1 -0
  46. package/dist/index.d.ts +14 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +16 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/llm/builtin-providers.d.ts +11 -0
  51. package/dist/llm/builtin-providers.d.ts.map +1 -0
  52. package/dist/llm/builtin-providers.js +532 -0
  53. package/dist/llm/builtin-providers.js.map +1 -0
  54. package/dist/llm/index.d.ts +16 -0
  55. package/dist/llm/index.d.ts.map +1 -0
  56. package/dist/llm/index.js +15 -0
  57. package/dist/llm/index.js.map +1 -0
  58. package/dist/llm/llm-client.d.ts +44 -0
  59. package/dist/llm/llm-client.d.ts.map +1 -0
  60. package/dist/llm/llm-client.js +68 -0
  61. package/dist/llm/llm-client.js.map +1 -0
  62. package/dist/llm/model-catalog.d.ts +54 -0
  63. package/dist/llm/model-catalog.d.ts.map +1 -0
  64. package/dist/llm/model-catalog.js +192 -0
  65. package/dist/llm/model-catalog.js.map +1 -0
  66. package/dist/llm/provider-def.d.ts +60 -0
  67. package/dist/llm/provider-def.d.ts.map +1 -0
  68. package/dist/llm/provider-def.js +13 -0
  69. package/dist/llm/provider-def.js.map +1 -0
  70. package/dist/llm/provider-registry.d.ts +55 -0
  71. package/dist/llm/provider-registry.d.ts.map +1 -0
  72. package/dist/llm/provider-registry.js +148 -0
  73. package/dist/llm/provider-registry.js.map +1 -0
  74. package/dist/llm/transport.d.ts +63 -0
  75. package/dist/llm/transport.d.ts.map +1 -0
  76. package/dist/llm/transport.js +28 -0
  77. package/dist/llm/transport.js.map +1 -0
  78. package/dist/llm/transports/anthropic-messages.d.ts +32 -0
  79. package/dist/llm/transports/anthropic-messages.d.ts.map +1 -0
  80. package/dist/llm/transports/anthropic-messages.js +294 -0
  81. package/dist/llm/transports/anthropic-messages.js.map +1 -0
  82. package/dist/llm/transports/openai-chat.d.ts +37 -0
  83. package/dist/llm/transports/openai-chat.d.ts.map +1 -0
  84. package/dist/llm/transports/openai-chat.js +166 -0
  85. package/dist/llm/transports/openai-chat.js.map +1 -0
  86. package/dist/orchestration/agent-registry.d.ts +42 -0
  87. package/dist/orchestration/agent-registry.d.ts.map +1 -0
  88. package/dist/orchestration/agent-registry.js +117 -0
  89. package/dist/orchestration/agent-registry.js.map +1 -0
  90. package/dist/orchestration/approval-aware-tool-plan.d.ts +33 -0
  91. package/dist/orchestration/approval-aware-tool-plan.d.ts.map +1 -0
  92. package/dist/orchestration/approval-aware-tool-plan.js +88 -0
  93. package/dist/orchestration/approval-aware-tool-plan.js.map +1 -0
  94. package/dist/orchestration/context-compression.d.ts +221 -0
  95. package/dist/orchestration/context-compression.d.ts.map +1 -0
  96. package/dist/orchestration/context-compression.js +584 -0
  97. package/dist/orchestration/context-compression.js.map +1 -0
  98. package/dist/orchestration/conversation-repair.d.ts +62 -0
  99. package/dist/orchestration/conversation-repair.d.ts.map +1 -0
  100. package/dist/orchestration/conversation-repair.js +430 -0
  101. package/dist/orchestration/conversation-repair.js.map +1 -0
  102. package/dist/orchestration/curator-scheduler.d.ts +120 -0
  103. package/dist/orchestration/curator-scheduler.d.ts.map +1 -0
  104. package/dist/orchestration/curator-scheduler.js +136 -0
  105. package/dist/orchestration/curator-scheduler.js.map +1 -0
  106. package/dist/orchestration/embedded-failover-policy.d.ts +111 -0
  107. package/dist/orchestration/embedded-failover-policy.d.ts.map +1 -0
  108. package/dist/orchestration/embedded-failover-policy.js +169 -0
  109. package/dist/orchestration/embedded-failover-policy.js.map +1 -0
  110. package/dist/orchestration/error-classification.d.ts +13 -0
  111. package/dist/orchestration/error-classification.d.ts.map +1 -0
  112. package/dist/orchestration/error-classification.js +78 -0
  113. package/dist/orchestration/error-classification.js.map +1 -0
  114. package/dist/orchestration/failover-classification.d.ts +9 -0
  115. package/dist/orchestration/failover-classification.d.ts.map +1 -0
  116. package/dist/orchestration/failover-classification.js +382 -0
  117. package/dist/orchestration/failover-classification.js.map +1 -0
  118. package/dist/orchestration/failover-error.d.ts +34 -0
  119. package/dist/orchestration/failover-error.d.ts.map +1 -0
  120. package/dist/orchestration/failover-error.js +199 -0
  121. package/dist/orchestration/failover-error.js.map +1 -0
  122. package/dist/orchestration/fork-subagent.d.ts +101 -0
  123. package/dist/orchestration/fork-subagent.d.ts.map +1 -0
  124. package/dist/orchestration/fork-subagent.js +99 -0
  125. package/dist/orchestration/fork-subagent.js.map +1 -0
  126. package/dist/orchestration/index.d.ts +121 -0
  127. package/dist/orchestration/index.d.ts.map +1 -0
  128. package/dist/orchestration/index.js +268 -0
  129. package/dist/orchestration/index.js.map +1 -0
  130. package/dist/orchestration/memory-flush-policy.d.ts +58 -0
  131. package/dist/orchestration/memory-flush-policy.d.ts.map +1 -0
  132. package/dist/orchestration/memory-flush-policy.js +86 -0
  133. package/dist/orchestration/memory-flush-policy.js.map +1 -0
  134. package/dist/orchestration/memory-provider.d.ts +15 -0
  135. package/dist/orchestration/memory-provider.d.ts.map +1 -0
  136. package/dist/orchestration/memory-provider.js +3 -0
  137. package/dist/orchestration/memory-provider.js.map +1 -0
  138. package/dist/orchestration/parallel-tool-calls.d.ts +42 -0
  139. package/dist/orchestration/parallel-tool-calls.d.ts.map +1 -0
  140. package/dist/orchestration/parallel-tool-calls.js +60 -0
  141. package/dist/orchestration/parallel-tool-calls.js.map +1 -0
  142. package/dist/orchestration/prompt-cache-strategy.d.ts +127 -0
  143. package/dist/orchestration/prompt-cache-strategy.d.ts.map +1 -0
  144. package/dist/orchestration/prompt-cache-strategy.js +229 -0
  145. package/dist/orchestration/prompt-cache-strategy.js.map +1 -0
  146. package/dist/orchestration/reactive-compact.d.ts +74 -0
  147. package/dist/orchestration/reactive-compact.d.ts.map +1 -0
  148. package/dist/orchestration/reactive-compact.js +79 -0
  149. package/dist/orchestration/reactive-compact.js.map +1 -0
  150. package/dist/orchestration/retry-loop.d.ts +23 -0
  151. package/dist/orchestration/retry-loop.d.ts.map +1 -0
  152. package/dist/orchestration/retry-loop.js +25 -0
  153. package/dist/orchestration/retry-loop.js.map +1 -0
  154. package/dist/orchestration/skill-candidate.d.ts +53 -0
  155. package/dist/orchestration/skill-candidate.d.ts.map +1 -0
  156. package/dist/orchestration/skill-candidate.js +142 -0
  157. package/dist/orchestration/skill-candidate.js.map +1 -0
  158. package/dist/orchestration/skill-consolidation.d.ts +124 -0
  159. package/dist/orchestration/skill-consolidation.d.ts.map +1 -0
  160. package/dist/orchestration/skill-consolidation.js +221 -0
  161. package/dist/orchestration/skill-consolidation.js.map +1 -0
  162. package/dist/orchestration/skill-improvement.d.ts +60 -0
  163. package/dist/orchestration/skill-improvement.d.ts.map +1 -0
  164. package/dist/orchestration/skill-improvement.js +67 -0
  165. package/dist/orchestration/skill-improvement.js.map +1 -0
  166. package/dist/orchestration/skill-similarity.d.ts +99 -0
  167. package/dist/orchestration/skill-similarity.d.ts.map +1 -0
  168. package/dist/orchestration/skill-similarity.js +132 -0
  169. package/dist/orchestration/skill-similarity.js.map +1 -0
  170. package/dist/orchestration/streaming-tool-executor.d.ts +74 -0
  171. package/dist/orchestration/streaming-tool-executor.d.ts.map +1 -0
  172. package/dist/orchestration/streaming-tool-executor.js +97 -0
  173. package/dist/orchestration/streaming-tool-executor.js.map +1 -0
  174. package/dist/orchestration/team-orchestration.d.ts +196 -0
  175. package/dist/orchestration/team-orchestration.d.ts.map +1 -0
  176. package/dist/orchestration/team-orchestration.js +370 -0
  177. package/dist/orchestration/team-orchestration.js.map +1 -0
  178. package/dist/orchestration/team-tool-loop-wiring.d.ts +93 -0
  179. package/dist/orchestration/team-tool-loop-wiring.d.ts.map +1 -0
  180. package/dist/orchestration/team-tool-loop-wiring.js +148 -0
  181. package/dist/orchestration/team-tool-loop-wiring.js.map +1 -0
  182. package/dist/orchestration/tool-choice-policy.d.ts +55 -0
  183. package/dist/orchestration/tool-choice-policy.d.ts.map +1 -0
  184. package/dist/orchestration/tool-choice-policy.js +165 -0
  185. package/dist/orchestration/tool-choice-policy.js.map +1 -0
  186. package/dist/orchestration/tool-loop-state.d.ts +51 -0
  187. package/dist/orchestration/tool-loop-state.d.ts.map +1 -0
  188. package/dist/orchestration/tool-loop-state.js +134 -0
  189. package/dist/orchestration/tool-loop-state.js.map +1 -0
  190. package/dist/orchestration/tool-schema.d.ts +40 -0
  191. package/dist/orchestration/tool-schema.d.ts.map +1 -0
  192. package/dist/orchestration/tool-schema.js +298 -0
  193. package/dist/orchestration/tool-schema.js.map +1 -0
  194. package/dist/orchestration/transcript-repair.d.ts +43 -0
  195. package/dist/orchestration/transcript-repair.d.ts.map +1 -0
  196. package/dist/orchestration/transcript-repair.js +427 -0
  197. package/dist/orchestration/transcript-repair.js.map +1 -0
  198. package/dist/orchestration/turn-loop-guard.d.ts +87 -0
  199. package/dist/orchestration/turn-loop-guard.d.ts.map +1 -0
  200. package/dist/orchestration/turn-loop-guard.js +93 -0
  201. package/dist/orchestration/turn-loop-guard.js.map +1 -0
  202. package/dist/orchestration/web-browser-policy.d.ts +18 -0
  203. package/dist/orchestration/web-browser-policy.d.ts.map +1 -0
  204. package/dist/orchestration/web-browser-policy.js +40 -0
  205. package/dist/orchestration/web-browser-policy.js.map +1 -0
  206. package/dist/runtime/context-compression.d.ts +62 -0
  207. package/dist/runtime/context-compression.d.ts.map +1 -0
  208. package/dist/runtime/context-compression.js +275 -0
  209. package/dist/runtime/context-compression.js.map +1 -0
  210. package/dist/runtime/hook-registry.d.ts +13 -0
  211. package/dist/runtime/hook-registry.d.ts.map +1 -0
  212. package/dist/runtime/hook-registry.js +54 -0
  213. package/dist/runtime/hook-registry.js.map +1 -0
  214. package/dist/runtime/memory-hooks.d.ts +24 -0
  215. package/dist/runtime/memory-hooks.d.ts.map +1 -0
  216. package/dist/runtime/memory-hooks.js +66 -0
  217. package/dist/runtime/memory-hooks.js.map +1 -0
  218. package/dist/runtime/tool-eligibility.d.ts +60 -0
  219. package/dist/runtime/tool-eligibility.d.ts.map +1 -0
  220. package/dist/runtime/tool-eligibility.js +112 -0
  221. package/dist/runtime/tool-eligibility.js.map +1 -0
  222. package/dist/skills/index.d.ts +109 -0
  223. package/dist/skills/index.d.ts.map +1 -0
  224. package/dist/skills/index.js +83 -0
  225. package/dist/skills/index.js.map +1 -0
  226. package/dist/skills/memory-extractor.d.ts +65 -0
  227. package/dist/skills/memory-extractor.d.ts.map +1 -0
  228. package/dist/skills/memory-extractor.js +174 -0
  229. package/dist/skills/memory-extractor.js.map +1 -0
  230. package/dist/skills/memory-query-tool.d.ts +44 -0
  231. package/dist/skills/memory-query-tool.d.ts.map +1 -0
  232. package/dist/skills/memory-query-tool.js +128 -0
  233. package/dist/skills/memory-query-tool.js.map +1 -0
  234. package/dist/skills/memory-store.d.ts +67 -0
  235. package/dist/skills/memory-store.d.ts.map +1 -0
  236. package/dist/skills/memory-store.js +229 -0
  237. package/dist/skills/memory-store.js.map +1 -0
  238. package/dist/skills/memory-tool.d.ts +68 -0
  239. package/dist/skills/memory-tool.d.ts.map +1 -0
  240. package/dist/skills/memory-tool.js +193 -0
  241. package/dist/skills/memory-tool.js.map +1 -0
  242. package/dist/skills/portable-tool.d.ts +72 -0
  243. package/dist/skills/portable-tool.d.ts.map +1 -0
  244. package/dist/skills/portable-tool.js +15 -0
  245. package/dist/skills/portable-tool.js.map +1 -0
  246. package/dist/skills/qmemory-adapter.d.ts +53 -0
  247. package/dist/skills/qmemory-adapter.d.ts.map +1 -0
  248. package/dist/skills/qmemory-adapter.js +166 -0
  249. package/dist/skills/qmemory-adapter.js.map +1 -0
  250. package/dist/skills/skill-frontmatter.d.ts +20 -0
  251. package/dist/skills/skill-frontmatter.d.ts.map +1 -0
  252. package/dist/skills/skill-frontmatter.js +345 -0
  253. package/dist/skills/skill-frontmatter.js.map +1 -0
  254. package/dist/skills/skill-guard.d.ts +24 -0
  255. package/dist/skills/skill-guard.d.ts.map +1 -0
  256. package/dist/skills/skill-guard.js +230 -0
  257. package/dist/skills/skill-guard.js.map +1 -0
  258. package/dist/skills/skill-loader.d.ts +17 -0
  259. package/dist/skills/skill-loader.d.ts.map +1 -0
  260. package/dist/skills/skill-loader.js +304 -0
  261. package/dist/skills/skill-loader.js.map +1 -0
  262. package/dist/skills/skill-source.d.ts +120 -0
  263. package/dist/skills/skill-source.d.ts.map +1 -0
  264. package/dist/skills/skill-source.js +127 -0
  265. package/dist/skills/skill-source.js.map +1 -0
  266. package/dist/skills/skill-types.d.ts +200 -0
  267. package/dist/skills/skill-types.d.ts.map +1 -0
  268. package/dist/skills/skill-types.js +7 -0
  269. package/dist/skills/skill-types.js.map +1 -0
  270. package/dist/skills/think-tool.d.ts +17 -0
  271. package/dist/skills/think-tool.d.ts.map +1 -0
  272. package/dist/skills/think-tool.js +60 -0
  273. package/dist/skills/think-tool.js.map +1 -0
  274. package/dist/skills/todo-tool.d.ts +64 -0
  275. package/dist/skills/todo-tool.d.ts.map +1 -0
  276. package/dist/skills/todo-tool.js +115 -0
  277. package/dist/skills/todo-tool.js.map +1 -0
  278. package/dist/skills/tools/agent-tool.d.ts +92 -0
  279. package/dist/skills/tools/agent-tool.d.ts.map +1 -0
  280. package/dist/skills/tools/agent-tool.js +143 -0
  281. package/dist/skills/tools/agent-tool.js.map +1 -0
  282. package/dist/skills/tools/apply-patch-tool.d.ts +30 -0
  283. package/dist/skills/tools/apply-patch-tool.d.ts.map +1 -0
  284. package/dist/skills/tools/apply-patch-tool.js +185 -0
  285. package/dist/skills/tools/apply-patch-tool.js.map +1 -0
  286. package/dist/skills/tools/ask-user-tool.d.ts +81 -0
  287. package/dist/skills/tools/ask-user-tool.d.ts.map +1 -0
  288. package/dist/skills/tools/ask-user-tool.js +122 -0
  289. package/dist/skills/tools/ask-user-tool.js.map +1 -0
  290. package/dist/skills/tools/brief-tool.d.ts +75 -0
  291. package/dist/skills/tools/brief-tool.d.ts.map +1 -0
  292. package/dist/skills/tools/brief-tool.js +96 -0
  293. package/dist/skills/tools/brief-tool.js.map +1 -0
  294. package/dist/skills/tools/browser-tool.d.ts +115 -0
  295. package/dist/skills/tools/browser-tool.d.ts.map +1 -0
  296. package/dist/skills/tools/browser-tool.js +156 -0
  297. package/dist/skills/tools/browser-tool.js.map +1 -0
  298. package/dist/skills/tools/checkpoint-tool.d.ts +67 -0
  299. package/dist/skills/tools/checkpoint-tool.d.ts.map +1 -0
  300. package/dist/skills/tools/checkpoint-tool.js +103 -0
  301. package/dist/skills/tools/checkpoint-tool.js.map +1 -0
  302. package/dist/skills/tools/config-tool.d.ts +64 -0
  303. package/dist/skills/tools/config-tool.d.ts.map +1 -0
  304. package/dist/skills/tools/config-tool.js +144 -0
  305. package/dist/skills/tools/config-tool.js.map +1 -0
  306. package/dist/skills/tools/cron-tool.d.ts +117 -0
  307. package/dist/skills/tools/cron-tool.d.ts.map +1 -0
  308. package/dist/skills/tools/cron-tool.js +176 -0
  309. package/dist/skills/tools/cron-tool.js.map +1 -0
  310. package/dist/skills/tools/edit-tool.d.ts +44 -0
  311. package/dist/skills/tools/edit-tool.d.ts.map +1 -0
  312. package/dist/skills/tools/edit-tool.js +71 -0
  313. package/dist/skills/tools/edit-tool.js.map +1 -0
  314. package/dist/skills/tools/exec-tool.d.ts +103 -0
  315. package/dist/skills/tools/exec-tool.d.ts.map +1 -0
  316. package/dist/skills/tools/exec-tool.js +134 -0
  317. package/dist/skills/tools/exec-tool.js.map +1 -0
  318. package/dist/skills/tools/image-generate-tool.d.ts +63 -0
  319. package/dist/skills/tools/image-generate-tool.d.ts.map +1 -0
  320. package/dist/skills/tools/image-generate-tool.js +68 -0
  321. package/dist/skills/tools/image-generate-tool.js.map +1 -0
  322. package/dist/skills/tools/instructions-tool.d.ts +104 -0
  323. package/dist/skills/tools/instructions-tool.d.ts.map +1 -0
  324. package/dist/skills/tools/instructions-tool.js +188 -0
  325. package/dist/skills/tools/instructions-tool.js.map +1 -0
  326. package/dist/skills/tools/lsp-tool.d.ts +154 -0
  327. package/dist/skills/tools/lsp-tool.d.ts.map +1 -0
  328. package/dist/skills/tools/lsp-tool.js +228 -0
  329. package/dist/skills/tools/lsp-tool.js.map +1 -0
  330. package/dist/skills/tools/mcp-client-types.d.ts +270 -0
  331. package/dist/skills/tools/mcp-client-types.d.ts.map +1 -0
  332. package/dist/skills/tools/mcp-client-types.js +54 -0
  333. package/dist/skills/tools/mcp-client-types.js.map +1 -0
  334. package/dist/skills/tools/mcp-tool.d.ts +250 -0
  335. package/dist/skills/tools/mcp-tool.d.ts.map +1 -0
  336. package/dist/skills/tools/mcp-tool.js +504 -0
  337. package/dist/skills/tools/mcp-tool.js.map +1 -0
  338. package/dist/skills/tools/memory-tool.d.ts +75 -0
  339. package/dist/skills/tools/memory-tool.d.ts.map +1 -0
  340. package/dist/skills/tools/memory-tool.js +89 -0
  341. package/dist/skills/tools/memory-tool.js.map +1 -0
  342. package/dist/skills/tools/monitor-tool.d.ts +114 -0
  343. package/dist/skills/tools/monitor-tool.d.ts.map +1 -0
  344. package/dist/skills/tools/monitor-tool.js +132 -0
  345. package/dist/skills/tools/monitor-tool.js.map +1 -0
  346. package/dist/skills/tools/music-generate-tool.d.ts +56 -0
  347. package/dist/skills/tools/music-generate-tool.d.ts.map +1 -0
  348. package/dist/skills/tools/music-generate-tool.js +63 -0
  349. package/dist/skills/tools/music-generate-tool.js.map +1 -0
  350. package/dist/skills/tools/notify-tool.d.ts +54 -0
  351. package/dist/skills/tools/notify-tool.d.ts.map +1 -0
  352. package/dist/skills/tools/notify-tool.js +63 -0
  353. package/dist/skills/tools/notify-tool.js.map +1 -0
  354. package/dist/skills/tools/patch-tool.d.ts +46 -0
  355. package/dist/skills/tools/patch-tool.d.ts.map +1 -0
  356. package/dist/skills/tools/patch-tool.js +506 -0
  357. package/dist/skills/tools/patch-tool.js.map +1 -0
  358. package/dist/skills/tools/pdf-tool.d.ts +67 -0
  359. package/dist/skills/tools/pdf-tool.d.ts.map +1 -0
  360. package/dist/skills/tools/pdf-tool.js +89 -0
  361. package/dist/skills/tools/pdf-tool.js.map +1 -0
  362. package/dist/skills/tools/plan-mode-tool.d.ts +60 -0
  363. package/dist/skills/tools/plan-mode-tool.d.ts.map +1 -0
  364. package/dist/skills/tools/plan-mode-tool.js +123 -0
  365. package/dist/skills/tools/plan-mode-tool.js.map +1 -0
  366. package/dist/skills/tools/read-tool.d.ts +52 -0
  367. package/dist/skills/tools/read-tool.d.ts.map +1 -0
  368. package/dist/skills/tools/read-tool.js +85 -0
  369. package/dist/skills/tools/read-tool.js.map +1 -0
  370. package/dist/skills/tools/repl-tool.d.ts +71 -0
  371. package/dist/skills/tools/repl-tool.d.ts.map +1 -0
  372. package/dist/skills/tools/repl-tool.js +70 -0
  373. package/dist/skills/tools/repl-tool.js.map +1 -0
  374. package/dist/skills/tools/search-tool.d.ts +113 -0
  375. package/dist/skills/tools/search-tool.d.ts.map +1 -0
  376. package/dist/skills/tools/search-tool.js +226 -0
  377. package/dist/skills/tools/search-tool.js.map +1 -0
  378. package/dist/skills/tools/send-message-tool.d.ts +52 -0
  379. package/dist/skills/tools/send-message-tool.d.ts.map +1 -0
  380. package/dist/skills/tools/send-message-tool.js +77 -0
  381. package/dist/skills/tools/send-message-tool.js.map +1 -0
  382. package/dist/skills/tools/skill-list-tool.d.ts +34 -0
  383. package/dist/skills/tools/skill-list-tool.d.ts.map +1 -0
  384. package/dist/skills/tools/skill-list-tool.js +55 -0
  385. package/dist/skills/tools/skill-list-tool.js.map +1 -0
  386. package/dist/skills/tools/skill-manage-tool.d.ts +74 -0
  387. package/dist/skills/tools/skill-manage-tool.d.ts.map +1 -0
  388. package/dist/skills/tools/skill-manage-tool.js +154 -0
  389. package/dist/skills/tools/skill-manage-tool.js.map +1 -0
  390. package/dist/skills/tools/skill-view-tool.d.ts +38 -0
  391. package/dist/skills/tools/skill-view-tool.d.ts.map +1 -0
  392. package/dist/skills/tools/skill-view-tool.js +73 -0
  393. package/dist/skills/tools/skill-view-tool.js.map +1 -0
  394. package/dist/skills/tools/sleep-tool.d.ts +50 -0
  395. package/dist/skills/tools/sleep-tool.d.ts.map +1 -0
  396. package/dist/skills/tools/sleep-tool.js +82 -0
  397. package/dist/skills/tools/sleep-tool.js.map +1 -0
  398. package/dist/skills/tools/structured-output-tool.d.ts +117 -0
  399. package/dist/skills/tools/structured-output-tool.d.ts.map +1 -0
  400. package/dist/skills/tools/structured-output-tool.js +177 -0
  401. package/dist/skills/tools/structured-output-tool.js.map +1 -0
  402. package/dist/skills/tools/task-tool.d.ts +105 -0
  403. package/dist/skills/tools/task-tool.d.ts.map +1 -0
  404. package/dist/skills/tools/task-tool.js +162 -0
  405. package/dist/skills/tools/task-tool.js.map +1 -0
  406. package/dist/skills/tools/team-tool.d.ts +90 -0
  407. package/dist/skills/tools/team-tool.d.ts.map +1 -0
  408. package/dist/skills/tools/team-tool.js +106 -0
  409. package/dist/skills/tools/team-tool.js.map +1 -0
  410. package/dist/skills/tools/tool-search-tool.d.ts +52 -0
  411. package/dist/skills/tools/tool-search-tool.d.ts.map +1 -0
  412. package/dist/skills/tools/tool-search-tool.js +111 -0
  413. package/dist/skills/tools/tool-search-tool.js.map +1 -0
  414. package/dist/skills/tools/tts-tool.d.ts +39 -0
  415. package/dist/skills/tools/tts-tool.d.ts.map +1 -0
  416. package/dist/skills/tools/tts-tool.js +46 -0
  417. package/dist/skills/tools/tts-tool.js.map +1 -0
  418. package/dist/skills/tools/video-edit-tool.d.ts +70 -0
  419. package/dist/skills/tools/video-edit-tool.d.ts.map +1 -0
  420. package/dist/skills/tools/video-edit-tool.js +75 -0
  421. package/dist/skills/tools/video-edit-tool.js.map +1 -0
  422. package/dist/skills/tools/video-generate-tool.d.ts +63 -0
  423. package/dist/skills/tools/video-generate-tool.d.ts.map +1 -0
  424. package/dist/skills/tools/video-generate-tool.js +67 -0
  425. package/dist/skills/tools/video-generate-tool.js.map +1 -0
  426. package/dist/skills/tools/video-merge-tool.d.ts +106 -0
  427. package/dist/skills/tools/video-merge-tool.d.ts.map +1 -0
  428. package/dist/skills/tools/video-merge-tool.js +93 -0
  429. package/dist/skills/tools/video-merge-tool.js.map +1 -0
  430. package/dist/skills/tools/video-upscale-tool.d.ts +46 -0
  431. package/dist/skills/tools/video-upscale-tool.d.ts.map +1 -0
  432. package/dist/skills/tools/video-upscale-tool.js +53 -0
  433. package/dist/skills/tools/video-upscale-tool.js.map +1 -0
  434. package/dist/skills/tools/web-fetch-tool.d.ts +79 -0
  435. package/dist/skills/tools/web-fetch-tool.d.ts.map +1 -0
  436. package/dist/skills/tools/web-fetch-tool.js +93 -0
  437. package/dist/skills/tools/web-fetch-tool.js.map +1 -0
  438. package/dist/skills/tools/web-search-tool.d.ts +58 -0
  439. package/dist/skills/tools/web-search-tool.d.ts.map +1 -0
  440. package/dist/skills/tools/web-search-tool.js +87 -0
  441. package/dist/skills/tools/web-search-tool.js.map +1 -0
  442. package/dist/skills/tools/worktree-tool.d.ts +70 -0
  443. package/dist/skills/tools/worktree-tool.d.ts.map +1 -0
  444. package/dist/skills/tools/worktree-tool.js +148 -0
  445. package/dist/skills/tools/worktree-tool.js.map +1 -0
  446. package/dist/skills/tools/write-tool.d.ts +46 -0
  447. package/dist/skills/tools/write-tool.d.ts.map +1 -0
  448. package/dist/skills/tools/write-tool.js +82 -0
  449. package/dist/skills/tools/write-tool.js.map +1 -0
  450. package/package.json +41 -0
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Team Orchestration Strategy — multi-agent coordination layer.
3
+ *
4
+ * Extends the existing sidechain foundation with team/swarm semantics:
5
+ * - Parallel agent spawning (multiple sidechains at once)
6
+ * - Role-based agent assignment (planner / executor / reviewer)
7
+ * - Shared knowledge pool via merge policies
8
+ * - Budget-aware concurrency limits
9
+ * - Lifecycle state machine for team coordination
10
+ *
11
+ * Architecture:
12
+ * Gateway ─── Hub ─── orchestration (this module, pure strategy)
13
+ * │
14
+ * ┌───────────┼───────────┐
15
+ * │ TeamCoordinator │ ← Hub runtime (multi-sidechain-coordinator.ts)
16
+ * │ │ │
17
+ * │ ├── Agent #1 (planner)
18
+ * │ ├── Agent #2 (executor)
19
+ * │ └── Agent #3 (reviewer)
20
+ * └───────────────────────┘
21
+ *
22
+ * This module provides:
23
+ * 1. Type definitions (TeamPlan, AgentRole, TeamLifecycle)
24
+ * 2. Pure strategy functions (plan resolution, role assignment, budget allocation)
25
+ * 3. Merge/aggregation policies (how agent results combine)
26
+ *
27
+ * Hub consumes these types and strategy functions in its coordinator runtime.
28
+ * Gateway consumes TeamPlan to spawn/manage multiple sidechain executions.
29
+ */
30
+ // ---------------------------------------------------------------------------
31
+ // Strategy Functions — Pure, no I/O
32
+ // ---------------------------------------------------------------------------
33
+ /** Budget allocation weights per role (relative). */
34
+ const ROLE_BUDGET_WEIGHTS = {
35
+ planner: 3,
36
+ executor: 4,
37
+ reviewer: 2,
38
+ researcher: 3,
39
+ custom: 2,
40
+ };
41
+ /** Default concurrency limits by execution mode. */
42
+ const MODE_CONCURRENCY_DEFAULTS = {
43
+ parallel: 4,
44
+ sequential: 1,
45
+ pipeline: 1,
46
+ adaptive: 3,
47
+ };
48
+ /** Maximum agents allowed in a team (safety bound). */
49
+ export const TEAM_MAX_AGENTS = 8;
50
+ /** Maximum recursion depth (teams spawning teams). */
51
+ export const TEAM_MAX_DEPTH = 2;
52
+ /**
53
+ * Resolve a team plan from a high-level task decomposition.
54
+ *
55
+ * This is the main entry point: given a set of subtasks and constraints,
56
+ * produce a concrete TeamPlan that the coordinator can execute.
57
+ */
58
+ export function resolveTeamPlan(params) {
59
+ const agents = params.subtasks.slice(0, TEAM_MAX_AGENTS).map((sub) => {
60
+ const budgetTier = resolveAgentBudgetTier(sub.role);
61
+ return {
62
+ agentId: sub.id,
63
+ role: sub.role,
64
+ label: sub.label,
65
+ sidechainType: mapRoleToSidechainType(sub.role),
66
+ taskDescription: sub.task,
67
+ toolAccessMode: resolveAgentToolAccess(sub.role),
68
+ budgetTier,
69
+ dependsOn: sub.dependsOn ?? [],
70
+ maxTokenBudget: 0, // Will be allocated below
71
+ maxToolCalls: resolveMaxToolCalls(sub.role),
72
+ timeoutMs: 0,
73
+ };
74
+ });
75
+ const mode = params.mode ?? inferExecutionMode(agents);
76
+ const totalBudget = params.totalTokenBudget ?? 100_000;
77
+ const allocatedAgents = allocateTokenBudgets(agents, totalBudget);
78
+ return {
79
+ teamId: params.teamId,
80
+ mode,
81
+ aggregationPolicy: params.aggregationPolicy ?? inferAggregationPolicy(mode, agents),
82
+ agents: allocatedAgents,
83
+ maxConcurrency: MODE_CONCURRENCY_DEFAULTS[mode],
84
+ timeoutMs: params.timeoutMs ?? 300_000, // 5 min default
85
+ totalTokenBudget: totalBudget,
86
+ failFast: params.failFast ?? (mode === "pipeline"),
87
+ sharedContext: params.sharedContext ?? "",
88
+ mergePolicy: params.mergePolicy ?? "summary-only",
89
+ };
90
+ }
91
+ /**
92
+ * Map agent role to sidechain type for existing Hub plumbing compatibility.
93
+ */
94
+ export function mapRoleToSidechainType(role) {
95
+ switch (role) {
96
+ case "planner": return "planner";
97
+ case "executor": return "code-repair";
98
+ case "reviewer": return "research";
99
+ case "researcher": return "research";
100
+ case "custom": return "research";
101
+ }
102
+ }
103
+ /**
104
+ * Resolve tool access mode for a given role.
105
+ */
106
+ export function resolveAgentToolAccess(role) {
107
+ switch (role) {
108
+ case "planner": return "none"; // Planner thinks, doesn't act
109
+ case "executor": return "full"; // Executor needs full tool access
110
+ case "reviewer": return "read-only"; // Reviewer inspects, doesn't modify
111
+ case "researcher": return "read-only";
112
+ case "custom": return "read-only";
113
+ }
114
+ }
115
+ /**
116
+ * Resolve maximum tool calls for a given role.
117
+ */
118
+ function resolveMaxToolCalls(role) {
119
+ switch (role) {
120
+ case "planner": return 0;
121
+ case "executor": return 30;
122
+ case "reviewer": return 10;
123
+ case "researcher": return 15;
124
+ case "custom": return 10;
125
+ }
126
+ }
127
+ /**
128
+ * Resolve budget tier for a given role.
129
+ */
130
+ function resolveAgentBudgetTier(role) {
131
+ switch (role) {
132
+ case "planner": return "high";
133
+ case "executor": return "high";
134
+ case "reviewer": return "medium";
135
+ case "researcher": return "medium";
136
+ case "custom": return "low";
137
+ }
138
+ }
139
+ /**
140
+ * Allocate token budgets proportionally by role weight.
141
+ */
142
+ export function allocateTokenBudgets(agents, totalBudget) {
143
+ const totalWeight = agents.reduce((sum, a) => sum + ROLE_BUDGET_WEIGHTS[a.role], 0);
144
+ if (totalWeight === 0)
145
+ return agents;
146
+ return agents.map((agent) => ({
147
+ ...agent,
148
+ maxTokenBudget: Math.floor((ROLE_BUDGET_WEIGHTS[agent.role] / totalWeight) * totalBudget),
149
+ }));
150
+ }
151
+ /**
152
+ * Infer execution mode from agent dependency graph.
153
+ */
154
+ export function inferExecutionMode(agents) {
155
+ const hasDeps = agents.some((a) => a.dependsOn.length > 0);
156
+ if (!hasDeps)
157
+ return "parallel";
158
+ // If every agent depends on the previous → pipeline
159
+ const isLinearChain = agents.every((a, i) => i === 0 ? a.dependsOn.length === 0 : a.dependsOn.includes(agents[i - 1].agentId));
160
+ if (isLinearChain)
161
+ return "pipeline";
162
+ return "sequential";
163
+ }
164
+ /**
165
+ * Infer aggregation policy from mode and agent composition.
166
+ */
167
+ export function inferAggregationPolicy(mode, agents) {
168
+ const hasReviewer = agents.some((a) => a.role === "reviewer");
169
+ const hasPlanner = agents.some((a) => a.role === "planner");
170
+ if (hasReviewer)
171
+ return "reviewer-gate";
172
+ if (hasPlanner && mode === "adaptive")
173
+ return "planner-sync";
174
+ if (mode === "parallel" && agents.length >= 3)
175
+ return "majority-vote";
176
+ return "merge-all";
177
+ }
178
+ /**
179
+ * Determine the execution order for agents given their dependency graph.
180
+ * Returns groups of agent IDs that can execute concurrently.
181
+ *
182
+ * Example: [[planner], [executor-a, executor-b], [reviewer]]
183
+ */
184
+ export function resolveExecutionOrder(agents) {
185
+ const idSet = new Set(agents.map((a) => a.agentId));
186
+ const depMap = new Map(agents.map((a) => [a.agentId, a.dependsOn.filter((d) => idSet.has(d))]));
187
+ const completed = new Set();
188
+ const groups = [];
189
+ let remaining = new Set(idSet);
190
+ let iterations = 0;
191
+ const maxIterations = agents.length + 1;
192
+ while (remaining.size > 0 && iterations < maxIterations) {
193
+ const ready = [];
194
+ for (const id of remaining) {
195
+ const deps = depMap.get(id) ?? [];
196
+ if (deps.every((d) => completed.has(d))) {
197
+ ready.push(id);
198
+ }
199
+ }
200
+ if (ready.length === 0) {
201
+ // Circular dependency — break by picking first remaining
202
+ const first = remaining.values().next().value;
203
+ if (first)
204
+ ready.push(first);
205
+ }
206
+ for (const id of ready) {
207
+ remaining.delete(id);
208
+ completed.add(id);
209
+ }
210
+ groups.push(ready);
211
+ iterations++;
212
+ }
213
+ return groups;
214
+ }
215
+ /**
216
+ * Aggregate team results into a single output string.
217
+ */
218
+ export function aggregateTeamResults(results, policy) {
219
+ const completed = results.filter((r) => r.status === "completed");
220
+ switch (policy) {
221
+ case "first-success":
222
+ return completed[0]?.output ?? "[No successful agent output]";
223
+ case "majority-vote":
224
+ // Simple: return the most common non-empty output
225
+ if (completed.length === 0)
226
+ return "[No successful agent output]";
227
+ const counts = new Map();
228
+ for (const r of completed) {
229
+ const key = r.output.trim();
230
+ counts.set(key, (counts.get(key) ?? 0) + 1);
231
+ }
232
+ let best = "";
233
+ let bestCount = 0;
234
+ for (const [output, count] of counts) {
235
+ if (count > bestCount) {
236
+ best = output;
237
+ bestCount = count;
238
+ }
239
+ }
240
+ return best || completed[0].output;
241
+ case "merge-all":
242
+ return completed
243
+ .map((r) => `[${r.role}:${r.agentId}]\n${r.output}`)
244
+ .join("\n\n---\n\n");
245
+ case "reviewer-gate": {
246
+ const reviewer = completed.find((r) => r.role === "reviewer");
247
+ const executors = completed.filter((r) => r.role !== "reviewer");
248
+ if (reviewer) {
249
+ return `[Review]\n${reviewer.output}\n\n[Execution]\n${executors.map((e) => e.output).join("\n")}`;
250
+ }
251
+ return executors.map((e) => e.output).join("\n\n");
252
+ }
253
+ case "planner-sync": {
254
+ const planner = completed.find((r) => r.role === "planner");
255
+ const others = completed.filter((r) => r.role !== "planner");
256
+ if (planner) {
257
+ return `[Plan]\n${planner.output}\n\n[Results]\n${others.map((o) => `- ${o.agentId}: ${o.output.slice(0, 500)}`).join("\n")}`;
258
+ }
259
+ return others.map((o) => o.output).join("\n\n");
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * Validate a team plan before execution.
265
+ * Returns a list of issues (empty = valid).
266
+ */
267
+ export function validateTeamPlan(plan) {
268
+ const issues = [];
269
+ if (plan.agents.length === 0) {
270
+ issues.push("Team plan has no agents");
271
+ }
272
+ if (plan.agents.length > TEAM_MAX_AGENTS) {
273
+ issues.push(`Too many agents: ${plan.agents.length} > ${TEAM_MAX_AGENTS}`);
274
+ }
275
+ if (plan.totalTokenBudget <= 0) {
276
+ issues.push("Total token budget must be positive");
277
+ }
278
+ // Check for duplicate IDs
279
+ const ids = plan.agents.map((a) => a.agentId);
280
+ const uniqueIds = new Set(ids);
281
+ if (uniqueIds.size !== ids.length) {
282
+ issues.push("Duplicate agent IDs in team plan");
283
+ }
284
+ // Check dependency references
285
+ for (const agent of plan.agents) {
286
+ for (const dep of agent.dependsOn) {
287
+ if (!uniqueIds.has(dep)) {
288
+ issues.push(`Agent "${agent.agentId}" depends on non-existent agent "${dep}"`);
289
+ }
290
+ if (dep === agent.agentId) {
291
+ issues.push(`Agent "${agent.agentId}" depends on itself`);
292
+ }
293
+ }
294
+ }
295
+ // Pipeline mode must have linear dependencies
296
+ if (plan.mode === "pipeline") {
297
+ for (let i = 1; i < plan.agents.length; i++) {
298
+ if (!plan.agents[i].dependsOn.includes(plan.agents[i - 1].agentId)) {
299
+ issues.push(`Pipeline mode requires linear dependencies; agent "${plan.agents[i].agentId}" doesn't depend on previous`);
300
+ }
301
+ }
302
+ }
303
+ return issues;
304
+ }
305
+ /**
306
+ * Determine if a team execution should be cancelled early based on current state.
307
+ */
308
+ export function shouldCancelTeam(params) {
309
+ const { plan, results, elapsedMs } = params;
310
+ // Timeout check
311
+ if (plan.timeoutMs > 0 && elapsedMs > plan.timeoutMs) {
312
+ return { cancel: true, reason: "team_timeout" };
313
+ }
314
+ // Fail-fast: any failure causes cancel
315
+ if (plan.failFast && results.some((r) => r.status === "failed")) {
316
+ return { cancel: true, reason: "fail_fast" };
317
+ }
318
+ // All agents completed or failed — no need to cancel, just aggregate
319
+ if (results.length >= plan.agents.length) {
320
+ return { cancel: false, reason: "" };
321
+ }
322
+ // Budget exhaustion
323
+ const usedTokens = results.reduce((sum, r) => sum + r.tokenUsage.prompt + r.tokenUsage.completion, 0);
324
+ if (usedTokens >= plan.totalTokenBudget * 0.95) {
325
+ return { cancel: true, reason: "budget_exhausted" };
326
+ }
327
+ return { cancel: false, reason: "" };
328
+ }
329
+ /**
330
+ * Build the task prompt for a specific agent, incorporating shared context
331
+ * and outputs from dependency agents.
332
+ */
333
+ export function buildAgentTaskPrompt(params) {
334
+ const { agent, plan, dependencyResults } = params;
335
+ const parts = [];
336
+ // Shared context
337
+ if (plan.sharedContext) {
338
+ parts.push(`[Shared Context]\n${plan.sharedContext}`);
339
+ }
340
+ // Dependency outputs
341
+ if (dependencyResults.length > 0) {
342
+ const depSection = dependencyResults
343
+ .filter((r) => r.status === "completed")
344
+ .map((r) => `[From ${r.agentId} (${r.role})]\n${r.output}`)
345
+ .join("\n\n");
346
+ if (depSection) {
347
+ parts.push(`[Prior Results]\n${depSection}`);
348
+ }
349
+ }
350
+ // Agent-specific task
351
+ parts.push(`[Your Task]\n${agent.taskDescription}`);
352
+ // Role-specific guidance
353
+ parts.push(`[Your Role: ${agent.role}]\n${getRoleGuidance(agent.role)}`);
354
+ return parts.join("\n\n---\n\n");
355
+ }
356
+ function getRoleGuidance(role) {
357
+ switch (role) {
358
+ case "planner":
359
+ return "You are the planner. Break down the task, identify dependencies, and create a clear execution plan. Do NOT execute actions yourself.";
360
+ case "executor":
361
+ return "You are the executor. Follow the plan and use tools to accomplish the task. Report what you did and any issues encountered.";
362
+ case "reviewer":
363
+ return "You are the reviewer. Examine the execution results for correctness, completeness, and quality. Point out any issues or improvements needed.";
364
+ case "researcher":
365
+ return "You are the researcher. Gather information, search for relevant context, and provide evidence-based findings. Do NOT modify any files.";
366
+ case "custom":
367
+ return "Complete the assigned task to the best of your ability.";
368
+ }
369
+ }
370
+ //# sourceMappingURL=team-orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-orchestration.js","sourceRoot":"","sources":["../../src/orchestration/team-orchestration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Team Tool Loop Wiring — Connects team orchestration to the tool loop.
3
+ *
4
+ * When the LLM invokes `team_create`, this module:
5
+ * 1. Validates the team plan
6
+ * 2. Maps team agents to fork contexts
7
+ * 3. Coordinates execution according to the team execution mode
8
+ * 4. Aggregates results according to the aggregation policy
9
+ * 5. Returns the aggregated result as a tool_result
10
+ *
11
+ * This bridges the gap between the pure strategy layer (team-orchestration.ts)
12
+ * and the Hub's tool loop.
13
+ */
14
+ import type { AgentRole, TeamExecutionMode, TeamAggregationPolicy, TeamLifecycleState } from "./team-orchestration.js";
15
+ import type { AgentDefinition } from "./agent-registry.js";
16
+ import type { ForkResult } from "./fork-subagent.js";
17
+ export interface TeamToolRequest {
18
+ /** Team name for identification. */
19
+ name: string;
20
+ /** Agent specs for the team. */
21
+ agents: TeamAgentRequest[];
22
+ /** Execution mode. */
23
+ mode: TeamExecutionMode;
24
+ /** How to aggregate results. */
25
+ aggregation: TeamAggregationPolicy;
26
+ }
27
+ export interface TeamAgentRequest {
28
+ /** Role within the team. */
29
+ role: AgentRole;
30
+ /** Agent type from built-in registry. */
31
+ agentType: string;
32
+ /** Task prompt for this agent. */
33
+ prompt: string;
34
+ /** Max turns override. */
35
+ maxTurns?: number;
36
+ /** Dependencies (agent IDs that must complete before this one). */
37
+ dependsOn?: string[];
38
+ }
39
+ export interface TeamExecutionPlan {
40
+ /** Ordered batches for execution. */
41
+ batches: TeamExecutionBatch[];
42
+ /** Total estimated token budget. */
43
+ totalBudget: number;
44
+ /** Lifecycle state. */
45
+ state: TeamLifecycleState;
46
+ }
47
+ export interface TeamExecutionBatch {
48
+ /** Agents in this batch (run in parallel within a batch). */
49
+ agents: TeamAgentRequest[];
50
+ /** Batch mode (parallel or sequential within the batch). */
51
+ mode: "parallel" | "serial";
52
+ }
53
+ /**
54
+ * Resolve the execution plan for a team request.
55
+ * Validates the request, resolves dependencies into ordered batches,
56
+ * and determines the execution topology.
57
+ */
58
+ export declare function resolveTeamExecutionPlan(request: TeamToolRequest): TeamExecutionPlan;
59
+ export interface TeamAggregatedResult {
60
+ /** Whether the team execution succeeded overall. */
61
+ ok: boolean;
62
+ /** Aggregated output text. */
63
+ output: string;
64
+ /** Individual agent results. */
65
+ agentResults: Array<{
66
+ agentId: string;
67
+ role: AgentRole;
68
+ result: ForkResult;
69
+ }>;
70
+ /** Total tokens consumed by all agents. */
71
+ totalTokensUsed: number;
72
+ /** Lifecycle state after aggregation. */
73
+ finalState: TeamLifecycleState;
74
+ }
75
+ /**
76
+ * Aggregate results from team agents according to the aggregation policy.
77
+ */
78
+ export declare function aggregateTeamToolResults(results: Array<{
79
+ agentId: string;
80
+ role: AgentRole;
81
+ result: ForkResult;
82
+ }>, policy: TeamAggregationPolicy): TeamAggregatedResult;
83
+ /**
84
+ * Map a team tool_call into the format needed for the tool loop to dispatch.
85
+ * Returns the list of fork configs the tool loop should execute.
86
+ */
87
+ export declare function mapTeamRequestToForkConfigs(request: TeamToolRequest, agentRegistry: (name: string) => AgentDefinition | undefined): Array<{
88
+ agentDef: AgentDefinition;
89
+ prompt: string;
90
+ maxTurns?: number;
91
+ role: AgentRole;
92
+ }>;
93
+ //# sourceMappingURL=team-tool-loop-wiring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-tool-loop-wiring.d.ts","sourceRoot":"","sources":["../../src/orchestration/team-tool-loop-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sBAAsB;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,gCAAgC;IAChC,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,iBAAiB,CA8CnB;AAMD,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,EAAE,EAAE,OAAO,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAC9E,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,EACxE,MAAM,EAAE,qBAAqB,GAC5B,oBAAoB,CA2EtB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,GAC3D,KAAK,CAAC;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAa1F"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Team Tool Loop Wiring — Connects team orchestration to the tool loop.
3
+ *
4
+ * When the LLM invokes `team_create`, this module:
5
+ * 1. Validates the team plan
6
+ * 2. Maps team agents to fork contexts
7
+ * 3. Coordinates execution according to the team execution mode
8
+ * 4. Aggregates results according to the aggregation policy
9
+ * 5. Returns the aggregated result as a tool_result
10
+ *
11
+ * This bridges the gap between the pure strategy layer (team-orchestration.ts)
12
+ * and the Hub's tool loop.
13
+ */
14
+ /**
15
+ * Resolve the execution plan for a team request.
16
+ * Validates the request, resolves dependencies into ordered batches,
17
+ * and determines the execution topology.
18
+ */
19
+ export function resolveTeamExecutionPlan(request) {
20
+ const agents = request.agents;
21
+ if (agents.length === 0) {
22
+ return { batches: [], totalBudget: 0, state: "planning" };
23
+ }
24
+ if (agents.length > 8) {
25
+ throw new Error(`Team cannot have more than 8 agents (got ${agents.length})`);
26
+ }
27
+ // For "parallel" mode — single batch with all agents
28
+ if (request.mode === "parallel") {
29
+ return {
30
+ batches: [{ agents, mode: "parallel" }],
31
+ totalBudget: agents.length * 50000,
32
+ state: "spawning",
33
+ };
34
+ }
35
+ // For "sequential" or "pipeline" — one agent per batch
36
+ if (request.mode === "sequential" || request.mode === "pipeline") {
37
+ return {
38
+ batches: agents.map((a) => ({ agents: [a], mode: "serial" })),
39
+ totalBudget: agents.length * 50000,
40
+ state: "spawning",
41
+ };
42
+ }
43
+ // "adaptive" — planner first, then remaining in parallel
44
+ const planners = agents.filter((a) => a.role === "planner");
45
+ const rest = agents.filter((a) => a.role !== "planner");
46
+ const batches = [];
47
+ if (planners.length > 0) {
48
+ batches.push({ agents: planners, mode: "serial" });
49
+ }
50
+ if (rest.length > 0) {
51
+ batches.push({ agents: rest, mode: "parallel" });
52
+ }
53
+ return {
54
+ batches,
55
+ totalBudget: agents.length * 50000,
56
+ state: "spawning",
57
+ };
58
+ }
59
+ /**
60
+ * Aggregate results from team agents according to the aggregation policy.
61
+ */
62
+ export function aggregateTeamToolResults(results, policy) {
63
+ const totalTokens = results.reduce((sum, r) => sum + r.result.tokensUsed, 0);
64
+ const allOk = results.every((r) => r.result.ok);
65
+ const anyOk = results.some((r) => r.result.ok);
66
+ switch (policy) {
67
+ case "first-success": {
68
+ const first = results.find((r) => r.result.ok);
69
+ return {
70
+ ok: !!first,
71
+ output: first?.result.output || "(No agent succeeded)",
72
+ agentResults: results,
73
+ totalTokensUsed: totalTokens,
74
+ finalState: first ? "completed" : "failed",
75
+ };
76
+ }
77
+ case "merge-all": {
78
+ const outputs = results.map((r) => `### ${r.role} (${r.agentId})\n${r.result.output || "(no output)"}`);
79
+ return {
80
+ ok: anyOk,
81
+ output: outputs.join("\n\n---\n\n"),
82
+ agentResults: results,
83
+ totalTokensUsed: totalTokens,
84
+ finalState: anyOk ? "completed" : "failed",
85
+ };
86
+ }
87
+ case "reviewer-gate": {
88
+ const reviewer = results.find((r) => r.role === "reviewer");
89
+ const executors = results.filter((r) => r.role !== "reviewer");
90
+ const executorOutput = executors.map((r) => r.result.output).filter(Boolean).join("\n\n");
91
+ if (reviewer && reviewer.result.ok) {
92
+ return {
93
+ ok: true,
94
+ output: `## Reviewed Output\n${executorOutput}\n\n## Review\n${reviewer.result.output}`,
95
+ agentResults: results,
96
+ totalTokensUsed: totalTokens,
97
+ finalState: "completed",
98
+ };
99
+ }
100
+ return {
101
+ ok: false,
102
+ output: `Review failed: ${reviewer?.result.output || "no reviewer result"}`,
103
+ agentResults: results,
104
+ totalTokensUsed: totalTokens,
105
+ finalState: "failed",
106
+ };
107
+ }
108
+ case "planner-sync": {
109
+ // Planner agent's output is the consolidated result
110
+ const planner = results.find((r) => r.role === "planner");
111
+ if (planner) {
112
+ return {
113
+ ok: planner.result.ok,
114
+ output: planner.result.output,
115
+ agentResults: results,
116
+ totalTokensUsed: totalTokens,
117
+ finalState: planner.result.ok ? "completed" : "failed",
118
+ };
119
+ }
120
+ // Fallback to merge-all
121
+ return aggregateTeamToolResults(results, "merge-all");
122
+ }
123
+ case "majority-vote":
124
+ default: {
125
+ // Simple: all outputs merged
126
+ return aggregateTeamToolResults(results, "merge-all");
127
+ }
128
+ }
129
+ }
130
+ /**
131
+ * Map a team tool_call into the format needed for the tool loop to dispatch.
132
+ * Returns the list of fork configs the tool loop should execute.
133
+ */
134
+ export function mapTeamRequestToForkConfigs(request, agentRegistry) {
135
+ return request.agents.map((agent) => {
136
+ const def = agentRegistry(agent.agentType);
137
+ if (!def) {
138
+ throw new Error(`Unknown agent type "${agent.agentType}" in team request`);
139
+ }
140
+ return {
141
+ agentDef: def,
142
+ prompt: agent.prompt,
143
+ maxTurns: agent.maxTurns,
144
+ role: agent.role,
145
+ };
146
+ });
147
+ }
148
+ //# sourceMappingURL=team-tool-loop-wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-tool-loop-wiring.js","sourceRoot":"","sources":["../../src/orchestration/team-tool-loop-wiring.ts"],"names":[],"mappings":"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"}