actoviq-agent-sdk 0.4.11 → 0.4.13

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 (308) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/src/computer/hadamardComputerUse.d.ts +15 -0
  3. package/dist/src/computer/hadamardComputerUse.d.ts.map +1 -1
  4. package/dist/src/computer/hadamardComputerUse.js +120 -4
  5. package/dist/src/computer/hadamardComputerUse.js.map +1 -1
  6. package/dist/src/config/agentDefinitionMigration.d.ts +125 -0
  7. package/dist/src/config/agentDefinitionMigration.d.ts.map +1 -0
  8. package/dist/src/config/agentDefinitionMigration.js +540 -0
  9. package/dist/src/config/agentDefinitionMigration.js.map +1 -0
  10. package/dist/src/config/agentProfiles.d.ts +23 -0
  11. package/dist/src/config/agentProfiles.d.ts.map +1 -1
  12. package/dist/src/config/agentProfiles.js +69 -13
  13. package/dist/src/config/agentProfiles.js.map +1 -1
  14. package/dist/src/config/hadamardHome.js +0 -1
  15. package/dist/src/config/hadamardHome.js.map +1 -1
  16. package/dist/src/config/modelConfigurationCatalog.d.ts +25 -0
  17. package/dist/src/config/modelConfigurationCatalog.d.ts.map +1 -0
  18. package/dist/src/config/modelConfigurationCatalog.js +50 -0
  19. package/dist/src/config/modelConfigurationCatalog.js.map +1 -0
  20. package/dist/src/config/projectSettings.d.ts +62 -0
  21. package/dist/src/config/projectSettings.d.ts.map +1 -0
  22. package/dist/src/config/projectSettings.js +242 -0
  23. package/dist/src/config/projectSettings.js.map +1 -0
  24. package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
  25. package/dist/src/config/resolveRuntimeConfig.js +97 -4
  26. package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
  27. package/dist/src/goal/goalCommandService.d.ts +11 -0
  28. package/dist/src/goal/goalCommandService.d.ts.map +1 -0
  29. package/dist/src/goal/goalCommandService.js +138 -0
  30. package/dist/src/goal/goalCommandService.js.map +1 -0
  31. package/dist/src/goal/goalContinuation.d.ts +50 -0
  32. package/dist/src/goal/goalContinuation.d.ts.map +1 -0
  33. package/dist/src/goal/goalContinuation.js +131 -0
  34. package/dist/src/goal/goalContinuation.js.map +1 -0
  35. package/dist/src/goal/goalController.d.ts +42 -0
  36. package/dist/src/goal/goalController.d.ts.map +1 -0
  37. package/dist/src/goal/goalController.js +281 -0
  38. package/dist/src/goal/goalController.js.map +1 -0
  39. package/dist/src/goal/goalPrompt.d.ts +3 -0
  40. package/dist/src/goal/goalPrompt.d.ts.map +1 -1
  41. package/dist/src/goal/goalPrompt.js +28 -2
  42. package/dist/src/goal/goalPrompt.js.map +1 -1
  43. package/dist/src/goal/goalService.d.ts +68 -2
  44. package/dist/src/goal/goalService.d.ts.map +1 -1
  45. package/dist/src/goal/goalService.js +500 -8
  46. package/dist/src/goal/goalService.js.map +1 -1
  47. package/dist/src/goal/goalStore.d.ts.map +1 -1
  48. package/dist/src/goal/goalStore.js +172 -5
  49. package/dist/src/goal/goalStore.js.map +1 -1
  50. package/dist/src/goal/goalTools.d.ts +2 -1
  51. package/dist/src/goal/goalTools.d.ts.map +1 -1
  52. package/dist/src/goal/goalTools.js +70 -5
  53. package/dist/src/goal/goalTools.js.map +1 -1
  54. package/dist/src/goal/goalWorkCoordinator.d.ts +43 -0
  55. package/dist/src/goal/goalWorkCoordinator.d.ts.map +1 -0
  56. package/dist/src/goal/goalWorkCoordinator.js +72 -0
  57. package/dist/src/goal/goalWorkCoordinator.js.map +1 -0
  58. package/dist/src/goal/index.d.ts +10 -4
  59. package/dist/src/goal/index.d.ts.map +1 -1
  60. package/dist/src/goal/index.js +7 -1
  61. package/dist/src/goal/index.js.map +1 -1
  62. package/dist/src/goal/projectGoalApi.d.ts +82 -0
  63. package/dist/src/goal/projectGoalApi.d.ts.map +1 -0
  64. package/dist/src/goal/projectGoalApi.js +287 -0
  65. package/dist/src/goal/projectGoalApi.js.map +1 -0
  66. package/dist/src/goal/projectGoalStore.d.ts +131 -0
  67. package/dist/src/goal/projectGoalStore.d.ts.map +1 -0
  68. package/dist/src/goal/projectGoalStore.js +808 -0
  69. package/dist/src/goal/projectGoalStore.js.map +1 -0
  70. package/dist/src/goal/types.d.ts +127 -3
  71. package/dist/src/goal/types.d.ts.map +1 -1
  72. package/dist/src/goal/types.js +2 -2
  73. package/dist/src/goal/types.js.map +1 -1
  74. package/dist/src/gui/agentTargetPicker.d.ts +32 -0
  75. package/dist/src/gui/agentTargetPicker.d.ts.map +1 -0
  76. package/dist/src/gui/agentTargetPicker.js +99 -0
  77. package/dist/src/gui/agentTargetPicker.js.map +1 -0
  78. package/dist/src/gui/electronMain.js +10 -3
  79. package/dist/src/gui/electronMain.js.map +1 -1
  80. package/dist/src/gui/hadamardGui.d.ts +24 -0
  81. package/dist/src/gui/hadamardGui.d.ts.map +1 -1
  82. package/dist/src/gui/hadamardGui.js +6321 -1327
  83. package/dist/src/gui/hadamardGui.js.map +1 -1
  84. package/dist/src/gui/projectWorkbench.d.ts +13 -2
  85. package/dist/src/gui/projectWorkbench.d.ts.map +1 -1
  86. package/dist/src/gui/projectWorkbench.js +109 -67
  87. package/dist/src/gui/projectWorkbench.js.map +1 -1
  88. package/dist/src/gui/promptTemplates.d.ts +18 -0
  89. package/dist/src/gui/promptTemplates.d.ts.map +1 -0
  90. package/dist/src/gui/promptTemplates.js +178 -0
  91. package/dist/src/gui/promptTemplates.js.map +1 -0
  92. package/dist/src/gui/terminalManager.d.ts +14 -0
  93. package/dist/src/gui/terminalManager.d.ts.map +1 -1
  94. package/dist/src/gui/terminalManager.js +25 -5
  95. package/dist/src/gui/terminalManager.js.map +1 -1
  96. package/dist/src/gui/transcript/clientBundle.d.ts +6 -1
  97. package/dist/src/gui/transcript/clientBundle.d.ts.map +1 -1
  98. package/dist/src/gui/transcript/clientBundle.js +6 -1
  99. package/dist/src/gui/transcript/clientBundle.js.map +1 -1
  100. package/dist/src/help/productCapabilities.d.ts +17 -0
  101. package/dist/src/help/productCapabilities.d.ts.map +1 -0
  102. package/dist/src/help/productCapabilities.js +146 -0
  103. package/dist/src/help/productCapabilities.js.map +1 -0
  104. package/dist/src/index.d.ts +21 -6
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/index.js +15 -5
  107. package/dist/src/index.js.map +1 -1
  108. package/dist/src/issues/issueExecution.d.ts.map +1 -1
  109. package/dist/src/issues/issueExecution.js +29 -9
  110. package/dist/src/issues/issueExecution.js.map +1 -1
  111. package/dist/src/manager/assistantGlobalTools.d.ts +44 -0
  112. package/dist/src/manager/assistantGlobalTools.d.ts.map +1 -1
  113. package/dist/src/manager/assistantGlobalTools.js +565 -34
  114. package/dist/src/manager/assistantGlobalTools.js.map +1 -1
  115. package/dist/src/manager/assistantProposals.d.ts +87 -0
  116. package/dist/src/manager/assistantProposals.d.ts.map +1 -0
  117. package/dist/src/manager/assistantProposals.js +207 -0
  118. package/dist/src/manager/assistantProposals.js.map +1 -0
  119. package/dist/src/manager/referenceIndex.d.ts +82 -0
  120. package/dist/src/manager/referenceIndex.d.ts.map +1 -0
  121. package/dist/src/manager/referenceIndex.js +167 -0
  122. package/dist/src/manager/referenceIndex.js.map +1 -0
  123. package/dist/src/manager/referenceOperations.d.ts +108 -0
  124. package/dist/src/manager/referenceOperations.d.ts.map +1 -0
  125. package/dist/src/manager/referenceOperations.js +821 -0
  126. package/dist/src/manager/referenceOperations.js.map +1 -0
  127. package/dist/src/manager/resolveTargetRef.d.ts +67 -0
  128. package/dist/src/manager/resolveTargetRef.d.ts.map +1 -0
  129. package/dist/src/manager/resolveTargetRef.js +81 -0
  130. package/dist/src/manager/resolveTargetRef.js.map +1 -0
  131. package/dist/src/memory/durableMemoryPipeline.d.ts +51 -0
  132. package/dist/src/memory/durableMemoryPipeline.d.ts.map +1 -0
  133. package/dist/src/memory/durableMemoryPipeline.js +266 -0
  134. package/dist/src/memory/durableMemoryPipeline.js.map +1 -0
  135. package/dist/src/memory/durableMemoryStore.d.ts +59 -0
  136. package/dist/src/memory/durableMemoryStore.d.ts.map +1 -0
  137. package/dist/src/memory/durableMemoryStore.js +194 -0
  138. package/dist/src/memory/durableMemoryStore.js.map +1 -0
  139. package/dist/src/memory/hadamardDream.d.ts +18 -0
  140. package/dist/src/memory/hadamardDream.d.ts.map +1 -1
  141. package/dist/src/memory/hadamardDream.js +119 -39
  142. package/dist/src/memory/hadamardDream.js.map +1 -1
  143. package/dist/src/memory/hadamardMemory.d.ts +20 -39
  144. package/dist/src/memory/hadamardMemory.d.ts.map +1 -1
  145. package/dist/src/memory/hadamardMemory.js +112 -450
  146. package/dist/src/memory/hadamardMemory.js.map +1 -1
  147. package/dist/src/memory/hadamardSessionMemoryState.d.ts +2 -5
  148. package/dist/src/memory/hadamardSessionMemoryState.d.ts.map +1 -1
  149. package/dist/src/memory/hadamardSessionMemoryState.js +5 -61
  150. package/dist/src/memory/hadamardSessionMemoryState.js.map +1 -1
  151. package/dist/src/memory/memoryCommandService.d.ts +25 -0
  152. package/dist/src/memory/memoryCommandService.d.ts.map +1 -0
  153. package/dist/src/memory/memoryCommandService.js +93 -0
  154. package/dist/src/memory/memoryCommandService.js.map +1 -0
  155. package/dist/src/memory/memoryProposalCommandService.d.ts.map +1 -1
  156. package/dist/src/memory/memoryProposalCommandService.js +2 -1
  157. package/dist/src/memory/memoryProposalCommandService.js.map +1 -1
  158. package/dist/src/memory/memoryProposalTools.d.ts +1 -0
  159. package/dist/src/memory/memoryProposalTools.d.ts.map +1 -1
  160. package/dist/src/memory/memoryProposalTools.js +16 -11
  161. package/dist/src/memory/memoryProposalTools.js.map +1 -1
  162. package/dist/src/parity/bridgeConfigs.d.ts +4 -0
  163. package/dist/src/parity/bridgeConfigs.d.ts.map +1 -1
  164. package/dist/src/parity/bridgeConfigs.js +30 -1
  165. package/dist/src/parity/bridgeConfigs.js.map +1 -1
  166. package/dist/src/router/modelRouter.d.ts +22 -2
  167. package/dist/src/router/modelRouter.d.ts.map +1 -1
  168. package/dist/src/router/modelRouter.js +76 -9
  169. package/dist/src/router/modelRouter.js.map +1 -1
  170. package/dist/src/runtime/agentClient.d.ts +24 -4
  171. package/dist/src/runtime/agentClient.d.ts.map +1 -1
  172. package/dist/src/runtime/agentClient.js +581 -262
  173. package/dist/src/runtime/agentClient.js.map +1 -1
  174. package/dist/src/runtime/agentSession.d.ts +8 -3
  175. package/dist/src/runtime/agentSession.d.ts.map +1 -1
  176. package/dist/src/runtime/agentSession.js +10 -3
  177. package/dist/src/runtime/agentSession.js.map +1 -1
  178. package/dist/src/runtime/agentTemplates.d.ts +28 -0
  179. package/dist/src/runtime/agentTemplates.d.ts.map +1 -0
  180. package/dist/src/runtime/agentTemplates.js +73 -0
  181. package/dist/src/runtime/agentTemplates.js.map +1 -0
  182. package/dist/src/runtime/conversationEngine.d.ts +4 -0
  183. package/dist/src/runtime/conversationEngine.d.ts.map +1 -1
  184. package/dist/src/runtime/conversationEngine.js +52 -3
  185. package/dist/src/runtime/conversationEngine.js.map +1 -1
  186. package/dist/src/runtime/defaultHadamardAgents.d.ts.map +1 -1
  187. package/dist/src/runtime/defaultHadamardAgents.js +9 -47
  188. package/dist/src/runtime/defaultHadamardAgents.js.map +1 -1
  189. package/dist/src/runtime/effectiveAgentRunOptions.d.ts +49 -0
  190. package/dist/src/runtime/effectiveAgentRunOptions.d.ts.map +1 -0
  191. package/dist/src/runtime/effectiveAgentRunOptions.js +50 -0
  192. package/dist/src/runtime/effectiveAgentRunOptions.js.map +1 -0
  193. package/dist/src/runtime/externalAgentRunner.d.ts +25 -0
  194. package/dist/src/runtime/externalAgentRunner.d.ts.map +1 -0
  195. package/dist/src/runtime/externalAgentRunner.js +57 -0
  196. package/dist/src/runtime/externalAgentRunner.js.map +1 -0
  197. package/dist/src/runtime/hadamardAgentDefinitions.d.ts +15 -0
  198. package/dist/src/runtime/hadamardAgentDefinitions.d.ts.map +1 -1
  199. package/dist/src/runtime/hadamardAgentDefinitions.js +42 -2
  200. package/dist/src/runtime/hadamardAgentDefinitions.js.map +1 -1
  201. package/dist/src/runtime/hadamardAgents.d.ts +6 -0
  202. package/dist/src/runtime/hadamardAgents.d.ts.map +1 -1
  203. package/dist/src/runtime/hadamardAgents.js +52 -1
  204. package/dist/src/runtime/hadamardAgents.js.map +1 -1
  205. package/dist/src/runtime/hadamardCompact.d.ts +12 -1
  206. package/dist/src/runtime/hadamardCompact.d.ts.map +1 -1
  207. package/dist/src/runtime/hadamardCompact.js +91 -35
  208. package/dist/src/runtime/hadamardCompact.js.map +1 -1
  209. package/dist/src/runtime/hadamardPermissions.d.ts +1 -0
  210. package/dist/src/runtime/hadamardPermissions.d.ts.map +1 -1
  211. package/dist/src/runtime/hadamardPermissions.js +6 -0
  212. package/dist/src/runtime/hadamardPermissions.js.map +1 -1
  213. package/dist/src/runtime/hadamardSlashCommands.d.ts +7 -1
  214. package/dist/src/runtime/hadamardSlashCommands.d.ts.map +1 -1
  215. package/dist/src/runtime/hadamardSlashCommands.js +47 -5
  216. package/dist/src/runtime/hadamardSlashCommands.js.map +1 -1
  217. package/dist/src/runtime/tools.d.ts.map +1 -1
  218. package/dist/src/runtime/tools.js +2 -0
  219. package/dist/src/runtime/tools.js.map +1 -1
  220. package/dist/src/team/executorTarget.d.ts +26 -0
  221. package/dist/src/team/executorTarget.d.ts.map +1 -0
  222. package/dist/src/team/executorTarget.js +15 -0
  223. package/dist/src/team/executorTarget.js.map +1 -0
  224. package/dist/src/team/modelTeam.d.ts +5 -1
  225. package/dist/src/team/modelTeam.d.ts.map +1 -1
  226. package/dist/src/team/modelTeam.js +157 -41
  227. package/dist/src/team/modelTeam.js.map +1 -1
  228. package/dist/src/team/teamComposition.d.ts +20 -0
  229. package/dist/src/team/teamComposition.d.ts.map +1 -0
  230. package/dist/src/team/teamComposition.js +78 -0
  231. package/dist/src/team/teamComposition.js.map +1 -0
  232. package/dist/src/team/teamDefinitions.d.ts +10 -1
  233. package/dist/src/team/teamDefinitions.d.ts.map +1 -1
  234. package/dist/src/team/teamDefinitions.js +123 -16
  235. package/dist/src/team/teamDefinitions.js.map +1 -1
  236. package/dist/src/team/teamGraph.d.ts +1 -1
  237. package/dist/src/team/teamGraph.d.ts.map +1 -1
  238. package/dist/src/team/teamGraph.js +1 -1
  239. package/dist/src/team/teamGraph.js.map +1 -1
  240. package/dist/src/team/teamPrompts.d.ts.map +1 -1
  241. package/dist/src/team/teamPrompts.js +0 -4
  242. package/dist/src/team/teamPrompts.js.map +1 -1
  243. package/dist/src/team/teamProposalService.d.ts +9 -1
  244. package/dist/src/team/teamProposalService.d.ts.map +1 -1
  245. package/dist/src/team/teamProposalService.js +66 -6
  246. package/dist/src/team/teamProposalService.js.map +1 -1
  247. package/dist/src/team/teamPropose.d.ts +3 -1
  248. package/dist/src/team/teamPropose.d.ts.map +1 -1
  249. package/dist/src/team/teamPropose.js +16 -10
  250. package/dist/src/team/teamPropose.js.map +1 -1
  251. package/dist/src/team/teamRuntime.d.ts +5 -0
  252. package/dist/src/team/teamRuntime.d.ts.map +1 -1
  253. package/dist/src/team/teamRuntime.js +23 -5
  254. package/dist/src/team/teamRuntime.js.map +1 -1
  255. package/dist/src/team/workflowSquad.d.ts +10 -2
  256. package/dist/src/team/workflowSquad.d.ts.map +1 -1
  257. package/dist/src/team/workflowSquad.js +250 -12
  258. package/dist/src/team/workflowSquad.js.map +1 -1
  259. package/dist/src/tools/enterWorktree.d.ts.map +1 -1
  260. package/dist/src/tools/enterWorktree.js +3 -0
  261. package/dist/src/tools/enterWorktree.js.map +1 -1
  262. package/dist/src/tools/exaSearch.d.ts +2 -2
  263. package/dist/src/tools/exitWorktree.d.ts.map +1 -1
  264. package/dist/src/tools/exitWorktree.js +3 -1
  265. package/dist/src/tools/exitWorktree.js.map +1 -1
  266. package/dist/src/tools/hadamardCoreTools.d.ts +5 -14
  267. package/dist/src/tools/hadamardCoreTools.d.ts.map +1 -1
  268. package/dist/src/tools/hadamardCoreTools.js +31 -0
  269. package/dist/src/tools/hadamardCoreTools.js.map +1 -1
  270. package/dist/src/tools/hadamardFileTools.d.ts.map +1 -1
  271. package/dist/src/tools/hadamardFileTools.js +116 -38
  272. package/dist/src/tools/hadamardFileTools.js.map +1 -1
  273. package/dist/src/tools/planMode/PlanModeTools.d.ts +22 -0
  274. package/dist/src/tools/planMode/PlanModeTools.d.ts.map +1 -1
  275. package/dist/src/tools/planMode/PlanModeTools.js +102 -5
  276. package/dist/src/tools/planMode/PlanModeTools.js.map +1 -1
  277. package/dist/src/tools/todo/TodoWriteTool.d.ts +1 -1
  278. package/dist/src/tui/hadamardTui.d.ts.map +1 -1
  279. package/dist/src/tui/hadamardTui.js +387 -168
  280. package/dist/src/tui/hadamardTui.js.map +1 -1
  281. package/dist/src/tui/pendingInput.d.ts +17 -0
  282. package/dist/src/tui/pendingInput.d.ts.map +1 -0
  283. package/dist/src/tui/pendingInput.js +23 -0
  284. package/dist/src/tui/pendingInput.js.map +1 -0
  285. package/dist/src/tui/reasoningDisplay.d.ts +13 -0
  286. package/dist/src/tui/reasoningDisplay.d.ts.map +1 -0
  287. package/dist/src/tui/reasoningDisplay.js +45 -0
  288. package/dist/src/tui/reasoningDisplay.js.map +1 -0
  289. package/dist/src/tui/screen.d.ts +11 -1
  290. package/dist/src/tui/screen.d.ts.map +1 -1
  291. package/dist/src/tui/screen.js +64 -34
  292. package/dist/src/tui/screen.js.map +1 -1
  293. package/dist/src/types.d.ts +210 -77
  294. package/dist/src/types.d.ts.map +1 -1
  295. package/dist/src/types.js.map +1 -1
  296. package/dist/src/ui/commandSurface.d.ts +8 -0
  297. package/dist/src/ui/commandSurface.d.ts.map +1 -1
  298. package/dist/src/ui/commandSurface.js +78 -13
  299. package/dist/src/ui/commandSurface.js.map +1 -1
  300. package/dist/src/update/appUpdateService.d.ts +34 -1
  301. package/dist/src/update/appUpdateService.d.ts.map +1 -1
  302. package/dist/src/update/appUpdateService.js +114 -9
  303. package/dist/src/update/appUpdateService.js.map +1 -1
  304. package/package.json +3 -2
  305. package/dist/src/prompts/outputStyles.d.ts +0 -20
  306. package/dist/src/prompts/outputStyles.d.ts.map +0 -1
  307. package/dist/src/prompts/outputStyles.js +0 -35
  308. package/dist/src/prompts/outputStyles.js.map +0 -1
@@ -151,6 +151,13 @@ export interface CreateToolOptions<Input = any, Output = any> {
151
151
  examples?: Array<Record<string, unknown>>;
152
152
  isReadOnly?: (input?: Input) => boolean;
153
153
  isDestructive?: (input?: Input) => boolean;
154
+ /**
155
+ * Plan-mode-only read-only classification (S1b §9.5): evaluated only in
156
+ * plan mode when the tool is otherwise unclassified — lets the Agent tool
157
+ * allow delegations to read-only subagents without changing default-mode
158
+ * behavior.
159
+ */
160
+ isPlanReadOnly?: (input?: Input) => boolean;
154
161
  requiresUserInteraction?: () => boolean;
155
162
  isConcurrencySafe?: () => boolean;
156
163
  checkPermissions?: (context: {
@@ -192,6 +199,13 @@ export interface AgentToolDefinition<Input = any, Output = any> {
192
199
  examples?: Array<Record<string, unknown>>;
193
200
  isReadOnly?: (input?: Input) => boolean;
194
201
  isDestructive?: (input?: Input) => boolean;
202
+ /**
203
+ * Plan-mode-only read-only classification (S1b §9.5): evaluated only in
204
+ * plan mode when the tool is otherwise unclassified — lets the Agent tool
205
+ * allow delegations to read-only subagents without changing default-mode
206
+ * behavior.
207
+ */
208
+ isPlanReadOnly?: (input?: Input) => boolean;
195
209
  requiresUserInteraction?: () => boolean;
196
210
  isConcurrencySafe?: () => boolean;
197
211
  checkPermissions?: (context: {
@@ -273,6 +287,8 @@ export interface ResolvedToolAdapter {
273
287
  execute: (input: unknown, context: ToolExecutionContext, onProgress?: ToolCallProgress) => Promise<ResolvedToolExecutionResult>;
274
288
  isReadOnly?: (input?: unknown) => boolean;
275
289
  isDestructive?: (input?: unknown) => boolean;
290
+ /** Plan-mode-only read-only classification (S1b §9.5). */
291
+ isPlanReadOnly?: (input?: unknown) => boolean;
276
292
  requiresUserInteraction?: () => boolean;
277
293
  isConcurrencySafe?: () => boolean;
278
294
  interruptBehavior?: 'cancel' | 'block';
@@ -320,6 +336,7 @@ export interface ResolvedRuntimeConfig {
320
336
  userId?: string;
321
337
  metadata: Record<string, unknown>;
322
338
  compact: HadamardCompactConfig;
339
+ projectMemory: import('./config/projectSettings.js').ProjectMemorySettings;
323
340
  provider: 'anthropic' | 'openai';
324
341
  effort?: HadamardEffort;
325
342
  sandbox: import('./sandbox/types.js').SandboxPolicy;
@@ -404,8 +421,32 @@ export interface HadamardAgentDefinition {
404
421
  description: string;
405
422
  systemPrompt?: string;
406
423
  model?: string;
424
+ /** Referenced provider/bridge config name (unified store, S1a) — the definition runs on this config's own model client instead of inheriting the session's. */
425
+ bridgeConfig?: string;
426
+ /**
427
+ * Delegation runtime (09 Aug 2026): absent or 'hadamard' = in-process SDK;
428
+ * an external CLI runtime id ('claude' | 'pi' | 'codex' | …) routes Agent/Task
429
+ * delegations to that CLI via the bridge runner. Main-chat activation ignores
430
+ * this field (the main chat runtime comes from the active config).
431
+ */
432
+ runtime?: string;
433
+ /**
434
+ * Prompt composition (S1a): `extend` = built-in base prompt + body appended
435
+ * (profile semantics); `replace` = body is the complete system prompt
436
+ * (.md semantics). Definitions loaded from .md default to `replace`.
437
+ */
438
+ promptMode?: 'extend' | 'replace';
407
439
  effort?: HadamardRunEffort;
408
440
  permissionMode?: HadamardPermissionMode;
441
+ temperature?: number;
442
+ topP?: number;
443
+ maxTokens?: number;
444
+ /** Run timeout (ms) for runs under this definition. */
445
+ timeoutMs?: number;
446
+ /** `workspace` (default): project workspace only; `full`: unrestricted filesystem. */
447
+ workspaceAccess?: 'workspace' | 'full';
448
+ /** Whether the Agent/Task tool may delegate to this definition (default true). `false` = main-chat-only agent. */
449
+ subagent?: boolean;
409
450
  maxToolIterations?: number;
410
451
  maxTurns?: number;
411
452
  metadata?: Record<string, unknown>;
@@ -432,6 +473,10 @@ export interface HadamardAgentDefinitionSummary {
432
473
  name: string;
433
474
  description: string;
434
475
  model?: string;
476
+ /** Present when the definition pins a provider config (unified store). */
477
+ bridgeConfig?: string;
478
+ /** False = main-chat-only agent (not delegatable via the Agent/Task tool). */
479
+ subagent?: boolean;
435
480
  effort?: HadamardRunEffort;
436
481
  permissionMode?: HadamardPermissionMode;
437
482
  maxToolIterations?: number;
@@ -599,7 +644,7 @@ export interface HadamardRunSlashCommandOptions {
599
644
  export interface HadamardRunSlashCommandResult {
600
645
  name: HadamardCleanSlashCommandName;
601
646
  text: string;
602
- data: HadamardCleanContextOverview | HadamardSessionCompactResult | HadamardMemoryState | HadamardDreamRunResult | HadamardCleanToolMetadata[] | HadamardSkillDefinitionSummary[] | HadamardAgentDefinitionSummary[];
647
+ data: HadamardCleanContextOverview | HadamardSessionCompactResult | HadamardMemoryState | HadamardDreamRunResult | HadamardDreamState | HadamardCleanToolMetadata[] | HadamardSkillDefinitionSummary[] | HadamardAgentDefinitionSummary[] | import('./memory/memoryCommandService.js').HadamardMemoryCommandResult;
603
648
  }
604
649
  export interface HadamardInvokedSkillRecord {
605
650
  name: string;
@@ -613,6 +658,27 @@ export interface HadamardInvokedSkillRecord {
613
658
  agent?: string;
614
659
  skillRoot?: string;
615
660
  }
661
+ /** One-shot external-CLI delegation request (agent runtime routing, 09 Aug 2026). */
662
+ export interface ExternalAgentRunRequest {
663
+ /** External runtime id (e.g. 'claude', 'codex'); never 'hadamard' here. */
664
+ runtime: string;
665
+ /** Definition name — used in error messages. */
666
+ agentName: string;
667
+ prompt: string;
668
+ systemPrompt?: string;
669
+ cwd: string;
670
+ signal?: AbortSignal;
671
+ model?: string;
672
+ /** Definition-pinned permission mode; the runner maps it to bridge semantics. */
673
+ permissionMode?: string;
674
+ homeDir?: string;
675
+ }
676
+ export interface ExternalAgentRunResult {
677
+ text: string;
678
+ sessionId?: string;
679
+ durationMs?: number;
680
+ numTurns?: number;
681
+ }
616
682
  export interface CreateAgentSdkOptions {
617
683
  homeDir?: string;
618
684
  apiKey?: string;
@@ -645,6 +711,12 @@ export interface CreateAgentSdkOptions {
645
711
  agentDirectories?: string[];
646
712
  loadDefaultAgentDirectories?: boolean;
647
713
  disableDefaultAgents?: boolean;
714
+ /**
715
+ * Override the external-CLI delegation runner (definitions with
716
+ * `runtime` ≠ 'hadamard'). Defaults to the bridge runner in
717
+ * runtime/externalAgentRunner.ts; inject a stub in tests.
718
+ */
719
+ externalAgentRunner?: (request: ExternalAgentRunRequest) => Promise<ExternalAgentRunResult>;
648
720
  maxSubagentDepth?: number;
649
721
  maxSubagentFanout?: number;
650
722
  skills?: HadamardSkillDefinition[];
@@ -677,8 +749,13 @@ export interface CreateAgentSdkOptions {
677
749
  }
678
750
  export interface HadamardCompactConfig {
679
751
  enabled: boolean;
680
- autoCompactThresholdTokens: number;
752
+ /** @deprecated Use autoCompactTokenLimit. Retained as a legacy explicit override. */
753
+ autoCompactThresholdTokens?: number;
754
+ /** Explicit limit, clamped to 90% of the raw context window. */
755
+ autoCompactTokenLimit?: number;
756
+ autoCompactTokenLimitScope?: 'total' | 'body_after_prefix';
681
757
  preserveRecentMessages: number;
758
+ preserveRecentUserTokens?: number;
682
759
  maxSummaryTokens: number;
683
760
  microcompactEnabled: boolean;
684
761
  microcompactKeepRecentToolResults: number;
@@ -704,7 +781,12 @@ export interface HadamardCompactConfig {
704
781
  loopAutoCompactEnabled?: boolean;
705
782
  /** Model context window in tokens used to derive the in-loop compact threshold. */
706
783
  contextWindowTokens?: number;
707
- /** Explicit in-loop compact trigger in estimated tokens. Overrides the derived threshold. */
784
+ maxContextWindowTokens?: number;
785
+ effectiveContextWindowPercent?: number;
786
+ contextWindowSource?: 'run' | 'project' | 'global' | 'model_catalog' | 'fallback';
787
+ contextWindowWarning?: string;
788
+ deprecationWarnings?: string[];
789
+ /** @deprecated Use autoCompactTokenLimit. */
708
790
  loopAutoCompactThresholdTokens?: number;
709
791
  /**
710
792
  * Persistent user guidance injected into every compact summary prompt.
@@ -759,6 +841,12 @@ export interface AgentRunOptions {
759
841
  /** Override the model client for this run — used by the /model router for cross-provider routing. */
760
842
  modelApi?: CreateAgentSdkOptions['modelApi'];
761
843
  maxTokens?: number;
844
+ /** Per-run tool-iteration cap; overrides the SDK config cap for this run. */
845
+ maxToolIterations?: number;
846
+ /** Restrict the effective default/custom tool catalog to these names. */
847
+ allowedTools?: string[];
848
+ /** Apply Agent filesystem/process confinement for this run. */
849
+ workspaceAccess?: 'workspace' | 'full';
762
850
  temperature?: number;
763
851
  topP?: number;
764
852
  toolChoice?: ToolChoice;
@@ -905,6 +993,9 @@ export interface HadamardDreamConfig {
905
993
  minHours: number;
906
994
  minSessions: number;
907
995
  scanIntervalMs: number;
996
+ minRolloutIdleHours?: number;
997
+ maxRolloutAgeDays?: number;
998
+ maxRolloutsPerStartup?: number;
908
999
  }
909
1000
  export interface HadamardDreamPaths {
910
1001
  memoryDir: string;
@@ -913,6 +1004,10 @@ export interface HadamardDreamPaths {
913
1004
  teamMemoryEntrypoint: string;
914
1005
  transcriptDir: string;
915
1006
  lockPath: string;
1007
+ stateDbPath: string;
1008
+ rawMemoriesPath: string;
1009
+ rolloutSummariesDir: string;
1010
+ memorySummaryPath: string;
916
1011
  }
917
1012
  export interface HadamardDreamState {
918
1013
  enabled: boolean;
@@ -925,8 +1020,12 @@ export interface HadamardDreamState {
925
1020
  hoursSinceLastConsolidated: number;
926
1021
  sessionsSinceLastConsolidated: string[];
927
1022
  lockHeld: boolean;
1023
+ eligibleRolloutCount?: number;
1024
+ phase?: 'idle' | 'extracting' | 'consolidating';
1025
+ leaseExpiresAt?: string;
1026
+ lastError?: string;
928
1027
  canRun: boolean;
929
- blockedReason?: 'disabled' | 'time_gate' | 'session_gate' | 'locked' | 'scan_throttled';
1028
+ blockedReason?: 'disabled' | 'time_gate' | 'session_gate' | 'locked' | 'scan_throttled' | 'missing_execution_profile';
930
1029
  }
931
1030
  export interface HadamardDreamRunOptions {
932
1031
  force?: boolean;
@@ -934,6 +1033,7 @@ export interface HadamardDreamRunOptions {
934
1033
  currentSessionId?: string;
935
1034
  extraContext?: string;
936
1035
  model?: string;
1036
+ executionProfile?: import('./config/projectSettings.js').DreamExecutionProfileRef;
937
1037
  maxTokens?: number;
938
1038
  signal?: AbortSignal;
939
1039
  }
@@ -970,6 +1070,12 @@ export interface HadamardSessionCompactResult {
970
1070
  consecutiveFailures?: number;
971
1071
  error?: string;
972
1072
  state: HadamardSessionMemoryRuntimeState;
1073
+ budget?: {
1074
+ rawContextWindowTokens: number;
1075
+ effectiveContextWindowTokens: number;
1076
+ autoCompactTokenLimit: number;
1077
+ source: 'explicit' | 'derived' | 'fallback';
1078
+ };
973
1079
  }
974
1080
  export interface HadamardTaskToolInput {
975
1081
  description?: string;
@@ -1659,40 +1765,6 @@ export interface HadamardMemoryPaths {
1659
1765
  teamMemoryDir: string;
1660
1766
  teamMemoryEntrypoint: string;
1661
1767
  sessionId?: string;
1662
- sessionMemoryDir?: string;
1663
- sessionMemoryPath?: string;
1664
- }
1665
- export interface HadamardSessionMemoryState {
1666
- exists: boolean;
1667
- path?: string;
1668
- content?: string;
1669
- isEmpty?: boolean;
1670
- tokenEstimate?: number;
1671
- truncatedContent?: string;
1672
- wasTruncated?: boolean;
1673
- }
1674
- export interface HadamardSessionMemoryConfig {
1675
- minimumMessageTokensToInit: number;
1676
- minimumTokensBetweenUpdate: number;
1677
- toolCallsBetweenUpdates: number;
1678
- }
1679
- export interface HadamardSessionMemoryCompactConfig {
1680
- minTokens: number;
1681
- minTextBlockMessages: number;
1682
- maxTokens: number;
1683
- }
1684
- export interface HadamardSessionMemoryProgress {
1685
- currentTokenCount?: number;
1686
- tokensAtLastExtraction?: number;
1687
- tokensSinceLastExtraction?: number;
1688
- messageCountSinceLastExtraction?: number;
1689
- toolCallsSinceLastUpdate?: number;
1690
- initialized: boolean;
1691
- meetsInitializationThreshold?: boolean;
1692
- meetsUpdateThreshold?: boolean;
1693
- meetsToolCallThreshold?: boolean;
1694
- hasToolCallsInLastTurn?: boolean;
1695
- shouldExtract?: boolean;
1696
1768
  }
1697
1769
  export interface HadamardSessionMemoryRuntimeState {
1698
1770
  initialized: boolean;
@@ -1705,31 +1777,18 @@ export interface HadamardSessionMemoryRuntimeState {
1705
1777
  lastError?: string;
1706
1778
  pendingPostCompaction: boolean;
1707
1779
  }
1708
- export interface AgentSessionMemoryExtractionOptions {
1709
- force?: boolean;
1710
- model?: string;
1711
- maxTokens?: number;
1712
- signal?: AbortSignal;
1713
- }
1714
1780
  export interface AgentSessionDreamOptions extends HadamardDreamRunOptions {
1715
1781
  }
1716
- export interface HadamardSessionMemoryExtractionResult {
1717
- success: boolean;
1718
- skipped: boolean;
1719
- updated: boolean;
1720
- trigger: 'auto' | 'manual';
1721
- reason?: string;
1722
- sessionId?: string;
1723
- memoryPath?: string;
1724
- summary?: string;
1725
- usage?: Usage;
1726
- state: HadamardSessionMemoryRuntimeState;
1727
- }
1728
1782
  export interface HadamardMemoryOptions {
1729
1783
  configPath?: string;
1730
1784
  homeDir?: string;
1731
1785
  projectPath?: string;
1732
1786
  sessionId?: string;
1787
+ enabledOverrides?: Partial<{
1788
+ autoCompact: boolean;
1789
+ autoMemory: boolean;
1790
+ autoDream: boolean;
1791
+ }>;
1733
1792
  }
1734
1793
  export interface HadamardMemoryPromptOptions extends HadamardMemoryOptions {
1735
1794
  extraGuidelines?: string[];
@@ -1737,19 +1796,9 @@ export interface HadamardMemoryPromptOptions extends HadamardMemoryOptions {
1737
1796
  }
1738
1797
  export interface HadamardMemoryStateOptions extends HadamardMemoryPromptOptions {
1739
1798
  includeCombinedPrompt?: boolean;
1740
- includeSessionMemory?: boolean;
1741
- includeSessionTemplate?: boolean;
1742
- includeSessionPrompt?: boolean;
1743
1799
  }
1744
1800
  export interface HadamardCompactStateOptions extends HadamardMemoryStateOptions {
1745
1801
  includeBoundaries?: boolean;
1746
- includeSummaryMessage?: boolean;
1747
- currentTokenCount?: number;
1748
- tokensAtLastExtraction?: number;
1749
- initialized?: boolean;
1750
- hasToolCallsInLastTurn?: boolean;
1751
- messageCountSinceLastExtraction?: number;
1752
- toolCallsSinceLastUpdate?: number;
1753
1802
  runtimeState?: HadamardSessionMemoryRuntimeState;
1754
1803
  }
1755
1804
  export interface HadamardMemoryState {
@@ -1761,14 +1810,8 @@ export interface HadamardMemoryState {
1761
1810
  };
1762
1811
  paths: HadamardMemoryPaths;
1763
1812
  combinedPrompt?: string;
1764
- sessionMemory?: HadamardSessionMemoryState;
1765
- sessionTemplate?: string;
1766
- sessionPrompt?: string;
1767
1813
  }
1768
1814
  export interface HadamardCompactState extends HadamardMemoryState {
1769
- sessionMemoryConfig: HadamardSessionMemoryConfig;
1770
- sessionMemoryCompactConfig: HadamardSessionMemoryCompactConfig;
1771
- progress?: HadamardSessionMemoryProgress;
1772
1815
  runtimeState?: HadamardSessionMemoryRuntimeState;
1773
1816
  agentContinuity?: HadamardAgentContinuityState;
1774
1817
  invokedSkills?: HadamardInvokedSkillRecord[];
@@ -1785,8 +1828,8 @@ export interface HadamardCompactState extends HadamardMemoryState {
1785
1828
  lastSummarizedMessageUuid?: string;
1786
1829
  latestPreservedSegment?: HadamardPreservedSegment;
1787
1830
  latestBoundarySummary?: string;
1788
- canUseSessionMemoryCompaction: boolean;
1789
1831
  summaryMessage?: string;
1832
+ estimatedConversationTokens?: number;
1790
1833
  }
1791
1834
  export interface HadamardMemoryFileHeader {
1792
1835
  filename: string;
@@ -2428,7 +2471,32 @@ export interface WorktreeInfo {
2428
2471
  * convergence (the `panel` capability). `panel` and `analysis` are retained as
2429
2472
  * backward-compatible aliases that route to the same engine.
2430
2473
  */
2431
- export type ModelTeamMode = 'panel-analysis' | 'panel' | 'analysis' | 'reviewer' | 'executor-reviewer' | 'graph';
2474
+ export type ModelTeamMode = 'panel-analysis' | 'panel' | 'analysis' | 'reviewer' | 'executor-reviewer' | 'graph' | 'workflow';
2475
+ /**
2476
+ * Unified typed reference to an execution target (reference model redesign).
2477
+ * Schemas persist the reference, not a copied provider/baseURL/apiKey snapshot;
2478
+ * runtime resolution expands a ref via `resolveTargetRef`
2479
+ * (`src/manager/resolveTargetRef.ts`).
2480
+ *
2481
+ * There is deliberately no `router` kind: routers cannot be route/execution
2482
+ * targets (nested classification chains and cycles are disallowed).
2483
+ *
2484
+ * For `{ kind: 'model' }`, an empty `config` string marks a "raw model ref":
2485
+ * a legacy target whose originating bridge config is unknown — resolution then
2486
+ * falls back to whatever legacy provider/baseURL/apiKey fields sit next to the
2487
+ * ref (or to session defaults).
2488
+ */
2489
+ export type AgentTargetRef = {
2490
+ kind: 'model';
2491
+ config: string;
2492
+ model: string;
2493
+ } | {
2494
+ kind: 'agent';
2495
+ name: string;
2496
+ } | {
2497
+ kind: 'team';
2498
+ name: string;
2499
+ };
2432
2500
  /** A node in a workflow squad's execution tree. */
2433
2501
  export interface WorkflowNode {
2434
2502
  id: string;
@@ -2441,6 +2509,23 @@ export interface WorkflowNode {
2441
2509
  condition?: string;
2442
2510
  runtime?: string;
2443
2511
  model?: string;
2512
+ /** Agent nodes: specialist system prompt (separate from the task `prompt`). */
2513
+ systemPrompt?: string;
2514
+ /** Agent nodes: core-tool whitelist. Absent → no tools (legacy workflow behavior). */
2515
+ allowedTools?: string[];
2516
+ /** Per-node run timeout (ms). Omit → squad default. */
2517
+ timeoutMs?: number;
2518
+ /** Per-node ReAct tool-iteration cap. Omit or ≤0 = unlimited. */
2519
+ maxIterations?: number;
2520
+ /** `workspace` (default): project workspace only; `full`: unrestricted filesystem. */
2521
+ workspaceAccess?: 'workspace' | 'full';
2522
+ /**
2523
+ * Typed reference to this agent node's executor (saved agent profile, team,
2524
+ * or config-scoped model). When present, runtime resolution prefers it over
2525
+ * the legacy inline `model` field. Absent on legacy nodes — lazy migration
2526
+ * only fills it when the target is clearly resolvable.
2527
+ */
2528
+ targetRef?: AgentTargetRef;
2444
2529
  /** Children: branch=[if,else], parallel=all, agent=[] or one sequential continuation. */
2445
2530
  children: WorkflowNode[];
2446
2531
  }
@@ -2474,6 +2559,14 @@ export interface TeamMember {
2474
2559
  * `full`: unrestricted filesystem access (same as the main agent).
2475
2560
  */
2476
2561
  workspaceAccess?: 'workspace' | 'full';
2562
+ /**
2563
+ * Typed reference to this member's execution target (saved agent profile or
2564
+ * config-scoped model). Runtime resolution prefers it over the legacy
2565
+ * by-value model fields when present.
2566
+ */
2567
+ targetRef?: AgentTargetRef;
2568
+ /** Core-tool whitelist for this member. Absent → the squad's default toolset. */
2569
+ allowedTools?: string[];
2477
2570
  }
2478
2571
  export interface TeamReviewEdge {
2479
2572
  /** Reviewer member id/name/role. */
@@ -2515,6 +2608,14 @@ export interface TeamGraphNode extends Omit<TeamMember, 'model'> {
2515
2608
  type?: 'react' | 'single' | 'team';
2516
2609
  /** When `type === 'team'`, name of the persisted team definition to invoke. */
2517
2610
  teamRef?: string;
2611
+ /**
2612
+ * Typed reference to this node's execution target. Lazy migration on load
2613
+ * turns `type: 'team'` + `teamRef` into `{ kind: 'team', name: teamRef }`;
2614
+ * nodes with only a raw `model` keep `targetRef` absent (the legacy by-value
2615
+ * fields remain the fallback) since the originating config is not knowable.
2616
+ * Runtime resolution prefers `targetRef` when present.
2617
+ */
2618
+ targetRef?: AgentTargetRef;
2518
2619
  /** Return ports only — `void` (return 0) or structured `payload`. */
2519
2620
  returnMode?: TeamGraphReturnMode;
2520
2621
  /** Return ports in `payload` mode — template for the structured return value. */
@@ -2628,9 +2729,10 @@ export interface TeamDefinition {
2628
2729
  * Squad kind — drives which editor the GUI shows. Absent → 'graph' (back-compat).
2629
2730
  * - `graph`: collaboration graph (Task → agents → Return), the existing editor.
2630
2731
  * - `workflow`: linear/tree work-flow node editor (Phase 3 — visual work tree).
2631
- * - `subagent`: a single configured agent (prompt + tools + workspace + runtime).
2732
+ * - `agent`: a single configured agent (prompt + tools + workspace + runtime).
2733
+ * - `subagent`: legacy alias of `agent` (still accepted when loading).
2632
2734
  */
2633
- squadType?: 'graph' | 'workflow' | 'subagent';
2735
+ squadType?: 'graph' | 'workflow' | 'agent' | 'subagent';
2634
2736
  /** Workflow squad only: the execution tree. */
2635
2737
  workflowTree?: WorkflowNode;
2636
2738
  /** Panel members (panel-analysis / its `panel`+`analysis` aliases). */
@@ -2750,6 +2852,11 @@ export interface TeamAskOptions {
2750
2852
  context?: string;
2751
2853
  /** Working directory the team members operate over. */
2752
2854
  workDir?: string;
2855
+ /** Hadamard data root input for personal Agents/configs/teams. */
2856
+ homeDir?: string;
2857
+ /** Caller model/client used by inherit-session-model Agent targets. */
2858
+ model?: string;
2859
+ modelApi?: ModelApi;
2753
2860
  /** Receives progress events as the team deliberates. */
2754
2861
  onEvent?: (event: TeamEvent) => void;
2755
2862
  /** Permission policy inherited by every member runtime. Defaults to `default`, never bypass. */
@@ -2764,6 +2871,8 @@ export interface TeamAskOptions {
2764
2871
  * appends its own ref before invoking the sub-team.
2765
2872
  */
2766
2873
  teamStack?: string[];
2874
+ /** Maximum Graph/Workflow definitions allowed in one nested execution chain. Defaults to 16. */
2875
+ maxTeamNestingDepth?: number;
2767
2876
  }
2768
2877
  export interface TeamResult {
2769
2878
  answer: string;
@@ -2806,6 +2915,10 @@ export interface GraphTeamResult extends TeamResult {
2806
2915
  /** Convergence loop rounds (v3 graphs with loop edges). */
2807
2916
  graphRounds?: number;
2808
2917
  }
2918
+ /** `workflow` mode result. It retains the common graph-era report/status shape for API compatibility. */
2919
+ export interface WorkflowTeamResult extends Omit<GraphTeamResult, 'mode'> {
2920
+ mode: 'workflow';
2921
+ }
2809
2922
  /** @deprecated Runtime always returns {@link GraphTeamResult}. Kept for type compatibility. */
2810
2923
  export type ReviewerResult = GraphTeamResult & {
2811
2924
  report?: string;
@@ -2815,7 +2928,7 @@ export type ReviewerResult = GraphTeamResult & {
2815
2928
  export type AnalysisResult = GraphTeamResult & {
2816
2929
  rounds?: number;
2817
2930
  };
2818
- export type ModelTeamResult = GraphTeamResult;
2931
+ export type ModelTeamResult = GraphTeamResult | WorkflowTeamResult;
2819
2932
  /** A model target: a model id plus optional per-target provider config. */
2820
2933
  export interface RouterModelRef {
2821
2934
  model: string;
@@ -2835,6 +2948,16 @@ export interface RouterRoute extends RouterModelRef {
2835
2948
  role?: string;
2836
2949
  /** Optional richer description of the specialist's strengths, for the leader to weigh. */
2837
2950
  description?: string;
2951
+ /** Preferred effort for this route's run; omit to keep session/default effort. */
2952
+ effort?: HadamardRunEffort;
2953
+ /**
2954
+ * Typed execution target for this route. Lazily migrated on load from the
2955
+ * legacy by-value fields: a route whose role/name matches a saved agent
2956
+ * profile becomes `{ kind: 'agent', name }`; a model-only route becomes
2957
+ * `{ kind: 'model', config: '', model }` (empty config = raw legacy model
2958
+ * ref). Saves always write `target` while keeping the legacy fields.
2959
+ */
2960
+ target?: AgentTargetRef;
2838
2961
  }
2839
2962
  /**
2840
2963
  * A router profile = a Leader/Dispatch configuration under `/model`. The
@@ -2848,10 +2971,18 @@ export interface RouterProfile {
2848
2971
  description?: string;
2849
2972
  /** The leader: classifies each turn and dispatches it to a specialist route. */
2850
2973
  routerModel: RouterModelRef;
2974
+ /** Typed identity for the leader's model configuration. */
2975
+ routerModelTarget?: AgentTargetRef;
2851
2976
  /** The specialist roster the leader dispatches among. */
2852
2977
  routes: RouterRoute[];
2853
2978
  /** Used when the leader matches no route. Defaults to the first route. */
2854
2979
  fallback?: RouterModelRef;
2980
+ /**
2981
+ * Typed fallback target (allows fallback to a saved agent). Lazily migrated
2982
+ * on load from the legacy `fallback` model ref; `fallback` is kept as the
2983
+ * legacy by-value copy for back-compat.
2984
+ */
2985
+ fallbackTarget?: AgentTargetRef;
2855
2986
  /** Optional custom leader/dispatch-prompt prefix. */
2856
2987
  classificationPrompt?: string;
2857
2988
  }
@@ -2865,6 +2996,8 @@ export interface RouterDecision {
2865
2996
  classification: string;
2866
2997
  /** Whether the classifier matched a configured route (vs fell back). */
2867
2998
  matched: boolean;
2999
+ /** The matched route's preferred effort (routes only; fallback carries none). */
3000
+ effort?: HadamardRunEffort;
2868
3001
  }
2869
3002
  export interface ModelPricing {
2870
3003
  input: number;