actoviq-agent-sdk 0.4.6 → 0.4.7

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 (637) hide show
  1. package/CHANGELOG.md +203 -0
  2. package/README-zh.md +54 -19
  3. package/README.md +53 -19
  4. package/SECURITY.md +26 -0
  5. package/assets/actoviq-icon.ico +0 -0
  6. package/bin/actoviq-gui.js +28 -3
  7. package/dist/src/buddy/actoviqBuddy.d.ts.map +1 -1
  8. package/dist/src/buddy/actoviqBuddy.js +3 -4
  9. package/dist/src/buddy/actoviqBuddy.js.map +1 -1
  10. package/dist/src/cli/actoviq-react.js +495 -60
  11. package/dist/src/cli/actoviq-react.js.map +1 -1
  12. package/dist/src/compat/diagnostics.d.ts +18 -0
  13. package/dist/src/compat/diagnostics.d.ts.map +1 -0
  14. package/dist/src/compat/diagnostics.js +47 -0
  15. package/dist/src/compat/diagnostics.js.map +1 -0
  16. package/dist/src/compat/index.d.ts +8 -0
  17. package/dist/src/compat/index.d.ts.map +1 -0
  18. package/dist/src/compat/index.js +6 -0
  19. package/dist/src/compat/index.js.map +1 -0
  20. package/dist/src/config/actoviqHome.d.ts +32 -0
  21. package/dist/src/config/actoviqHome.d.ts.map +1 -0
  22. package/dist/src/config/actoviqHome.js +228 -0
  23. package/dist/src/config/actoviqHome.js.map +1 -0
  24. package/dist/src/config/actoviqSettingsStore.d.ts.map +1 -1
  25. package/dist/src/config/actoviqSettingsStore.js +6 -6
  26. package/dist/src/config/actoviqSettingsStore.js.map +1 -1
  27. package/dist/src/config/agentProfiles.d.ts +77 -0
  28. package/dist/src/config/agentProfiles.d.ts.map +1 -0
  29. package/dist/src/config/agentProfiles.js +319 -0
  30. package/dist/src/config/agentProfiles.js.map +1 -0
  31. package/dist/src/config/loadDefaultActoviqSettings.d.ts.map +1 -1
  32. package/dist/src/config/loadDefaultActoviqSettings.js +2 -3
  33. package/dist/src/config/loadDefaultActoviqSettings.js.map +1 -1
  34. package/dist/src/config/projectSessionDirectory.d.ts.map +1 -1
  35. package/dist/src/config/projectSessionDirectory.js +3 -2
  36. package/dist/src/config/projectSessionDirectory.js.map +1 -1
  37. package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
  38. package/dist/src/config/resolveRuntimeConfig.js +13 -2
  39. package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
  40. package/dist/src/core/agent-spec.d.ts +74 -0
  41. package/dist/src/core/agent-spec.d.ts.map +1 -0
  42. package/dist/src/core/agent-spec.js +2 -0
  43. package/dist/src/core/agent-spec.js.map +1 -0
  44. package/dist/src/core/errors.d.ts +42 -0
  45. package/dist/src/core/errors.d.ts.map +1 -0
  46. package/dist/src/core/errors.js +53 -0
  47. package/dist/src/core/errors.js.map +1 -0
  48. package/dist/src/core/index.d.ts +11 -0
  49. package/dist/src/core/index.d.ts.map +1 -0
  50. package/dist/src/core/index.js +4 -0
  51. package/dist/src/core/index.js.map +1 -0
  52. package/dist/src/core/items.d.ts +161 -0
  53. package/dist/src/core/items.d.ts.map +1 -0
  54. package/dist/src/core/items.js +2 -0
  55. package/dist/src/core/items.js.map +1 -0
  56. package/dist/src/core/json.d.ts +20 -0
  57. package/dist/src/core/json.d.ts.map +1 -0
  58. package/dist/src/core/json.js +80 -0
  59. package/dist/src/core/json.js.map +1 -0
  60. package/dist/src/core/model-ref.d.ts +6 -0
  61. package/dist/src/core/model-ref.d.ts.map +1 -0
  62. package/dist/src/core/model-ref.js +2 -0
  63. package/dist/src/core/model-ref.js.map +1 -0
  64. package/dist/src/core/run.d.ts +35 -0
  65. package/dist/src/core/run.d.ts.map +1 -0
  66. package/dist/src/core/run.js +2 -0
  67. package/dist/src/core/run.js.map +1 -0
  68. package/dist/src/core/usage.d.ts +32 -0
  69. package/dist/src/core/usage.d.ts.map +1 -0
  70. package/dist/src/core/usage.js +111 -0
  71. package/dist/src/core/usage.js.map +1 -0
  72. package/dist/src/errors.d.ts +19 -0
  73. package/dist/src/errors.d.ts.map +1 -1
  74. package/dist/src/errors.js +27 -0
  75. package/dist/src/errors.js.map +1 -1
  76. package/dist/src/events/index.d.ts +4 -0
  77. package/dist/src/events/index.d.ts.map +1 -0
  78. package/dist/src/events/index.js +4 -0
  79. package/dist/src/events/index.js.map +1 -0
  80. package/dist/src/events/openTelemetry.d.ts +51 -0
  81. package/dist/src/events/openTelemetry.d.ts.map +1 -0
  82. package/dist/src/events/openTelemetry.js +116 -0
  83. package/dist/src/events/openTelemetry.js.map +1 -0
  84. package/dist/src/events/processors.d.ts +14 -0
  85. package/dist/src/events/processors.d.ts.map +1 -0
  86. package/dist/src/events/processors.js +60 -0
  87. package/dist/src/events/processors.js.map +1 -0
  88. package/dist/src/events/runEvents.d.ts +66 -0
  89. package/dist/src/events/runEvents.d.ts.map +1 -0
  90. package/dist/src/events/runEvents.js +143 -0
  91. package/dist/src/events/runEvents.js.map +1 -0
  92. package/dist/src/gui/actoviqGui.d.ts +15 -0
  93. package/dist/src/gui/actoviqGui.d.ts.map +1 -1
  94. package/dist/src/gui/actoviqGui.js +18034 -1919
  95. package/dist/src/gui/actoviqGui.js.map +1 -1
  96. package/dist/src/gui/contextRailStore.d.ts +47 -0
  97. package/dist/src/gui/contextRailStore.d.ts.map +1 -0
  98. package/dist/src/gui/contextRailStore.js +163 -0
  99. package/dist/src/gui/contextRailStore.js.map +1 -0
  100. package/dist/src/gui/electronMain.js +32 -16
  101. package/dist/src/gui/electronMain.js.map +1 -1
  102. package/dist/src/gui/guiAssets.d.ts +6 -0
  103. package/dist/src/gui/guiAssets.d.ts.map +1 -0
  104. package/dist/src/gui/guiAssets.js +48 -0
  105. package/dist/src/gui/guiAssets.js.map +1 -0
  106. package/dist/src/gui/guiSyntaxHighlight.d.ts +11 -0
  107. package/dist/src/gui/guiSyntaxHighlight.d.ts.map +1 -0
  108. package/dist/src/gui/guiSyntaxHighlight.js +348 -0
  109. package/dist/src/gui/guiSyntaxHighlight.js.map +1 -0
  110. package/dist/src/gui/projectMeta.d.ts +15 -0
  111. package/dist/src/gui/projectMeta.d.ts.map +1 -0
  112. package/dist/src/gui/projectMeta.js +61 -0
  113. package/dist/src/gui/projectMeta.js.map +1 -0
  114. package/dist/src/gui/projectWorkbench.d.ts +73 -0
  115. package/dist/src/gui/projectWorkbench.d.ts.map +1 -0
  116. package/dist/src/gui/projectWorkbench.js +307 -0
  117. package/dist/src/gui/projectWorkbench.js.map +1 -0
  118. package/dist/src/gui/terminalManager.d.ts +33 -0
  119. package/dist/src/gui/terminalManager.d.ts.map +1 -0
  120. package/dist/src/gui/terminalManager.js +206 -0
  121. package/dist/src/gui/terminalManager.js.map +1 -0
  122. package/dist/src/gui/transcript/clientBundle.d.ts +6 -0
  123. package/dist/src/gui/transcript/clientBundle.d.ts.map +1 -0
  124. package/dist/src/gui/transcript/clientBundle.js +978 -0
  125. package/dist/src/gui/transcript/clientBundle.js.map +1 -0
  126. package/dist/src/gui/transcript/index.d.ts +9 -0
  127. package/dist/src/gui/transcript/index.d.ts.map +1 -0
  128. package/dist/src/gui/transcript/index.js +6 -0
  129. package/dist/src/gui/transcript/index.js.map +1 -0
  130. package/dist/src/gui/transcript/parts.d.ts +81 -0
  131. package/dist/src/gui/transcript/parts.d.ts.map +1 -0
  132. package/dist/src/gui/transcript/parts.js +476 -0
  133. package/dist/src/gui/transcript/parts.js.map +1 -0
  134. package/dist/src/gui/transcript/registry.d.ts +8 -0
  135. package/dist/src/gui/transcript/registry.d.ts.map +1 -0
  136. package/dist/src/gui/transcript/registry.js +32 -0
  137. package/dist/src/gui/transcript/registry.js.map +1 -0
  138. package/dist/src/gui/transcript/scroll.d.ts +9 -0
  139. package/dist/src/gui/transcript/scroll.d.ts.map +1 -0
  140. package/dist/src/gui/transcript/scroll.js +13 -0
  141. package/dist/src/gui/transcript/scroll.js.map +1 -0
  142. package/dist/src/gui/transcript/styles.d.ts +3 -0
  143. package/dist/src/gui/transcript/styles.d.ts.map +1 -0
  144. package/dist/src/gui/transcript/styles.js +172 -0
  145. package/dist/src/gui/transcript/styles.js.map +1 -0
  146. package/dist/src/gui/workspaceNote.d.ts +4 -0
  147. package/dist/src/gui/workspaceNote.d.ts.map +1 -0
  148. package/dist/src/gui/workspaceNote.js +21 -0
  149. package/dist/src/gui/workspaceNote.js.map +1 -0
  150. package/dist/src/gui/workspaceRegistry.d.ts +11 -0
  151. package/dist/src/gui/workspaceRegistry.d.ts.map +1 -0
  152. package/dist/src/gui/workspaceRegistry.js +114 -0
  153. package/dist/src/gui/workspaceRegistry.js.map +1 -0
  154. package/dist/src/hooks/userHooks.d.ts +29 -8
  155. package/dist/src/hooks/userHooks.d.ts.map +1 -1
  156. package/dist/src/hooks/userHooks.js +106 -34
  157. package/dist/src/hooks/userHooks.js.map +1 -1
  158. package/dist/src/index.d.ts +24 -6
  159. package/dist/src/index.d.ts.map +1 -1
  160. package/dist/src/index.js +18 -6
  161. package/dist/src/index.js.map +1 -1
  162. package/dist/src/issues/durableIssueCoordinator.d.ts +57 -0
  163. package/dist/src/issues/durableIssueCoordinator.d.ts.map +1 -0
  164. package/dist/src/issues/durableIssueCoordinator.js +128 -0
  165. package/dist/src/issues/durableIssueCoordinator.js.map +1 -0
  166. package/dist/src/issues/issueExecution.d.ts +34 -0
  167. package/dist/src/issues/issueExecution.d.ts.map +1 -0
  168. package/dist/src/issues/issueExecution.js +190 -0
  169. package/dist/src/issues/issueExecution.js.map +1 -0
  170. package/dist/src/issues/issueStore.d.ts +95 -0
  171. package/dist/src/issues/issueStore.d.ts.map +1 -0
  172. package/dist/src/issues/issueStore.js +373 -0
  173. package/dist/src/issues/issueStore.js.map +1 -0
  174. package/dist/src/manager/projectManager.d.ts +103 -0
  175. package/dist/src/manager/projectManager.d.ts.map +1 -0
  176. package/dist/src/manager/projectManager.js +547 -0
  177. package/dist/src/manager/projectManager.js.map +1 -0
  178. package/dist/src/mcp/connectionManager.d.ts +22 -2
  179. package/dist/src/mcp/connectionManager.d.ts.map +1 -1
  180. package/dist/src/mcp/connectionManager.js +153 -41
  181. package/dist/src/mcp/connectionManager.js.map +1 -1
  182. package/dist/src/mcp/mcpServerConfig.d.ts.map +1 -1
  183. package/dist/src/mcp/mcpServerConfig.js +7 -7
  184. package/dist/src/mcp/mcpServerConfig.js.map +1 -1
  185. package/dist/src/memory/actoviqMemory.js +6 -6
  186. package/dist/src/memory/actoviqMemory.js.map +1 -1
  187. package/dist/src/memory/sessionHistory.js +2 -2
  188. package/dist/src/memory/sessionHistory.js.map +1 -1
  189. package/dist/src/node/index.d.ts +5 -0
  190. package/dist/src/node/index.d.ts.map +1 -0
  191. package/dist/src/node/index.js +5 -0
  192. package/dist/src/node/index.js.map +1 -0
  193. package/dist/src/node/sqliteCheckpointAdapter.d.ts +20 -0
  194. package/dist/src/node/sqliteCheckpointAdapter.d.ts.map +1 -0
  195. package/dist/src/node/sqliteCheckpointAdapter.js +163 -0
  196. package/dist/src/node/sqliteCheckpointAdapter.js.map +1 -0
  197. package/dist/src/node/sqliteDurableChildStore.d.ts +21 -0
  198. package/dist/src/node/sqliteDurableChildStore.d.ts.map +1 -0
  199. package/dist/src/node/sqliteDurableChildStore.js +124 -0
  200. package/dist/src/node/sqliteDurableChildStore.js.map +1 -0
  201. package/dist/src/node/sqliteSessionAdapter.d.ts +28 -0
  202. package/dist/src/node/sqliteSessionAdapter.d.ts.map +1 -0
  203. package/dist/src/node/sqliteSessionAdapter.js +99 -0
  204. package/dist/src/node/sqliteSessionAdapter.js.map +1 -0
  205. package/dist/src/orchestration/agentTool.d.ts +50 -0
  206. package/dist/src/orchestration/agentTool.d.ts.map +1 -0
  207. package/dist/src/orchestration/agentTool.js +132 -0
  208. package/dist/src/orchestration/agentTool.js.map +1 -0
  209. package/dist/src/orchestration/background.d.ts +102 -0
  210. package/dist/src/orchestration/background.d.ts.map +1 -0
  211. package/dist/src/orchestration/background.js +310 -0
  212. package/dist/src/orchestration/background.js.map +1 -0
  213. package/dist/src/orchestration/childRunner.d.ts +12 -0
  214. package/dist/src/orchestration/childRunner.d.ts.map +1 -0
  215. package/dist/src/orchestration/childRunner.js +179 -0
  216. package/dist/src/orchestration/childRunner.js.map +1 -0
  217. package/dist/src/orchestration/contracts.d.ts +169 -0
  218. package/dist/src/orchestration/contracts.d.ts.map +1 -0
  219. package/dist/src/orchestration/contracts.js +11 -0
  220. package/dist/src/orchestration/contracts.js.map +1 -0
  221. package/dist/src/orchestration/handoff.d.ts +32 -0
  222. package/dist/src/orchestration/handoff.d.ts.map +1 -0
  223. package/dist/src/orchestration/handoff.js +60 -0
  224. package/dist/src/orchestration/handoff.js.map +1 -0
  225. package/dist/src/orchestration/index.d.ts +9 -0
  226. package/dist/src/orchestration/index.d.ts.map +1 -0
  227. package/dist/src/orchestration/index.js +9 -0
  228. package/dist/src/orchestration/index.js.map +1 -0
  229. package/dist/src/orchestration/presets.d.ts +51 -0
  230. package/dist/src/orchestration/presets.d.ts.map +1 -0
  231. package/dist/src/orchestration/presets.js +78 -0
  232. package/dist/src/orchestration/presets.js.map +1 -0
  233. package/dist/src/orchestration/scope.d.ts +69 -0
  234. package/dist/src/orchestration/scope.d.ts.map +1 -0
  235. package/dist/src/orchestration/scope.js +371 -0
  236. package/dist/src/orchestration/scope.js.map +1 -0
  237. package/dist/src/orchestration/workflowGraph.d.ts +73 -0
  238. package/dist/src/orchestration/workflowGraph.d.ts.map +1 -0
  239. package/dist/src/orchestration/workflowGraph.js +255 -0
  240. package/dist/src/orchestration/workflowGraph.js.map +1 -0
  241. package/dist/src/parity/actoviqCleanBridgeCompatSdk.d.ts.map +1 -1
  242. package/dist/src/parity/actoviqCleanBridgeCompatSdk.js +101 -48
  243. package/dist/src/parity/actoviqCleanBridgeCompatSdk.js.map +1 -1
  244. package/dist/src/parity/bridgeConfigs.d.ts +2 -2
  245. package/dist/src/parity/bridgeConfigs.d.ts.map +1 -1
  246. package/dist/src/parity/bridgeConfigs.js +78 -39
  247. package/dist/src/parity/bridgeConfigs.js.map +1 -1
  248. package/dist/src/parity/bridgeProviders.d.ts +9 -6
  249. package/dist/src/parity/bridgeProviders.d.ts.map +1 -1
  250. package/dist/src/parity/bridgeProviders.js +140 -26
  251. package/dist/src/parity/bridgeProviders.js.map +1 -1
  252. package/dist/src/parity/portableSessions.js +2 -2
  253. package/dist/src/parity/portableSessions.js.map +1 -1
  254. package/dist/src/profiles/index.d.ts +15 -0
  255. package/dist/src/profiles/index.d.ts.map +1 -0
  256. package/dist/src/profiles/index.js +618 -0
  257. package/dist/src/profiles/index.js.map +1 -0
  258. package/dist/src/profiles/types.d.ts +102 -0
  259. package/dist/src/profiles/types.d.ts.map +1 -0
  260. package/dist/src/profiles/types.js +9 -0
  261. package/dist/src/profiles/types.js.map +1 -0
  262. package/dist/src/provider/client.d.ts +1 -1
  263. package/dist/src/provider/client.d.ts.map +1 -1
  264. package/dist/src/provider/openai-model-api.js +1 -1
  265. package/dist/src/provider/openai-model-api.js.map +1 -1
  266. package/dist/src/providers-v2/adapter-base.d.ts +35 -0
  267. package/dist/src/providers-v2/adapter-base.d.ts.map +1 -0
  268. package/dist/src/providers-v2/adapter-base.js +115 -0
  269. package/dist/src/providers-v2/adapter-base.js.map +1 -0
  270. package/dist/src/providers-v2/anthropic.d.ts +15 -0
  271. package/dist/src/providers-v2/anthropic.d.ts.map +1 -0
  272. package/dist/src/providers-v2/anthropic.js +414 -0
  273. package/dist/src/providers-v2/anthropic.js.map +1 -0
  274. package/dist/src/providers-v2/capabilities.d.ts +33 -0
  275. package/dist/src/providers-v2/capabilities.d.ts.map +1 -0
  276. package/dist/src/providers-v2/capabilities.js +218 -0
  277. package/dist/src/providers-v2/capabilities.js.map +1 -0
  278. package/dist/src/providers-v2/index.d.ts +12 -0
  279. package/dist/src/providers-v2/index.d.ts.map +1 -0
  280. package/dist/src/providers-v2/index.js +8 -0
  281. package/dist/src/providers-v2/index.js.map +1 -0
  282. package/dist/src/providers-v2/legacy.d.ts +26 -0
  283. package/dist/src/providers-v2/legacy.d.ts.map +1 -0
  284. package/dist/src/providers-v2/legacy.js +543 -0
  285. package/dist/src/providers-v2/legacy.js.map +1 -0
  286. package/dist/src/providers-v2/mapping.d.ts +34 -0
  287. package/dist/src/providers-v2/mapping.d.ts.map +1 -0
  288. package/dist/src/providers-v2/mapping.js +194 -0
  289. package/dist/src/providers-v2/mapping.js.map +1 -0
  290. package/dist/src/providers-v2/openai-chat.d.ts +16 -0
  291. package/dist/src/providers-v2/openai-chat.d.ts.map +1 -0
  292. package/dist/src/providers-v2/openai-chat.js +318 -0
  293. package/dist/src/providers-v2/openai-chat.js.map +1 -0
  294. package/dist/src/providers-v2/openai-responses.d.ts +15 -0
  295. package/dist/src/providers-v2/openai-responses.d.ts.map +1 -0
  296. package/dist/src/providers-v2/openai-responses.js +356 -0
  297. package/dist/src/providers-v2/openai-responses.js.map +1 -0
  298. package/dist/src/providers-v2/registry.d.ts +39 -0
  299. package/dist/src/providers-v2/registry.d.ts.map +1 -0
  300. package/dist/src/providers-v2/registry.js +101 -0
  301. package/dist/src/providers-v2/registry.js.map +1 -0
  302. package/dist/src/providers-v2/stream.d.ts +14 -0
  303. package/dist/src/providers-v2/stream.d.ts.map +1 -0
  304. package/dist/src/providers-v2/stream.js +115 -0
  305. package/dist/src/providers-v2/stream.js.map +1 -0
  306. package/dist/src/providers-v2/transport.d.ts +36 -0
  307. package/dist/src/providers-v2/transport.d.ts.map +1 -0
  308. package/dist/src/providers-v2/transport.js +337 -0
  309. package/dist/src/providers-v2/transport.js.map +1 -0
  310. package/dist/src/providers-v2/types.d.ts +162 -0
  311. package/dist/src/providers-v2/types.d.ts.map +1 -0
  312. package/dist/src/providers-v2/types.js +8 -0
  313. package/dist/src/providers-v2/types.js.map +1 -0
  314. package/dist/src/router/modelRouter.d.ts.map +1 -1
  315. package/dist/src/router/modelRouter.js +2 -3
  316. package/dist/src/router/modelRouter.js.map +1 -1
  317. package/dist/src/runtime/actoviqAgents.d.ts +5 -0
  318. package/dist/src/runtime/actoviqAgents.d.ts.map +1 -1
  319. package/dist/src/runtime/actoviqAgents.js +22 -4
  320. package/dist/src/runtime/actoviqAgents.js.map +1 -1
  321. package/dist/src/runtime/actoviqBackgroundTasks.d.ts +2 -1
  322. package/dist/src/runtime/actoviqBackgroundTasks.d.ts.map +1 -1
  323. package/dist/src/runtime/actoviqBackgroundTasks.js +4 -2
  324. package/dist/src/runtime/actoviqBackgroundTasks.js.map +1 -1
  325. package/dist/src/runtime/actoviqCompact.d.ts +15 -0
  326. package/dist/src/runtime/actoviqCompact.d.ts.map +1 -1
  327. package/dist/src/runtime/actoviqCompact.js +36 -10
  328. package/dist/src/runtime/actoviqCompact.js.map +1 -1
  329. package/dist/src/runtime/actoviqModelApi.d.ts.map +1 -1
  330. package/dist/src/runtime/actoviqModelApi.js +16 -2
  331. package/dist/src/runtime/actoviqModelApi.js.map +1 -1
  332. package/dist/src/runtime/actoviqPermissions.js +5 -1
  333. package/dist/src/runtime/actoviqPermissions.js.map +1 -1
  334. package/dist/src/runtime/agentClient.d.ts +3 -0
  335. package/dist/src/runtime/agentClient.d.ts.map +1 -1
  336. package/dist/src/runtime/agentClient.js +127 -45
  337. package/dist/src/runtime/agentClient.js.map +1 -1
  338. package/dist/src/runtime/agentRuntimeDiscovery.d.ts +75 -0
  339. package/dist/src/runtime/agentRuntimeDiscovery.d.ts.map +1 -0
  340. package/dist/src/runtime/agentRuntimeDiscovery.js +311 -0
  341. package/dist/src/runtime/agentRuntimeDiscovery.js.map +1 -0
  342. package/dist/src/runtime/agentSession.d.ts +18 -0
  343. package/dist/src/runtime/agentSession.d.ts.map +1 -1
  344. package/dist/src/runtime/agentSession.js +36 -0
  345. package/dist/src/runtime/agentSession.js.map +1 -1
  346. package/dist/src/runtime/asyncQueue.d.ts +99 -8
  347. package/dist/src/runtime/asyncQueue.d.ts.map +1 -1
  348. package/dist/src/runtime/asyncQueue.js +437 -37
  349. package/dist/src/runtime/asyncQueue.js.map +1 -1
  350. package/dist/src/runtime/conversationEngine.d.ts +7 -0
  351. package/dist/src/runtime/conversationEngine.d.ts.map +1 -1
  352. package/dist/src/runtime/conversationEngine.js +278 -18
  353. package/dist/src/runtime/conversationEngine.js.map +1 -1
  354. package/dist/src/runtime/deadline.d.ts +13 -0
  355. package/dist/src/runtime/deadline.d.ts.map +1 -0
  356. package/dist/src/runtime/deadline.js +67 -0
  357. package/dist/src/runtime/deadline.js.map +1 -0
  358. package/dist/src/runtime/messageUtils.d.ts +5 -0
  359. package/dist/src/runtime/messageUtils.d.ts.map +1 -1
  360. package/dist/src/runtime/messageUtils.js +17 -0
  361. package/dist/src/runtime/messageUtils.js.map +1 -1
  362. package/dist/src/runtime/sessionTurnCoordinator.d.ts +12 -0
  363. package/dist/src/runtime/sessionTurnCoordinator.d.ts.map +1 -0
  364. package/dist/src/runtime/sessionTurnCoordinator.js +23 -0
  365. package/dist/src/runtime/sessionTurnCoordinator.js.map +1 -0
  366. package/dist/src/runtime/tools.d.ts.map +1 -1
  367. package/dist/src/runtime/tools.js +1 -0
  368. package/dist/src/runtime/tools.js.map +1 -1
  369. package/dist/src/runtime-v2/agentRuntime.d.ts +136 -0
  370. package/dist/src/runtime-v2/agentRuntime.d.ts.map +1 -0
  371. package/dist/src/runtime-v2/agentRuntime.js +1341 -0
  372. package/dist/src/runtime-v2/agentRuntime.js.map +1 -0
  373. package/dist/src/runtime-v2/index.d.ts +6 -0
  374. package/dist/src/runtime-v2/index.d.ts.map +1 -0
  375. package/dist/src/runtime-v2/index.js +6 -0
  376. package/dist/src/runtime-v2/index.js.map +1 -0
  377. package/dist/src/runtime-v2/middleware/index.d.ts +5 -0
  378. package/dist/src/runtime-v2/middleware/index.d.ts.map +1 -0
  379. package/dist/src/runtime-v2/middleware/index.js +4 -0
  380. package/dist/src/runtime-v2/middleware/index.js.map +1 -0
  381. package/dist/src/runtime-v2/middleware/pipeline.d.ts +56 -0
  382. package/dist/src/runtime-v2/middleware/pipeline.d.ts.map +1 -0
  383. package/dist/src/runtime-v2/middleware/pipeline.js +242 -0
  384. package/dist/src/runtime-v2/middleware/pipeline.js.map +1 -0
  385. package/dist/src/runtime-v2/middleware/registry.d.ts +17 -0
  386. package/dist/src/runtime-v2/middleware/registry.d.ts.map +1 -0
  387. package/dist/src/runtime-v2/middleware/registry.js +46 -0
  388. package/dist/src/runtime-v2/middleware/registry.js.map +1 -0
  389. package/dist/src/runtime-v2/middleware/stages.d.ts +25 -0
  390. package/dist/src/runtime-v2/middleware/stages.d.ts.map +1 -0
  391. package/dist/src/runtime-v2/middleware/stages.js +48 -0
  392. package/dist/src/runtime-v2/middleware/stages.js.map +1 -0
  393. package/dist/src/runtime-v2/middleware/types.d.ts +51 -0
  394. package/dist/src/runtime-v2/middleware/types.d.ts.map +1 -0
  395. package/dist/src/runtime-v2/middleware/types.js +2 -0
  396. package/dist/src/runtime-v2/middleware/types.js.map +1 -0
  397. package/dist/src/runtime-v2/services.d.ts +33 -0
  398. package/dist/src/runtime-v2/services.d.ts.map +1 -0
  399. package/dist/src/runtime-v2/services.js +92 -0
  400. package/dist/src/runtime-v2/services.js.map +1 -0
  401. package/dist/src/runtime-v2/state.d.ts +71 -0
  402. package/dist/src/runtime-v2/state.d.ts.map +1 -0
  403. package/dist/src/runtime-v2/state.js +2 -0
  404. package/dist/src/runtime-v2/state.js.map +1 -0
  405. package/dist/src/runtime-v2/tools.d.ts +124 -0
  406. package/dist/src/runtime-v2/tools.d.ts.map +1 -0
  407. package/dist/src/runtime-v2/tools.js +185 -0
  408. package/dist/src/runtime-v2/tools.js.map +1 -0
  409. package/dist/src/scheduling/durableAgentScheduler.d.ts +46 -0
  410. package/dist/src/scheduling/durableAgentScheduler.d.ts.map +1 -0
  411. package/dist/src/scheduling/durableAgentScheduler.js +97 -0
  412. package/dist/src/scheduling/durableAgentScheduler.js.map +1 -0
  413. package/dist/src/scheduling/index.d.ts +3 -0
  414. package/dist/src/scheduling/index.d.ts.map +1 -1
  415. package/dist/src/scheduling/index.js +2 -0
  416. package/dist/src/scheduling/index.js.map +1 -1
  417. package/dist/src/scheduling/taskPersistence.d.ts +9 -0
  418. package/dist/src/scheduling/taskPersistence.d.ts.map +1 -0
  419. package/dist/src/scheduling/taskPersistence.js +238 -0
  420. package/dist/src/scheduling/taskPersistence.js.map +1 -0
  421. package/dist/src/storage/atomicJsonWrite.d.ts +13 -0
  422. package/dist/src/storage/atomicJsonWrite.d.ts.map +1 -0
  423. package/dist/src/storage/atomicJsonWrite.js +40 -0
  424. package/dist/src/storage/atomicJsonWrite.js.map +1 -0
  425. package/dist/src/storage/backgroundTaskStore.d.ts.map +1 -1
  426. package/dist/src/storage/backgroundTaskStore.js +2 -6
  427. package/dist/src/storage/backgroundTaskStore.js.map +1 -1
  428. package/dist/src/storage/mailboxStore.d.ts.map +1 -1
  429. package/dist/src/storage/mailboxStore.js +2 -6
  430. package/dist/src/storage/mailboxStore.js.map +1 -1
  431. package/dist/src/storage/sessionStore.d.ts +3 -0
  432. package/dist/src/storage/sessionStore.d.ts.map +1 -1
  433. package/dist/src/storage/sessionStore.js +169 -10
  434. package/dist/src/storage/sessionStore.js.map +1 -1
  435. package/dist/src/storage/teammateStore.d.ts.map +1 -1
  436. package/dist/src/storage/teammateStore.js +2 -6
  437. package/dist/src/storage/teammateStore.js.map +1 -1
  438. package/dist/src/storage-v2/contracts.d.ts +36 -0
  439. package/dist/src/storage-v2/contracts.d.ts.map +1 -0
  440. package/dist/src/storage-v2/contracts.js +2 -0
  441. package/dist/src/storage-v2/contracts.js.map +1 -0
  442. package/dist/src/storage-v2/errors.d.ts +21 -0
  443. package/dist/src/storage-v2/errors.d.ts.map +1 -0
  444. package/dist/src/storage-v2/errors.js +44 -0
  445. package/dist/src/storage-v2/errors.js.map +1 -0
  446. package/dist/src/storage-v2/index.d.ts +8 -0
  447. package/dist/src/storage-v2/index.d.ts.map +1 -0
  448. package/dist/src/storage-v2/index.js +8 -0
  449. package/dist/src/storage-v2/index.js.map +1 -0
  450. package/dist/src/storage-v2/legacyJsonV1Items.d.ts +10 -0
  451. package/dist/src/storage-v2/legacyJsonV1Items.d.ts.map +1 -0
  452. package/dist/src/storage-v2/legacyJsonV1Items.js +153 -0
  453. package/dist/src/storage-v2/legacyJsonV1Items.js.map +1 -0
  454. package/dist/src/storage-v2/migration.d.ts +32 -0
  455. package/dist/src/storage-v2/migration.d.ts.map +1 -0
  456. package/dist/src/storage-v2/migration.js +242 -0
  457. package/dist/src/storage-v2/migration.js.map +1 -0
  458. package/dist/src/storage-v2/sqliteDriver.d.ts +24 -0
  459. package/dist/src/storage-v2/sqliteDriver.d.ts.map +1 -0
  460. package/dist/src/storage-v2/sqliteDriver.js +90 -0
  461. package/dist/src/storage-v2/sqliteDriver.js.map +1 -0
  462. package/dist/src/storage-v2/sqliteStorage.d.ts +55 -0
  463. package/dist/src/storage-v2/sqliteStorage.d.ts.map +1 -0
  464. package/dist/src/storage-v2/sqliteStorage.js +905 -0
  465. package/dist/src/storage-v2/sqliteStorage.js.map +1 -0
  466. package/dist/src/storage-v2/types.d.ts +198 -0
  467. package/dist/src/storage-v2/types.d.ts.map +1 -0
  468. package/dist/src/storage-v2/types.js +2 -0
  469. package/dist/src/storage-v2/types.js.map +1 -0
  470. package/dist/src/surfaces/index.d.ts +8 -0
  471. package/dist/src/surfaces/index.d.ts.map +1 -0
  472. package/dist/src/surfaces/index.js +8 -0
  473. package/dist/src/surfaces/index.js.map +1 -0
  474. package/dist/src/surfaces/internal.d.ts +17 -0
  475. package/dist/src/surfaces/internal.d.ts.map +1 -0
  476. package/dist/src/surfaces/internal.js +116 -0
  477. package/dist/src/surfaces/internal.js.map +1 -0
  478. package/dist/src/surfaces/legacyEventAdapter.d.ts +38 -0
  479. package/dist/src/surfaces/legacyEventAdapter.d.ts.map +1 -0
  480. package/dist/src/surfaces/legacyEventAdapter.js +373 -0
  481. package/dist/src/surfaces/legacyEventAdapter.js.map +1 -0
  482. package/dist/src/surfaces/legacySurfacePipeline.d.ts +18 -0
  483. package/dist/src/surfaces/legacySurfacePipeline.d.ts.map +1 -0
  484. package/dist/src/surfaces/legacySurfacePipeline.js +25 -0
  485. package/dist/src/surfaces/legacySurfacePipeline.js.map +1 -0
  486. package/dist/src/surfaces/redaction.d.ts +12 -0
  487. package/dist/src/surfaces/redaction.d.ts.map +1 -0
  488. package/dist/src/surfaces/redaction.js +111 -0
  489. package/dist/src/surfaces/redaction.js.map +1 -0
  490. package/dist/src/surfaces/runEventLegacyCompat.d.ts +26 -0
  491. package/dist/src/surfaces/runEventLegacyCompat.d.ts.map +1 -0
  492. package/dist/src/surfaces/runEventLegacyCompat.js +339 -0
  493. package/dist/src/surfaces/runEventLegacyCompat.js.map +1 -0
  494. package/dist/src/surfaces/runEventProjector.d.ts +44 -0
  495. package/dist/src/surfaces/runEventProjector.d.ts.map +1 -0
  496. package/dist/src/surfaces/runEventProjector.js +404 -0
  497. package/dist/src/surfaces/runEventProjector.js.map +1 -0
  498. package/dist/src/surfaces/runtimeBridgeAdapter.d.ts +30 -0
  499. package/dist/src/surfaces/runtimeBridgeAdapter.d.ts.map +1 -0
  500. package/dist/src/surfaces/runtimeBridgeAdapter.js +38 -0
  501. package/dist/src/surfaces/runtimeBridgeAdapter.js.map +1 -0
  502. package/dist/src/surfaces/types.d.ts +38 -0
  503. package/dist/src/surfaces/types.d.ts.map +1 -0
  504. package/dist/src/surfaces/types.js +2 -0
  505. package/dist/src/surfaces/types.js.map +1 -0
  506. package/dist/src/team/agentPool.d.ts +2 -0
  507. package/dist/src/team/agentPool.d.ts.map +1 -1
  508. package/dist/src/team/agentPool.js +3 -1
  509. package/dist/src/team/agentPool.js.map +1 -1
  510. package/dist/src/team/modelTeam.d.ts +25 -19
  511. package/dist/src/team/modelTeam.d.ts.map +1 -1
  512. package/dist/src/team/modelTeam.js +293 -294
  513. package/dist/src/team/modelTeam.js.map +1 -1
  514. package/dist/src/team/pricing.d.ts.map +1 -1
  515. package/dist/src/team/pricing.js +2 -1
  516. package/dist/src/team/pricing.js.map +1 -1
  517. package/dist/src/team/teamDefinitions.d.ts +28 -1
  518. package/dist/src/team/teamDefinitions.d.ts.map +1 -1
  519. package/dist/src/team/teamDefinitions.js +204 -8
  520. package/dist/src/team/teamDefinitions.js.map +1 -1
  521. package/dist/src/team/teamGraph.d.ts +191 -0
  522. package/dist/src/team/teamGraph.d.ts.map +1 -0
  523. package/dist/src/team/teamGraph.js +616 -0
  524. package/dist/src/team/teamGraph.js.map +1 -0
  525. package/dist/src/team/teamGraphLayout.d.ts +44 -0
  526. package/dist/src/team/teamGraphLayout.d.ts.map +1 -0
  527. package/dist/src/team/teamGraphLayout.js +120 -0
  528. package/dist/src/team/teamGraphLayout.js.map +1 -0
  529. package/dist/src/team/teamGraphScaffold.d.ts +76 -0
  530. package/dist/src/team/teamGraphScaffold.d.ts.map +1 -0
  531. package/dist/src/team/teamGraphScaffold.js +409 -0
  532. package/dist/src/team/teamGraphScaffold.js.map +1 -0
  533. package/dist/src/team/teamGraphV3.d.ts +28 -0
  534. package/dist/src/team/teamGraphV3.d.ts.map +1 -0
  535. package/dist/src/team/teamGraphV3.js +640 -0
  536. package/dist/src/team/teamGraphV3.js.map +1 -0
  537. package/dist/src/team/teamPreferences.d.ts +11 -0
  538. package/dist/src/team/teamPreferences.d.ts.map +1 -0
  539. package/dist/src/team/teamPreferences.js +48 -0
  540. package/dist/src/team/teamPreferences.js.map +1 -0
  541. package/dist/src/team/teamPrompts.d.ts +16 -0
  542. package/dist/src/team/teamPrompts.d.ts.map +1 -0
  543. package/dist/src/team/teamPrompts.js +44 -0
  544. package/dist/src/team/teamPrompts.js.map +1 -0
  545. package/dist/src/team/teamRunView.d.ts +78 -0
  546. package/dist/src/team/teamRunView.d.ts.map +1 -0
  547. package/dist/src/team/teamRunView.js +205 -0
  548. package/dist/src/team/teamRunView.js.map +1 -0
  549. package/dist/src/team/teamRuntime.d.ts +19 -2
  550. package/dist/src/team/teamRuntime.d.ts.map +1 -1
  551. package/dist/src/team/teamRuntime.js +13 -7
  552. package/dist/src/team/teamRuntime.js.map +1 -1
  553. package/dist/src/tools/actoviqCoreTools.d.ts +2 -1
  554. package/dist/src/tools/actoviqCoreTools.d.ts.map +1 -1
  555. package/dist/src/tools/actoviqCoreTools.js +4 -1
  556. package/dist/src/tools/actoviqCoreTools.js.map +1 -1
  557. package/dist/src/tools/actoviqShellTools.d.ts.map +1 -1
  558. package/dist/src/tools/actoviqShellTools.js +10 -0
  559. package/dist/src/tools/actoviqShellTools.js.map +1 -1
  560. package/dist/src/tools/askUserQuestion/AskUserQuestionTool.d.ts.map +1 -1
  561. package/dist/src/tools/askUserQuestion/AskUserQuestionTool.js +2 -0
  562. package/dist/src/tools/askUserQuestion/AskUserQuestionTool.js.map +1 -1
  563. package/dist/src/tools/bash/BashTool.d.ts +33 -2
  564. package/dist/src/tools/bash/BashTool.d.ts.map +1 -1
  565. package/dist/src/tools/bash/BashTool.js +140 -2
  566. package/dist/src/tools/bash/BashTool.js.map +1 -1
  567. package/dist/src/tools/bash/prompt.d.ts +1 -1
  568. package/dist/src/tools/bash/prompt.d.ts.map +1 -1
  569. package/dist/src/tools/bash/prompt.js +1 -0
  570. package/dist/src/tools/bash/prompt.js.map +1 -1
  571. package/dist/src/tools/planMode/PlanModeTools.js +2 -2
  572. package/dist/src/tools/planMode/PlanModeTools.js.map +1 -1
  573. package/dist/src/tools/todo/TodoWriteTool.d.ts +1 -1
  574. package/dist/src/tui/actoviqTui.d.ts.map +1 -1
  575. package/dist/src/tui/actoviqTui.js +522 -97
  576. package/dist/src/tui/actoviqTui.js.map +1 -1
  577. package/dist/src/tui/pluginCatalog.d.ts.map +1 -1
  578. package/dist/src/tui/pluginCatalog.js +3 -1
  579. package/dist/src/tui/pluginCatalog.js.map +1 -1
  580. package/dist/src/types.d.ts +355 -23
  581. package/dist/src/types.d.ts.map +1 -1
  582. package/dist/src/types.js.map +1 -1
  583. package/dist/src/ui/commandSurface.d.ts.map +1 -1
  584. package/dist/src/ui/commandSurface.js +23 -3
  585. package/dist/src/ui/commandSurface.js.map +1 -1
  586. package/dist/src/workflow/workflowPersistence.d.ts.map +1 -1
  587. package/dist/src/workflow/workflowPersistence.js +2 -1
  588. package/dist/src/workflow/workflowPersistence.js.map +1 -1
  589. package/dist/src/workflow/workflowScriptRuntime.d.ts +4 -0
  590. package/dist/src/workflow/workflowScriptRuntime.d.ts.map +1 -1
  591. package/dist/src/workflow/workflowScriptRuntime.js +69 -18
  592. package/dist/src/workflow/workflowScriptRuntime.js.map +1 -1
  593. package/dist/src/workflow-v2/boundary.d.ts +2 -0
  594. package/dist/src/workflow-v2/boundary.d.ts.map +1 -0
  595. package/dist/src/workflow-v2/boundary.js +45 -0
  596. package/dist/src/workflow-v2/boundary.js.map +1 -0
  597. package/dist/src/workflow-v2/capabilities.d.ts +5 -0
  598. package/dist/src/workflow-v2/capabilities.d.ts.map +1 -0
  599. package/dist/src/workflow-v2/capabilities.js +32 -0
  600. package/dist/src/workflow-v2/capabilities.js.map +1 -0
  601. package/dist/src/workflow-v2/errors.d.ts +43 -0
  602. package/dist/src/workflow-v2/errors.d.ts.map +1 -0
  603. package/dist/src/workflow-v2/errors.js +84 -0
  604. package/dist/src/workflow-v2/errors.js.map +1 -0
  605. package/dist/src/workflow-v2/index.d.ts +9 -0
  606. package/dist/src/workflow-v2/index.d.ts.map +1 -0
  607. package/dist/src/workflow-v2/index.js +6 -0
  608. package/dist/src/workflow-v2/index.js.map +1 -0
  609. package/dist/src/workflow-v2/json.d.ts +5 -0
  610. package/dist/src/workflow-v2/json.d.ts.map +1 -0
  611. package/dist/src/workflow-v2/json.js +40 -0
  612. package/dist/src/workflow-v2/json.js.map +1 -0
  613. package/dist/src/workflow-v2/limits.d.ts +15 -0
  614. package/dist/src/workflow-v2/limits.d.ts.map +1 -0
  615. package/dist/src/workflow-v2/limits.js +37 -0
  616. package/dist/src/workflow-v2/limits.js.map +1 -0
  617. package/dist/src/workflow-v2/localIsolatedProcessExecutor.d.ts +25 -0
  618. package/dist/src/workflow-v2/localIsolatedProcessExecutor.d.ts.map +1 -0
  619. package/dist/src/workflow-v2/localIsolatedProcessExecutor.js +423 -0
  620. package/dist/src/workflow-v2/localIsolatedProcessExecutor.js.map +1 -0
  621. package/dist/src/workflow-v2/localProcessChild.d.ts +2 -0
  622. package/dist/src/workflow-v2/localProcessChild.d.ts.map +1 -0
  623. package/dist/src/workflow-v2/localProcessChild.js +305 -0
  624. package/dist/src/workflow-v2/localProcessChild.js.map +1 -0
  625. package/dist/src/workflow-v2/router.d.ts +10 -0
  626. package/dist/src/workflow-v2/router.d.ts.map +1 -0
  627. package/dist/src/workflow-v2/router.js +28 -0
  628. package/dist/src/workflow-v2/router.js.map +1 -0
  629. package/dist/src/workflow-v2/trustedCompatibilityExecutor.d.ts +17 -0
  630. package/dist/src/workflow-v2/trustedCompatibilityExecutor.d.ts.map +1 -0
  631. package/dist/src/workflow-v2/trustedCompatibilityExecutor.js +159 -0
  632. package/dist/src/workflow-v2/trustedCompatibilityExecutor.js.map +1 -0
  633. package/dist/src/workflow-v2/types.d.ts +67 -0
  634. package/dist/src/workflow-v2/types.d.ts.map +1 -0
  635. package/dist/src/workflow-v2/types.js +2 -0
  636. package/dist/src/workflow-v2/types.js.map +1 -0
  637. package/package.json +96 -10
@@ -0,0 +1,640 @@
1
+ import { buildMemberIdentities } from './teamRuntime.js';
2
+ import { edgeConditionPasses, expandTeamGraphEdges, graphNodeRef, migrateTeamDefinitionToV2, } from './teamGraph.js';
3
+ export function graphNodeKind(node) {
4
+ return node.kind ?? 'agent';
5
+ }
6
+ export function isPortNode(node) {
7
+ const k = graphNodeKind(node);
8
+ return k === 'task' || k === 'return';
9
+ }
10
+ export function isTeamGraphV3(definition) {
11
+ if ((definition.version ?? 0) >= 3)
12
+ return true;
13
+ return (definition.nodes ?? []).some((n) => n.kind === 'task' || n.kind === 'return');
14
+ }
15
+ function portRef(node) {
16
+ const k = graphNodeKind(node);
17
+ if (k === 'task')
18
+ return (node.id ?? 'task').trim() || 'task';
19
+ if (k === 'return')
20
+ return (node.id ?? 'return').trim() || 'return';
21
+ return graphNodeRef(node);
22
+ }
23
+ /** Agent-only identities (task/return ports are not ReAct members). */
24
+ function buildAgentIdentities(nodes) {
25
+ return buildMemberIdentities(nodes.filter((n) => graphNodeKind(n) === 'agent'));
26
+ }
27
+ function indexGraphV3(definition) {
28
+ const nodes = definition.nodes ?? [];
29
+ const agentIdentities = buildAgentIdentities(nodes);
30
+ const refIndex = new Map();
31
+ nodes.forEach((node, i) => {
32
+ const ref = portRef(node);
33
+ if (ref && !refIndex.has(ref))
34
+ refIndex.set(ref, i);
35
+ if (graphNodeKind(node) === 'agent') {
36
+ const ai = agentIdentities.findIndex((id) => id.id === graphNodeRef(node) || id.role === node.role);
37
+ if (ai >= 0) {
38
+ const id = agentIdentities[ai].id;
39
+ if (!refIndex.has(id))
40
+ refIndex.set(id, i);
41
+ }
42
+ }
43
+ });
44
+ let taskIndex = -1;
45
+ const returnIndexes = [];
46
+ nodes.forEach((node, i) => {
47
+ if (graphNodeKind(node) === 'task')
48
+ taskIndex = i;
49
+ if (graphNodeKind(node) === 'return')
50
+ returnIndexes.push(i);
51
+ });
52
+ return {
53
+ nodes,
54
+ agentIdentities,
55
+ refIndex,
56
+ edges: expandTeamGraphEdges(definition.edges ?? []),
57
+ taskIndex,
58
+ returnIndexes,
59
+ };
60
+ }
61
+ function identityForAgentIndex(index, graph) {
62
+ const node = graph.nodes[index];
63
+ const ref = graphNodeRef(node);
64
+ return graph.agentIdentities.find((id) => id.id === ref)
65
+ ?? { id: ref || `agent-${index}`, model: node.model ?? '', role: node.role };
66
+ }
67
+ /** v3 graph validation (Task×1, Return≥1, reachability, loop caps). */
68
+ export function validateTeamGraphV3(definition) {
69
+ const errors = [];
70
+ const nodes = definition.nodes ?? [];
71
+ if (nodes.length === 0) {
72
+ errors.push('graph mode requires at least one node');
73
+ return errors;
74
+ }
75
+ const tasks = nodes.filter((n) => graphNodeKind(n) === 'task');
76
+ const returns = nodes.filter((n) => graphNodeKind(n) === 'return');
77
+ if (tasks.length !== 1) {
78
+ errors.push(`graph v3 requires exactly one Task entry node (found ${tasks.length})`);
79
+ }
80
+ if (returns.length === 0) {
81
+ errors.push('graph v3 requires at least one Return exit node');
82
+ }
83
+ const seenRefs = new Map();
84
+ nodes.forEach((node, i) => {
85
+ const ref = portRef(node);
86
+ if (!ref) {
87
+ errors.push(`node ${i + 1} has no id to address it by`);
88
+ return;
89
+ }
90
+ const prev = seenRefs.get(ref);
91
+ if (prev !== undefined) {
92
+ errors.push(`duplicate node ref "${ref}" (nodes ${prev + 1} and ${i + 1})`);
93
+ }
94
+ else {
95
+ seenRefs.set(ref, i);
96
+ }
97
+ if (graphNodeKind(node) === 'agent') {
98
+ const model = node.model;
99
+ // Empty string = "use session model" placeholder (built-in presets).
100
+ if (model !== '' && !model?.trim()) {
101
+ errors.push(`agent node "${ref}" requires a model`);
102
+ }
103
+ }
104
+ if (graphNodeKind(node) === 'return' && !node.returnMode) {
105
+ errors.push(`return node "${ref}" requires returnMode (void or payload)`);
106
+ }
107
+ });
108
+ const graph = indexGraphV3(definition);
109
+ if (graph.taskIndex < 0) {
110
+ errors.push('graph v3 Task entry node not found in index');
111
+ return errors;
112
+ }
113
+ graph.edges.forEach((edge, i) => {
114
+ const from = graph.refIndex.get((edge.from ?? '').trim());
115
+ const to = graph.refIndex.get((edge.to ?? '').trim());
116
+ if (from === undefined)
117
+ errors.push(`edge ${i + 1} references unknown "from" node "${edge.from}"`);
118
+ if (to === undefined)
119
+ errors.push(`edge ${i + 1} references unknown "to" node "${edge.to}"`);
120
+ if (to !== undefined && graphNodeKind(nodes[to]) === 'task') {
121
+ errors.push(`edge ${i + 1} must not target Task "${edge.to}" — Task is dispatch-only (outgoing edges)`);
122
+ }
123
+ if (from !== undefined && to !== undefined && from === to && !edge.loop) {
124
+ errors.push(`edge ${i + 1} is a self-loop on "${edge.from}" — set loop: true with maxRounds`);
125
+ }
126
+ });
127
+ if (!errors.length) {
128
+ const reachableReturn = returns.some((r) => {
129
+ const target = portRef(r);
130
+ return pathExistsToReturn(graph, graph.taskIndex, target);
131
+ });
132
+ if (!reachableReturn) {
133
+ errors.push('no path from Task entry to any Return exit');
134
+ }
135
+ }
136
+ const hasLoop = graph.edges.some((e) => e.loop);
137
+ if (hasLoop && !(definition.maxRounds && definition.maxRounds >= 2)) {
138
+ errors.push('graph with loop edges requires maxRounds >= 2 on the squad definition');
139
+ }
140
+ if (!errors.some((e) => e.startsWith('edge') || e.startsWith('duplicate'))) {
141
+ const cycleError = detectUncontrolledCycle(graph);
142
+ if (cycleError)
143
+ errors.push(cycleError);
144
+ }
145
+ return errors;
146
+ }
147
+ function pathExistsToReturn(graph, start, returnRef) {
148
+ const returnIdx = graph.refIndex.get(returnRef);
149
+ if (returnIdx === undefined)
150
+ return false;
151
+ const adj = buildAutoAdjacency(graph);
152
+ const queue = [start];
153
+ const seen = new Set([start]);
154
+ while (queue.length) {
155
+ const cur = queue.shift();
156
+ if (cur === returnIdx)
157
+ return true;
158
+ for (const next of adj.get(cur) ?? []) {
159
+ if (!seen.has(next)) {
160
+ seen.add(next);
161
+ queue.push(next);
162
+ }
163
+ }
164
+ }
165
+ return false;
166
+ }
167
+ function buildAutoAdjacency(graph) {
168
+ const adj = new Map();
169
+ for (const edge of graph.edges) {
170
+ if ((edge.trigger ?? 'on_complete') !== 'on_complete')
171
+ continue;
172
+ const from = graph.refIndex.get(edge.from.trim());
173
+ const to = graph.refIndex.get(edge.to.trim());
174
+ if (from === undefined || to === undefined)
175
+ continue;
176
+ if (!adj.has(from))
177
+ adj.set(from, []);
178
+ adj.get(from).push(to);
179
+ }
180
+ return adj;
181
+ }
182
+ function detectUncontrolledCycle(graph) {
183
+ const nodes = graph.nodes;
184
+ const indegree = new Array(nodes.length).fill(0);
185
+ const adjacency = nodes.map(() => []);
186
+ for (const edge of graph.edges) {
187
+ const from = graph.refIndex.get(edge.from.trim());
188
+ const to = graph.refIndex.get(edge.to.trim());
189
+ if (from === undefined || to === undefined)
190
+ continue;
191
+ adjacency[from].push(to);
192
+ if (!edge.loop)
193
+ indegree[to] += 1;
194
+ }
195
+ const queue = indegree.map((d, i) => (d === 0 ? i : -1)).filter((i) => i >= 0);
196
+ let visited = 0;
197
+ while (queue.length) {
198
+ const current = queue.shift();
199
+ visited += 1;
200
+ for (const next of adjacency[current]) {
201
+ indegree[next] -= 1;
202
+ if (indegree[next] === 0)
203
+ queue.push(next);
204
+ }
205
+ }
206
+ if (visited < nodes.length) {
207
+ const hasLoopEdge = graph.edges.some((e) => e.loop);
208
+ if (!hasLoopEdge)
209
+ return 'graph contains a cycle — mark loop edges with loop: true and set maxRounds';
210
+ }
211
+ return null;
212
+ }
213
+ /** Task dispatch targets: refs of agents (or ports) reached directly from Task. */
214
+ function taskDispatchTargets(edges, taskRef = 'task') {
215
+ return [...new Set(edges
216
+ .filter((e) => e.from.trim() === taskRef && (e.trigger ?? 'on_complete') === 'on_complete')
217
+ .map((e) => e.to.trim())
218
+ .filter(Boolean))];
219
+ }
220
+ /**
221
+ * Task is a one-shot dispatch port — no incoming edges. Loop rounds re-hand off
222
+ * to Task's dispatch targets instead of routing back through Task.
223
+ */
224
+ export function sanitizeV3GraphTopology(definition) {
225
+ const nodes = definition.nodes ?? [];
226
+ const taskNode = nodes.find((n) => graphNodeKind(n) === 'task');
227
+ if (!taskNode)
228
+ return definition;
229
+ const taskRef = portRef(taskNode);
230
+ const edges = [...(definition.edges ?? [])];
231
+ const entryTargets = taskDispatchTargets(edges, taskRef);
232
+ for (let i = edges.length - 1; i >= 0; i -= 1) {
233
+ const edge = edges[i];
234
+ if (edge.to.trim() !== taskRef)
235
+ continue;
236
+ if (edge.loop) {
237
+ for (const target of entryTargets) {
238
+ const dup = edges.some((e) => e.from === edge.from && e.to === target && e.loop && e.condition === edge.condition);
239
+ if (!dup) {
240
+ edges.push({ ...edge, to: target });
241
+ }
242
+ }
243
+ }
244
+ edges.splice(i, 1);
245
+ }
246
+ definition.edges = edges;
247
+ return definition;
248
+ }
249
+ /**
250
+ * v2/v1 graph → v3: insert Task + Return ports, rewire entries and terminals.
251
+ */
252
+ export function migrateTeamDefinitionToV3(definition) {
253
+ const wasReviewer = definition.mode === 'reviewer' || definition.mode === 'executor-reviewer';
254
+ const base = definition.orchestration === 'graph' || definition.mode === 'graph'
255
+ ? structuredClone(definition)
256
+ : migrateTeamDefinitionToV2(definition);
257
+ if (isTeamGraphV3(base) && base.nodes?.some((n) => n.kind === 'task')) {
258
+ return sanitizeV3GraphTopology({ ...base, version: 3 });
259
+ }
260
+ const agents = (base.nodes ?? [])
261
+ .filter((n) => graphNodeKind(n) !== 'task' && graphNodeKind(n) !== 'return')
262
+ .map((n) => {
263
+ const { entry: _e, ...rest } = n;
264
+ return { ...rest, kind: 'agent' };
265
+ });
266
+ const edges = [...(base.edges ?? [])].filter((e) => !['task', 'return', 'return-void'].includes(e.from) && !['task', 'return', 'return-void'].includes(e.to));
267
+ const entryRefs = new Set();
268
+ (base.nodes ?? []).forEach((n) => { if (n.entry)
269
+ entryRefs.add(graphNodeRef(n)); });
270
+ (base.entryNodeIds ?? []).forEach((r) => entryRefs.add(r.trim()));
271
+ const taskNode = { kind: 'task', id: 'task', ui: { x: 24, y: 48 } };
272
+ const voidReturn = { kind: 'return', id: 'return-void', returnMode: 'void', ui: { x: 520, y: 360 } };
273
+ const payloadReturn = {
274
+ kind: 'return',
275
+ id: 'return',
276
+ returnMode: 'payload',
277
+ payloadTemplate: '{{from.output}}',
278
+ ui: { x: 520, y: 240 },
279
+ };
280
+ const isReviewer = wasReviewer || Boolean(base.reviewer && !(base.members?.length));
281
+ const primaryRef = base.primary ? graphNodeRef(base.primary) : '';
282
+ const hasPrimary = Boolean(primaryRef && agents.some((n) => graphNodeRef(n) === primaryRef));
283
+ const nodes = [taskNode, ...agents];
284
+ if (isReviewer)
285
+ nodes.push(payloadReturn);
286
+ else
287
+ nodes.push(voidReturn);
288
+ const dispatchFromTask = (ref) => {
289
+ if (!ref || edges.some((e) => e.from === 'task' && e.to === ref))
290
+ return;
291
+ edges.push({
292
+ from: 'task',
293
+ to: ref,
294
+ trigger: 'on_complete',
295
+ channel: 'message',
296
+ payloadTemplate: '{{run.prompt}}',
297
+ });
298
+ };
299
+ if (entryRefs.size)
300
+ entryRefs.forEach(dispatchFromTask);
301
+ else
302
+ agents.forEach((n) => dispatchFromTask(graphNodeRef(n)));
303
+ if (hasPrimary && primaryRef) {
304
+ if (!edges.some((e) => e.from === primaryRef && e.to === 'return-void')) {
305
+ edges.push({ from: primaryRef, to: 'return-void', trigger: 'on_complete', condition: 'FINALIZE', channel: 'message' });
306
+ }
307
+ const loopTargets = taskDispatchTargets(edges, 'task');
308
+ for (const target of loopTargets) {
309
+ if (edges.some((e) => e.from === primaryRef && e.to === target && e.loop))
310
+ continue;
311
+ edges.push({
312
+ from: primaryRef,
313
+ to: target,
314
+ trigger: 'on_complete',
315
+ condition: '/^CONTINUE/i',
316
+ channel: 'message',
317
+ loop: true,
318
+ });
319
+ }
320
+ }
321
+ const autoFrom = new Set();
322
+ for (const edge of edges) {
323
+ if ((edge.trigger ?? 'on_complete') === 'on_complete')
324
+ autoFrom.add(edge.from.trim());
325
+ }
326
+ for (const n of agents) {
327
+ const ref = graphNodeRef(n);
328
+ if (!ref || autoFrom.has(ref))
329
+ continue;
330
+ const targetReturn = isReviewer ? 'return' : 'return-void';
331
+ edges.push({ from: ref, to: targetReturn, trigger: 'on_complete', channel: 'message' });
332
+ autoFrom.add(ref);
333
+ }
334
+ if (isReviewer) {
335
+ const agentRef = agents[0] ? graphNodeRef(agents[0]) : '';
336
+ if (agentRef && !edges.some((e) => e.from === agentRef && e.to === 'return')) {
337
+ edges.push({ from: agentRef, to: 'return', trigger: 'on_complete', channel: 'message' });
338
+ }
339
+ }
340
+ return sanitizeV3GraphTopology({
341
+ ...base,
342
+ mode: 'graph',
343
+ version: 3,
344
+ orchestration: 'graph',
345
+ nodes,
346
+ edges,
347
+ maxRounds: base.maxRounds ?? (hasPrimary ? 100 : undefined),
348
+ entryNodeIds: undefined,
349
+ reviewEdges: undefined,
350
+ });
351
+ }
352
+ /** v1/v2 → v3 in one step (GUI load / save path). */
353
+ export function migrateTeamDefinitionToGraph(definition) {
354
+ return migrateTeamDefinitionToV3(migrateTeamDefinitionToV2(definition));
355
+ }
356
+ function renderPayload(edge, fromId, output, runPrompt) {
357
+ if (edge.payloadTemplate) {
358
+ return edge.payloadTemplate
359
+ .replaceAll('{{from.output}}', output)
360
+ .replaceAll('{{from.id}}', fromId)
361
+ .replaceAll('{{run.prompt}}', runPrompt);
362
+ }
363
+ return `## Input from ${fromId}\n${output}`;
364
+ }
365
+ function renderReturnPayload(node, inputs, runPrompt, fromId, fromOutput) {
366
+ const tpl = node.payloadTemplate ?? '{{from.output}}';
367
+ return tpl
368
+ .replaceAll('{{from.output}}', fromOutput)
369
+ .replaceAll('{{from.id}}', fromId)
370
+ .replaceAll('{{run.prompt}}', runPrompt)
371
+ .replaceAll('{{inputs}}', inputs.join('\n\n'));
372
+ }
373
+ /**
374
+ * v3 engine: Task dispatches prompt once; Return terminates with void/payload;
375
+ * loop edges re-hand off to Task's dispatch targets (never back through Task).
376
+ */
377
+ export async function orchestrateGraphV3(opts) {
378
+ const graph = indexGraphV3(opts.definition);
379
+ const { nodes, refIndex, taskIndex } = graph;
380
+ const maxRounds = opts.definition.maxRounds ?? 100;
381
+ const outgoing = new Map();
382
+ const commOutgoing = new Map();
383
+ const initialRemainingIn = new Array(nodes.length).fill(0);
384
+ const taskEntryRefs = new Set((graph.edges ?? [])
385
+ .filter((e) => e.from.trim() === portRef(nodes[taskIndex]) && (e.trigger ?? 'on_complete') === 'on_complete')
386
+ .map((e) => e.to.trim()));
387
+ for (const edge of graph.edges) {
388
+ const from = refIndex.get(edge.from.trim());
389
+ const to = refIndex.get(edge.to.trim());
390
+ if (from === undefined || to === undefined)
391
+ continue;
392
+ const trigger = edge.trigger ?? 'on_complete';
393
+ if (trigger === 'on_complete') {
394
+ if (!outgoing.has(from))
395
+ outgoing.set(from, []);
396
+ outgoing.get(from).push(edge);
397
+ if (!edge.loop)
398
+ initialRemainingIn[to] += 1;
399
+ }
400
+ else if (trigger === 'on_tool_call' || trigger === 'on_handoff' || trigger === 'on_review_request') {
401
+ if (!commOutgoing.has(from))
402
+ commOutgoing.set(from, []);
403
+ commOutgoing.get(from).push(edge);
404
+ }
405
+ }
406
+ let remainingIn = [...initialRemainingIn];
407
+ const inputs = nodes.map(() => []);
408
+ const delivered = new Array(nodes.length).fill(0);
409
+ const started = new Set();
410
+ const shortCircuited = new Set();
411
+ const completionOrder = [];
412
+ const runs = [];
413
+ let rounds = 1;
414
+ let graphDone = false;
415
+ let returnValue = null;
416
+ let returnMode = 'void';
417
+ let returnNodeId;
418
+ let incompleteReason;
419
+ let lastFromOutput = '';
420
+ let lastFromId = 'task';
421
+ let continuingRound = false;
422
+ const buildTask = (index) => {
423
+ const sections = inputs[index].filter((s) => s.trim() && s !== opts.prompt);
424
+ return sections.length ? `${opts.prompt}\n\n${sections.join('\n\n')}` : opts.prompt;
425
+ };
426
+ const joinMode = (index) => nodes[index].join === 'any' ? 'any' : 'all';
427
+ const completeReturn = (index, fromIndex, fromOutput) => {
428
+ if (graphDone)
429
+ return;
430
+ graphDone = true;
431
+ const node = nodes[index];
432
+ returnNodeId = portRef(node);
433
+ returnMode = node.returnMode ?? 'void';
434
+ if (returnMode === 'void') {
435
+ returnValue = null;
436
+ }
437
+ else {
438
+ returnValue = renderReturnPayload(node, inputs[index], opts.prompt, lastFromId, fromOutput);
439
+ }
440
+ opts.onEvent?.({
441
+ type: 'team.returned',
442
+ nodeId: returnNodeId,
443
+ returnMode,
444
+ returnValue: returnValue ?? undefined,
445
+ });
446
+ };
447
+ const resolveSlot = (to, deliveredPayload, fromIndex, fromOutput) => {
448
+ if (graphDone)
449
+ return;
450
+ remainingIn[to] -= 1;
451
+ if (deliveredPayload)
452
+ delivered[to] += 1;
453
+ if (graphNodeKind(nodes[to]) === 'return') {
454
+ if (remainingIn[to] > 0)
455
+ return;
456
+ if (delivered[to] > 0) {
457
+ completeReturn(to, fromIndex, fromOutput);
458
+ }
459
+ return;
460
+ }
461
+ if (started.has(to) || shortCircuited.has(to))
462
+ return;
463
+ if (deliveredPayload && joinMode(to) === 'any') {
464
+ schedule(to);
465
+ return;
466
+ }
467
+ if (remainingIn[to] > 0)
468
+ return;
469
+ if (delivered[to] > 0)
470
+ schedule(to);
471
+ else {
472
+ shortCircuited.add(to);
473
+ cascadeRelease(to);
474
+ }
475
+ };
476
+ const cascadeRelease = (index) => {
477
+ for (const edge of outgoing.get(index) ?? []) {
478
+ resolveSlot(refIndex.get(edge.to.trim()), false, index, '');
479
+ }
480
+ };
481
+ const fireEdge = (edge, fromIndex, output) => {
482
+ if (graphDone)
483
+ return;
484
+ const to = refIndex.get(edge.to.trim());
485
+ const fromId = graphNodeKind(nodes[fromIndex]) === 'task'
486
+ ? 'task'
487
+ : identityForAgentIndex(fromIndex, graph).id;
488
+ lastFromId = fromId;
489
+ lastFromOutput = output;
490
+ const toRef = portRef(nodes[to]);
491
+ const isLoopRoundEdge = edge.loop && (graphNodeKind(nodes[to]) === 'task' || taskEntryRefs.has(toRef));
492
+ if (isLoopRoundEdge) {
493
+ if (!edgeConditionPasses(edge.condition, output)) {
494
+ resolveSlot(to, false, fromIndex, output);
495
+ return;
496
+ }
497
+ if (continuingRound)
498
+ return;
499
+ opts.onEvent?.({ type: 'team.synthesis', round: rounds, decision: 'continue' });
500
+ if (rounds >= maxRounds) {
501
+ incompleteReason = `maxRounds (${maxRounds}) reached during loop`;
502
+ opts.onEvent?.({ type: 'team.synthesis', round: rounds, decision: 'finalize' });
503
+ const voidRet = graph.returnIndexes.find((i) => nodes[i].returnMode === 'void');
504
+ if (voidRet !== undefined)
505
+ completeReturn(voidRet, fromIndex, output);
506
+ return;
507
+ }
508
+ continuingRound = true;
509
+ rounds += 1;
510
+ opts.onEvent?.({
511
+ type: 'team.round.completed',
512
+ round: rounds,
513
+ reports: completionOrder.length,
514
+ });
515
+ redispatchEntryAgents();
516
+ continuingRound = false;
517
+ return;
518
+ }
519
+ if (!edgeConditionPasses(edge.condition, output)) {
520
+ resolveSlot(to, false, fromIndex, output);
521
+ return;
522
+ }
523
+ if (graphNodeKind(nodes[to]) === 'return') {
524
+ const isFinalize = (edge.condition ?? '').trim() === 'FINALIZE'
525
+ || output.trim().toUpperCase().startsWith('FINALIZE');
526
+ if (isFinalize) {
527
+ opts.onEvent?.({ type: 'team.synthesis', round: rounds, decision: 'finalize' });
528
+ }
529
+ }
530
+ opts.onEvent?.({
531
+ type: 'team.edge.triggered',
532
+ from: fromId,
533
+ to: graphNodeKind(nodes[to]) === 'return' ? portRef(nodes[to]) : identityForAgentIndex(to, graph).id,
534
+ trigger: edge.trigger ?? 'on_complete',
535
+ channel: edge.channel ?? 'message',
536
+ });
537
+ if (graphNodeKind(nodes[to]) === 'return') {
538
+ inputs[to].push(renderPayload(edge, fromId, output, opts.prompt));
539
+ resolveSlot(to, true, fromIndex, output);
540
+ return;
541
+ }
542
+ inputs[to].push(renderPayload(edge, fromId, output, opts.prompt));
543
+ resolveSlot(to, true, fromIndex, output);
544
+ };
545
+ const redispatchEntryAgents = () => {
546
+ remainingIn = [...initialRemainingIn];
547
+ inputs.fill([], 0, nodes.length);
548
+ delivered.fill(0);
549
+ started.clear();
550
+ shortCircuited.clear();
551
+ started.add(taskIndex);
552
+ for (const edge of outgoing.get(taskIndex) ?? []) {
553
+ fireEdge(edge, taskIndex, opts.prompt);
554
+ }
555
+ };
556
+ const notifyFrom = (fromIndex, to, message) => {
557
+ const edges = commOutgoing.get(fromIndex) ?? [];
558
+ if (!edges.length)
559
+ return { ok: false, delivered: [], error: 'no communication edges' };
560
+ const deliveredIds = [];
561
+ for (const edge of edges) {
562
+ const toIndex = refIndex.get(edge.to.trim());
563
+ if (started.has(toIndex) || shortCircuited.has(toIndex) || graphDone)
564
+ continue;
565
+ if (!edgeConditionPasses(edge.condition, message))
566
+ continue;
567
+ inputs[toIndex].push(renderPayload(edge, identityForAgentIndex(fromIndex, graph).id, message, opts.prompt));
568
+ delivered[toIndex] += 1;
569
+ deliveredIds.push(portRef(nodes[toIndex]));
570
+ if (remainingIn[toIndex] === 0)
571
+ schedule(toIndex);
572
+ }
573
+ return deliveredIds.length
574
+ ? { ok: true, delivered: deliveredIds }
575
+ : { ok: false, delivered: [], error: 'not delivered' };
576
+ };
577
+ const buildContext = (index) => ({
578
+ commTargets: [...new Set((commOutgoing.get(index) ?? []).map((e) => portRef(nodes[refIndex.get(e.to.trim())])))],
579
+ notify: (to, message) => notifyFrom(index, to, message),
580
+ });
581
+ function startRun(index) {
582
+ if (graphDone)
583
+ return;
584
+ const node = nodes[index];
585
+ if (graphNodeKind(node) === 'task' || graphNodeKind(node) === 'return')
586
+ return;
587
+ const identity = identityForAgentIndex(index, graph);
588
+ runs.push((async () => {
589
+ const result = await opts.runNode(node, identity, buildTask(index), buildContext(index));
590
+ completionOrder.push({ id: identity.id, report: result.report, ok: result.ok });
591
+ const output = result.ok ? result.report : `[FAILED: ${identity.id} — ${result.error ?? 'unknown'}]`;
592
+ for (const edge of outgoing.get(index) ?? [])
593
+ fireEdge(edge, index, output);
594
+ })());
595
+ }
596
+ function schedule(index) {
597
+ if (graphDone || started.has(index) || shortCircuited.has(index))
598
+ return;
599
+ const kind = graphNodeKind(nodes[index]);
600
+ if (kind === 'return') {
601
+ if (remainingIn[index] === 0 && delivered[index] > 0) {
602
+ completeReturn(index, taskIndex, lastFromOutput);
603
+ }
604
+ return;
605
+ }
606
+ started.add(index);
607
+ if (kind === 'task')
608
+ dispatchTask();
609
+ else
610
+ startRun(index);
611
+ }
612
+ function dispatchTask() {
613
+ if (graphDone)
614
+ return;
615
+ started.add(taskIndex);
616
+ const output = opts.prompt;
617
+ for (const edge of outgoing.get(taskIndex) ?? [])
618
+ fireEdge(edge, taskIndex, output);
619
+ }
620
+ dispatchTask();
621
+ for (let i = 0; i < runs.length; i += 1)
622
+ await runs[i];
623
+ const skipped = nodes
624
+ .map((_, i) => i)
625
+ .filter((i) => graphNodeKind(nodes[i]) === 'agent' && !started.has(i))
626
+ .map((i) => identityForAgentIndex(i, graph).id);
627
+ const answer = returnValue ?? '';
628
+ return {
629
+ answer,
630
+ skipped,
631
+ reports: completionOrder,
632
+ returnValue,
633
+ returnMode,
634
+ returnNodeId,
635
+ rounds,
636
+ incompleteReason,
637
+ lastFromOutput,
638
+ };
639
+ }
640
+ //# sourceMappingURL=teamGraphV3.js.map