@evalops/maestro 0.10.50 → 0.10.53

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 (1825) hide show
  1. package/README.md +1 -3
  2. package/dist/agent/agent-outcome.d.ts +54 -0
  3. package/dist/agent/agent-outcome.d.ts.map +1 -0
  4. package/dist/agent/agent-outcome.js +142 -0
  5. package/dist/agent/agent-outcome.js.map +1 -0
  6. package/dist/agent/agent-resume.d.ts.map +1 -1
  7. package/dist/agent/agent-resume.js +3 -3
  8. package/dist/agent/agent-resume.js.map +1 -1
  9. package/dist/agent/agent-run-summary.d.ts +37 -0
  10. package/dist/agent/agent-run-summary.d.ts.map +1 -0
  11. package/dist/agent/agent-run-summary.js +15 -0
  12. package/dist/agent/agent-run-summary.js.map +1 -0
  13. package/dist/agent/agent-work-board.d.ts +82 -0
  14. package/dist/agent/agent-work-board.d.ts.map +1 -0
  15. package/dist/agent/agent-work-board.js +312 -0
  16. package/dist/agent/agent-work-board.js.map +1 -0
  17. package/dist/agent/agent.d.ts.map +1 -1
  18. package/dist/agent/agent.js.map +1 -1
  19. package/dist/agent/auto-compaction.d.ts +7 -2
  20. package/dist/agent/auto-compaction.d.ts.map +1 -1
  21. package/dist/agent/auto-compaction.js +23 -10
  22. package/dist/agent/auto-compaction.js.map +1 -1
  23. package/dist/agent/compaction.d.ts.map +1 -1
  24. package/dist/agent/compaction.js +1 -1
  25. package/dist/agent/compaction.js.map +1 -1
  26. package/dist/agent/context-handoff.d.ts.map +1 -1
  27. package/dist/agent/context-handoff.js +2 -1
  28. package/dist/agent/context-handoff.js.map +1 -1
  29. package/dist/agent/index.d.ts +8 -1
  30. package/dist/agent/index.d.ts.map +1 -1
  31. package/dist/agent/index.js +8 -1
  32. package/dist/agent/index.js.map +1 -1
  33. package/dist/agent/mission-artifacts.d.ts +62 -0
  34. package/dist/agent/mission-artifacts.d.ts.map +1 -0
  35. package/dist/agent/mission-artifacts.js +438 -0
  36. package/dist/agent/mission-artifacts.js.map +1 -0
  37. package/dist/agent/mission-manifest.d.ts +139 -3
  38. package/dist/agent/mission-manifest.d.ts.map +1 -1
  39. package/dist/agent/mission-manifest.js +549 -3
  40. package/dist/agent/mission-manifest.js.map +1 -1
  41. package/dist/agent/mission-store.d.ts +80 -0
  42. package/dist/agent/mission-store.d.ts.map +1 -0
  43. package/dist/agent/mission-store.js +603 -0
  44. package/dist/agent/mission-store.js.map +1 -0
  45. package/dist/agent/modes.d.ts +3 -3
  46. package/dist/agent/modes.d.ts.map +1 -1
  47. package/dist/agent/modes.js +66 -3
  48. package/dist/agent/modes.js.map +1 -1
  49. package/dist/agent/oracle-consultation-policy.d.ts +22 -0
  50. package/dist/agent/oracle-consultation-policy.d.ts.map +1 -0
  51. package/dist/agent/oracle-consultation-policy.js +72 -0
  52. package/dist/agent/oracle-consultation-policy.js.map +1 -0
  53. package/dist/agent/oracle-policy-experiment.d.ts +27 -0
  54. package/dist/agent/oracle-policy-experiment.d.ts.map +1 -0
  55. package/dist/agent/oracle-policy-experiment.js +59 -0
  56. package/dist/agent/oracle-policy-experiment.js.map +1 -0
  57. package/dist/agent/oracle-policy-rollout.d.ts +42 -0
  58. package/dist/agent/oracle-policy-rollout.d.ts.map +1 -0
  59. package/dist/agent/oracle-policy-rollout.js +80 -0
  60. package/dist/agent/oracle-policy-rollout.js.map +1 -0
  61. package/dist/agent/plugin-agent-api.d.ts +13 -0
  62. package/dist/agent/plugin-agent-api.d.ts.map +1 -0
  63. package/dist/agent/plugin-agent-api.js +11 -0
  64. package/dist/agent/plugin-agent-api.js.map +1 -0
  65. package/dist/agent/plugin-agent-loader.d.ts +17 -0
  66. package/dist/agent/plugin-agent-loader.d.ts.map +1 -0
  67. package/dist/agent/plugin-agent-loader.js +81 -0
  68. package/dist/agent/plugin-agent-loader.js.map +1 -0
  69. package/dist/agent/plugin-agent-registry.d.ts +62 -0
  70. package/dist/agent/plugin-agent-registry.d.ts.map +1 -0
  71. package/dist/agent/plugin-agent-registry.js +109 -0
  72. package/dist/agent/plugin-agent-registry.js.map +1 -0
  73. package/dist/agent/profile-loader.d.ts +7 -0
  74. package/dist/agent/profile-loader.d.ts.map +1 -0
  75. package/dist/agent/profile-loader.js +115 -0
  76. package/dist/agent/profile-loader.js.map +1 -0
  77. package/dist/agent/profiles.d.ts +30 -0
  78. package/dist/agent/profiles.d.ts.map +1 -0
  79. package/dist/agent/profiles.js +146 -0
  80. package/dist/agent/profiles.js.map +1 -0
  81. package/dist/agent/prompt-cache.d.ts +0 -4
  82. package/dist/agent/prompt-cache.d.ts.map +1 -1
  83. package/dist/agent/prompt-cache.js +1 -7
  84. package/dist/agent/prompt-cache.js.map +1 -1
  85. package/dist/agent/providers/codex-app-server.d.ts.map +1 -1
  86. package/dist/agent/providers/codex-app-server.js +1 -3
  87. package/dist/agent/providers/codex-app-server.js.map +1 -1
  88. package/dist/agent/providers/google-gemini-cli.js +204 -107
  89. package/dist/agent/providers/google.js +101 -41
  90. package/dist/agent/providers/scripted.d.ts.map +1 -1
  91. package/dist/agent/providers/scripted.js +1 -3
  92. package/dist/agent/providers/scripted.js.map +1 -1
  93. package/dist/agent/providers/validation.d.ts.map +1 -1
  94. package/dist/agent/providers/validation.js +1 -3
  95. package/dist/agent/providers/validation.js.map +1 -1
  96. package/dist/agent/providers/vertex.js +204 -107
  97. package/dist/agent/routing-receipt.d.ts +34 -0
  98. package/dist/agent/routing-receipt.d.ts.map +1 -0
  99. package/dist/agent/routing-receipt.js +55 -0
  100. package/dist/agent/routing-receipt.js.map +1 -0
  101. package/dist/agent/skill-artifact-metadata.d.ts +14 -0
  102. package/dist/agent/skill-artifact-metadata.d.ts.map +1 -0
  103. package/dist/agent/skill-artifact-metadata.js +49 -0
  104. package/dist/agent/skill-artifact-metadata.js.map +1 -0
  105. package/dist/agent/snapshot-store.d.ts +32 -0
  106. package/dist/agent/snapshot-store.d.ts.map +1 -0
  107. package/dist/agent/snapshot-store.js +195 -0
  108. package/dist/agent/snapshot-store.js.map +1 -0
  109. package/dist/agent/specialist-profiles.d.ts +36 -0
  110. package/dist/agent/specialist-profiles.d.ts.map +1 -0
  111. package/dist/agent/specialist-profiles.js +159 -0
  112. package/dist/agent/specialist-profiles.js.map +1 -0
  113. package/dist/agent/subagent-specs.d.ts +5 -2
  114. package/dist/agent/subagent-specs.d.ts.map +1 -1
  115. package/dist/agent/subagent-specs.js +83 -10
  116. package/dist/agent/subagent-specs.js.map +1 -1
  117. package/dist/agent/swarm/coverage-gate.d.ts +37 -0
  118. package/dist/agent/swarm/coverage-gate.d.ts.map +1 -0
  119. package/dist/agent/swarm/coverage-gate.js +48 -0
  120. package/dist/agent/swarm/coverage-gate.js.map +1 -0
  121. package/dist/agent/swarm/executor.d.ts +1 -0
  122. package/dist/agent/swarm/executor.d.ts.map +1 -1
  123. package/dist/agent/swarm/executor.js +151 -15
  124. package/dist/agent/swarm/executor.js.map +1 -1
  125. package/dist/agent/swarm/orchestrator-prompt.d.ts +25 -0
  126. package/dist/agent/swarm/orchestrator-prompt.d.ts.map +1 -0
  127. package/dist/agent/swarm/orchestrator-prompt.js +48 -0
  128. package/dist/agent/swarm/orchestrator-prompt.js.map +1 -0
  129. package/dist/agent/swarm/plan-parser.d.ts.map +1 -1
  130. package/dist/agent/swarm/plan-parser.js +27 -2
  131. package/dist/agent/swarm/plan-parser.js.map +1 -1
  132. package/dist/agent/swarm/types.d.ts +17 -0
  133. package/dist/agent/swarm/types.d.ts.map +1 -1
  134. package/dist/agent/swarm/types.js.map +1 -1
  135. package/dist/agent/swarm/validation-directive.d.ts +21 -0
  136. package/dist/agent/swarm/validation-directive.d.ts.map +1 -0
  137. package/dist/agent/swarm/validation-directive.js +25 -0
  138. package/dist/agent/swarm/validation-directive.js.map +1 -0
  139. package/dist/agent/token-counter.d.ts +40 -0
  140. package/dist/agent/token-counter.d.ts.map +1 -0
  141. package/dist/agent/token-counter.js +74 -0
  142. package/dist/agent/token-counter.js.map +1 -0
  143. package/dist/agent/transport/events.d.ts +1 -1
  144. package/dist/agent/transport/events.d.ts.map +1 -1
  145. package/dist/agent/transport/events.js +1 -1
  146. package/dist/agent/transport/events.js.map +1 -1
  147. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  148. package/dist/agent/transport/tool-execution-bridge.js +4 -1
  149. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  150. package/dist/agent/types.d.ts +4 -2
  151. package/dist/agent/types.d.ts.map +1 -1
  152. package/dist/agent/types.js.map +1 -1
  153. package/dist/api/enterprise-routes.d.ts.map +1 -1
  154. package/dist/api/enterprise-routes.js +87 -10
  155. package/dist/api/enterprise-routes.js.map +1 -1
  156. package/dist/api/org-settings-merge.d.ts +12 -0
  157. package/dist/api/org-settings-merge.d.ts.map +1 -0
  158. package/dist/api/org-settings-merge.js +38 -0
  159. package/dist/api/org-settings-merge.js.map +1 -0
  160. package/dist/api/user-settings-merge.d.ts +16 -0
  161. package/dist/api/user-settings-merge.d.ts.map +1 -0
  162. package/dist/api/user-settings-merge.js +37 -0
  163. package/dist/api/user-settings-merge.js.map +1 -0
  164. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -1
  165. package/dist/app-server/daemon-lifecycle-api.js +1 -3
  166. package/dist/app-server/daemon-lifecycle-api.js.map +1 -1
  167. package/dist/app-server/external-agent-import-api.d.ts.map +1 -1
  168. package/dist/app-server/external-agent-import-api.js +1 -3
  169. package/dist/app-server/external-agent-import-api.js.map +1 -1
  170. package/dist/app-server/network-governance-api.d.ts.map +1 -1
  171. package/dist/app-server/network-governance-api.js +1 -3
  172. package/dist/app-server/network-governance-api.js.map +1 -1
  173. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
  174. package/dist/app-server/plugin-bundle-api.js +2 -3
  175. package/dist/app-server/plugin-bundle-api.js.map +1 -1
  176. package/dist/app-server/policy-control-api.d.ts.map +1 -1
  177. package/dist/app-server/policy-control-api.js +1 -3
  178. package/dist/app-server/policy-control-api.js.map +1 -1
  179. package/dist/app-server/protocol-modes-api.d.ts.map +1 -1
  180. package/dist/app-server/protocol-modes-api.js +1 -3
  181. package/dist/app-server/protocol-modes-api.js.map +1 -1
  182. package/dist/app-server/session-api.d.ts.map +1 -1
  183. package/dist/app-server/session-api.js +15 -2
  184. package/dist/app-server/session-api.js.map +1 -1
  185. package/dist/audit/logger.d.ts +5 -5
  186. package/dist/cli/args.d.ts +4 -0
  187. package/dist/cli/args.d.ts.map +1 -1
  188. package/dist/cli/args.js +33 -1
  189. package/dist/cli/args.js.map +1 -1
  190. package/dist/cli/commands/a2a.d.ts.map +1 -1
  191. package/dist/cli/commands/a2a.js +1 -3
  192. package/dist/cli/commands/a2a.js.map +1 -1
  193. package/dist/cli/commands/mission.d.ts +4 -0
  194. package/dist/cli/commands/mission.d.ts.map +1 -0
  195. package/dist/cli/commands/mission.js +196 -0
  196. package/dist/cli/commands/mission.js.map +1 -0
  197. package/dist/cli/commands/value.d.ts +10 -0
  198. package/dist/cli/commands/value.d.ts.map +1 -0
  199. package/dist/cli/commands/value.js +33 -0
  200. package/dist/cli/commands/value.js.map +1 -0
  201. package/dist/cli/direct-runtime-command.d.ts +1 -0
  202. package/dist/cli/direct-runtime-command.d.ts.map +1 -1
  203. package/dist/cli/direct-runtime-command.js +25 -3
  204. package/dist/cli/direct-runtime-command.js.map +1 -1
  205. package/dist/cli/headless-protocol.d.ts.map +1 -1
  206. package/dist/cli/headless-protocol.js +1 -3
  207. package/dist/cli/headless-protocol.js.map +1 -1
  208. package/dist/cli/headless.d.ts +3 -19
  209. package/dist/cli/headless.d.ts.map +1 -1
  210. package/dist/cli/headless.js +8 -619
  211. package/dist/cli/headless.js.map +1 -1
  212. package/dist/cli/help.d.ts.map +1 -1
  213. package/dist/cli/help.js +13 -0
  214. package/dist/cli/help.js.map +1 -1
  215. package/dist/cli/native-tui-launcher.d.ts +126 -0
  216. package/dist/cli/native-tui-launcher.d.ts.map +1 -0
  217. package/dist/cli/native-tui-launcher.js +425 -0
  218. package/dist/cli/native-tui-launcher.js.map +1 -0
  219. package/dist/cli/rpc-mode.d.ts +3 -27
  220. package/dist/cli/rpc-mode.d.ts.map +1 -1
  221. package/dist/cli/rpc-mode.js +8 -177
  222. package/dist/cli/rpc-mode.js.map +1 -1
  223. package/dist/cli/session.d.ts +11 -19
  224. package/dist/cli/session.d.ts.map +1 -1
  225. package/dist/cli/session.js +6 -64
  226. package/dist/cli/session.js.map +1 -1
  227. package/dist/cli/system-prompt.d.ts.map +1 -1
  228. package/dist/cli/system-prompt.js +38 -7
  229. package/dist/cli/system-prompt.js.map +1 -1
  230. package/dist/cli-command-runtime.d.ts.map +1 -1
  231. package/dist/cli-command-runtime.js +26 -24
  232. package/dist/cli-command-runtime.js.map +1 -1
  233. package/dist/cli-runtime.js +41729 -121859
  234. package/dist/codex/app-server-client.d.ts.map +1 -1
  235. package/dist/codex/app-server-client.js +1 -3
  236. package/dist/codex/app-server-client.js.map +1 -1
  237. package/dist/codex/compatibility.d.ts.map +1 -1
  238. package/dist/codex/compatibility.js +1 -3
  239. package/dist/codex/compatibility.js.map +1 -1
  240. package/dist/codex/subagent-dispatch-table.d.ts +8 -0
  241. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
  242. package/dist/codex/subagent-dispatch-table.js +23 -0
  243. package/dist/codex/subagent-dispatch-table.js.map +1 -1
  244. package/dist/config/env-vars.d.ts +12 -0
  245. package/dist/config/env-vars.d.ts.map +1 -1
  246. package/dist/config/env-vars.js +12 -0
  247. package/dist/config/env-vars.js.map +1 -1
  248. package/dist/config/ui-state.d.ts +32 -0
  249. package/dist/config/ui-state.d.ts.map +1 -0
  250. package/dist/config/ui-state.js +88 -0
  251. package/dist/config/ui-state.js.map +1 -0
  252. package/dist/context/manifest.d.ts.map +1 -1
  253. package/dist/context/manifest.js +1 -3
  254. package/dist/context/manifest.js.map +1 -1
  255. package/dist/context/repo-map.d.ts.map +1 -1
  256. package/dist/context/repo-map.js +1 -7
  257. package/dist/context/repo-map.js.map +1 -1
  258. package/dist/context/token-optimizer.d.ts.map +1 -1
  259. package/dist/context/token-optimizer.js +1 -8
  260. package/dist/context/token-optimizer.js.map +1 -1
  261. package/dist/conversation/render-model.d.ts +0 -36
  262. package/dist/conversation/render-model.d.ts.map +1 -1
  263. package/dist/conversation/render-model.js +1 -3
  264. package/dist/conversation/render-model.js.map +1 -1
  265. package/dist/customer-value/ambient-learning.d.ts +75 -0
  266. package/dist/customer-value/ambient-learning.d.ts.map +1 -0
  267. package/dist/customer-value/ambient-learning.js +472 -0
  268. package/dist/customer-value/ambient-learning.js.map +1 -0
  269. package/dist/customer-value/internal-helpers.d.ts +13 -0
  270. package/dist/customer-value/internal-helpers.d.ts.map +1 -0
  271. package/dist/customer-value/internal-helpers.js +70 -0
  272. package/dist/customer-value/internal-helpers.js.map +1 -0
  273. package/dist/customer-value/report.d.ts +282 -0
  274. package/dist/customer-value/report.d.ts.map +1 -0
  275. package/dist/customer-value/report.js +2085 -0
  276. package/dist/customer-value/report.js.map +1 -0
  277. package/dist/db/schema.d.ts +7 -3
  278. package/dist/db/schema.d.ts.map +1 -1
  279. package/dist/db/schema.js.map +1 -1
  280. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  281. package/dist/evalops/agent-bootstrap.js +1 -3
  282. package/dist/evalops/agent-bootstrap.js.map +1 -1
  283. package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
  284. package/dist/evalops/agent-mcp-metadata.js +1 -3
  285. package/dist/evalops/agent-mcp-metadata.js.map +1 -1
  286. package/dist/hooks/notification-hooks.d.ts +1 -1
  287. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  288. package/dist/hooks/notification-hooks.js.map +1 -1
  289. package/dist/hooks/tui-surface.d.ts +35 -0
  290. package/dist/hooks/tui-surface.d.ts.map +1 -0
  291. package/dist/hooks/tui-surface.js +11 -0
  292. package/dist/hooks/tui-surface.js.map +1 -0
  293. package/dist/hooks/types.d.ts +2 -1
  294. package/dist/hooks/types.d.ts.map +1 -1
  295. package/dist/hooks/types.js.map +1 -1
  296. package/dist/hooks/typescript-loader.d.ts.map +1 -1
  297. package/dist/hooks/typescript-loader.js.map +1 -1
  298. package/dist/hooks/ui-context.d.ts.map +1 -1
  299. package/dist/hooks/ui-context.js.map +1 -1
  300. package/dist/index.d.ts +1 -0
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +1 -0
  303. package/dist/index.js.map +1 -1
  304. package/dist/installers/maestro-review-workflow.d.ts +38 -0
  305. package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
  306. package/dist/installers/maestro-review-workflow.js +163 -0
  307. package/dist/installers/maestro-review-workflow.js.map +1 -0
  308. package/dist/load-env.d.ts.map +1 -1
  309. package/dist/load-env.js +2 -1
  310. package/dist/load-env.js.map +1 -1
  311. package/dist/main.d.ts.map +1 -1
  312. package/dist/main.js +201 -840
  313. package/dist/main.js.map +1 -1
  314. package/dist/mcp/config.d.ts.map +1 -1
  315. package/dist/mcp/config.js +1 -3
  316. package/dist/mcp/config.js.map +1 -1
  317. package/dist/mcp/elicitation.d.ts.map +1 -1
  318. package/dist/mcp/elicitation.js +1 -3
  319. package/dist/mcp/elicitation.js.map +1 -1
  320. package/dist/mcp/official-registry.d.ts.map +1 -1
  321. package/dist/mcp/official-registry.js +1 -3
  322. package/dist/mcp/official-registry.js.map +1 -1
  323. package/dist/mcp/workspace-trust.d.ts.map +1 -1
  324. package/dist/mcp/workspace-trust.js +1 -3
  325. package/dist/mcp/workspace-trust.js.map +1 -1
  326. package/dist/memory/service-client.d.ts.map +1 -1
  327. package/dist/memory/service-client.js +1 -3
  328. package/dist/memory/service-client.js.map +1 -1
  329. package/dist/models/config-loader.d.ts +5 -5
  330. package/dist/models/config-loader.d.ts.map +1 -1
  331. package/dist/models/config-loader.js +1 -3
  332. package/dist/models/config-loader.js.map +1 -1
  333. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +46 -0
  334. package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  335. package/dist/node_modules/@evalops/contracts/dist/index.js +3 -0
  336. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  337. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +284 -0
  338. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  339. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +41 -0
  340. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  341. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
  342. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
  343. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
  344. package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
  345. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts +986 -0
  346. package/dist/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  347. package/dist/node_modules/@evalops/contracts/dist/schemas.js +49 -0
  348. package/dist/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  349. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts +56 -0
  350. package/dist/node_modules/@evalops/contracts/dist/token-estimation.d.ts.map +1 -0
  351. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js +86 -0
  352. package/dist/node_modules/@evalops/contracts/dist/token-estimation.js.map +1 -0
  353. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  354. package/dist/oauth/connectors.d.ts.map +1 -1
  355. package/dist/oauth/connectors.js +1 -3
  356. package/dist/oauth/connectors.js.map +1 -1
  357. package/dist/oauth/evalops.d.ts.map +1 -1
  358. package/dist/oauth/evalops.js +1 -3
  359. package/dist/oauth/evalops.js.map +1 -1
  360. package/dist/packages/discovery.d.ts.map +1 -1
  361. package/dist/packages/discovery.js +1 -0
  362. package/dist/packages/discovery.js.map +1 -1
  363. package/dist/packages/inspection.d.ts.map +1 -1
  364. package/dist/packages/inspection.js +7 -1
  365. package/dist/packages/inspection.js.map +1 -1
  366. package/dist/packages/loader.d.ts.map +1 -1
  367. package/dist/packages/loader.js +8 -1
  368. package/dist/packages/loader.js.map +1 -1
  369. package/dist/packages/runtime.d.ts +1 -0
  370. package/dist/packages/runtime.d.ts.map +1 -1
  371. package/dist/packages/runtime.js +9 -1
  372. package/dist/packages/runtime.js.map +1 -1
  373. package/dist/packages/types.d.ts +6 -0
  374. package/dist/packages/types.d.ts.map +1 -1
  375. package/dist/packages/types.js.map +1 -1
  376. package/dist/platform/a2a-client.d.ts.map +1 -1
  377. package/dist/platform/a2a-client.js +1 -3
  378. package/dist/platform/a2a-client.js.map +1 -1
  379. package/dist/platform/a2a-cockpit.d.ts +1 -0
  380. package/dist/platform/a2a-cockpit.d.ts.map +1 -1
  381. package/dist/platform/a2a-cockpit.js +42 -11
  382. package/dist/platform/a2a-cockpit.js.map +1 -1
  383. package/dist/platform/a2a-completion-audit.d.ts +1 -1
  384. package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
  385. package/dist/platform/a2a-completion-audit.js +7 -11
  386. package/dist/platform/a2a-completion-audit.js.map +1 -1
  387. package/dist/platform/a2a-maestro-peer.js +16 -0
  388. package/dist/platform/a2a-maestro-peer.js.map +1 -1
  389. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
  390. package/dist/platform/a2a-peer-pairing.js +1 -3
  391. package/dist/platform/a2a-peer-pairing.js.map +1 -1
  392. package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
  393. package/dist/platform/a2a-peer-registry.js +1 -3
  394. package/dist/platform/a2a-peer-registry.js.map +1 -1
  395. package/dist/platform/a2a-task-ledger.d.ts +20 -0
  396. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  397. package/dist/platform/a2a-task-ledger.js +207 -11
  398. package/dist/platform/a2a-task-ledger.js.map +1 -1
  399. package/dist/platform/a2a-work-graph.d.ts.map +1 -1
  400. package/dist/platform/a2a-work-graph.js +1 -3
  401. package/dist/platform/a2a-work-graph.js.map +1 -1
  402. package/dist/platform/operating-layer.d.ts.map +1 -1
  403. package/dist/platform/operating-layer.js +14 -8
  404. package/dist/platform/operating-layer.js.map +1 -1
  405. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  406. package/dist/platform/tool-execution-client.js +19 -2
  407. package/dist/platform/tool-execution-client.js.map +1 -1
  408. package/dist/providers/auth.d.ts.map +1 -1
  409. package/dist/providers/auth.js +1 -3
  410. package/dist/providers/auth.js.map +1 -1
  411. package/dist/runtime/agent-runtime.d.ts +22 -6
  412. package/dist/runtime/agent-runtime.d.ts.map +1 -1
  413. package/dist/runtime/agent-runtime.js +1 -1
  414. package/dist/runtime/agent-runtime.js.map +1 -1
  415. package/dist/runtime/env.d.ts +10 -1
  416. package/dist/runtime/env.d.ts.map +1 -1
  417. package/dist/runtime/env.js +64 -1
  418. package/dist/runtime/env.js.map +1 -1
  419. package/dist/runtime/prompt-queue.d.ts.map +1 -0
  420. package/dist/runtime/prompt-queue.js.map +1 -0
  421. package/dist/safety/policy.d.ts.map +1 -1
  422. package/dist/safety/policy.js +1 -4
  423. package/dist/safety/policy.js.map +1 -1
  424. package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
  425. package/dist/sandbox/docker-sandbox.js +6 -1
  426. package/dist/sandbox/docker-sandbox.js.map +1 -1
  427. package/dist/server/handlers/chat-ws.d.ts +2 -1
  428. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  429. package/dist/server/handlers/chat-ws.js +150 -5
  430. package/dist/server/handlers/chat-ws.js.map +1 -1
  431. package/dist/server/handlers/chat.d.ts.map +1 -1
  432. package/dist/server/handlers/chat.js +78 -5
  433. package/dist/server/handlers/chat.js.map +1 -1
  434. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  435. package/dist/server/handlers/hosted-runner-drain.js +1 -3
  436. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  437. package/dist/server/handlers/package.d.ts.map +1 -1
  438. package/dist/server/handlers/package.js +1 -0
  439. package/dist/server/handlers/package.js.map +1 -1
  440. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  441. package/dist/server/handlers/platform-a2a-push.js +53 -2
  442. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  443. package/dist/server/handlers/queue.js +1 -1
  444. package/dist/server/handlers/queue.js.map +1 -1
  445. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
  446. package/dist/server/handlers/runtime-app-server-ws.js +1 -3
  447. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
  448. package/dist/server/handlers/ui.js +1 -1
  449. package/dist/server/handlers/ui.js.map +1 -1
  450. package/dist/server/handlers/zen.js +1 -1
  451. package/dist/server/handlers/zen.js.map +1 -1
  452. package/dist/server/headless-runtime-service.d.ts +16 -0
  453. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  454. package/dist/server/headless-runtime-service.js +232 -206
  455. package/dist/server/headless-runtime-service.js.map +1 -1
  456. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
  457. package/dist/server/hosted-agent-runtime-progress.js +12 -3
  458. package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
  459. package/dist/server/hosted-session-manager.d.ts +3 -0
  460. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  461. package/dist/server/hosted-session-manager.js +26 -0
  462. package/dist/server/hosted-session-manager.js.map +1 -1
  463. package/dist/server/model-selection.d.ts +1 -0
  464. package/dist/server/model-selection.d.ts.map +1 -1
  465. package/dist/server/model-selection.js +4 -0
  466. package/dist/server/model-selection.js.map +1 -1
  467. package/dist/server/pending-request-payload.d.ts.map +1 -1
  468. package/dist/server/pending-request-payload.js +1 -3
  469. package/dist/server/pending-request-payload.js.map +1 -1
  470. package/dist/server/route-auth.d.ts.map +1 -1
  471. package/dist/server/route-auth.js +2 -0
  472. package/dist/server/route-auth.js.map +1 -1
  473. package/dist/server/session-serialization.d.ts.map +1 -1
  474. package/dist/server/session-serialization.js +4 -3
  475. package/dist/server/session-serialization.js.map +1 -1
  476. package/dist/server/session-timeline.d.ts.map +1 -1
  477. package/dist/server/session-timeline.js +1 -1
  478. package/dist/server/session-timeline.js.map +1 -1
  479. package/dist/server/sse-session.d.ts +2 -0
  480. package/dist/server/sse-session.d.ts.map +1 -1
  481. package/dist/server/sse-session.js +3 -0
  482. package/dist/server/sse-session.js.map +1 -1
  483. package/dist/server/stores/ui-store.d.ts +1 -1
  484. package/dist/server/stores/ui-store.d.ts.map +1 -1
  485. package/dist/server/stores/ui-store.js.map +1 -1
  486. package/dist/server/utils/token-estimator.d.ts +2 -2
  487. package/dist/server/utils/token-estimator.d.ts.map +1 -1
  488. package/dist/server/utils/token-estimator.js +2 -12
  489. package/dist/server/utils/token-estimator.js.map +1 -1
  490. package/dist/server/validation.d.ts +54 -0
  491. package/dist/server/validation.d.ts.map +1 -1
  492. package/dist/services/compliance/normalize.d.ts.map +1 -1
  493. package/dist/services/compliance/normalize.js +1 -3
  494. package/dist/services/compliance/normalize.js.map +1 -1
  495. package/dist/services/image-providers/cost.d.ts +70 -0
  496. package/dist/services/image-providers/cost.d.ts.map +1 -0
  497. package/dist/services/image-providers/cost.js +164 -0
  498. package/dist/services/image-providers/cost.js.map +1 -0
  499. package/dist/services/image-providers/flux.d.ts +40 -0
  500. package/dist/services/image-providers/flux.d.ts.map +1 -0
  501. package/dist/services/image-providers/flux.js +99 -0
  502. package/dist/services/image-providers/flux.js.map +1 -0
  503. package/dist/services/image-providers/index.d.ts +24 -0
  504. package/dist/services/image-providers/index.d.ts.map +1 -0
  505. package/dist/services/image-providers/index.js +27 -0
  506. package/dist/services/image-providers/index.js.map +1 -0
  507. package/dist/services/image-providers/masks.d.ts +51 -0
  508. package/dist/services/image-providers/masks.d.ts.map +1 -0
  509. package/dist/services/image-providers/masks.js +132 -0
  510. package/dist/services/image-providers/masks.js.map +1 -0
  511. package/dist/services/image-providers/openai.d.ts +35 -0
  512. package/dist/services/image-providers/openai.d.ts.map +1 -0
  513. package/dist/services/image-providers/openai.js +93 -0
  514. package/dist/services/image-providers/openai.js.map +1 -0
  515. package/dist/services/image-providers/types.d.ts +61 -0
  516. package/dist/services/image-providers/types.d.ts.map +1 -0
  517. package/dist/services/image-providers/types.js +17 -0
  518. package/dist/services/image-providers/types.js.map +1 -0
  519. package/dist/services/intelligent-router/index.d.ts +1 -0
  520. package/dist/services/intelligent-router/index.d.ts.map +1 -1
  521. package/dist/services/intelligent-router/index.js +1 -0
  522. package/dist/services/intelligent-router/index.js.map +1 -1
  523. package/dist/services/intelligent-router/normalize.d.ts +1 -0
  524. package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
  525. package/dist/services/intelligent-router/normalize.js +18 -3
  526. package/dist/services/intelligent-router/normalize.js.map +1 -1
  527. package/dist/services/intelligent-router/outcome.d.ts +19 -0
  528. package/dist/services/intelligent-router/outcome.d.ts.map +1 -0
  529. package/dist/services/intelligent-router/outcome.js +51 -0
  530. package/dist/services/intelligent-router/outcome.js.map +1 -0
  531. package/dist/services/intelligent-router/recorder.d.ts +2 -0
  532. package/dist/services/intelligent-router/recorder.d.ts.map +1 -1
  533. package/dist/services/intelligent-router/recorder.js +72 -1
  534. package/dist/services/intelligent-router/recorder.js.map +1 -1
  535. package/dist/services/intelligent-router/service.d.ts +1 -0
  536. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  537. package/dist/services/intelligent-router/service.js +60 -11
  538. package/dist/services/intelligent-router/service.js.map +1 -1
  539. package/dist/services/intelligent-router/types.d.ts +18 -0
  540. package/dist/services/intelligent-router/types.d.ts.map +1 -1
  541. package/dist/services/intelligent-router/types.js.map +1 -1
  542. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
  543. package/dist/services/revenue-attribution/normalize.js +1 -3
  544. package/dist/services/revenue-attribution/normalize.js.map +1 -1
  545. package/dist/services/traces/normalize.d.ts.map +1 -1
  546. package/dist/services/traces/normalize.js +1 -3
  547. package/dist/services/traces/normalize.js.map +1 -1
  548. package/dist/services/workspace-config/middleware.d.ts +2 -0
  549. package/dist/services/workspace-config/middleware.d.ts.map +1 -1
  550. package/dist/services/workspace-config/middleware.js +25 -28
  551. package/dist/services/workspace-config/middleware.js.map +1 -1
  552. package/dist/services/workspace-config/normalize.d.ts.map +1 -1
  553. package/dist/services/workspace-config/normalize.js +1 -3
  554. package/dist/services/workspace-config/normalize.js.map +1 -1
  555. package/dist/session/agent-lineage-projection.d.ts +30 -0
  556. package/dist/session/agent-lineage-projection.d.ts.map +1 -0
  557. package/dist/session/agent-lineage-projection.js +109 -0
  558. package/dist/session/agent-lineage-projection.js.map +1 -0
  559. package/dist/session/manager.d.ts +3 -0
  560. package/dist/session/manager.d.ts.map +1 -1
  561. package/dist/session/manager.js +24 -0
  562. package/dist/session/manager.js.map +1 -1
  563. package/dist/session/session-graph-projection.d.ts +11 -0
  564. package/dist/session/session-graph-projection.d.ts.map +1 -1
  565. package/dist/session/session-graph-projection.js +28 -0
  566. package/dist/session/session-graph-projection.js.map +1 -1
  567. package/dist/session/types.d.ts +2 -0
  568. package/dist/session/types.d.ts.map +1 -1
  569. package/dist/session/types.js.map +1 -1
  570. package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
  571. package/dist/telemetry/agent-workforce-native-event.js +1 -3
  572. package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
  573. package/dist/telemetry/maestro-event-bus.d.ts +1 -1
  574. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  575. package/dist/telemetry/maestro-event-bus.js +42 -81
  576. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  577. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  578. package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
  579. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  580. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  581. package/dist/telemetry/oracle-policy.d.ts +6 -0
  582. package/dist/telemetry/oracle-policy.d.ts.map +1 -0
  583. package/dist/telemetry/oracle-policy.js +17 -0
  584. package/dist/telemetry/oracle-policy.js.map +1 -0
  585. package/dist/telemetry/wide-events.d.ts +1 -1
  586. package/dist/telemetry/wide-events.d.ts.map +1 -1
  587. package/dist/telemetry/wide-events.js.map +1 -1
  588. package/dist/telemetry.d.ts.map +1 -1
  589. package/dist/telemetry.js +54 -43
  590. package/dist/telemetry.js.map +1 -1
  591. package/dist/theme/theme-loader.d.ts.map +1 -1
  592. package/dist/theme/theme-loader.js +1 -3
  593. package/dist/theme/theme-loader.js.map +1 -1
  594. package/dist/theme/theme.d.ts +2 -8
  595. package/dist/theme/theme.d.ts.map +1 -1
  596. package/dist/theme/theme.js +7 -0
  597. package/dist/theme/theme.js.map +1 -1
  598. package/dist/theme/tui-theme-helpers.d.ts +2 -1
  599. package/dist/theme/tui-theme-helpers.d.ts.map +1 -1
  600. package/dist/theme/tui-theme-helpers.js.map +1 -1
  601. package/dist/theme/tui-theme-types.d.ts +39 -0
  602. package/dist/theme/tui-theme-types.d.ts.map +1 -0
  603. package/dist/theme/tui-theme-types.js +10 -0
  604. package/dist/theme/tui-theme-types.js.map +1 -0
  605. package/dist/tools/apply-patch.d.ts.map +1 -1
  606. package/dist/tools/apply-patch.js +76 -8
  607. package/dist/tools/apply-patch.js.map +1 -1
  608. package/dist/tools/diff-preview.d.ts.map +1 -1
  609. package/dist/tools/diff-preview.js +10 -1
  610. package/dist/tools/diff-preview.js.map +1 -1
  611. package/dist/tools/edit.d.ts.map +1 -1
  612. package/dist/tools/edit.js +17 -0
  613. package/dist/tools/edit.js.map +1 -1
  614. package/dist/tools/index.d.ts +199 -160
  615. package/dist/tools/index.d.ts.map +1 -1
  616. package/dist/tools/index.js +4 -0
  617. package/dist/tools/index.js.map +1 -1
  618. package/dist/tools/lazy-registry.d.ts.map +1 -1
  619. package/dist/tools/lazy-registry.js +1 -0
  620. package/dist/tools/lazy-registry.js.map +1 -1
  621. package/dist/tools/oracle.d.ts +9 -0
  622. package/dist/tools/oracle.d.ts.map +1 -1
  623. package/dist/tools/oracle.js +26 -24
  624. package/dist/tools/oracle.js.map +1 -1
  625. package/dist/tools/painter.d.ts +73 -0
  626. package/dist/tools/painter.d.ts.map +1 -0
  627. package/dist/tools/painter.js +283 -0
  628. package/dist/tools/painter.js.map +1 -0
  629. package/dist/tools/typebox-tool.d.ts.map +1 -1
  630. package/dist/tools/typebox-tool.js +1 -1
  631. package/dist/tools/typebox-tool.js.map +1 -1
  632. package/dist/tools/write.d.ts.map +1 -1
  633. package/dist/tools/write.js +9 -0
  634. package/dist/tools/write.js.map +1 -1
  635. package/dist/undo/tracker.d.ts +5 -0
  636. package/dist/undo/tracker.d.ts.map +1 -1
  637. package/dist/undo/tracker.js +13 -0
  638. package/dist/undo/tracker.js.map +1 -1
  639. package/dist/utils/fs.d.ts +1 -1
  640. package/dist/utils/fs.d.ts.map +1 -1
  641. package/dist/utils/fs.js +29 -2
  642. package/dist/utils/fs.js.map +1 -1
  643. package/dist/utils/git-stash.d.ts.map +1 -1
  644. package/dist/utils/git-stash.js +15 -8
  645. package/dist/utils/git-stash.js.map +1 -1
  646. package/dist/utils/json.d.ts +11 -0
  647. package/dist/utils/json.d.ts.map +1 -1
  648. package/dist/utils/json.js +9 -0
  649. package/dist/utils/json.js.map +1 -1
  650. package/dist/utils/shell-env.d.ts.map +1 -1
  651. package/dist/utils/shell-env.js +2 -0
  652. package/dist/utils/shell-env.js.map +1 -1
  653. package/dist/utils/terminal-image.d.ts +52 -0
  654. package/dist/utils/terminal-image.d.ts.map +1 -0
  655. package/dist/utils/terminal-image.js +95 -0
  656. package/dist/utils/terminal-image.js.map +1 -0
  657. package/dist/utils/terminal-text.d.ts +11 -0
  658. package/dist/utils/terminal-text.d.ts.map +1 -0
  659. package/dist/utils/terminal-text.js +21 -0
  660. package/dist/utils/terminal-text.js.map +1 -0
  661. package/dist/utils/url-extractor-git.d.ts +26 -0
  662. package/dist/utils/url-extractor-git.d.ts.map +1 -0
  663. package/dist/utils/url-extractor-git.js +259 -0
  664. package/dist/utils/url-extractor-git.js.map +1 -0
  665. package/dist/utils/url-extractor.d.ts.map +1 -1
  666. package/dist/utils/url-extractor.js +23 -251
  667. package/dist/utils/url-extractor.js.map +1 -1
  668. package/dist/version.json +2 -2
  669. package/dist/web-server.d.ts.map +1 -1
  670. package/dist/web-server.js +24 -2
  671. package/dist/web-server.js.map +1 -1
  672. package/package.json +312 -306
  673. package/skills/incident-triage/SKILL.md +20 -1
  674. package/skills/install-code-review/SKILL.md +69 -0
  675. package/skills/security-review/SKILL.md +68 -0
  676. package/skills/security-review/reference/rubric.md +85 -0
  677. package/dist/cli/commands/agents.d.ts +0 -20
  678. package/dist/cli/commands/agents.d.ts.map +0 -1
  679. package/dist/cli/commands/agents.js +0 -280
  680. package/dist/cli/commands/agents.js.map +0 -1
  681. package/dist/cli/commands/anthropic.d.ts +0 -2
  682. package/dist/cli/commands/anthropic.d.ts.map +0 -1
  683. package/dist/cli/commands/anthropic.js +0 -6
  684. package/dist/cli/commands/anthropic.js.map +0 -1
  685. package/dist/cli/commands/cost.d.ts +0 -13
  686. package/dist/cli/commands/cost.d.ts.map +0 -1
  687. package/dist/cli/commands/cost.js +0 -143
  688. package/dist/cli/commands/cost.js.map +0 -1
  689. package/dist/cli/commands/exec-constants.d.ts +0 -3
  690. package/dist/cli/commands/exec-constants.d.ts.map +0 -1
  691. package/dist/cli/commands/exec-constants.js +0 -3
  692. package/dist/cli/commands/exec-constants.js.map +0 -1
  693. package/dist/cli/commands/exec.d.ts +0 -19
  694. package/dist/cli/commands/exec.d.ts.map +0 -1
  695. package/dist/cli/commands/exec.js +0 -207
  696. package/dist/cli/commands/exec.js.map +0 -1
  697. package/dist/cli/commands/hooks.d.ts +0 -2
  698. package/dist/cli/commands/hooks.d.ts.map +0 -1
  699. package/dist/cli/commands/hooks.js +0 -25
  700. package/dist/cli/commands/hooks.js.map +0 -1
  701. package/dist/cli/commands/hosted-runner.d.ts +0 -25
  702. package/dist/cli/commands/hosted-runner.d.ts.map +0 -1
  703. package/dist/cli/commands/hosted-runner.js +0 -278
  704. package/dist/cli/commands/hosted-runner.js.map +0 -1
  705. package/dist/cli/commands/memory.d.ts +0 -2
  706. package/dist/cli/commands/memory.d.ts.map +0 -1
  707. package/dist/cli/commands/memory.js +0 -208
  708. package/dist/cli/commands/memory.js.map +0 -1
  709. package/dist/cli/commands/models.d.ts +0 -3
  710. package/dist/cli/commands/models.d.ts.map +0 -1
  711. package/dist/cli/commands/models.js +0 -154
  712. package/dist/cli/commands/models.js.map +0 -1
  713. package/dist/cli/commands/modes.d.ts +0 -8
  714. package/dist/cli/commands/modes.d.ts.map +0 -1
  715. package/dist/cli/commands/modes.js +0 -151
  716. package/dist/cli/commands/modes.js.map +0 -1
  717. package/dist/cli/commands/openai.d.ts +0 -2
  718. package/dist/cli/commands/openai.d.ts.map +0 -1
  719. package/dist/cli/commands/openai.js +0 -116
  720. package/dist/cli/commands/openai.js.map +0 -1
  721. package/dist/cli/commands/session-transfer.d.ts +0 -5
  722. package/dist/cli/commands/session-transfer.d.ts.map +0 -1
  723. package/dist/cli/commands/session-transfer.js +0 -43
  724. package/dist/cli/commands/session-transfer.js.map +0 -1
  725. package/dist/cli/commands/sessions.d.ts +0 -8
  726. package/dist/cli/commands/sessions.d.ts.map +0 -1
  727. package/dist/cli/commands/sessions.js +0 -152
  728. package/dist/cli/commands/sessions.js.map +0 -1
  729. package/dist/cli/commands/skill.d.ts +0 -10
  730. package/dist/cli/commands/skill.d.ts.map +0 -1
  731. package/dist/cli/commands/skill.js +0 -303
  732. package/dist/cli/commands/skill.js.map +0 -1
  733. package/dist/cli/commands/stats.d.ts +0 -7
  734. package/dist/cli/commands/stats.d.ts.map +0 -1
  735. package/dist/cli/commands/stats.js +0 -167
  736. package/dist/cli/commands/stats.js.map +0 -1
  737. package/dist/cli/commands/status.d.ts +0 -2
  738. package/dist/cli/commands/status.d.ts.map +0 -1
  739. package/dist/cli/commands/status.js +0 -11
  740. package/dist/cli/commands/status.js.map +0 -1
  741. package/dist/cli/commands/update.d.ts +0 -12
  742. package/dist/cli/commands/update.d.ts.map +0 -1
  743. package/dist/cli/commands/update.js +0 -148
  744. package/dist/cli/commands/update.js.map +0 -1
  745. package/dist/cli-tui/about-view.d.ts +0 -48
  746. package/dist/cli-tui/about-view.d.ts.map +0 -1
  747. package/dist/cli-tui/about-view.js +0 -206
  748. package/dist/cli-tui/about-view.js.map +0 -1
  749. package/dist/cli-tui/agent-event-router.d.ts +0 -28
  750. package/dist/cli-tui/agent-event-router.d.ts.map +0 -1
  751. package/dist/cli-tui/agent-event-router.js +0 -126
  752. package/dist/cli-tui/agent-event-router.js.map +0 -1
  753. package/dist/cli-tui/approval/approval-controller.d.ts +0 -28
  754. package/dist/cli-tui/approval/approval-controller.d.ts.map +0 -1
  755. package/dist/cli-tui/approval/approval-controller.js +0 -99
  756. package/dist/cli-tui/approval/approval-controller.js.map +0 -1
  757. package/dist/cli-tui/approval/approval-modal.d.ts +0 -26
  758. package/dist/cli-tui/approval/approval-modal.d.ts.map +0 -1
  759. package/dist/cli-tui/approval/approval-modal.js +0 -143
  760. package/dist/cli-tui/approval/approval-modal.js.map +0 -1
  761. package/dist/cli-tui/assistant-message.d.ts +0 -41
  762. package/dist/cli-tui/assistant-message.d.ts.map +0 -1
  763. package/dist/cli-tui/assistant-message.js +0 -236
  764. package/dist/cli-tui/assistant-message.js.map +0 -1
  765. package/dist/cli-tui/auth-state.d.ts +0 -7
  766. package/dist/cli-tui/auth-state.d.ts.map +0 -1
  767. package/dist/cli-tui/auth-state.js +0 -46
  768. package/dist/cli-tui/auth-state.js.map +0 -1
  769. package/dist/cli-tui/background/background-tasks-controller.d.ts +0 -31
  770. package/dist/cli-tui/background/background-tasks-controller.d.ts.map +0 -1
  771. package/dist/cli-tui/background/background-tasks-controller.js +0 -84
  772. package/dist/cli-tui/background/background-tasks-controller.js.map +0 -1
  773. package/dist/cli-tui/base-view.d.ts +0 -111
  774. package/dist/cli-tui/base-view.d.ts.map +0 -1
  775. package/dist/cli-tui/base-view.js +0 -145
  776. package/dist/cli-tui/base-view.js.map +0 -1
  777. package/dist/cli-tui/bash/background-launcher.d.ts +0 -14
  778. package/dist/cli-tui/bash/background-launcher.d.ts.map +0 -1
  779. package/dist/cli-tui/bash/background-launcher.js +0 -50
  780. package/dist/cli-tui/bash/background-launcher.js.map +0 -1
  781. package/dist/cli-tui/bash/bash-autocomplete.d.ts +0 -40
  782. package/dist/cli-tui/bash/bash-autocomplete.d.ts.map +0 -1
  783. package/dist/cli-tui/bash/bash-autocomplete.js +0 -347
  784. package/dist/cli-tui/bash/bash-autocomplete.js.map +0 -1
  785. package/dist/cli-tui/bash/bash-history.d.ts +0 -21
  786. package/dist/cli-tui/bash/bash-history.d.ts.map +0 -1
  787. package/dist/cli-tui/bash/bash-history.js +0 -72
  788. package/dist/cli-tui/bash/bash-history.js.map +0 -1
  789. package/dist/cli-tui/bash/bash-syntax.d.ts +0 -5
  790. package/dist/cli-tui/bash/bash-syntax.d.ts.map +0 -1
  791. package/dist/cli-tui/bash/bash-syntax.js +0 -176
  792. package/dist/cli-tui/bash/bash-syntax.js.map +0 -1
  793. package/dist/cli-tui/bash/index.d.ts +0 -4
  794. package/dist/cli-tui/bash/index.d.ts.map +0 -1
  795. package/dist/cli-tui/bash/index.js +0 -4
  796. package/dist/cli-tui/bash/index.js.map +0 -1
  797. package/dist/cli-tui/bash-mode-view.d.ts +0 -86
  798. package/dist/cli-tui/bash-mode-view.d.ts.map +0 -1
  799. package/dist/cli-tui/bash-mode-view.js +0 -560
  800. package/dist/cli-tui/bash-mode-view.js.map +0 -1
  801. package/dist/cli-tui/bash-shell-block.d.ts +0 -50
  802. package/dist/cli-tui/bash-shell-block.d.ts.map +0 -1
  803. package/dist/cli-tui/bash-shell-block.js +0 -119
  804. package/dist/cli-tui/bash-shell-block.js.map +0 -1
  805. package/dist/cli-tui/changelog-view.d.ts +0 -13
  806. package/dist/cli-tui/changelog-view.d.ts.map +0 -1
  807. package/dist/cli-tui/changelog-view.js +0 -34
  808. package/dist/cli-tui/changelog-view.js.map +0 -1
  809. package/dist/cli-tui/clean-mode.d.ts +0 -13
  810. package/dist/cli-tui/clean-mode.d.ts.map +0 -1
  811. package/dist/cli-tui/clean-mode.js +0 -32
  812. package/dist/cli-tui/clean-mode.js.map +0 -1
  813. package/dist/cli-tui/client-tools/client-tool-controller.d.ts +0 -41
  814. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +0 -1
  815. package/dist/cli-tui/client-tools/client-tool-controller.js +0 -862
  816. package/dist/cli-tui/client-tools/client-tool-controller.js.map +0 -1
  817. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts +0 -33
  818. package/dist/cli-tui/client-tools/local-client-tool-service.d.ts.map +0 -1
  819. package/dist/cli-tui/client-tools/local-client-tool-service.js +0 -94
  820. package/dist/cli-tui/client-tools/local-client-tool-service.js.map +0 -1
  821. package/dist/cli-tui/commands/a2a-handlers.d.ts +0 -7
  822. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +0 -1
  823. package/dist/cli-tui/commands/a2a-handlers.js +0 -215
  824. package/dist/cli-tui/commands/a2a-handlers.js.map +0 -1
  825. package/dist/cli-tui/commands/access-command.d.ts +0 -3
  826. package/dist/cli-tui/commands/access-command.d.ts.map +0 -1
  827. package/dist/cli-tui/commands/access-command.js +0 -89
  828. package/dist/cli-tui/commands/access-command.js.map +0 -1
  829. package/dist/cli-tui/commands/argument-parser.d.ts +0 -12
  830. package/dist/cli-tui/commands/argument-parser.d.ts.map +0 -1
  831. package/dist/cli-tui/commands/argument-parser.js +0 -135
  832. package/dist/cli-tui/commands/argument-parser.js.map +0 -1
  833. package/dist/cli-tui/commands/audit-command.d.ts +0 -5
  834. package/dist/cli-tui/commands/audit-command.d.ts.map +0 -1
  835. package/dist/cli-tui/commands/audit-command.js +0 -35
  836. package/dist/cli-tui/commands/audit-command.js.map +0 -1
  837. package/dist/cli-tui/commands/background-handlers.d.ts +0 -14
  838. package/dist/cli-tui/commands/background-handlers.d.ts.map +0 -1
  839. package/dist/cli-tui/commands/background-handlers.js +0 -115
  840. package/dist/cli-tui/commands/background-handlers.js.map +0 -1
  841. package/dist/cli-tui/commands/command-catalog.d.ts +0 -29
  842. package/dist/cli-tui/commands/command-catalog.d.ts.map +0 -1
  843. package/dist/cli-tui/commands/command-catalog.js +0 -666
  844. package/dist/cli-tui/commands/command-catalog.js.map +0 -1
  845. package/dist/cli-tui/commands/command-registry-adapter.d.ts +0 -12
  846. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +0 -1
  847. package/dist/cli-tui/commands/command-registry-adapter.js +0 -129
  848. package/dist/cli-tui/commands/command-registry-adapter.js.map +0 -1
  849. package/dist/cli-tui/commands/command-suite-catalog.d.ts +0 -14
  850. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +0 -1
  851. package/dist/cli-tui/commands/command-suite-catalog.js +0 -147
  852. package/dist/cli-tui/commands/command-suite-catalog.js.map +0 -1
  853. package/dist/cli-tui/commands/command-suite-handlers.d.ts +0 -111
  854. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +0 -1
  855. package/dist/cli-tui/commands/command-suite-handlers.js +0 -110
  856. package/dist/cli-tui/commands/command-suite-handlers.js.map +0 -1
  857. package/dist/cli-tui/commands/composer-handlers.d.ts +0 -8
  858. package/dist/cli-tui/commands/composer-handlers.d.ts.map +0 -1
  859. package/dist/cli-tui/commands/composer-handlers.js +0 -90
  860. package/dist/cli-tui/commands/composer-handlers.js.map +0 -1
  861. package/dist/cli-tui/commands/framework-handlers.d.ts +0 -18
  862. package/dist/cli-tui/commands/framework-handlers.d.ts.map +0 -1
  863. package/dist/cli-tui/commands/framework-handlers.js +0 -57
  864. package/dist/cli-tui/commands/framework-handlers.js.map +0 -1
  865. package/dist/cli-tui/commands/guardian-handlers.d.ts +0 -20
  866. package/dist/cli-tui/commands/guardian-handlers.d.ts.map +0 -1
  867. package/dist/cli-tui/commands/guardian-handlers.js +0 -48
  868. package/dist/cli-tui/commands/guardian-handlers.js.map +0 -1
  869. package/dist/cli-tui/commands/handlers/mode-handler.d.ts +0 -32
  870. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +0 -1
  871. package/dist/cli-tui/commands/handlers/mode-handler.js +0 -153
  872. package/dist/cli-tui/commands/handlers/mode-handler.js.map +0 -1
  873. package/dist/cli-tui/commands/hotkeys-command.d.ts +0 -8
  874. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +0 -1
  875. package/dist/cli-tui/commands/hotkeys-command.js +0 -61
  876. package/dist/cli-tui/commands/hotkeys-command.js.map +0 -1
  877. package/dist/cli-tui/commands/limits-command.d.ts +0 -3
  878. package/dist/cli-tui/commands/limits-command.d.ts.map +0 -1
  879. package/dist/cli-tui/commands/limits-command.js +0 -88
  880. package/dist/cli-tui/commands/limits-command.js.map +0 -1
  881. package/dist/cli-tui/commands/mcp-handlers.d.ts +0 -12
  882. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +0 -1
  883. package/dist/cli-tui/commands/mcp-handlers.js +0 -1306
  884. package/dist/cli-tui/commands/mcp-handlers.js.map +0 -1
  885. package/dist/cli-tui/commands/memory-handlers.d.ts +0 -28
  886. package/dist/cli-tui/commands/memory-handlers.d.ts.map +0 -1
  887. package/dist/cli-tui/commands/memory-handlers.js +0 -414
  888. package/dist/cli-tui/commands/memory-handlers.js.map +0 -1
  889. package/dist/cli-tui/commands/otel-handlers.d.ts +0 -11
  890. package/dist/cli-tui/commands/otel-handlers.d.ts.map +0 -1
  891. package/dist/cli-tui/commands/otel-handlers.js +0 -20
  892. package/dist/cli-tui/commands/otel-handlers.js.map +0 -1
  893. package/dist/cli-tui/commands/package-handlers.d.ts +0 -30
  894. package/dist/cli-tui/commands/package-handlers.d.ts.map +0 -1
  895. package/dist/cli-tui/commands/package-handlers.js +0 -499
  896. package/dist/cli-tui/commands/package-handlers.js.map +0 -1
  897. package/dist/cli-tui/commands/pii-command.d.ts +0 -3
  898. package/dist/cli-tui/commands/pii-command.d.ts.map +0 -1
  899. package/dist/cli-tui/commands/pii-command.js +0 -54
  900. package/dist/cli-tui/commands/pii-command.js.map +0 -1
  901. package/dist/cli-tui/commands/registry.d.ts +0 -3
  902. package/dist/cli-tui/commands/registry.d.ts.map +0 -1
  903. package/dist/cli-tui/commands/registry.js +0 -36
  904. package/dist/cli-tui/commands/registry.js.map +0 -1
  905. package/dist/cli-tui/commands/safety-handlers.d.ts +0 -36
  906. package/dist/cli-tui/commands/safety-handlers.d.ts.map +0 -1
  907. package/dist/cli-tui/commands/safety-handlers.js +0 -62
  908. package/dist/cli-tui/commands/safety-handlers.js.map +0 -1
  909. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +0 -26
  910. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +0 -1
  911. package/dist/cli-tui/commands/subcommands/auth-commands.js +0 -79
  912. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +0 -1
  913. package/dist/cli-tui/commands/subcommands/config-commands.d.ts +0 -23
  914. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +0 -1
  915. package/dist/cli-tui/commands/subcommands/config-commands.js +0 -61
  916. package/dist/cli-tui/commands/subcommands/config-commands.js.map +0 -1
  917. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts +0 -46
  918. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +0 -1
  919. package/dist/cli-tui/commands/subcommands/diag-commands.js +0 -163
  920. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +0 -1
  921. package/dist/cli-tui/commands/subcommands/git-commands.d.ts +0 -18
  922. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +0 -1
  923. package/dist/cli-tui/commands/subcommands/git-commands.js +0 -50
  924. package/dist/cli-tui/commands/subcommands/git-commands.js.map +0 -1
  925. package/dist/cli-tui/commands/subcommands/index.d.ts +0 -18
  926. package/dist/cli-tui/commands/subcommands/index.d.ts.map +0 -1
  927. package/dist/cli-tui/commands/subcommands/index.js +0 -18
  928. package/dist/cli-tui/commands/subcommands/index.js.map +0 -1
  929. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts +0 -26
  930. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +0 -1
  931. package/dist/cli-tui/commands/subcommands/safety-commands.js +0 -149
  932. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +0 -1
  933. package/dist/cli-tui/commands/subcommands/session-commands.d.ts +0 -36
  934. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +0 -1
  935. package/dist/cli-tui/commands/subcommands/session-commands.js +0 -112
  936. package/dist/cli-tui/commands/subcommands/session-commands.js.map +0 -1
  937. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts +0 -27
  938. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +0 -1
  939. package/dist/cli-tui/commands/subcommands/tools-commands.js +0 -80
  940. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +0 -1
  941. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +0 -30
  942. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +0 -1
  943. package/dist/cli-tui/commands/subcommands/ui-commands.js +0 -74
  944. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +0 -1
  945. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts +0 -25
  946. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +0 -1
  947. package/dist/cli-tui/commands/subcommands/undo-commands.js +0 -74
  948. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +0 -1
  949. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts +0 -19
  950. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +0 -1
  951. package/dist/cli-tui/commands/subcommands/usage-commands.js +0 -63
  952. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +0 -1
  953. package/dist/cli-tui/commands/subcommands/utils.d.ts +0 -127
  954. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +0 -1
  955. package/dist/cli-tui/commands/subcommands/utils.js +0 -395
  956. package/dist/cli-tui/commands/subcommands/utils.js.map +0 -1
  957. package/dist/cli-tui/commands/types.d.ts +0 -105
  958. package/dist/cli-tui/commands/types.d.ts.map +0 -1
  959. package/dist/cli-tui/commands/types.js +0 -2
  960. package/dist/cli-tui/commands/types.js.map +0 -1
  961. package/dist/cli-tui/commands/undo-handlers.d.ts +0 -29
  962. package/dist/cli-tui/commands/undo-handlers.d.ts.map +0 -1
  963. package/dist/cli-tui/commands/undo-handlers.js +0 -300
  964. package/dist/cli-tui/commands/undo-handlers.js.map +0 -1
  965. package/dist/cli-tui/commands/utility-handlers.d.ts +0 -55
  966. package/dist/cli-tui/commands/utility-handlers.d.ts.map +0 -1
  967. package/dist/cli-tui/commands/utility-handlers.js +0 -137
  968. package/dist/cli-tui/commands/utility-handlers.js.map +0 -1
  969. package/dist/cli-tui/commands/workflow-handlers.d.ts +0 -22
  970. package/dist/cli-tui/commands/workflow-handlers.d.ts.map +0 -1
  971. package/dist/cli-tui/commands/workflow-handlers.js +0 -227
  972. package/dist/cli-tui/commands/workflow-handlers.js.map +0 -1
  973. package/dist/cli-tui/compact-boundary-message.d.ts +0 -9
  974. package/dist/cli-tui/compact-boundary-message.d.ts.map +0 -1
  975. package/dist/cli-tui/compact-boundary-message.js +0 -18
  976. package/dist/cli-tui/compact-boundary-message.js.map +0 -1
  977. package/dist/cli-tui/compaction-recovery.d.ts +0 -6
  978. package/dist/cli-tui/compaction-recovery.d.ts.map +0 -1
  979. package/dist/cli-tui/compaction-recovery.js +0 -13
  980. package/dist/cli-tui/compaction-recovery.js.map +0 -1
  981. package/dist/cli-tui/config-view.d.ts +0 -30
  982. package/dist/cli-tui/config-view.d.ts.map +0 -1
  983. package/dist/cli-tui/config-view.js +0 -255
  984. package/dist/cli-tui/config-view.js.map +0 -1
  985. package/dist/cli-tui/context-view.d.ts +0 -20
  986. package/dist/cli-tui/context-view.d.ts.map +0 -1
  987. package/dist/cli-tui/context-view.js +0 -191
  988. package/dist/cli-tui/context-view.js.map +0 -1
  989. package/dist/cli-tui/custom-editor.d.ts +0 -25
  990. package/dist/cli-tui/custom-editor.d.ts.map +0 -1
  991. package/dist/cli-tui/custom-editor.js +0 -241
  992. package/dist/cli-tui/custom-editor.js.map +0 -1
  993. package/dist/cli-tui/editor-view.d.ts +0 -34
  994. package/dist/cli-tui/editor-view.d.ts.map +0 -1
  995. package/dist/cli-tui/editor-view.js +0 -102
  996. package/dist/cli-tui/editor-view.js.map +0 -1
  997. package/dist/cli-tui/feedback-view.d.ts +0 -35
  998. package/dist/cli-tui/feedback-view.d.ts.map +0 -1
  999. package/dist/cli-tui/feedback-view.js +0 -271
  1000. package/dist/cli-tui/feedback-view.js.map +0 -1
  1001. package/dist/cli-tui/footer.d.ts +0 -56
  1002. package/dist/cli-tui/footer.d.ts.map +0 -1
  1003. package/dist/cli-tui/footer.js +0 -228
  1004. package/dist/cli-tui/footer.js.map +0 -1
  1005. package/dist/cli-tui/git/commit-modal.d.ts +0 -14
  1006. package/dist/cli-tui/git/commit-modal.d.ts.map +0 -1
  1007. package/dist/cli-tui/git/commit-modal.js +0 -56
  1008. package/dist/cli-tui/git/commit-modal.js.map +0 -1
  1009. package/dist/cli-tui/git/git-preview-modal.d.ts +0 -40
  1010. package/dist/cli-tui/git/git-preview-modal.d.ts.map +0 -1
  1011. package/dist/cli-tui/git/git-preview-modal.js +0 -123
  1012. package/dist/cli-tui/git/git-preview-modal.js.map +0 -1
  1013. package/dist/cli-tui/git/git-view.d.ts +0 -65
  1014. package/dist/cli-tui/git/git-view.d.ts.map +0 -1
  1015. package/dist/cli-tui/git/git-view.js +0 -529
  1016. package/dist/cli-tui/git/git-view.js.map +0 -1
  1017. package/dist/cli-tui/history/history-config.d.ts +0 -7
  1018. package/dist/cli-tui/history/history-config.d.ts.map +0 -1
  1019. package/dist/cli-tui/history/history-config.js +0 -49
  1020. package/dist/cli-tui/history/history-config.js.map +0 -1
  1021. package/dist/cli-tui/history/prompt-history.d.ts +0 -33
  1022. package/dist/cli-tui/history/prompt-history.d.ts.map +0 -1
  1023. package/dist/cli-tui/history/prompt-history.js +0 -185
  1024. package/dist/cli-tui/history/prompt-history.js.map +0 -1
  1025. package/dist/cli-tui/history/tool-history.d.ts +0 -50
  1026. package/dist/cli-tui/history/tool-history.d.ts.map +0 -1
  1027. package/dist/cli-tui/history/tool-history.js +0 -253
  1028. package/dist/cli-tui/history/tool-history.js.map +0 -1
  1029. package/dist/cli-tui/hook-message.d.ts +0 -13
  1030. package/dist/cli-tui/hook-message.d.ts.map +0 -1
  1031. package/dist/cli-tui/hook-message.js +0 -56
  1032. package/dist/cli-tui/hook-message.js.map +0 -1
  1033. package/dist/cli-tui/hooks/hook-input-modal.d.ts +0 -22
  1034. package/dist/cli-tui/hooks/hook-input-modal.d.ts.map +0 -1
  1035. package/dist/cli-tui/hooks/hook-input-modal.js +0 -63
  1036. package/dist/cli-tui/hooks/hook-input-modal.js.map +0 -1
  1037. package/dist/cli-tui/hotkeys-view.d.ts +0 -13
  1038. package/dist/cli-tui/hotkeys-view.d.ts.map +0 -1
  1039. package/dist/cli-tui/hotkeys-view.js +0 -96
  1040. package/dist/cli-tui/hotkeys-view.js.map +0 -1
  1041. package/dist/cli-tui/import-view.d.ts +0 -28
  1042. package/dist/cli-tui/import-view.d.ts.map +0 -1
  1043. package/dist/cli-tui/import-view.js +0 -184
  1044. package/dist/cli-tui/import-view.js.map +0 -1
  1045. package/dist/cli-tui/info-view.d.ts +0 -18
  1046. package/dist/cli-tui/info-view.d.ts.map +0 -1
  1047. package/dist/cli-tui/info-view.js +0 -107
  1048. package/dist/cli-tui/info-view.js.map +0 -1
  1049. package/dist/cli-tui/instruction-panel.d.ts +0 -11
  1050. package/dist/cli-tui/instruction-panel.d.ts.map +0 -1
  1051. package/dist/cli-tui/instruction-panel.js +0 -86
  1052. package/dist/cli-tui/instruction-panel.js.map +0 -1
  1053. package/dist/cli-tui/interrupt-controller.d.ts +0 -78
  1054. package/dist/cli-tui/interrupt-controller.d.ts.map +0 -1
  1055. package/dist/cli-tui/interrupt-controller.js +0 -104
  1056. package/dist/cli-tui/interrupt-controller.js.map +0 -1
  1057. package/dist/cli-tui/keybindings-config.d.ts +0 -27
  1058. package/dist/cli-tui/keybindings-config.d.ts.map +0 -1
  1059. package/dist/cli-tui/keybindings-config.js +0 -372
  1060. package/dist/cli-tui/keybindings-config.js.map +0 -1
  1061. package/dist/cli-tui/keybindings-watcher.d.ts +0 -8
  1062. package/dist/cli-tui/keybindings-watcher.d.ts.map +0 -1
  1063. package/dist/cli-tui/keybindings-watcher.js +0 -56
  1064. package/dist/cli-tui/keybindings-watcher.js.map +0 -1
  1065. package/dist/cli-tui/keybindings.d.ts +0 -13
  1066. package/dist/cli-tui/keybindings.d.ts.map +0 -1
  1067. package/dist/cli-tui/keybindings.js +0 -223
  1068. package/dist/cli-tui/keybindings.js.map +0 -1
  1069. package/dist/cli-tui/loader/loader-stage-manager.d.ts +0 -43
  1070. package/dist/cli-tui/loader/loader-stage-manager.d.ts.map +0 -1
  1071. package/dist/cli-tui/loader/loader-stage-manager.js +0 -241
  1072. package/dist/cli-tui/loader/loader-stage-manager.js.map +0 -1
  1073. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts +0 -14
  1074. package/dist/cli-tui/loader/loader-stage-telemetry.d.ts.map +0 -1
  1075. package/dist/cli-tui/loader/loader-stage-telemetry.js +0 -34
  1076. package/dist/cli-tui/loader/loader-stage-telemetry.js.map +0 -1
  1077. package/dist/cli-tui/loader/loader-view.d.ts +0 -41
  1078. package/dist/cli-tui/loader/loader-view.d.ts.map +0 -1
  1079. package/dist/cli-tui/loader/loader-view.js +0 -162
  1080. package/dist/cli-tui/loader/loader-view.js.map +0 -1
  1081. package/dist/cli-tui/lsp-view.d.ts +0 -21
  1082. package/dist/cli-tui/lsp-view.d.ts.map +0 -1
  1083. package/dist/cli-tui/lsp-view.js +0 -183
  1084. package/dist/cli-tui/lsp-view.js.map +0 -1
  1085. package/dist/cli-tui/mermaid-renderer.d.ts +0 -2
  1086. package/dist/cli-tui/mermaid-renderer.d.ts.map +0 -1
  1087. package/dist/cli-tui/mermaid-renderer.js +0 -391
  1088. package/dist/cli-tui/mermaid-renderer.js.map +0 -1
  1089. package/dist/cli-tui/message-view.d.ts +0 -27
  1090. package/dist/cli-tui/message-view.d.ts.map +0 -1
  1091. package/dist/cli-tui/message-view.js +0 -169
  1092. package/dist/cli-tui/message-view.js.map +0 -1
  1093. package/dist/cli-tui/modal-manager.d.ts +0 -77
  1094. package/dist/cli-tui/modal-manager.d.ts.map +0 -1
  1095. package/dist/cli-tui/modal-manager.js +0 -131
  1096. package/dist/cli-tui/modal-manager.js.map +0 -1
  1097. package/dist/cli-tui/notification-view.d.ts +0 -16
  1098. package/dist/cli-tui/notification-view.d.ts.map +0 -1
  1099. package/dist/cli-tui/notification-view.js +0 -53
  1100. package/dist/cli-tui/notification-view.js.map +0 -1
  1101. package/dist/cli-tui/oauth/index.d.ts +0 -2
  1102. package/dist/cli-tui/oauth/index.d.ts.map +0 -1
  1103. package/dist/cli-tui/oauth/index.js +0 -2
  1104. package/dist/cli-tui/oauth/index.js.map +0 -1
  1105. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +0 -65
  1106. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +0 -1
  1107. package/dist/cli-tui/oauth/oauth-flow-controller.js +0 -400
  1108. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +0 -1
  1109. package/dist/cli-tui/ollama-view.d.ts +0 -38
  1110. package/dist/cli-tui/ollama-view.d.ts.map +0 -1
  1111. package/dist/cli-tui/ollama-view.js +0 -395
  1112. package/dist/cli-tui/ollama-view.js.map +0 -1
  1113. package/dist/cli-tui/paste/index.d.ts +0 -2
  1114. package/dist/cli-tui/paste/index.d.ts.map +0 -1
  1115. package/dist/cli-tui/paste/index.js +0 -2
  1116. package/dist/cli-tui/paste/index.js.map +0 -1
  1117. package/dist/cli-tui/paste/paste-handler.d.ts +0 -54
  1118. package/dist/cli-tui/paste/paste-handler.d.ts.map +0 -1
  1119. package/dist/cli-tui/paste/paste-handler.js +0 -128
  1120. package/dist/cli-tui/paste/paste-handler.js.map +0 -1
  1121. package/dist/cli-tui/plan/plan-controller.d.ts +0 -28
  1122. package/dist/cli-tui/plan/plan-controller.d.ts.map +0 -1
  1123. package/dist/cli-tui/plan/plan-controller.js +0 -66
  1124. package/dist/cli-tui/plan/plan-controller.js.map +0 -1
  1125. package/dist/cli-tui/plan-panel-modal.d.ts +0 -28
  1126. package/dist/cli-tui/plan-panel-modal.d.ts.map +0 -1
  1127. package/dist/cli-tui/plan-panel-modal.js +0 -193
  1128. package/dist/cli-tui/plan-panel-modal.js.map +0 -1
  1129. package/dist/cli-tui/plan-view.d.ts +0 -57
  1130. package/dist/cli-tui/plan-view.d.ts.map +0 -1
  1131. package/dist/cli-tui/plan-view.js +0 -404
  1132. package/dist/cli-tui/plan-view.js.map +0 -1
  1133. package/dist/cli-tui/prompt-queue.d.ts.map +0 -1
  1134. package/dist/cli-tui/prompt-queue.js.map +0 -1
  1135. package/dist/cli-tui/queue/follow-up-shortcut.d.ts +0 -6
  1136. package/dist/cli-tui/queue/follow-up-shortcut.d.ts.map +0 -1
  1137. package/dist/cli-tui/queue/follow-up-shortcut.js +0 -12
  1138. package/dist/cli-tui/queue/follow-up-shortcut.js.map +0 -1
  1139. package/dist/cli-tui/queue/index.d.ts +0 -3
  1140. package/dist/cli-tui/queue/index.d.ts.map +0 -1
  1141. package/dist/cli-tui/queue/index.js +0 -3
  1142. package/dist/cli-tui/queue/index.js.map +0 -1
  1143. package/dist/cli-tui/queue/queue-controller.d.ts +0 -109
  1144. package/dist/cli-tui/queue/queue-controller.d.ts.map +0 -1
  1145. package/dist/cli-tui/queue/queue-controller.js +0 -327
  1146. package/dist/cli-tui/queue/queue-controller.js.map +0 -1
  1147. package/dist/cli-tui/queue/queue-panel-controller.d.ts +0 -34
  1148. package/dist/cli-tui/queue/queue-panel-controller.d.ts.map +0 -1
  1149. package/dist/cli-tui/queue/queue-panel-controller.js +0 -163
  1150. package/dist/cli-tui/queue/queue-panel-controller.js.map +0 -1
  1151. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts +0 -7
  1152. package/dist/cli-tui/queue/queued-follow-up-edit-binding.d.ts.map +0 -1
  1153. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js +0 -14
  1154. package/dist/cli-tui/queue/queued-follow-up-edit-binding.js.map +0 -1
  1155. package/dist/cli-tui/queue-panel-modal.d.ts +0 -26
  1156. package/dist/cli-tui/queue-panel-modal.d.ts.map +0 -1
  1157. package/dist/cli-tui/queue-panel-modal.js +0 -159
  1158. package/dist/cli-tui/queue-panel-modal.js.map +0 -1
  1159. package/dist/cli-tui/run/run-command-view.d.ts +0 -17
  1160. package/dist/cli-tui/run/run-command-view.d.ts.map +0 -1
  1161. package/dist/cli-tui/run/run-command-view.js +0 -62
  1162. package/dist/cli-tui/run/run-command-view.js.map +0 -1
  1163. package/dist/cli-tui/run/run-controller.d.ts +0 -24
  1164. package/dist/cli-tui/run/run-controller.d.ts.map +0 -1
  1165. package/dist/cli-tui/run/run-controller.js +0 -38
  1166. package/dist/cli-tui/run/run-controller.js.map +0 -1
  1167. package/dist/cli-tui/run/run-shell-command.d.ts +0 -13
  1168. package/dist/cli-tui/run/run-shell-command.d.ts.map +0 -1
  1169. package/dist/cli-tui/run/run-shell-command.js +0 -51
  1170. package/dist/cli-tui/run/run-shell-command.js.map +0 -1
  1171. package/dist/cli-tui/run/streaming-shell-command.d.ts +0 -19
  1172. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +0 -1
  1173. package/dist/cli-tui/run/streaming-shell-command.js +0 -107
  1174. package/dist/cli-tui/run/streaming-shell-command.js.map +0 -1
  1175. package/dist/cli-tui/search/file-search-view.d.ts +0 -22
  1176. package/dist/cli-tui/search/file-search-view.d.ts.map +0 -1
  1177. package/dist/cli-tui/search/file-search-view.js +0 -68
  1178. package/dist/cli-tui/search/file-search-view.js.map +0 -1
  1179. package/dist/cli-tui/search/file-search.d.ts +0 -13
  1180. package/dist/cli-tui/search/file-search.d.ts.map +0 -1
  1181. package/dist/cli-tui/search/file-search.js +0 -52
  1182. package/dist/cli-tui/search/file-search.js.map +0 -1
  1183. package/dist/cli-tui/security-status.d.ts +0 -83
  1184. package/dist/cli-tui/security-status.d.ts.map +0 -1
  1185. package/dist/cli-tui/security-status.js +0 -214
  1186. package/dist/cli-tui/security-status.js.map +0 -1
  1187. package/dist/cli-tui/selectors/base-selector.d.ts +0 -27
  1188. package/dist/cli-tui/selectors/base-selector.d.ts.map +0 -1
  1189. package/dist/cli-tui/selectors/base-selector.js +0 -47
  1190. package/dist/cli-tui/selectors/base-selector.js.map +0 -1
  1191. package/dist/cli-tui/selectors/branch-summary-modal.d.ts +0 -18
  1192. package/dist/cli-tui/selectors/branch-summary-modal.d.ts.map +0 -1
  1193. package/dist/cli-tui/selectors/branch-summary-modal.js +0 -24
  1194. package/dist/cli-tui/selectors/branch-summary-modal.js.map +0 -1
  1195. package/dist/cli-tui/selectors/model-selector-view.d.ts +0 -22
  1196. package/dist/cli-tui/selectors/model-selector-view.d.ts.map +0 -1
  1197. package/dist/cli-tui/selectors/model-selector-view.js +0 -31
  1198. package/dist/cli-tui/selectors/model-selector-view.js.map +0 -1
  1199. package/dist/cli-tui/selectors/model-selector.d.ts +0 -30
  1200. package/dist/cli-tui/selectors/model-selector.d.ts.map +0 -1
  1201. package/dist/cli-tui/selectors/model-selector.js +0 -218
  1202. package/dist/cli-tui/selectors/model-selector.js.map +0 -1
  1203. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +0 -20
  1204. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +0 -1
  1205. package/dist/cli-tui/selectors/oauth-selector-view.js +0 -28
  1206. package/dist/cli-tui/selectors/oauth-selector-view.js.map +0 -1
  1207. package/dist/cli-tui/selectors/oauth-selector.d.ts +0 -19
  1208. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +0 -1
  1209. package/dist/cli-tui/selectors/oauth-selector.js +0 -120
  1210. package/dist/cli-tui/selectors/oauth-selector.js.map +0 -1
  1211. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts +0 -19
  1212. package/dist/cli-tui/selectors/queue-mode-selector-view.d.ts.map +0 -1
  1213. package/dist/cli-tui/selectors/queue-mode-selector-view.js +0 -29
  1214. package/dist/cli-tui/selectors/queue-mode-selector-view.js.map +0 -1
  1215. package/dist/cli-tui/selectors/queue-mode-selector.d.ts +0 -5
  1216. package/dist/cli-tui/selectors/queue-mode-selector.d.ts.map +0 -1
  1217. package/dist/cli-tui/selectors/queue-mode-selector.js +0 -34
  1218. package/dist/cli-tui/selectors/queue-mode-selector.js.map +0 -1
  1219. package/dist/cli-tui/selectors/report-selector-view.d.ts +0 -17
  1220. package/dist/cli-tui/selectors/report-selector-view.d.ts.map +0 -1
  1221. package/dist/cli-tui/selectors/report-selector-view.js +0 -29
  1222. package/dist/cli-tui/selectors/report-selector-view.js.map +0 -1
  1223. package/dist/cli-tui/selectors/report-selector.d.ts +0 -7
  1224. package/dist/cli-tui/selectors/report-selector.d.ts.map +0 -1
  1225. package/dist/cli-tui/selectors/report-selector.js +0 -31
  1226. package/dist/cli-tui/selectors/report-selector.js.map +0 -1
  1227. package/dist/cli-tui/selectors/theme-selector-view.d.ts +0 -19
  1228. package/dist/cli-tui/selectors/theme-selector-view.d.ts.map +0 -1
  1229. package/dist/cli-tui/selectors/theme-selector-view.js +0 -41
  1230. package/dist/cli-tui/selectors/theme-selector-view.js.map +0 -1
  1231. package/dist/cli-tui/selectors/theme-selector.d.ts +0 -14
  1232. package/dist/cli-tui/selectors/theme-selector.d.ts.map +0 -1
  1233. package/dist/cli-tui/selectors/theme-selector.js +0 -46
  1234. package/dist/cli-tui/selectors/theme-selector.js.map +0 -1
  1235. package/dist/cli-tui/selectors/thinking-selector-view.d.ts +0 -20
  1236. package/dist/cli-tui/selectors/thinking-selector-view.d.ts.map +0 -1
  1237. package/dist/cli-tui/selectors/thinking-selector-view.js +0 -31
  1238. package/dist/cli-tui/selectors/thinking-selector-view.js.map +0 -1
  1239. package/dist/cli-tui/selectors/thinking-selector.d.ts +0 -9
  1240. package/dist/cli-tui/selectors/thinking-selector.d.ts.map +0 -1
  1241. package/dist/cli-tui/selectors/thinking-selector.js +0 -47
  1242. package/dist/cli-tui/selectors/thinking-selector.js.map +0 -1
  1243. package/dist/cli-tui/selectors/tree-selector-view.d.ts +0 -32
  1244. package/dist/cli-tui/selectors/tree-selector-view.d.ts.map +0 -1
  1245. package/dist/cli-tui/selectors/tree-selector-view.js +0 -407
  1246. package/dist/cli-tui/selectors/tree-selector-view.js.map +0 -1
  1247. package/dist/cli-tui/selectors/tree-selector.d.ts +0 -27
  1248. package/dist/cli-tui/selectors/tree-selector.d.ts.map +0 -1
  1249. package/dist/cli-tui/selectors/tree-selector.js +0 -194
  1250. package/dist/cli-tui/selectors/tree-selector.js.map +0 -1
  1251. package/dist/cli-tui/selectors/user-message-selector-view.d.ts +0 -25
  1252. package/dist/cli-tui/selectors/user-message-selector-view.d.ts.map +0 -1
  1253. package/dist/cli-tui/selectors/user-message-selector-view.js +0 -101
  1254. package/dist/cli-tui/selectors/user-message-selector-view.js.map +0 -1
  1255. package/dist/cli-tui/selectors/user-message-selector.d.ts +0 -30
  1256. package/dist/cli-tui/selectors/user-message-selector.d.ts.map +0 -1
  1257. package/dist/cli-tui/selectors/user-message-selector.js +0 -114
  1258. package/dist/cli-tui/selectors/user-message-selector.js.map +0 -1
  1259. package/dist/cli-tui/session/branch-controller.d.ts +0 -65
  1260. package/dist/cli-tui/session/branch-controller.d.ts.map +0 -1
  1261. package/dist/cli-tui/session/branch-controller.js +0 -125
  1262. package/dist/cli-tui/session/branch-controller.js.map +0 -1
  1263. package/dist/cli-tui/session/conversation-compactor.d.ts +0 -64
  1264. package/dist/cli-tui/session/conversation-compactor.d.ts.map +0 -1
  1265. package/dist/cli-tui/session/conversation-compactor.js +0 -77
  1266. package/dist/cli-tui/session/conversation-compactor.js.map +0 -1
  1267. package/dist/cli-tui/session/session-context.d.ts +0 -59
  1268. package/dist/cli-tui/session/session-context.d.ts.map +0 -1
  1269. package/dist/cli-tui/session/session-context.js +0 -79
  1270. package/dist/cli-tui/session/session-context.js.map +0 -1
  1271. package/dist/cli-tui/session/session-data-provider.d.ts +0 -23
  1272. package/dist/cli-tui/session/session-data-provider.d.ts.map +0 -1
  1273. package/dist/cli-tui/session/session-data-provider.js +0 -22
  1274. package/dist/cli-tui/session/session-data-provider.js.map +0 -1
  1275. package/dist/cli-tui/session/session-list.d.ts +0 -18
  1276. package/dist/cli-tui/session/session-list.d.ts.map +0 -1
  1277. package/dist/cli-tui/session/session-list.js +0 -103
  1278. package/dist/cli-tui/session/session-list.js.map +0 -1
  1279. package/dist/cli-tui/session/session-selector.d.ts +0 -12
  1280. package/dist/cli-tui/session/session-selector.d.ts.map +0 -1
  1281. package/dist/cli-tui/session/session-selector.js +0 -37
  1282. package/dist/cli-tui/session/session-selector.js.map +0 -1
  1283. package/dist/cli-tui/session/session-summary-controller.d.ts +0 -24
  1284. package/dist/cli-tui/session/session-summary-controller.d.ts.map +0 -1
  1285. package/dist/cli-tui/session/session-summary-controller.js +0 -96
  1286. package/dist/cli-tui/session/session-summary-controller.js.map +0 -1
  1287. package/dist/cli-tui/session/session-switcher-view.d.ts +0 -20
  1288. package/dist/cli-tui/session/session-switcher-view.d.ts.map +0 -1
  1289. package/dist/cli-tui/session/session-switcher-view.js +0 -43
  1290. package/dist/cli-tui/session/session-switcher-view.js.map +0 -1
  1291. package/dist/cli-tui/session/session-switcher.d.ts +0 -38
  1292. package/dist/cli-tui/session/session-switcher.d.ts.map +0 -1
  1293. package/dist/cli-tui/session/session-switcher.js +0 -204
  1294. package/dist/cli-tui/session/session-switcher.js.map +0 -1
  1295. package/dist/cli-tui/session/session-view.d.ts +0 -46
  1296. package/dist/cli-tui/session/session-view.d.ts.map +0 -1
  1297. package/dist/cli-tui/session/session-view.js +0 -311
  1298. package/dist/cli-tui/session/session-view.js.map +0 -1
  1299. package/dist/cli-tui/slash/index.d.ts +0 -2
  1300. package/dist/cli-tui/slash/index.d.ts.map +0 -1
  1301. package/dist/cli-tui/slash/index.js +0 -2
  1302. package/dist/cli-tui/slash/index.js.map +0 -1
  1303. package/dist/cli-tui/slash/slash-command-matcher.d.ts +0 -55
  1304. package/dist/cli-tui/slash/slash-command-matcher.d.ts.map +0 -1
  1305. package/dist/cli-tui/slash/slash-command-matcher.js +0 -113
  1306. package/dist/cli-tui/slash/slash-command-matcher.js.map +0 -1
  1307. package/dist/cli-tui/smart-autocomplete-provider.d.ts +0 -5
  1308. package/dist/cli-tui/smart-autocomplete-provider.d.ts.map +0 -1
  1309. package/dist/cli-tui/smart-autocomplete-provider.js +0 -44
  1310. package/dist/cli-tui/smart-autocomplete-provider.js.map +0 -1
  1311. package/dist/cli-tui/startup-announcements.d.ts +0 -15
  1312. package/dist/cli-tui/startup-announcements.d.ts.map +0 -1
  1313. package/dist/cli-tui/startup-announcements.js +0 -75
  1314. package/dist/cli-tui/startup-announcements.js.map +0 -1
  1315. package/dist/cli-tui/status/cost-view.d.ts +0 -27
  1316. package/dist/cli-tui/status/cost-view.d.ts.map +0 -1
  1317. package/dist/cli-tui/status/cost-view.js +0 -212
  1318. package/dist/cli-tui/status/cost-view.js.map +0 -1
  1319. package/dist/cli-tui/status/diagnostics-templates.d.ts +0 -34
  1320. package/dist/cli-tui/status/diagnostics-templates.d.ts.map +0 -1
  1321. package/dist/cli-tui/status/diagnostics-templates.js +0 -167
  1322. package/dist/cli-tui/status/diagnostics-templates.js.map +0 -1
  1323. package/dist/cli-tui/status/diagnostics-view.d.ts +0 -48
  1324. package/dist/cli-tui/status/diagnostics-view.d.ts.map +0 -1
  1325. package/dist/cli-tui/status/diagnostics-view.js +0 -249
  1326. package/dist/cli-tui/status/diagnostics-view.js.map +0 -1
  1327. package/dist/cli-tui/status/diagnostics.d.ts +0 -39
  1328. package/dist/cli-tui/status/diagnostics.d.ts.map +0 -1
  1329. package/dist/cli-tui/status/diagnostics.js +0 -286
  1330. package/dist/cli-tui/status/diagnostics.js.map +0 -1
  1331. package/dist/cli-tui/status/health-snapshot.d.ts +0 -17
  1332. package/dist/cli-tui/status/health-snapshot.d.ts.map +0 -1
  1333. package/dist/cli-tui/status/health-snapshot.js +0 -28
  1334. package/dist/cli-tui/status/health-snapshot.js.map +0 -1
  1335. package/dist/cli-tui/status/quota-view.d.ts +0 -37
  1336. package/dist/cli-tui/status/quota-view.d.ts.map +0 -1
  1337. package/dist/cli-tui/status/quota-view.js +0 -309
  1338. package/dist/cli-tui/status/quota-view.js.map +0 -1
  1339. package/dist/cli-tui/status/telemetry-view.d.ts +0 -23
  1340. package/dist/cli-tui/status/telemetry-view.d.ts.map +0 -1
  1341. package/dist/cli-tui/status/telemetry-view.js +0 -77
  1342. package/dist/cli-tui/status/telemetry-view.js.map +0 -1
  1343. package/dist/cli-tui/status/training-view.d.ts +0 -23
  1344. package/dist/cli-tui/status/training-view.d.ts.map +0 -1
  1345. package/dist/cli-tui/status/training-view.js +0 -71
  1346. package/dist/cli-tui/status/training-view.js.map +0 -1
  1347. package/dist/cli-tui/streaming-view.d.ts +0 -43
  1348. package/dist/cli-tui/streaming-view.d.ts.map +0 -1
  1349. package/dist/cli-tui/streaming-view.js +0 -176
  1350. package/dist/cli-tui/streaming-view.js.map +0 -1
  1351. package/dist/cli-tui/terminal/index.d.ts +0 -2
  1352. package/dist/cli-tui/terminal/index.d.ts.map +0 -1
  1353. package/dist/cli-tui/terminal/index.js +0 -2
  1354. package/dist/cli-tui/terminal/index.js.map +0 -1
  1355. package/dist/cli-tui/terminal/terminal-utils.d.ts +0 -44
  1356. package/dist/cli-tui/terminal/terminal-utils.d.ts.map +0 -1
  1357. package/dist/cli-tui/terminal/terminal-utils.js +0 -145
  1358. package/dist/cli-tui/terminal/terminal-utils.js.map +0 -1
  1359. package/dist/cli-tui/tips/tip-scheduler.d.ts +0 -19
  1360. package/dist/cli-tui/tips/tip-scheduler.d.ts.map +0 -1
  1361. package/dist/cli-tui/tips/tip-scheduler.js +0 -135
  1362. package/dist/cli-tui/tips/tip-scheduler.js.map +0 -1
  1363. package/dist/cli-tui/tool-execution.d.ts +0 -76
  1364. package/dist/cli-tui/tool-execution.d.ts.map +0 -1
  1365. package/dist/cli-tui/tool-execution.js +0 -217
  1366. package/dist/cli-tui/tool-execution.js.map +0 -1
  1367. package/dist/cli-tui/tool-output-view.d.ts +0 -22
  1368. package/dist/cli-tui/tool-output-view.d.ts.map +0 -1
  1369. package/dist/cli-tui/tool-output-view.js +0 -71
  1370. package/dist/cli-tui/tool-output-view.js.map +0 -1
  1371. package/dist/cli-tui/tool-renderers/index.d.ts +0 -4
  1372. package/dist/cli-tui/tool-renderers/index.d.ts.map +0 -1
  1373. package/dist/cli-tui/tool-renderers/index.js +0 -19
  1374. package/dist/cli-tui/tool-renderers/index.js.map +0 -1
  1375. package/dist/cli-tui/tool-renderers/render-bash.d.ts +0 -6
  1376. package/dist/cli-tui/tool-renderers/render-bash.d.ts.map +0 -1
  1377. package/dist/cli-tui/tool-renderers/render-bash.js +0 -90
  1378. package/dist/cli-tui/tool-renderers/render-bash.js.map +0 -1
  1379. package/dist/cli-tui/tool-renderers/render-batch.d.ts +0 -12
  1380. package/dist/cli-tui/tool-renderers/render-batch.d.ts.map +0 -1
  1381. package/dist/cli-tui/tool-renderers/render-batch.js +0 -133
  1382. package/dist/cli-tui/tool-renderers/render-batch.js.map +0 -1
  1383. package/dist/cli-tui/tool-renderers/render-edit.d.ts +0 -6
  1384. package/dist/cli-tui/tool-renderers/render-edit.d.ts.map +0 -1
  1385. package/dist/cli-tui/tool-renderers/render-edit.js +0 -125
  1386. package/dist/cli-tui/tool-renderers/render-edit.js.map +0 -1
  1387. package/dist/cli-tui/tool-renderers/render-generic.d.ts +0 -6
  1388. package/dist/cli-tui/tool-renderers/render-generic.d.ts.map +0 -1
  1389. package/dist/cli-tui/tool-renderers/render-generic.js +0 -66
  1390. package/dist/cli-tui/tool-renderers/render-generic.js.map +0 -1
  1391. package/dist/cli-tui/tool-renderers/render-read.d.ts +0 -9
  1392. package/dist/cli-tui/tool-renderers/render-read.d.ts.map +0 -1
  1393. package/dist/cli-tui/tool-renderers/render-read.js +0 -108
  1394. package/dist/cli-tui/tool-renderers/render-read.js.map +0 -1
  1395. package/dist/cli-tui/tool-renderers/render-style.d.ts +0 -21
  1396. package/dist/cli-tui/tool-renderers/render-style.d.ts.map +0 -1
  1397. package/dist/cli-tui/tool-renderers/render-style.js +0 -51
  1398. package/dist/cli-tui/tool-renderers/render-style.js.map +0 -1
  1399. package/dist/cli-tui/tool-renderers/render-write.d.ts +0 -5
  1400. package/dist/cli-tui/tool-renderers/render-write.d.ts.map +0 -1
  1401. package/dist/cli-tui/tool-renderers/render-write.js +0 -60
  1402. package/dist/cli-tui/tool-renderers/render-write.js.map +0 -1
  1403. package/dist/cli-tui/tool-renderers/types.d.ts +0 -20
  1404. package/dist/cli-tui/tool-renderers/types.d.ts.map +0 -1
  1405. package/dist/cli-tui/tool-renderers/types.js +0 -2
  1406. package/dist/cli-tui/tool-renderers/types.js.map +0 -1
  1407. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts +0 -29
  1408. package/dist/cli-tui/tool-retry/tool-retry-controller.d.ts.map +0 -1
  1409. package/dist/cli-tui/tool-retry/tool-retry-controller.js +0 -110
  1410. package/dist/cli-tui/tool-retry/tool-retry-controller.js.map +0 -1
  1411. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts +0 -27
  1412. package/dist/cli-tui/tool-retry/tool-retry-modal.d.ts.map +0 -1
  1413. package/dist/cli-tui/tool-retry/tool-retry-modal.js +0 -118
  1414. package/dist/cli-tui/tool-retry/tool-retry-modal.js.map +0 -1
  1415. package/dist/cli-tui/tool-status-view.d.ts +0 -32
  1416. package/dist/cli-tui/tool-status-view.d.ts.map +0 -1
  1417. package/dist/cli-tui/tool-status-view.js +0 -86
  1418. package/dist/cli-tui/tool-status-view.js.map +0 -1
  1419. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +0 -59
  1420. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +0 -1
  1421. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +0 -129
  1422. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +0 -1
  1423. package/dist/cli-tui/tui-renderer/approval-setup.d.ts +0 -13
  1424. package/dist/cli-tui/tui-renderer/approval-setup.d.ts.map +0 -1
  1425. package/dist/cli-tui/tui-renderer/approval-setup.js +0 -5
  1426. package/dist/cli-tui/tui-renderer/approval-setup.js.map +0 -1
  1427. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts +0 -54
  1428. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts.map +0 -1
  1429. package/dist/cli-tui/tui-renderer/attachment-controller.js +0 -160
  1430. package/dist/cli-tui/tui-renderer/attachment-controller.js.map +0 -1
  1431. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts +0 -9
  1432. package/dist/cli-tui/tui-renderer/background-tasks-setup.d.ts.map +0 -1
  1433. package/dist/cli-tui/tui-renderer/background-tasks-setup.js +0 -7
  1434. package/dist/cli-tui/tui-renderer/background-tasks-setup.js.map +0 -1
  1435. package/dist/cli-tui/tui-renderer/branch-controller.d.ts +0 -41
  1436. package/dist/cli-tui/tui-renderer/branch-controller.d.ts.map +0 -1
  1437. package/dist/cli-tui/tui-renderer/branch-controller.js +0 -102
  1438. package/dist/cli-tui/tui-renderer/branch-controller.js.map +0 -1
  1439. package/dist/cli-tui/tui-renderer/clear-controller.d.ts +0 -75
  1440. package/dist/cli-tui/tui-renderer/clear-controller.d.ts.map +0 -1
  1441. package/dist/cli-tui/tui-renderer/clear-controller.js +0 -75
  1442. package/dist/cli-tui/tui-renderer/clear-controller.js.map +0 -1
  1443. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts +0 -14
  1444. package/dist/cli-tui/tui-renderer/client-tools-setup.d.ts.map +0 -1
  1445. package/dist/cli-tui/tui-renderer/client-tools-setup.js +0 -5
  1446. package/dist/cli-tui/tui-renderer/client-tools-setup.js.map +0 -1
  1447. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +0 -111
  1448. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +0 -1
  1449. package/dist/cli-tui/tui-renderer/command-registry-options.js +0 -163
  1450. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +0 -1
  1451. package/dist/cli-tui/tui-renderer/command-registry.d.ts +0 -16
  1452. package/dist/cli-tui/tui-renderer/command-registry.d.ts.map +0 -1
  1453. package/dist/cli-tui/tui-renderer/command-registry.js +0 -23
  1454. package/dist/cli-tui/tui-renderer/command-registry.js.map +0 -1
  1455. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +0 -29
  1456. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +0 -1
  1457. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +0 -108
  1458. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +0 -1
  1459. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts +0 -100
  1460. package/dist/cli-tui/tui-renderer/compaction-controller.d.ts.map +0 -1
  1461. package/dist/cli-tui/tui-renderer/compaction-controller.js +0 -160
  1462. package/dist/cli-tui/tui-renderer/compaction-controller.js.map +0 -1
  1463. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts +0 -42
  1464. package/dist/cli-tui/tui-renderer/custom-commands-controller.d.ts.map +0 -1
  1465. package/dist/cli-tui/tui-renderer/custom-commands-controller.js +0 -106
  1466. package/dist/cli-tui/tui-renderer/custom-commands-controller.js.map +0 -1
  1467. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts +0 -37
  1468. package/dist/cli-tui/tui-renderer/delegating-command-handlers.d.ts.map +0 -1
  1469. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js +0 -139
  1470. package/dist/cli-tui/tui-renderer/delegating-command-handlers.js.map +0 -1
  1471. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts +0 -21
  1472. package/dist/cli-tui/tui-renderer/editor-bindings.d.ts.map +0 -1
  1473. package/dist/cli-tui/tui-renderer/editor-bindings.js +0 -76
  1474. package/dist/cli-tui/tui-renderer/editor-bindings.js.map +0 -1
  1475. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts +0 -90
  1476. package/dist/cli-tui/tui-renderer/footer-hints-controller.d.ts.map +0 -1
  1477. package/dist/cli-tui/tui-renderer/footer-hints-controller.js +0 -152
  1478. package/dist/cli-tui/tui-renderer/footer-hints-controller.js.map +0 -1
  1479. package/dist/cli-tui/tui-renderer/history-controller.d.ts +0 -35
  1480. package/dist/cli-tui/tui-renderer/history-controller.d.ts.map +0 -1
  1481. package/dist/cli-tui/tui-renderer/history-controller.js +0 -153
  1482. package/dist/cli-tui/tui-renderer/history-controller.js.map +0 -1
  1483. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts +0 -83
  1484. package/dist/cli-tui/tui-renderer/hook-ui-controller.d.ts.map +0 -1
  1485. package/dist/cli-tui/tui-renderer/hook-ui-controller.js +0 -309
  1486. package/dist/cli-tui/tui-renderer/hook-ui-controller.js.map +0 -1
  1487. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts +0 -19
  1488. package/dist/cli-tui/tui-renderer/initial-preferences.d.ts.map +0 -1
  1489. package/dist/cli-tui/tui-renderer/initial-preferences.js +0 -54
  1490. package/dist/cli-tui/tui-renderer/initial-preferences.js.map +0 -1
  1491. package/dist/cli-tui/tui-renderer/input-controller.d.ts +0 -56
  1492. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +0 -1
  1493. package/dist/cli-tui/tui-renderer/input-controller.js +0 -104
  1494. package/dist/cli-tui/tui-renderer/input-controller.js.map +0 -1
  1495. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts +0 -19
  1496. package/dist/cli-tui/tui-renderer/interrupt-setup.d.ts.map +0 -1
  1497. package/dist/cli-tui/tui-renderer/interrupt-setup.js +0 -18
  1498. package/dist/cli-tui/tui-renderer/interrupt-setup.js.map +0 -1
  1499. package/dist/cli-tui/tui-renderer/loader-setup.d.ts +0 -14
  1500. package/dist/cli-tui/tui-renderer/loader-setup.d.ts.map +0 -1
  1501. package/dist/cli-tui/tui-renderer/loader-setup.js +0 -13
  1502. package/dist/cli-tui/tui-renderer/loader-setup.js.map +0 -1
  1503. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts +0 -55
  1504. package/dist/cli-tui/tui-renderer/mcp-events-setup.d.ts.map +0 -1
  1505. package/dist/cli-tui/tui-renderer/mcp-events-setup.js +0 -143
  1506. package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +0 -1
  1507. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts +0 -59
  1508. package/dist/cli-tui/tui-renderer/misc-handlers.d.ts.map +0 -1
  1509. package/dist/cli-tui/tui-renderer/misc-handlers.js +0 -143
  1510. package/dist/cli-tui/tui-renderer/misc-handlers.js.map +0 -1
  1511. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts +0 -14
  1512. package/dist/cli-tui/tui-renderer/oauth-setup.d.ts.map +0 -1
  1513. package/dist/cli-tui/tui-renderer/oauth-setup.js +0 -26
  1514. package/dist/cli-tui/tui-renderer/oauth-setup.js.map +0 -1
  1515. package/dist/cli-tui/tui-renderer/plan-setup.d.ts +0 -19
  1516. package/dist/cli-tui/tui-renderer/plan-setup.d.ts.map +0 -1
  1517. package/dist/cli-tui/tui-renderer/plan-setup.js +0 -23
  1518. package/dist/cli-tui/tui-renderer/plan-setup.js.map +0 -1
  1519. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts +0 -21
  1520. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.d.ts.map +0 -1
  1521. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js +0 -64
  1522. package/dist/cli-tui/tui-renderer/prompt-template-slash-commands.js.map +0 -1
  1523. package/dist/cli-tui/tui-renderer/queue-setup.d.ts +0 -18
  1524. package/dist/cli-tui/tui-renderer/queue-setup.d.ts.map +0 -1
  1525. package/dist/cli-tui/tui-renderer/queue-setup.js +0 -42
  1526. package/dist/cli-tui/tui-renderer/queue-setup.js.map +0 -1
  1527. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts +0 -53
  1528. package/dist/cli-tui/tui-renderer/quick-settings-controller.d.ts.map +0 -1
  1529. package/dist/cli-tui/tui-renderer/quick-settings-controller.js +0 -100
  1530. package/dist/cli-tui/tui-renderer/quick-settings-controller.js.map +0 -1
  1531. package/dist/cli-tui/tui-renderer/session-setup.d.ts +0 -31
  1532. package/dist/cli-tui/tui-renderer/session-setup.d.ts.map +0 -1
  1533. package/dist/cli-tui/tui-renderer/session-setup.js +0 -45
  1534. package/dist/cli-tui/tui-renderer/session-setup.js.map +0 -1
  1535. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts +0 -66
  1536. package/dist/cli-tui/tui-renderer/session-state-controller.d.ts.map +0 -1
  1537. package/dist/cli-tui/tui-renderer/session-state-controller.js +0 -139
  1538. package/dist/cli-tui/tui-renderer/session-state-controller.js.map +0 -1
  1539. package/dist/cli-tui/tui-renderer/skills-controller.d.ts +0 -70
  1540. package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +0 -1
  1541. package/dist/cli-tui/tui-renderer/skills-controller.js +0 -411
  1542. package/dist/cli-tui/tui-renderer/skills-controller.js.map +0 -1
  1543. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts +0 -90
  1544. package/dist/cli-tui/tui-renderer/slash-hint-controller.d.ts.map +0 -1
  1545. package/dist/cli-tui/tui-renderer/slash-hint-controller.js +0 -131
  1546. package/dist/cli-tui/tui-renderer/slash-hint-controller.js.map +0 -1
  1547. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts +0 -13
  1548. package/dist/cli-tui/tui-renderer/tool-retry-setup.d.ts.map +0 -1
  1549. package/dist/cli-tui/tui-renderer/tool-retry-setup.js +0 -5
  1550. package/dist/cli-tui/tui-renderer/tool-retry-setup.js.map +0 -1
  1551. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts +0 -38
  1552. package/dist/cli-tui/tui-renderer/tooling-views-setup.d.ts.map +0 -1
  1553. package/dist/cli-tui/tui-renderer/tooling-views-setup.js +0 -48
  1554. package/dist/cli-tui/tui-renderer/tooling-views-setup.js.map +0 -1
  1555. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +0 -70
  1556. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +0 -1
  1557. package/dist/cli-tui/tui-renderer/ui-state-controller.js +0 -184
  1558. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +0 -1
  1559. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts +0 -13
  1560. package/dist/cli-tui/tui-renderer/ui-state-setup.d.ts.map +0 -1
  1561. package/dist/cli-tui/tui-renderer/ui-state-setup.js +0 -11
  1562. package/dist/cli-tui/tui-renderer/ui-state-setup.js.map +0 -1
  1563. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts +0 -26
  1564. package/dist/cli-tui/tui-renderer/utility-views-setup.d.ts.map +0 -1
  1565. package/dist/cli-tui/tui-renderer/utility-views-setup.js +0 -23
  1566. package/dist/cli-tui/tui-renderer/utility-views-setup.js.map +0 -1
  1567. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts +0 -33
  1568. package/dist/cli-tui/tui-renderer/viewport-controller.d.ts.map +0 -1
  1569. package/dist/cli-tui/tui-renderer/viewport-controller.js +0 -98
  1570. package/dist/cli-tui/tui-renderer/viewport-controller.js.map +0 -1
  1571. package/dist/cli-tui/tui-renderer.d.ts +0 -268
  1572. package/dist/cli-tui/tui-renderer.d.ts.map +0 -1
  1573. package/dist/cli-tui/tui-renderer.js +0 -2131
  1574. package/dist/cli-tui/tui-renderer.js.map +0 -1
  1575. package/dist/cli-tui/ui-state.d.ts +0 -27
  1576. package/dist/cli-tui/ui-state.d.ts.map +0 -1
  1577. package/dist/cli-tui/ui-state.js +0 -88
  1578. package/dist/cli-tui/ui-state.js.map +0 -1
  1579. package/dist/cli-tui/update-view.d.ts +0 -16
  1580. package/dist/cli-tui/update-view.d.ts.map +0 -1
  1581. package/dist/cli-tui/update-view.js +0 -45
  1582. package/dist/cli-tui/update-view.js.map +0 -1
  1583. package/dist/cli-tui/user-message.d.ts +0 -17
  1584. package/dist/cli-tui/user-message.d.ts.map +0 -1
  1585. package/dist/cli-tui/user-message.js +0 -83
  1586. package/dist/cli-tui/user-message.js.map +0 -1
  1587. package/dist/cli-tui/utils/borders.d.ts +0 -131
  1588. package/dist/cli-tui/utils/borders.d.ts.map +0 -1
  1589. package/dist/cli-tui/utils/borders.js +0 -254
  1590. package/dist/cli-tui/utils/borders.js.map +0 -1
  1591. package/dist/cli-tui/utils/commands/command-palette-view.d.ts +0 -22
  1592. package/dist/cli-tui/utils/commands/command-palette-view.d.ts.map +0 -1
  1593. package/dist/cli-tui/utils/commands/command-palette-view.js +0 -31
  1594. package/dist/cli-tui/utils/commands/command-palette-view.js.map +0 -1
  1595. package/dist/cli-tui/utils/commands/command-palette.d.ts +0 -29
  1596. package/dist/cli-tui/utils/commands/command-palette.d.ts.map +0 -1
  1597. package/dist/cli-tui/utils/commands/command-palette.js +0 -213
  1598. package/dist/cli-tui/utils/commands/command-palette.js.map +0 -1
  1599. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts +0 -8
  1600. package/dist/cli-tui/utils/commands/command-registry-builder.d.ts.map +0 -1
  1601. package/dist/cli-tui/utils/commands/command-registry-builder.js +0 -9
  1602. package/dist/cli-tui/utils/commands/command-registry-builder.js.map +0 -1
  1603. package/dist/cli-tui/utils/commands/review-prompt.d.ts +0 -10
  1604. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +0 -1
  1605. package/dist/cli-tui/utils/commands/review-prompt.js +0 -90
  1606. package/dist/cli-tui/utils/commands/review-prompt.js.map +0 -1
  1607. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts +0 -15
  1608. package/dist/cli-tui/utils/commands/slash-hint-bar.d.ts.map +0 -1
  1609. package/dist/cli-tui/utils/commands/slash-hint-bar.js +0 -106
  1610. package/dist/cli-tui/utils/commands/slash-hint-bar.js.map +0 -1
  1611. package/dist/cli-tui/utils/env-detect.d.ts +0 -11
  1612. package/dist/cli-tui/utils/env-detect.d.ts.map +0 -1
  1613. package/dist/cli-tui/utils/env-detect.js +0 -107
  1614. package/dist/cli-tui/utils/env-detect.js.map +0 -1
  1615. package/dist/cli-tui/utils/external-editor.d.ts +0 -7
  1616. package/dist/cli-tui/utils/external-editor.d.ts.map +0 -1
  1617. package/dist/cli-tui/utils/external-editor.js +0 -53
  1618. package/dist/cli-tui/utils/external-editor.js.map +0 -1
  1619. package/dist/cli-tui/utils/footer-utils.d.ts +0 -169
  1620. package/dist/cli-tui/utils/footer-utils.d.ts.map +0 -1
  1621. package/dist/cli-tui/utils/footer-utils.js +0 -716
  1622. package/dist/cli-tui/utils/footer-utils.js.map +0 -1
  1623. package/dist/cli-tui/utils/footer-visual-widgets.d.ts +0 -38
  1624. package/dist/cli-tui/utils/footer-visual-widgets.d.ts.map +0 -1
  1625. package/dist/cli-tui/utils/footer-visual-widgets.js +0 -141
  1626. package/dist/cli-tui/utils/footer-visual-widgets.js.map +0 -1
  1627. package/dist/cli-tui/utils/git-branch-tracker.d.ts +0 -38
  1628. package/dist/cli-tui/utils/git-branch-tracker.d.ts.map +0 -1
  1629. package/dist/cli-tui/utils/git-branch-tracker.js +0 -90
  1630. package/dist/cli-tui/utils/git-branch-tracker.js.map +0 -1
  1631. package/dist/cli-tui/utils/glyphs.d.ts +0 -207
  1632. package/dist/cli-tui/utils/glyphs.d.ts.map +0 -1
  1633. package/dist/cli-tui/utils/glyphs.js +0 -249
  1634. package/dist/cli-tui/utils/glyphs.js.map +0 -1
  1635. package/dist/cli-tui/utils/layout.d.ts +0 -77
  1636. package/dist/cli-tui/utils/layout.d.ts.map +0 -1
  1637. package/dist/cli-tui/utils/layout.js +0 -83
  1638. package/dist/cli-tui/utils/layout.js.map +0 -1
  1639. package/dist/cli-tui/utils/links.d.ts +0 -2
  1640. package/dist/cli-tui/utils/links.d.ts.map +0 -1
  1641. package/dist/cli-tui/utils/links.js +0 -14
  1642. package/dist/cli-tui/utils/links.js.map +0 -1
  1643. package/dist/cli-tui/utils/motion.d.ts +0 -4
  1644. package/dist/cli-tui/utils/motion.d.ts.map +0 -1
  1645. package/dist/cli-tui/utils/motion.js +0 -28
  1646. package/dist/cli-tui/utils/motion.js.map +0 -1
  1647. package/dist/cli-tui/utils/runtime-badges.d.ts +0 -26
  1648. package/dist/cli-tui/utils/runtime-badges.d.ts.map +0 -1
  1649. package/dist/cli-tui/utils/runtime-badges.js +0 -178
  1650. package/dist/cli-tui/utils/runtime-badges.js.map +0 -1
  1651. package/dist/cli-tui/utils/shimmer.d.ts +0 -12
  1652. package/dist/cli-tui/utils/shimmer.d.ts.map +0 -1
  1653. package/dist/cli-tui/utils/shimmer.js +0 -57
  1654. package/dist/cli-tui/utils/shimmer.js.map +0 -1
  1655. package/dist/cli-tui/utils/stage-labels.d.ts +0 -9
  1656. package/dist/cli-tui/utils/stage-labels.d.ts.map +0 -1
  1657. package/dist/cli-tui/utils/stage-labels.js +0 -65
  1658. package/dist/cli-tui/utils/stage-labels.js.map +0 -1
  1659. package/dist/cli-tui/utils/text-formatting.d.ts +0 -13
  1660. package/dist/cli-tui/utils/text-formatting.d.ts.map +0 -1
  1661. package/dist/cli-tui/utils/text-formatting.js +0 -109
  1662. package/dist/cli-tui/utils/text-formatting.js.map +0 -1
  1663. package/dist/cli-tui/utils/text-preview.d.ts +0 -10
  1664. package/dist/cli-tui/utils/text-preview.d.ts.map +0 -1
  1665. package/dist/cli-tui/utils/text-preview.js +0 -26
  1666. package/dist/cli-tui/utils/text-preview.js.map +0 -1
  1667. package/dist/cli-tui/utils/tool-text-utils.d.ts +0 -42
  1668. package/dist/cli-tui/utils/tool-text-utils.d.ts.map +0 -1
  1669. package/dist/cli-tui/utils/tool-text-utils.js +0 -361
  1670. package/dist/cli-tui/utils/tool-text-utils.js.map +0 -1
  1671. package/dist/cli-tui/welcome-animation.d.ts +0 -24
  1672. package/dist/cli-tui/welcome-animation.d.ts.map +0 -1
  1673. package/dist/cli-tui/welcome-animation.js +0 -99
  1674. package/dist/cli-tui/welcome-animation.js.map +0 -1
  1675. package/dist/cli-tui/welcome-colors.d.ts +0 -3
  1676. package/dist/cli-tui/welcome-colors.d.ts.map +0 -1
  1677. package/dist/cli-tui/welcome-colors.js +0 -39
  1678. package/dist/cli-tui/welcome-colors.js.map +0 -1
  1679. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts +0 -304
  1680. package/dist/node_modules/@evalops/tui/dist/autocomplete.d.ts.map +0 -1
  1681. package/dist/node_modules/@evalops/tui/dist/autocomplete.js +0 -712
  1682. package/dist/node_modules/@evalops/tui/dist/autocomplete.js.map +0 -1
  1683. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts +0 -185
  1684. package/dist/node_modules/@evalops/tui/dist/components/editor.d.ts.map +0 -1
  1685. package/dist/node_modules/@evalops/tui/dist/components/editor.js +0 -1460
  1686. package/dist/node_modules/@evalops/tui/dist/components/editor.js.map +0 -1
  1687. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts +0 -117
  1688. package/dist/node_modules/@evalops/tui/dist/components/input.d.ts.map +0 -1
  1689. package/dist/node_modules/@evalops/tui/dist/components/input.js +0 -391
  1690. package/dist/node_modules/@evalops/tui/dist/components/input.js.map +0 -1
  1691. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts +0 -256
  1692. package/dist/node_modules/@evalops/tui/dist/components/layout.d.ts.map +0 -1
  1693. package/dist/node_modules/@evalops/tui/dist/components/layout.js +0 -478
  1694. package/dist/node_modules/@evalops/tui/dist/components/layout.js.map +0 -1
  1695. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts +0 -199
  1696. package/dist/node_modules/@evalops/tui/dist/components/loader.d.ts.map +0 -1
  1697. package/dist/node_modules/@evalops/tui/dist/components/loader.js +0 -374
  1698. package/dist/node_modules/@evalops/tui/dist/components/loader.js.map +0 -1
  1699. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts +0 -65
  1700. package/dist/node_modules/@evalops/tui/dist/components/markdown.d.ts.map +0 -1
  1701. package/dist/node_modules/@evalops/tui/dist/components/markdown.js +0 -562
  1702. package/dist/node_modules/@evalops/tui/dist/components/markdown.js.map +0 -1
  1703. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts +0 -262
  1704. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.d.ts.map +0 -1
  1705. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js +0 -575
  1706. package/dist/node_modules/@evalops/tui/dist/components/scroll-container.js.map +0 -1
  1707. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts +0 -131
  1708. package/dist/node_modules/@evalops/tui/dist/components/select-list.d.ts.map +0 -1
  1709. package/dist/node_modules/@evalops/tui/dist/components/select-list.js +0 -257
  1710. package/dist/node_modules/@evalops/tui/dist/components/select-list.js.map +0 -1
  1711. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts +0 -11
  1712. package/dist/node_modules/@evalops/tui/dist/components/spacer.d.ts.map +0 -1
  1713. package/dist/node_modules/@evalops/tui/dist/components/spacer.js +0 -19
  1714. package/dist/node_modules/@evalops/tui/dist/components/spacer.js.map +0 -1
  1715. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts +0 -22
  1716. package/dist/node_modules/@evalops/tui/dist/components/status-bar.d.ts.map +0 -1
  1717. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js +0 -44
  1718. package/dist/node_modules/@evalops/tui/dist/components/status-bar.js.map +0 -1
  1719. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts +0 -26
  1720. package/dist/node_modules/@evalops/tui/dist/components/text.d.ts.map +0 -1
  1721. package/dist/node_modules/@evalops/tui/dist/components/text.js +0 -181
  1722. package/dist/node_modules/@evalops/tui/dist/components/text.js.map +0 -1
  1723. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts +0 -15
  1724. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.d.ts.map +0 -1
  1725. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js +0 -84
  1726. package/dist/node_modules/@evalops/tui/dist/components/truncated-text.js.map +0 -1
  1727. package/dist/node_modules/@evalops/tui/dist/index.d.ts +0 -87
  1728. package/dist/node_modules/@evalops/tui/dist/index.d.ts.map +0 -1
  1729. package/dist/node_modules/@evalops/tui/dist/index.js +0 -85
  1730. package/dist/node_modules/@evalops/tui/dist/index.js.map +0 -1
  1731. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts +0 -189
  1732. package/dist/node_modules/@evalops/tui/dist/keymap.d.ts.map +0 -1
  1733. package/dist/node_modules/@evalops/tui/dist/keymap.js +0 -363
  1734. package/dist/node_modules/@evalops/tui/dist/keymap.js.map +0 -1
  1735. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts +0 -25
  1736. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.d.ts.map +0 -1
  1737. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js +0 -828
  1738. package/dist/node_modules/@evalops/tui/dist/mermaid-renderer.js.map +0 -1
  1739. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts +0 -40
  1740. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.d.ts.map +0 -1
  1741. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js +0 -474
  1742. package/dist/node_modules/@evalops/tui/dist/style/code-highlighter.js.map +0 -1
  1743. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts +0 -201
  1744. package/dist/node_modules/@evalops/tui/dist/terminal.d.ts.map +0 -1
  1745. package/dist/node_modules/@evalops/tui/dist/terminal.js +0 -241
  1746. package/dist/node_modules/@evalops/tui/dist/terminal.js.map +0 -1
  1747. package/dist/node_modules/@evalops/tui/dist/tui.d.ts +0 -263
  1748. package/dist/node_modules/@evalops/tui/dist/tui.d.ts.map +0 -1
  1749. package/dist/node_modules/@evalops/tui/dist/tui.js +0 -694
  1750. package/dist/node_modules/@evalops/tui/dist/tui.js.map +0 -1
  1751. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts +0 -14
  1752. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.d.ts.map +0 -1
  1753. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js +0 -44
  1754. package/dist/node_modules/@evalops/tui/dist/utils/terminal-features.js.map +0 -1
  1755. package/dist/node_modules/@evalops/tui/dist/utils.d.ts +0 -32
  1756. package/dist/node_modules/@evalops/tui/dist/utils.d.ts.map +0 -1
  1757. package/dist/node_modules/@evalops/tui/dist/utils.js +0 -556
  1758. package/dist/node_modules/@evalops/tui/dist/utils.js.map +0 -1
  1759. package/dist/node_modules/@evalops/tui/package.json +0 -58
  1760. package/dist/skills/artifact-metadata.d.ts +0 -16
  1761. package/dist/skills/artifact-metadata.d.ts.map +0 -1
  1762. package/dist/skills/artifact-metadata.js +0 -86
  1763. package/dist/skills/artifact-metadata.js.map +0 -1
  1764. package/dist/skills/composer-diagnostics.d.ts +0 -69
  1765. package/dist/skills/composer-diagnostics.d.ts.map +0 -1
  1766. package/dist/skills/composer-diagnostics.js +0 -78
  1767. package/dist/skills/composer-diagnostics.js.map +0 -1
  1768. package/dist/skills/composer.d.ts +0 -19
  1769. package/dist/skills/composer.d.ts.map +0 -1
  1770. package/dist/skills/composer.js +0 -52
  1771. package/dist/skills/composer.js.map +0 -1
  1772. package/dist/skills/eval-harness.d.ts +0 -38
  1773. package/dist/skills/eval-harness.d.ts.map +0 -1
  1774. package/dist/skills/eval-harness.js +0 -112
  1775. package/dist/skills/eval-harness.js.map +0 -1
  1776. package/dist/skills/index.d.ts +0 -40
  1777. package/dist/skills/index.d.ts.map +0 -1
  1778. package/dist/skills/index.js +0 -40
  1779. package/dist/skills/index.js.map +0 -1
  1780. package/dist/skills/linter.d.ts +0 -36
  1781. package/dist/skills/linter.d.ts.map +0 -1
  1782. package/dist/skills/linter.js +0 -399
  1783. package/dist/skills/linter.js.map +0 -1
  1784. package/dist/skills/loader.d.ts +0 -252
  1785. package/dist/skills/loader.d.ts.map +0 -1
  1786. package/dist/skills/loader.js +0 -957
  1787. package/dist/skills/loader.js.map +0 -1
  1788. package/dist/skills/package-contract.d.ts +0 -45
  1789. package/dist/skills/package-contract.d.ts.map +0 -1
  1790. package/dist/skills/package-contract.js +0 -153
  1791. package/dist/skills/package-contract.js.map +0 -1
  1792. package/dist/skills/runtime-activation.d.ts +0 -68
  1793. package/dist/skills/runtime-activation.d.ts.map +0 -1
  1794. package/dist/skills/runtime-activation.js +0 -228
  1795. package/dist/skills/runtime-activation.js.map +0 -1
  1796. package/dist/skills/scaffold-from-template.d.ts +0 -58
  1797. package/dist/skills/scaffold-from-template.d.ts.map +0 -1
  1798. package/dist/skills/scaffold-from-template.js +0 -72
  1799. package/dist/skills/scaffold-from-template.js.map +0 -1
  1800. package/dist/skills/scaffolder.d.ts +0 -65
  1801. package/dist/skills/scaffolder.d.ts.map +0 -1
  1802. package/dist/skills/scaffolder.js +0 -167
  1803. package/dist/skills/scaffolder.js.map +0 -1
  1804. package/dist/skills/service-client.d.ts +0 -56
  1805. package/dist/skills/service-client.d.ts.map +0 -1
  1806. package/dist/skills/service-client.js +0 -266
  1807. package/dist/skills/service-client.js.map +0 -1
  1808. package/dist/skills/skill-templates.d.ts +0 -70
  1809. package/dist/skills/skill-templates.d.ts.map +0 -1
  1810. package/dist/skills/skill-templates.js +0 -154
  1811. package/dist/skills/skill-templates.js.map +0 -1
  1812. package/dist/skills/tool.d.ts +0 -21
  1813. package/dist/skills/tool.d.ts.map +0 -1
  1814. package/dist/skills/tool.js +0 -334
  1815. package/dist/skills/tool.js.map +0 -1
  1816. package/dist/skills/trust-cache.d.ts +0 -58
  1817. package/dist/skills/trust-cache.d.ts.map +0 -1
  1818. package/dist/skills/trust-cache.js +0 -130
  1819. package/dist/skills/trust-cache.js.map +0 -1
  1820. package/dist/skills/types.d.ts +0 -91
  1821. package/dist/skills/types.d.ts.map +0 -1
  1822. package/dist/skills/types.js +0 -8
  1823. package/dist/skills/types.js.map +0 -1
  1824. /package/dist/{cli-tui → runtime}/prompt-queue.d.ts +0 -0
  1825. /package/dist/{cli-tui → runtime}/prompt-queue.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG","sourcesContent":["/**\n * @fileoverview Core Type Definitions for Maestro Agent\n *\n * This module defines the fundamental types used throughout the Maestro AI system,\n * including message formats, tool definitions, model configurations, and agent state.\n *\n * ## Type Categories\n *\n * ### Message Types\n * - {@link UserMessage} - Messages from the human user\n * - {@link AssistantMessage} - Responses from the AI assistant\n * - {@link ToolResultMessage} - Results from tool executions\n * - {@link Message} - Union of all message types\n *\n * ### Content Types\n * - {@link TextContent} - Plain text content blocks\n * - {@link ImageContent} - Base64-encoded images\n * - {@link ThinkingContent} - Extended reasoning traces\n * - {@link ToolCall} - Tool invocation requests\n *\n * ### Tool Types\n * - {@link Tool} - Tool definition schema (for API)\n * - {@link AgentTool} - Tool with execute function (for runtime)\n * - {@link AgentToolResult} - Return value from tool execution\n *\n * ### Configuration Types\n * - {@link Model} - LLM model configuration\n * - {@link AgentState} - Current state of an agent\n * - {@link AgentRunConfig} - Runtime configuration\n *\n * @module agent/types\n */\n\nimport type { GuardedFilesPolicySettings } from \"@evalops/contracts\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport type { PromptProjectDocManifest } from \"../config/index.js\";\nimport type { UnifiedContextManifest } from \"../context/manifest-types.js\";\nimport type { PromptMetadata } from \"../prompts/types.js\";\nimport type { SkillArtifactMetadata } from \"../skills/artifact-metadata.js\";\nimport type { CheckpointProfiler } from \"../utils/checkpoint-profiler.js\";\nimport type {\n\tActionApprovalDecision,\n\tActionApprovalRequest,\n} from \"./action-approval.js\";\nimport type { ToolCapabilityMetadata } from \"./tool-capability-types.js\";\nimport type { ToolRetryDecision, ToolRetryRequest } from \"./tool-retry.js\";\n\n/**\n * API format identifier for different LLM provider APIs.\n *\n * Each provider may support different API formats:\n * - `openai-completions` - OpenAI Chat Completions API\n * - `openai-responses` - OpenAI Responses API (newer format)\n * - `openai-codex-responses` - ChatGPT Codex Responses backend\n * - `openai-codex-app-server` - Local Codex app-server with ChatGPT sign-in\n * - `anthropic-messages` - Anthropic Messages API\n * - `google-generative-ai` - Google Generative AI (Gemini)\n * - `google-gemini-cli` - Google Cloud Code Assist (Gemini CLI)\n * - `bedrock-converse` - AWS Bedrock Converse API\n * - `scripted-replay` - Deterministic local scenario replay provider\n */\nexport type Api =\n\t| \"openai-completions\"\n\t| \"openai-responses\"\n\t| \"openai-codex-responses\"\n\t| \"openai-codex-app-server\"\n\t| \"anthropic-messages\"\n\t| \"google-generative-ai\"\n\t| \"google-gemini-cli\"\n\t| \"bedrock-converse\"\n\t| \"vertex-ai\"\n\t| \"scripted-replay\";\n\nexport interface OpenAICompatOverrides {\n\tsupportsStore?: boolean;\n\tsupportsDeveloperRole?: boolean;\n\tsupportsReasoningEffort?: boolean;\n\tsupportsResponsesApi?: boolean;\n\t/** Supports Anthropic-style cache_control (OpenRouter with Claude models) */\n\tsupportsCacheControl?: boolean;\n\tmaxTokensField?: \"max_tokens\" | \"max_completion_tokens\";\n\trequiresToolResultName?: boolean;\n\trequiresAssistantAfterToolResult?: boolean;\n\trequiresThinkingAsText?: boolean;\n\trequiresMistralToolIds?: boolean;\n}\n\n/**\n * Well-known LLM provider identifiers.\n *\n * These are the officially supported providers with built-in configurations:\n * - `anthropic` - Anthropic (Claude models)\n * - `bedrock` - AWS Bedrock\n * - `google` - Google AI (Gemini models)\n * - `openai` - OpenAI (GPT models)\n * - `azure-openai` - Azure OpenAI\n * - `writer` - Writer.com\n * - `xai` - xAI (Grok models)\n * - `groq` - Groq\n * - `cerebras` - Cerebras\n * - `openrouter` - OpenRouter (aggregator)\n * - `zai` - Z.ai (Zhipu GLM)\n * - `deepseek` - DeepSeek\n * - `moonshot` - Moonshot AI (Kimi)\n * - `dashscope` - Alibaba Qwen (DashScope)\n * - `minimax` - MiniMax\n */\nexport type KnownProvider =\n\t| \"anthropic\"\n\t| \"bedrock\"\n\t| \"google\"\n\t| \"openai\"\n\t| \"openai-codex\"\n\t| \"azure-openai\"\n\t| \"writer\"\n\t| \"xai\"\n\t| \"groq\"\n\t| \"cerebras\"\n\t| \"openrouter\"\n\t| \"zai\"\n\t| \"deepseek\"\n\t| \"moonshot\"\n\t| \"dashscope\"\n\t| \"minimax\";\n\n/**\n * Provider identifier - either a known provider or a custom string.\n * Custom providers can be used with OpenAI-compatible APIs.\n */\nexport type Provider = KnownProvider | string;\n\n/**\n * Reasoning effort level for models that support extended thinking.\n *\n * Higher levels produce more detailed reasoning at increased latency:\n * - `minimal` - Brief chain-of-thought hints\n * - `low` - Short reasoning steps\n * - `medium` - Moderate reasoning depth (recommended default)\n * - `high` - Thorough step-by-step reasoning\n * - `ultra` - Maximum reasoning depth (for complex problems)\n *\n * Note: Claude Code uses keywords \"think\", \"think hard\", \"think harder\", \"ultrathink\"\n * which map to low, medium, high, ultra respectively.\n */\nexport type ReasoningEffort = \"minimal\" | \"low\" | \"medium\" | \"high\" | \"ultra\";\n\n/**\n * Plain text content block within a message.\n *\n * @example\n * ```typescript\n * const content: TextContent = {\n * type: \"text\",\n * text: \"Hello, how can I help you today?\"\n * };\n * ```\n */\nexport interface TextContent {\n\t/** Discriminator for content block type */\n\ttype: \"text\";\n\t/** The text content */\n\ttext: string;\n\t/** Optional signature for content verification */\n\ttextSignature?: string;\n}\n\n/**\n * Extended thinking/reasoning content block.\n *\n * Contains the model's internal reasoning process when extended\n * thinking is enabled. This is typically hidden from end users\n * but useful for debugging and understanding model behavior.\n */\nexport interface ThinkingContent {\n\t/** Discriminator for content block type */\n\ttype: \"thinking\";\n\t/** The thinking/reasoning trace */\n\tthinking: string;\n\t/** Optional signature for content verification */\n\tthinkingSignature?: string;\n}\n\n/**\n * Base64-encoded image content block.\n *\n * Used for including images in user messages (vision input)\n * or tool results (screenshots, generated images).\n *\n * @example\n * ```typescript\n * const image: ImageContent = {\n * type: \"image\",\n * data: \"iVBORw0KGgo...\", // base64 encoded\n * mimeType: \"image/png\"\n * };\n * ```\n */\nexport interface ImageContent {\n\t/** Discriminator for content block type */\n\ttype: \"image\";\n\t/** Base64-encoded image data */\n\tdata: string;\n\t/** MIME type (e.g., \"image/png\", \"image/jpeg\") */\n\tmimeType: string;\n}\n\n/**\n * Tool invocation request within an assistant message.\n *\n * When the model decides to use a tool, it emits a ToolCall\n * content block specifying which tool to call and with what arguments.\n *\n * @example\n * ```typescript\n * const toolCall: ToolCall = {\n * type: \"toolCall\",\n * id: \"call_abc123\",\n * name: \"read\",\n * arguments: { file_path: \"/src/index.ts\" }\n * };\n * ```\n */\nexport interface ToolCall {\n\t/** Discriminator for content block type */\n\ttype: \"toolCall\";\n\t/** Unique identifier for this tool call (used to match results) */\n\tid: string;\n\t/** Name of the tool to invoke */\n\tname: string;\n\t/** Arguments to pass to the tool */\n\targuments: Record<string, unknown>;\n\t/**\n\t * Provider-specific signature used by some APIs (notably Gemini 3) to\n\t * associate tool calls with preceding thoughts. If present, it must be\n\t * preserved across turns when replaying the message history back to the provider.\n\t */\n\tthoughtSignature?: string;\n}\n\nexport type ToolSchedulingDecisionKind =\n\t| \"scheduled\"\n\t| \"parallelized\"\n\t| \"delayed\"\n\t| \"serialized\"\n\t| \"cached\"\n\t| \"skipped\";\n\nexport interface ToolSchedulingDecision {\n\t/** Tool call identifier; duplicated here for standalone telemetry use. */\n\tcallId: string;\n\t/** Tool name, never arguments. */\n\ttoolName: string;\n\t/** Zero-based order from the model-emitted tool-call list. */\n\temittedIndex: number;\n\t/** Scheduler wave number when the call entered an execution wave. */\n\twaveIndex?: number;\n\t/** Scheduler outcome for this call. */\n\tdecision: ToolSchedulingDecisionKind;\n\t/** Stable reason code; intentionally avoids raw paths and arguments. */\n\treason: string;\n\t/** Time spent waiting inside the scheduler after model emission. */\n\tschedulerWaitMs?: number;\n\t/** True when an MCP server opt-in made the call parallel-safe. */\n\tmcpOptIn?: boolean;\n\t/** True when execution was served from reusable tool-result state. */\n\tcacheHit?: boolean;\n\t/** True when an in-flight mutation forced a wait or serialization. */\n\tblockedByMutation?: boolean;\n}\n\nexport type ToolPhaseDecisionOutcome =\n\t| \"parallelized\"\n\t| \"serialized\"\n\t| \"delayed\"\n\t| \"cached\"\n\t| \"skipped\";\n\nexport interface ToolPhaseDecision {\n\ttoolCallId: string;\n\ttoolName: string;\n\temittedIndex: number;\n\toutcome: ToolPhaseDecisionOutcome;\n\tdecision: ToolPhaseDecisionOutcome;\n\treason: string;\n\twaveIndex?: number;\n\twaitMs: number;\n\tschedulerWaitMs: number;\n\tmcpOptIn?: boolean;\n\tcacheHit?: boolean;\n\tblockedByMutation?: boolean;\n}\n\nexport interface ParallelismScopeMetadata {\n\tpathScope?: string[];\n\tpathScopeSource?: \"annotation\" | \"known_tool\";\n\tpathArgumentKeys?: string[];\n}\n\nexport interface ParallelismGatedEvent extends ParallelismScopeMetadata {\n\ttype: \"parallelism_gated\";\n\ttoolCallId: string;\n\ttoolName: string;\n\treason: \"mutation_scope_overlap\" | \"mutation_unknown_write_set\";\n\tqueueDepth: number;\n\tpendingMutations: number;\n\tpendingToolCallIds: string[];\n\tpendingToolNames: string[];\n}\n\nexport interface ParallelConflictDetectedEvent\n\textends ParallelismScopeMetadata {\n\ttype: \"parallel_conflict_detected\";\n\ttoolCallId: string;\n\ttoolName: string;\n\tconflictingToolCallId: string;\n\tconflictingToolName: string;\n\tconflictingPathScope?: string[];\n\tconflictingPathScopeSource?: \"annotation\" | \"known_tool\";\n}\n\nexport interface ToolPhaseBatchShapingFeedback {\n\tavoidableSingleton: boolean;\n\treason: string;\n\thint: string;\n}\n\nexport interface ToolPhaseSummary {\n\ttype: \"tool_phase_summary\";\n\tmodelToolCallCount: number;\n\tmodelEmittedToolCallCount: number;\n\tschedulableWaveCount: number;\n\tparallelizedCallCount: number;\n\tactuallyParallelizedCallCount: number;\n\tserializedCallCount: number;\n\tdelayedCallCount: number;\n\tblockedByMutationCount: number;\n\tmcpOptInCallCount: number;\n\tmcpOptInUseCount: number;\n\tcacheHitCount: number;\n\ttotalToolWaitMs: number;\n\ttoolWaitTimeMs: number;\n\tserializationReasons: Record<string, number>;\n\tdecisions: ToolPhaseDecision[];\n\tbatchShapingFeedback?: ToolPhaseBatchShapingFeedback;\n}\n\n/**\n * Token usage and cost information for a message or request.\n *\n * Tracks input/output tokens and cache utilization for cost monitoring\n * and context window management.\n */\nexport interface Usage {\n\t/** Number of input tokens consumed */\n\tinput: number;\n\t/** Number of output tokens generated */\n\toutput: number;\n\t/** Tokens served from prompt cache (reduces cost) */\n\tcacheRead: number;\n\t/** Tokens written to prompt cache */\n\tcacheWrite: number;\n\t/** Calculated cost breakdown in USD */\n\tcost: {\n\t\t/** Cost for input tokens */\n\t\tinput: number;\n\t\t/** Cost for output tokens */\n\t\toutput: number;\n\t\t/** Cost savings from cache reads */\n\t\tcacheRead: number;\n\t\t/** Cost for cache writes */\n\t\tcacheWrite: number;\n\t\t/** Total cost for this message/request */\n\t\ttotal: number;\n\t};\n}\n\n/**\n * Reason why the model stopped generating.\n *\n * - `stop` - Natural completion (end of response)\n * - `length` - Hit max_tokens limit\n * - `toolUse` - Model wants to use a tool (generation paused)\n * - `error` - An error occurred during generation\n * - `aborted` - Request was cancelled by the user\n */\nexport type StopReason = \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\";\n\n/**\n * Message from the human user.\n *\n * User messages can contain plain text or an array of content blocks\n * (for multi-modal input with images).\n *\n * @example\n * ```typescript\n * // Simple text message\n * const msg: UserMessage = {\n * role: \"user\",\n * content: \"What is this code doing?\",\n * timestamp: Date.now()\n * };\n *\n * // Message with image\n * const multiModal: UserMessage = {\n * role: \"user\",\n * content: [\n * { type: \"text\", text: \"What's in this screenshot?\" },\n * { type: \"image\", data: base64Data, mimeType: \"image/png\" }\n * ],\n * timestamp: Date.now()\n * };\n * ```\n */\nexport interface UserMessage {\n\t/** Message role discriminator */\n\trole: \"user\";\n\t/** Message content - string or array of content blocks */\n\tcontent: string | (TextContent | ImageContent)[];\n\t/** Optional non-LLM metadata for runtime bookkeeping */\n\tmetadata?: Record<string, unknown>;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n}\n\n/**\n * Response message from the AI assistant.\n *\n * Contains the model's response along with metadata about the generation\n * including token usage, stop reason, and provider information.\n *\n * The content array may contain:\n * - {@link TextContent} - The actual response text\n * - {@link ThinkingContent} - Extended reasoning (if enabled)\n * - {@link ToolCall} - Tool invocation requests\n */\nexport interface AssistantMessage {\n\t/** Message role discriminator */\n\trole: \"assistant\";\n\t/** Array of content blocks (text, thinking, tool calls) */\n\tcontent: (TextContent | ThinkingContent | ToolCall)[];\n\t/** API format used for this response */\n\tapi: Api;\n\t/** Provider that generated this response */\n\tprovider: Provider;\n\t/** Model ID that generated this response */\n\tmodel: string;\n\t/** Token usage and cost information */\n\tusage: Usage;\n\t/** Reason why generation stopped */\n\tstopReason: StopReason;\n\t/** Error message if stopReason is \"error\" */\n\terrorMessage?: string;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n}\n\n/**\n * Result message from a tool execution.\n *\n * After a tool is executed, the result is sent back to the model\n * as a ToolResultMessage so it can incorporate the information\n * into its response.\n *\n * @typeParam TDetails - Type of additional details attached to the result\n *\n * @example\n * ```typescript\n * const result: ToolResultMessage = {\n * role: \"toolResult\",\n * toolCallId: \"call_abc123\",\n * toolName: \"read\",\n * content: [{ type: \"text\", text: \"file contents...\" }],\n * isError: false,\n * timestamp: Date.now()\n * };\n * ```\n */\nexport interface ToolResultMessage<TDetails = unknown> {\n\t/** Message role discriminator */\n\trole: \"toolResult\";\n\t/** ID of the tool call this result corresponds to */\n\ttoolCallId: string;\n\t/** Name of the tool that was executed */\n\ttoolName: string;\n\t/** Result content (text or images) */\n\tcontent: (TextContent | ImageContent)[];\n\t/** Optional additional details about the execution */\n\tdetails?: TDetails;\n\t/** Whether the tool execution resulted in an error */\n\tisError: boolean;\n\t/** Unix timestamp in milliseconds when result was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for hook-injected messages.\n *\n * Hooks can inject these into the conversation. They are converted to user\n * messages for LLM context and can optionally be hidden from the UI.\n */\nexport interface HookMessage<T = unknown> {\n\t/** Message role discriminator */\n\trole: \"hookMessage\";\n\t/** Hook-defined message category */\n\tcustomType: string;\n\t/** Message content - string or array of content blocks */\n\tcontent: string | (TextContent | ImageContent)[];\n\t/** Whether to render this message in the UI */\n\tdisplay: boolean;\n\t/** Optional hook-specific metadata (not sent to the LLM) */\n\tdetails?: T;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for branch summaries when navigating session trees.\n */\nexport interface BranchSummaryMessage {\n\t/** Message role discriminator */\n\trole: \"branchSummary\";\n\t/** Summary text */\n\tsummary: string;\n\t/** ID of the branch point this summary came from */\n\tfromId: string;\n\t/** Unix timestamp in milliseconds when summary was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for compaction summaries.\n */\nexport interface CompactionSummaryMessage {\n\t/** Message role discriminator */\n\trole: \"compactionSummary\";\n\t/** Summary text */\n\tsummary: string;\n\t/** Token count before compaction (for diagnostics) */\n\ttokensBefore: number;\n\t/** Unix timestamp in milliseconds when summary was created */\n\ttimestamp: number;\n}\n\n/**\n * Union type representing LLM-native messages that can be sent to the model.\n *\n * A conversation with the LLM consists of user input, assistant responses,\n * and tool results.\n */\nexport type Message = UserMessage | AssistantMessage | ToolResultMessage;\n\n/**\n * Empty interface for declaration merging to add custom message types.\n *\n * Consumers can extend this interface to add their own message types:\n *\n * @example\n * ```typescript\n * declare module \"@evalops/maestro\" {\n * interface CustomAgentMessages {\n * notification: { role: \"notification\"; text: string; timestamp: number };\n * }\n * }\n * ```\n */\n// biome-ignore lint/suspicious/noEmptyInterface: Required for declaration merging\nexport interface CustomAgentMessages {}\n\n/**\n * Union type representing all messages in the agent conversation history.\n *\n * Includes both LLM-native messages (user, assistant, toolResult) and\n * custom message types (hookMessage, branchSummary, compactionSummary,\n * plus any types added via declaration merging).\n *\n * Custom messages are preserved in session history but filtered out\n * before being sent to the LLM via {@link convertToLlm}.\n */\nexport type AgentMessage =\n\t| Message\n\t| HookMessage\n\t| BranchSummaryMessage\n\t| CompactionSummaryMessage\n\t| CustomAgentMessages[keyof CustomAgentMessages];\n\n/**\n * Tool definition schema for API serialization.\n *\n * This interface defines a tool's metadata and parameter schema\n * for transmission to the LLM. The actual execution logic is in\n * {@link AgentTool}.\n *\n * @typeParam TParameters - TypeBox schema for the tool's parameters\n *\n * @example\n * ```typescript\n * import { Type } from \"@sinclair/typebox\";\n *\n * const readTool: Tool = {\n * name: \"read\",\n * description: \"Read a file from the filesystem\",\n * parameters: Type.Object({\n * file_path: Type.String({ description: \"Path to the file\" })\n * })\n * };\n * ```\n */\nexport interface Tool<TParameters extends TSchema = TSchema> {\n\t/** Unique tool identifier */\n\tname: string;\n\t/** Human-readable description of what the tool does */\n\tdescription: string;\n\t/** TypeBox schema defining the tool's parameters */\n\tparameters: TParameters;\n\t/** Optional categorization (e.g., \"file\", \"shell\", \"web\") */\n\ttoolType?: string;\n\t/** Example inputs for documentation/few-shot prompting */\n\tinputExamples?: unknown[];\n\t/** List of caller identifiers allowed to use this tool */\n\tallowedCallers?: string[];\n\t/** If true, don't send tool definition to API (used for internal tools) */\n\tdeferApiDefinition?: boolean;\n}\n\n/**\n * Behavioral hints for tools (from MCP annotations).\n *\n * These hints help the model and UI understand the tool's behavior\n * for better decision-making and user feedback.\n */\nexport interface ToolAnnotations {\n\t/** If true, the tool does not modify its environment (safe to retry) */\n\treadOnlyHint?: boolean;\n\t/** If true, the tool may perform destructive/irreversible updates */\n\tdestructiveHint?: boolean;\n\t/** If true, mutating calls are scoped to explicit path arguments */\n\tpathScopedMutationHint?: boolean;\n\t/** If true, calling repeatedly with same args has no additional effect */\n\tidempotentHint?: boolean;\n\t/** If true, the tool interacts with external systems (network, APIs) */\n\topenWorldHint?: boolean;\n}\n\nexport interface McpToolSourceMetadata {\n\ttype: \"mcp\";\n\tserver: string;\n\ttool: string;\n\tcapability?: ToolCapabilityMetadata;\n\tsupportsParallelToolCalls?: boolean;\n\tparallelSafetyProvenance?: \"static_config\" | \"server_capability\" | \"none\";\n\tparallelMaxConcurrency?: number;\n}\n\nexport type ToolSourceMetadata = McpToolSourceMetadata;\n\n/**\n * Complete tool definition with execute function.\n *\n * This is the runtime representation of a tool, including both\n * the schema (for the LLM) and the execute function (for the runtime).\n *\n * @typeParam TParameters - TypeBox schema for the tool's parameters\n * @typeParam TDetails - Type of additional details returned with results\n *\n * @example\n * ```typescript\n * import { Type } from \"@sinclair/typebox\";\n *\n * const readTool: AgentTool = {\n * name: \"read\",\n * description: \"Read a file from the filesystem\",\n * parameters: Type.Object({\n * file_path: Type.String()\n * }),\n * execute: async (toolCallId, params) => {\n * const content = await fs.readFile(params.file_path, \"utf-8\");\n * return { content: [{ type: \"text\", text: content }] };\n * }\n * };\n * ```\n */\nexport interface AgentTool<\n\tTParameters extends TSchema = TSchema,\n\tTDetails = unknown,\n> {\n\t/** Unique tool identifier */\n\tname: string;\n\t/** Display label for UI (defaults to name) */\n\tlabel?: string;\n\t/** Human-readable description of what the tool does */\n\tdescription: string;\n\t/** TypeBox schema defining the tool's parameters */\n\tparameters: TParameters;\n\t/** Tool behavior hints from MCP annotations */\n\tannotations?: ToolAnnotations;\n\t/** Exact runtime provenance for bridged or remote tool sources */\n\tsource?: ToolSourceMetadata;\n\t/** Optional categorization (e.g., \"file\", \"shell\", \"web\") */\n\ttoolType?: string;\n\t/**\n\t * Where the tool should be executed.\n\t * - `\"server\"`: (default) Executed by the backend agent\n\t * - `\"client\"`: Executed by the client (VS Code, browser) via callback\n\t */\n\texecutionLocation?: \"server\" | \"client\";\n\t/** Example inputs for documentation/few-shot prompting */\n\tinputExamples?: unknown[];\n\t/** List of caller identifiers allowed to use this tool */\n\tallowedCallers?: string[];\n\t/** If true, don't send tool definition to API */\n\tdeferApiDefinition?: boolean;\n\t/** Optional max retries configured by the tool itself */\n\tmaxRetries?: number;\n\t/** Optional retry delay configured by the tool itself */\n\tretryDelayMs?: number;\n\t/** Optional tool-level retry predicate */\n\tshouldRetry?: (error: unknown) => boolean;\n\t/** Optional compact summary used after a tool finishes. */\n\tgetToolUseSummary?: (params: Record<string, unknown>) => string | null;\n\t/** Optional human-facing label used for live tool UI. */\n\tgetDisplayName?: (params: Record<string, unknown>) => string | null;\n\t/** Optional present-tense activity label used while a tool is running. */\n\tgetActivityDescription?: (params: Record<string, unknown>) => string | null;\n\t/**\n\t * Execute the tool with the given parameters.\n\t *\n\t * @param toolCallId - Unique identifier for this tool call\n\t * @param params - Parameters matching the tool's schema\n\t * @param signal - Optional AbortSignal for cancellation\n\t * @param context - Optional execution context (sandbox, etc.)\n\t * @param onUpdate - Optional callback for partial tool output streaming\n\t * @returns Tool result with content and optional details\n\t */\n\texecute: (\n\t\ttoolCallId: string,\n\t\tparams: Record<string, unknown>,\n\t\tsignal?: AbortSignal,\n\t\tcontext?: { sandbox?: import(\"../sandbox/types.js\").Sandbox },\n\t\tonUpdate?: AgentToolUpdateCallback<TDetails>,\n\t) => AgentToolResult<TDetails> | Promise<AgentToolResult<TDetails>>;\n}\n\nexport type AgentToolUpdateCallback<TDetails = unknown> = (\n\tpartial: AgentToolResult<TDetails>,\n) => void;\n\n/**\n * Result returned from tool execution.\n *\n * @typeParam TDetails - Type of additional details attached to the result\n */\nexport interface AgentToolResult<TDetails = unknown> {\n\t/** Result content (text or images) */\n\tcontent: (TextContent | ImageContent)[];\n\t/** Optional additional details about the execution */\n\tdetails?: TDetails;\n\t/** Whether the execution resulted in an error */\n\tisError?: boolean;\n\t/** Optional Platform ToolExecution identifier used for audit joins */\n\ttoolExecutionId?: string;\n\t/** Optional Platform approval request identifier correlated to ToolExecution */\n\tapprovalRequestId?: string;\n}\n\n/**\n * Conversation context for LLM requests.\n *\n * Contains the system prompt, conversation history, and available tools\n * for a single LLM request.\n */\nexport interface Context {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt?: string;\n\t/** Conversation history */\n\tmessages: Message[];\n\t/** Tools available for the model to use */\n\ttools?: Tool[];\n}\n\n/**\n * Streaming events during assistant message construction.\n *\n * These events are emitted as the LLM generates its response, enabling\n * real-time UI updates and progress tracking.\n *\n * ## Event Types\n *\n * | Type | Description |\n * |------|-------------|\n * | `start` | Message generation started |\n * | `text_start` | New text content block started |\n * | `text_delta` | Incremental text content |\n * | `text_end` | Text content block completed |\n * | `thinking_start` | Extended thinking block started |\n * | `thinking_delta` | Incremental thinking content |\n * | `thinking_end` | Thinking block completed |\n * | `toolcall_start` | Tool call started |\n * | `toolcall_delta` | Incremental tool call args |\n * | `toolcall_end` | Tool call completed |\n * | `done` | Generation completed successfully |\n * | `error` | Generation failed or was aborted |\n */\nexport type AssistantMessageEvent =\n\t| {\n\t\t\t/** Message generation started */\n\t\t\ttype: \"start\";\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** New text content block started */\n\t\t\ttype: \"text_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental text content received */\n\t\t\ttype: \"text_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New text to append */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Text content block completed */\n\t\t\ttype: \"text_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Final text content */\n\t\t\tcontent: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Extended thinking block started */\n\t\t\ttype: \"thinking_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental thinking content received */\n\t\t\ttype: \"thinking_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New thinking text to append */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Thinking content block completed */\n\t\t\ttype: \"thinking_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Final thinking content */\n\t\t\tcontent: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Tool call started */\n\t\t\ttype: \"toolcall_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental tool call arguments received */\n\t\t\ttype: \"toolcall_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New JSON fragment to append to arguments */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Tool call completed */\n\t\t\ttype: \"toolcall_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Completed tool call */\n\t\t\ttoolCall: ToolCall;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution started outside Maestro's local executor */\n\t\t\ttype: \"provider_tool_execution_start\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool arguments */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution produced an incremental update */\n\t\t\ttype: \"provider_tool_execution_update\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool arguments */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Partial provider result */\n\t\t\tpartialResult: AgentToolResult;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution completed outside Maestro's local executor */\n\t\t\ttype: \"provider_tool_execution_end\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool result */\n\t\t\tresult: ToolResultMessage;\n\t\t\t/** Whether the provider tool returned an error */\n\t\t\tisError: boolean;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Optional Platform approval request identifier correlated to ToolExecution */\n\t\t\tapprovalRequestId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Generation completed successfully */\n\t\t\ttype: \"done\";\n\t\t\t/** Reason for completion */\n\t\t\treason: Extract<StopReason, \"stop\" | \"length\" | \"toolUse\">;\n\t\t\t/** Final assistant message */\n\t\t\tmessage: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Generation failed or was aborted */\n\t\t\ttype: \"error\";\n\t\t\t/** Reason for failure */\n\t\t\treason: Extract<StopReason, \"aborted\" | \"error\">;\n\t\t\t/** Error message details */\n\t\t\terror: AssistantMessage;\n\t };\n\n/**\n * LLM model configuration.\n *\n * Contains all the information needed to use a model, including\n * API endpoints, capabilities, and pricing.\n *\n * @typeParam TApi - The API format this model uses\n *\n * @example\n * ```typescript\n * const claude: Model<\"anthropic-messages\"> = {\n * id: \"claude-sonnet-4-5-20250929\",\n * name: \"Claude Sonnet 4.5\",\n * api: \"anthropic-messages\",\n * provider: \"anthropic\",\n * baseUrl: \"https://api.anthropic.com/v1\",\n * reasoning: true,\n * input: [\"text\", \"image\"],\n * cost: { input: 3.00, output: 15.00, cacheRead: 0.30, cacheWrite: 3.75 },\n * contextWindow: 200000,\n * maxTokens: 8192\n * };\n * ```\n */\nexport interface Model<TApi extends Api> {\n\t/** Unique model identifier (e.g., \"claude-sonnet-4-5-20250929\") */\n\tid: string;\n\t/** Human-readable model name (e.g., \"Claude Sonnet 4.5\") */\n\tname: string;\n\t/** API format used for requests */\n\tapi: TApi;\n\t/** Provider serving this model */\n\tprovider: Provider;\n\t/** Base URL for API requests */\n\tbaseUrl: string;\n\t/** Optional custom headers to include in API requests */\n\theaders?: Record<string, string>;\n\t/** Optional OpenAI-compatibility overrides for vendor quirks */\n\tcompat?: OpenAICompatOverrides;\n\t/** Whether the model supports extended thinking */\n\treasoning: boolean;\n\t/** Whether the model supports tool use */\n\ttoolUse?: boolean;\n\t/** Supported input modalities */\n\tinput: (\"text\" | \"image\")[];\n\t/** Cost per million tokens in USD */\n\tcost: {\n\t\t/** Input token cost */\n\t\tinput: number;\n\t\t/** Output token cost */\n\t\toutput: number;\n\t\t/** Cache read cost (typically discounted) */\n\t\tcacheRead: number;\n\t\t/** Cache write cost */\n\t\tcacheWrite: number;\n\t};\n\t/** Maximum context window in tokens */\n\tcontextWindow: number;\n\t/** Maximum output tokens per response */\n\tmaxTokens: number;\n}\n\n/**\n * File attachment for messages.\n *\n * Represents an uploaded file (image or document) that can be\n * included in a user message.\n */\nexport interface Attachment {\n\t/** Unique identifier for this attachment */\n\tid: string;\n\t/** Type of attachment */\n\ttype: \"image\" | \"document\";\n\t/** Original filename */\n\tfileName: string;\n\t/** MIME type of the file */\n\tmimeType: string;\n\t/** File size in bytes */\n\tsize: number;\n\t/** Base64-encoded file content */\n\tcontent: string;\n\t/** Extracted text content (for documents) */\n\textractedText?: string;\n\t/** Preview image (for documents) */\n\tpreview?: string;\n}\n\n/**\n * User-configurable thinking level for extended reasoning.\n *\n * Controls how much computational effort the model spends on\n * reasoning before generating a response.\n *\n * - `off` - No extended thinking\n * - `minimal` - Brief reasoning hints\n * - `low` - Short reasoning steps\n * - `medium` - Moderate reasoning (default)\n * - `high` - Thorough step-by-step reasoning\n * - `max` - Maximum reasoning depth\n */\nexport type ThinkingLevel =\n\t| \"off\"\n\t| \"minimal\"\n\t| \"low\"\n\t| \"medium\"\n\t| \"high\"\n\t| \"ultra\"\n\t| \"max\";\n\n/**\n * User message with optional file attachments.\n *\n * Extends the base UserMessage to support file attachments\n * for rich multi-modal interactions.\n */\nexport type UserMessageWithAttachments = UserMessage & {\n\t/** Optional file attachments */\n\tattachments?: Attachment[];\n};\n\n/**\n * Placeholder for custom message types.\n * Can be extended to add application-specific message types.\n */\nexport interface CustomMessages {\n\thookMessage: HookMessage;\n\tbranchSummary: BranchSummaryMessage;\n\tcompactionSummary: CompactionSummaryMessage;\n}\n\n/**\n * Application-level message type.\n *\n * Union of all message types that can appear in the UI,\n * including user messages with attachments.\n */\nexport type AppMessage =\n\t| AssistantMessage\n\t| UserMessageWithAttachments\n\t| Message\n\t| CustomMessages[keyof CustomMessages];\n\n/**\n * Information about a tool call currently being executed.\n */\nexport interface PendingToolCall {\n\t/** Name of the tool being executed */\n\ttoolName: string;\n\t/** Original arguments passed to the tool */\n\targs?: Record<string, unknown>;\n\t/** Tool metadata captured when execution started */\n\ttool?: Pick<\n\t\tAgentTool,\n\t\t\"label\" | \"getDisplayName\" | \"getToolUseSummary\" | \"getActivityDescription\"\n\t>;\n\t/** Stable display name for live UI */\n\tdisplayName?: string;\n\t/** Stable compact summary for live UI */\n\tsummaryLabel?: string;\n}\n\n/**\n * Current state of an agent instance.\n *\n * This is the central state object managed by the Agent class,\n * containing all information about the current conversation,\n * configuration, and execution status.\n */\nexport interface AgentState {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt: string;\n\t/** Version/hash metadata for the base system prompt instructions */\n\tpromptMetadata?: PromptMetadata;\n\t/** Exact prompt source files layered into the current system prompt */\n\tsystemPromptSourcePaths?: string[];\n\t/** Manifest of project instruction files layered into the current system prompt */\n\tpromptContextManifest?: PromptProjectDocManifest;\n\t/** Full filesystem and MCP context provenance captured for this run */\n\tunifiedContextManifest?: UnifiedContextManifest;\n\t/** Current model configuration */\n\tmodel: Model<Api>;\n\t/** Current thinking level for extended reasoning */\n\tthinkingLevel: ThinkingLevel;\n\t/** Optional reasoning summary preference for Responses API */\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\t/** Available tools for this agent */\n\ttools: AgentTool[];\n\t/**\n\t * Controls how queued steering messages are sent between turns.\n\t * - `\"all\"` - Send all queued messages at once\n\t * - `\"one\"` - Send one message at a time\n\t */\n\tsteeringMode: \"all\" | \"one\";\n\t/**\n\t * Controls how queued follow-up messages are sent between turns.\n\t * - `\"all\"` - Send all queued messages at once\n\t * - `\"one\"` - Send one message at a time\n\t */\n\tfollowUpMode: \"all\" | \"one\";\n\t/**\n\t * @deprecated Use steeringMode/followUpMode instead.\n\t */\n\tqueueMode: \"all\" | \"one\";\n\t/** Conversation history */\n\tmessages: AppMessage[];\n\t/** Whether the agent is currently streaming a response */\n\tisStreaming: boolean;\n\t/** Current streaming message (partial response) */\n\tstreamMessage: Message | null;\n\t/** Tool calls currently being executed */\n\tpendingToolCalls: Map<string, PendingToolCall>;\n\t/** Current error message, if any */\n\terror?: string;\n\t/** Optional sandbox for isolated tool execution */\n\tsandbox?: import(\"../sandbox/types.js\").Sandbox;\n\t/** Current sandbox mode (e.g., \"docker\", \"local\") */\n\tsandboxMode?: string | null;\n\t/** Whether sandboxing is enabled */\n\tsandboxEnabled?: boolean;\n\t/** User identification for tracking */\n\tuser?: {\n\t\t/** User UUID */\n\t\tid: string;\n\t\t/** Organization UUID */\n\t\torgId: string;\n\t};\n\t/** Session information for persistence */\n\tsession?: {\n\t\t/** Session UUID */\n\t\tid: string;\n\t\t/** When the session started */\n\t\tstartedAt: Date;\n\t};\n\t/** Sampling temperature override (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Top-p sampling override (0.0-1.0) */\n\ttopP?: number;\n}\n\n/**\n * Events emitted during agent execution.\n *\n * These events provide real-time updates about agent activity,\n * enabling UI updates, logging, and progress tracking.\n *\n * ## Lifecycle Events\n * - `agent_start` - Agent execution started\n * - `agent_end` - Agent execution completed\n * - `turn_start` - New conversation turn started\n * - `turn_end` - Conversation turn completed\n *\n * ## Message Events\n * - `message_start` - New message being constructed\n * - `message_update` - Incremental message update\n * - `message_end` - Message completed\n *\n * ## Tool Events\n * - `tool_execution_start` - Tool execution started\n * - `tool_execution_update` - Tool execution produced partial output\n * - `tool_execution_end` - Tool execution completed\n * - `parallelism_gated` - Scheduler delayed a tool because in-flight mutations made parallel execution unsafe\n * - `parallel_conflict_detected` - Scheduler detected overlapping write scopes while evaluating parallel execution\n * - `tool_batch_summary` - Tool batch completed with a transient summary label\n * - `client_tool_request` - Client-side tool invocation needed\n *\n * ## Approval Events\n * - `action_approval_required` - User approval needed\n * - `action_approval_resolved` - User made approval decision\n *\n * ## Tool Retry Events\n * - `tool_retry_required` - Tool failed and retry decision needed\n * - `tool_retry_resolved` - Tool retry decision resolved\n *\n * ## Status Events\n * - `status` - Status update\n * - `error` - Error occurred\n * - `compaction` - Context was compacted\n */\nexport interface ToolSchedulingMetadata {\n\tclassification:\n\t\t| \"read_only\"\n\t\t| \"path_scoped_mutation\"\n\t\t| \"parallel_safe_mutation\"\n\t\t| \"serialized_mutation\"\n\t\t| \"workflow_serialized\"\n\t\t| \"cache_reuse\"\n\t\t| \"unknown\";\n\treason:\n\t\t| \"read_only_tool\"\n\t\t| \"mcp_parallel_opt_in\"\n\t\t| \"path_scope_available\"\n\t\t| \"path_scope_disjoint\"\n\t\t| \"path_scope_overlap\"\n\t\t| \"pending_mutation\"\n\t\t| \"mutating_tool\"\n\t\t| \"workflow_state_tracker\"\n\t\t| \"cache_hit\"\n\t\t| \"cache_pending\"\n\t\t| \"unknown_tool\";\n\tconcurrencyLimit?: number;\n\tqueueDepth?: number;\n\tpendingMutations?: number;\n\tpathScope?: string[];\n\tpathScopeSource?: \"annotation\" | \"known_tool\";\n\tpathArgumentKeys?: string[];\n\tcache?: \"disabled\" | \"miss\" | \"candidate\" | \"pending_hit\" | \"hit\";\n}\n\nexport type AgentEvent =\n\t| {\n\t\t\t/** Agent execution started */\n\t\t\ttype: \"agent_start\";\n\t\t\t/** Whether this execution is an automatic continuation of the current turn */\n\t\t\tcontinuation?: boolean;\n\t }\n\t| {\n\t\t\t/** Agent execution completed */\n\t\t\ttype: \"agent_end\";\n\t\t\t/** Final messages from this execution */\n\t\t\tmessages: AppMessage[];\n\t\t\t/** Whether execution was aborted */\n\t\t\taborted?: boolean;\n\t\t\t/** If aborted with partial acceptance, contains the saved partial message */\n\t\t\tpartialAccepted?: AppMessage;\n\t\t\t/** Final stop reason from the LLM - \"length\" indicates output hit the max token limit */\n\t\t\tstopReason?: StopReason;\n\t }\n\t| {\n\t\t\t/** Status update during execution */\n\t\t\ttype: \"status\";\n\t\t\t/** Status message */\n\t\t\tstatus: string;\n\t\t\t/** Additional details */\n\t\t\tdetails: Record<string, unknown>;\n\t }\n\t| {\n\t\t\t/** Error occurred during execution */\n\t\t\ttype: \"error\";\n\t\t\t/** Error message */\n\t\t\tmessage: string;\n\t }\n\t| {\n\t\t\t/** New conversation turn started */\n\t\t\ttype: \"turn_start\";\n\t }\n\t| {\n\t\t\t/** Conversation turn completed */\n\t\t\ttype: \"turn_end\";\n\t\t\t/** Assistant message from this turn */\n\t\t\tmessage: AppMessage;\n\t\t\t/** Tool results from this turn */\n\t\t\ttoolResults: AppMessage[];\n\t }\n\t| {\n\t\t\t/** New message being constructed */\n\t\t\ttype: \"message_start\";\n\t\t\t/** The message being built */\n\t\t\tmessage: AppMessage;\n\t }\n\t| {\n\t\t\t/** Incremental update to current message */\n\t\t\ttype: \"message_update\";\n\t\t\t/** Updated message state */\n\t\t\tmessage: AppMessage;\n\t\t\t/** The streaming event that triggered this update */\n\t\t\tassistantMessageEvent: AssistantMessageEvent;\n\t }\n\t| {\n\t\t\t/** Message completed */\n\t\t\ttype: \"message_end\";\n\t\t\t/** Final message */\n\t\t\tmessage: AppMessage;\n\t }\n\t| {\n\t\t\t/** Tool execution started */\n\t\t\ttype: \"tool_execution_start\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Arguments passed to the tool */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Scheduler classification and serialization reason for this call */\n\t\t\tscheduling?: ToolSchedulingMetadata;\n\t }\n\t| {\n\t\t\t/** Tool execution completed */\n\t\t\ttype: \"tool_execution_end\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Optional approval request identifier correlated to Platform ToolExecution */\n\t\t\tapprovalRequestId?: string;\n\t\t\t/** Optional stable error or outcome code for telemetry and clients */\n\t\t\terrorCode?: string;\n\t\t\t/** Optional governed outcome classification surfaced by the tool result */\n\t\t\tgovernedOutcome?:\n\t\t\t\t| \"approval_required\"\n\t\t\t\t| \"approval_pending\"\n\t\t\t\t| \"authentication_required\"\n\t\t\t\t| \"denied\"\n\t\t\t\t| \"rate_limited\";\n\t\t\t/** Optional selected skill artifact metadata surfaced by the tool result */\n\t\t\tskillMetadata?: SkillArtifactMetadata;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Result from the tool */\n\t\t\tresult: ToolResultMessage;\n\t\t\t/** Whether the tool returned an error */\n\t\t\tisError: boolean;\n\t\t\t/** Scheduler classification and final reuse/serialization reason */\n\t\t\tscheduling?: ToolSchedulingMetadata;\n\t }\n\t| ParallelismGatedEvent\n\t| ParallelConflictDetectedEvent\n\t| {\n\t\t\t/** LSP diagnostic delta produced by an edit/write tool call */\n\t\t\ttype: \"diagnostic_delta\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** File affected by the diagnostic delta */\n\t\t\tfile: string;\n\t\t\t/** User-facing file path from the tool call */\n\t\t\tdisplayPath: string;\n\t\t\t/** Whether a pre-edit baseline was available */\n\t\t\tusedDelta: boolean;\n\t\t\t/** Newly introduced diagnostic count */\n\t\t\tintroducedCount: number;\n\t\t\t/** Diagnostics repaired by the tool call */\n\t\t\trepairedCount: number;\n\t\t\t/** Remaining diagnostics for the affected file */\n\t\t\tremainingCount: number;\n\t\t\t/** Stable fingerprint for introduced diagnostics */\n\t\t\tfingerprint: string;\n\t\t\t/** Repair attempt number for this fingerprint */\n\t\t\trepairAttempt?: number;\n\t\t\t/** Maximum automatic repair attempts for this fingerprint */\n\t\t\tmaxRepairAttempts?: number;\n\t\t\t/** Whether Agent queued a follow-up repair turn */\n\t\t\twillAutoFollowUp: boolean;\n\t\t\t/** Why a repair follow-up was or was not queued */\n\t\t\treason: string;\n\t }\n\t| {\n\t\t\t/** Summary emitted after the final tool in a batch completes */\n\t\t\ttype: \"tool_batch_summary\";\n\t\t\t/** Stable one-line summary of what the completed tool batch did */\n\t\t\tsummary: string;\n\t\t\t/** Underlying per-tool summary labels used to build the summary */\n\t\t\tsummaryLabels: string[];\n\t\t\t/** Tool call identifiers included in this batch */\n\t\t\ttoolCallIds: string[];\n\t\t\t/** Tool names included in this batch */\n\t\t\ttoolNames: string[];\n\t\t\t/** Successful tool calls in the batch */\n\t\t\tcallsSucceeded: number;\n\t\t\t/** Failed tool calls in the batch */\n\t\t\tcallsFailed: number;\n\t }\n\t| ToolPhaseSummary\n\t| {\n\t\t\t/** Tool execution produced partial output */\n\t\t\ttype: \"tool_execution_update\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Arguments passed to the tool */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Partial tool result */\n\t\t\tpartialResult: AgentToolResult;\n\t }\n\t| {\n\t\t\t/** User approval required for an action */\n\t\t\ttype: \"action_approval_required\";\n\t\t\t/** Details of the approval request */\n\t\t\trequest: ActionApprovalRequest;\n\t }\n\t| {\n\t\t\t/** User made approval decision */\n\t\t\ttype: \"action_approval_resolved\";\n\t\t\t/** The original request */\n\t\t\trequest: ActionApprovalRequest;\n\t\t\t/** User's decision */\n\t\t\tdecision: ActionApprovalDecision;\n\t }\n\t| {\n\t\t\t/** Tool failed and requires a retry decision */\n\t\t\ttype: \"tool_retry_required\";\n\t\t\t/** Details of the retry request */\n\t\t\trequest: ToolRetryRequest;\n\t }\n\t| {\n\t\t\t/** Tool retry decision resolved */\n\t\t\ttype: \"tool_retry_resolved\";\n\t\t\t/** The original request */\n\t\t\trequest: ToolRetryRequest;\n\t\t\t/** User or policy decision */\n\t\t\tdecision: ToolRetryDecision;\n\t }\n\t| {\n\t\t\t/** Client-side tool invocation needed */\n\t\t\ttype: \"client_tool_request\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Arguments for the tool */\n\t\t\targs: unknown;\n\t }\n\t| {\n\t\t\t/** Context was compacted (older messages summarized) */\n\t\t\ttype: \"compaction\";\n\t\t\t/** Generated summary of compacted messages */\n\t\t\tsummary: string;\n\t\t\t/** Index of first entry to keep (entries before were summarized) */\n\t\t\tfirstKeptEntryIndex: number;\n\t\t\t/** Token count before compaction */\n\t\t\ttokensBefore: number;\n\t\t\t/** Whether this was auto-triggered vs manual /compact */\n\t\t\tauto?: boolean;\n\t\t\t/** Custom instructions used for summarization */\n\t\t\tcustomInstructions?: string;\n\t\t\t/** Timestamp of compaction */\n\t\t\ttimestamp: string;\n\t }\n\t| {\n\t\t\t/** Auto-retry started for transient error (rate limit, overload, 5xx) */\n\t\t\ttype: \"auto_retry_start\";\n\t\t\t/** Current retry attempt (1-based) */\n\t\t\tattempt: number;\n\t\t\t/** Maximum number of retry attempts */\n\t\t\tmaxAttempts: number;\n\t\t\t/** Delay in milliseconds before retry */\n\t\t\tdelayMs: number;\n\t\t\t/** The error message that triggered the retry */\n\t\t\terrorMessage: string;\n\t }\n\t| {\n\t\t\t/** Auto-retry completed (success or final failure) */\n\t\t\ttype: \"auto_retry_end\";\n\t\t\t/** Whether the retry eventually succeeded */\n\t\t\tsuccess: boolean;\n\t\t\t/** Final attempt number */\n\t\t\tattempt: number;\n\t\t\t/** If failed, the final error message */\n\t\t\tfinalError?: string;\n\t };\n\n/**\n * Events emitted over streaming transports (SSE/WebSocket).\n *\n * Includes core agent events plus transport-level signals.\n */\nexport type AgentStreamEvent =\n\t| AgentEvent\n\t| { type: \"session_update\"; sessionId: string }\n\t| { type: \"heartbeat\" }\n\t| { type: \"aborted\" }\n\t| { type: \"done\" };\n\n/**\n * Message queued for sending to the LLM.\n *\n * Wraps the original message with an optional LLM-formatted version,\n * allowing for message transformation before sending.\n *\n * @typeParam TOriginal - Type of the original message\n */\nexport interface QueuedMessage<TOriginal = AppMessage> {\n\t/** Stable identifier for queue operations */\n\tid: number;\n\t/** When the message was queued */\n\tcreatedAt: number;\n\t/** Original message as received */\n\toriginal: TOriginal;\n\t/** Optional LLM-formatted version of the message */\n\tllm?: Message;\n}\n\n/**\n * Runtime configuration for agent execution.\n *\n * Passed to the transport layer when starting a new agent run,\n * containing all the configuration needed to execute a conversation turn.\n */\nexport interface AgentRunConfig {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt: string;\n\t/** Tools available for this run */\n\ttools: AgentTool[];\n\t/** Model to use for generation */\n\tmodel: Model<Api>;\n\t/** Optional reasoning effort level */\n\treasoning?: ReasoningEffort;\n\t/** Optional reasoning summary preference for Responses API */\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\t/** Emit message_end for the initial user message (defaults to true). */\n\temitUserMessageEnd?: boolean;\n\t/** Function to retrieve steering messages for batch sending */\n\tgetSteeringMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/** Function to retrieve follow-up messages for batch sending */\n\tgetFollowUpMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/** Function to retrieve prompt-only messages for the next turn. */\n\tgetPromptOnlyMessages?: () => Promise<Message[]>;\n\t/** @deprecated Use getSteeringMessages/getFollowUpMessages instead */\n\tgetQueuedMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/**\n\t * Optional message preprocessor applied immediately before calling the LLM provider.\n\t *\n\t * Use this to implement provider-specific compatibility transforms (e.g., image limits,\n\t * signature preservation, prompt caching markers) without polluting the core tools.\n\t *\n\t * Note: This is a pure preprocessing hook. It should not execute tools or perform I/O.\n\t */\n\tpreprocessMessages?: (\n\t\tmessages: Message[],\n\t\tcontext: {\n\t\t\tsystemPrompt: string;\n\t\t\ttools: AgentTool[];\n\t\t\tmodel: Model<Api>;\n\t\t\tuserMessage?: Message;\n\t\t},\n\t\tsignal?: AbortSignal,\n\t) => Message[] | Promise<Message[]>;\n\t/** User identification for tracking */\n\tuser?: {\n\t\t/** User UUID */\n\t\tid: string;\n\t\t/** Organization UUID */\n\t\torgId: string;\n\t};\n\t/** Session information for persistence */\n\tsession?: {\n\t\t/** Session UUID */\n\t\tid: string;\n\t\t/** When the session started */\n\t\tstartedAt: Date;\n\t};\n\t/** User/org guarded-files override policy for this run */\n\tguardedFiles?: GuardedFilesPolicySettings;\n\t/** Optional helper function for running LLM queries (e.g., for summarization) */\n\trunLLM?: (systemPrompt: string, userPrompt: string) => Promise<string>;\n\t/** Optional debug checkpoint profiler for local query latency diagnostics. */\n\tqueryProfiler?: CheckpointProfiler;\n\t/** Optional sandbox for isolated tool execution */\n\tsandbox?: import(\"../sandbox/types.js\").Sandbox;\n\t/** Sampling temperature override (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Top-p sampling override (0.0-1.0) */\n\ttopP?: number;\n\t/** Optional Anthropic API-side task budget for the current turn */\n\ttaskBudget?: {\n\t\ttotal: number;\n\t\tremaining?: number;\n\t};\n}\n\n/**\n * Transport interface for LLM communication.\n *\n * Implementors of this interface handle the actual communication\n * with the LLM provider, including streaming and tool execution.\n */\nexport interface AgentTransport {\n\t/**\n\t * Execute a conversation turn with a new user message.\n\t *\n\t * @param messages - Conversation history\n\t * @param userMessage - New user message\n\t * @param config - Runtime configuration\n\t * @param signal - Optional abort signal for cancellation\n\t * @returns Async iterable of agent events\n\t */\n\trun(\n\t\tmessages: Message[],\n\t\tuserMessage: Message,\n\t\tconfig: AgentRunConfig,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<AgentEvent>;\n\n\t/**\n\t * Continue from current context without a new user message.\n\t *\n\t * Used for:\n\t * - Retrying after transient errors (rate limits, overload)\n\t * - Continuing after context compaction\n\t * - Resuming interrupted tool execution\n\t *\n\t * @param messages - Current conversation history\n\t * @param config - Runtime configuration\n\t * @param signal - Optional abort signal for cancellation\n\t * @returns Async iterable of agent events\n\t */\n\tcontinue(\n\t\tmessages: Message[],\n\t\tconfig: AgentRunConfig,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<AgentEvent>;\n\n\t/**\n\t * Optional lightweight connectivity probe for UI health checks.\n\t */\n\tping?: () => Promise<void>;\n}\n\n/**\n * Options for streaming LLM requests.\n *\n * These options are passed to the transport layer when making\n * streaming requests to the LLM provider.\n */\nexport interface StreamOptions {\n\t/** Sampling temperature (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Maximum tokens to generate */\n\tmaxTokens?: number;\n\t/** Abort signal for cancellation */\n\tsignal?: AbortSignal;\n\t/** API key for authentication */\n\tapiKey?: string;\n\t/** Additional headers to include in requests */\n\theaders?: Record<string, string>;\n\t/** Additional request body fields for provider-specific extensions */\n\trequestBody?: Record<string, unknown>;\n\t/** Stable session id for provider-side request grouping/cache keys */\n\tsessionId?: string;\n\t/** Current working directory for local provider runtimes. */\n\tcwd?: string;\n\t/** Authentication type for the request */\n\tauthType?: \"api-key\" | \"bearer-token\";\n\t/** Optional Anthropic API-side task budget for the current turn */\n\ttaskBudget?: {\n\t\ttotal: number;\n\t\tremaining?: number;\n\t};\n\t/** Optional governed executor for provider-native dynamic tool callbacks. */\n\texecuteDynamicTool?: (toolCall: ToolCall) => Promise<AgentToolResult>;\n}\n\n/**\n * Cache control hint for prompt caching.\n *\n * Used to mark content that should be cached for faster\n * subsequent requests.\n */\nexport interface PromptCacheControl {\n\t/** Cache type - currently only \"ephemeral\" is supported */\n\ttype: \"ephemeral\";\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG","sourcesContent":["/**\n * @fileoverview Core Type Definitions for Maestro Agent\n *\n * This module defines the fundamental types used throughout the Maestro AI system,\n * including message formats, tool definitions, model configurations, and agent state.\n *\n * ## Type Categories\n *\n * ### Message Types\n * - {@link UserMessage} - Messages from the human user\n * - {@link AssistantMessage} - Responses from the AI assistant\n * - {@link ToolResultMessage} - Results from tool executions\n * - {@link Message} - Union of all message types\n *\n * ### Content Types\n * - {@link TextContent} - Plain text content blocks\n * - {@link ImageContent} - Base64-encoded images\n * - {@link ThinkingContent} - Extended reasoning traces\n * - {@link ToolCall} - Tool invocation requests\n *\n * ### Tool Types\n * - {@link Tool} - Tool definition schema (for API)\n * - {@link AgentTool} - Tool with execute function (for runtime)\n * - {@link AgentToolResult} - Return value from tool execution\n *\n * ### Configuration Types\n * - {@link Model} - LLM model configuration\n * - {@link AgentState} - Current state of an agent\n * - {@link AgentRunConfig} - Runtime configuration\n *\n * @module agent/types\n */\n\nimport type {\n\tGuardedFilesPolicySettings,\n\tRoutingReceipt,\n} from \"@evalops/contracts\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport type { PromptProjectDocManifest } from \"../config/index.js\";\nimport type { UnifiedContextManifest } from \"../context/manifest-types.js\";\nimport type { PromptMetadata } from \"../prompts/types.js\";\nimport type { CheckpointProfiler } from \"../utils/checkpoint-profiler.js\";\nimport type {\n\tActionApprovalDecision,\n\tActionApprovalRequest,\n} from \"./action-approval.js\";\nimport type { SkillArtifactMetadata } from \"./skill-artifact-metadata.js\";\nimport type { ToolCapabilityMetadata } from \"./tool-capability-types.js\";\nimport type { ToolRetryDecision, ToolRetryRequest } from \"./tool-retry.js\";\n\n/**\n * API format identifier for different LLM provider APIs.\n *\n * Each provider may support different API formats:\n * - `openai-completions` - OpenAI Chat Completions API\n * - `openai-responses` - OpenAI Responses API (newer format)\n * - `openai-codex-responses` - ChatGPT Codex Responses backend\n * - `openai-codex-app-server` - Local Codex app-server with ChatGPT sign-in\n * - `anthropic-messages` - Anthropic Messages API\n * - `google-generative-ai` - Google Generative AI (Gemini)\n * - `google-gemini-cli` - Google Cloud Code Assist (Gemini CLI)\n * - `bedrock-converse` - AWS Bedrock Converse API\n * - `scripted-replay` - Deterministic local scenario replay provider\n */\nexport type Api =\n\t| \"openai-completions\"\n\t| \"openai-responses\"\n\t| \"openai-codex-responses\"\n\t| \"openai-codex-app-server\"\n\t| \"anthropic-messages\"\n\t| \"google-generative-ai\"\n\t| \"google-gemini-cli\"\n\t| \"bedrock-converse\"\n\t| \"vertex-ai\"\n\t| \"scripted-replay\";\n\nexport interface OpenAICompatOverrides {\n\tsupportsStore?: boolean;\n\tsupportsDeveloperRole?: boolean;\n\tsupportsReasoningEffort?: boolean;\n\tsupportsResponsesApi?: boolean;\n\t/** Supports Anthropic-style cache_control (OpenRouter with Claude models) */\n\tsupportsCacheControl?: boolean;\n\tmaxTokensField?: \"max_tokens\" | \"max_completion_tokens\";\n\trequiresToolResultName?: boolean;\n\trequiresAssistantAfterToolResult?: boolean;\n\trequiresThinkingAsText?: boolean;\n\trequiresMistralToolIds?: boolean;\n}\n\n/**\n * Well-known LLM provider identifiers.\n *\n * These are the officially supported providers with built-in configurations:\n * - `anthropic` - Anthropic (Claude models)\n * - `bedrock` - AWS Bedrock\n * - `google` - Google AI (Gemini models)\n * - `openai` - OpenAI (GPT models)\n * - `azure-openai` - Azure OpenAI\n * - `writer` - Writer.com\n * - `xai` - xAI (Grok models)\n * - `groq` - Groq\n * - `cerebras` - Cerebras\n * - `openrouter` - OpenRouter (aggregator)\n * - `zai` - Z.ai (Zhipu GLM)\n * - `deepseek` - DeepSeek\n * - `moonshot` - Moonshot AI (Kimi)\n * - `dashscope` - Alibaba Qwen (DashScope)\n * - `minimax` - MiniMax\n */\nexport type KnownProvider =\n\t| \"anthropic\"\n\t| \"bedrock\"\n\t| \"google\"\n\t| \"openai\"\n\t| \"openai-codex\"\n\t| \"azure-openai\"\n\t| \"writer\"\n\t| \"xai\"\n\t| \"groq\"\n\t| \"cerebras\"\n\t| \"openrouter\"\n\t| \"zai\"\n\t| \"deepseek\"\n\t| \"moonshot\"\n\t| \"dashscope\"\n\t| \"minimax\";\n\n/**\n * Provider identifier - either a known provider or a custom string.\n * Custom providers can be used with OpenAI-compatible APIs.\n */\nexport type Provider = KnownProvider | string;\n\n/**\n * Reasoning effort level for models that support extended thinking.\n *\n * Higher levels produce more detailed reasoning at increased latency:\n * - `minimal` - Brief chain-of-thought hints\n * - `low` - Short reasoning steps\n * - `medium` - Moderate reasoning depth (recommended default)\n * - `high` - Thorough step-by-step reasoning\n * - `ultra` - Maximum reasoning depth (for complex problems)\n *\n * Note: Claude Code uses keywords \"think\", \"think hard\", \"think harder\", \"ultrathink\"\n * which map to low, medium, high, ultra respectively.\n */\nexport type ReasoningEffort = \"minimal\" | \"low\" | \"medium\" | \"high\" | \"ultra\";\n\n/**\n * Plain text content block within a message.\n *\n * @example\n * ```typescript\n * const content: TextContent = {\n * type: \"text\",\n * text: \"Hello, how can I help you today?\"\n * };\n * ```\n */\nexport interface TextContent {\n\t/** Discriminator for content block type */\n\ttype: \"text\";\n\t/** The text content */\n\ttext: string;\n\t/** Optional signature for content verification */\n\ttextSignature?: string;\n}\n\n/**\n * Extended thinking/reasoning content block.\n *\n * Contains the model's internal reasoning process when extended\n * thinking is enabled. This is typically hidden from end users\n * but useful for debugging and understanding model behavior.\n */\nexport interface ThinkingContent {\n\t/** Discriminator for content block type */\n\ttype: \"thinking\";\n\t/** The thinking/reasoning trace */\n\tthinking: string;\n\t/** Optional signature for content verification */\n\tthinkingSignature?: string;\n}\n\n/**\n * Base64-encoded image content block.\n *\n * Used for including images in user messages (vision input)\n * or tool results (screenshots, generated images).\n *\n * @example\n * ```typescript\n * const image: ImageContent = {\n * type: \"image\",\n * data: \"iVBORw0KGgo...\", // base64 encoded\n * mimeType: \"image/png\"\n * };\n * ```\n */\nexport interface ImageContent {\n\t/** Discriminator for content block type */\n\ttype: \"image\";\n\t/** Base64-encoded image data */\n\tdata: string;\n\t/** MIME type (e.g., \"image/png\", \"image/jpeg\") */\n\tmimeType: string;\n}\n\n/**\n * Tool invocation request within an assistant message.\n *\n * When the model decides to use a tool, it emits a ToolCall\n * content block specifying which tool to call and with what arguments.\n *\n * @example\n * ```typescript\n * const toolCall: ToolCall = {\n * type: \"toolCall\",\n * id: \"call_abc123\",\n * name: \"read\",\n * arguments: { file_path: \"/src/index.ts\" }\n * };\n * ```\n */\nexport interface ToolCall {\n\t/** Discriminator for content block type */\n\ttype: \"toolCall\";\n\t/** Unique identifier for this tool call (used to match results) */\n\tid: string;\n\t/** Name of the tool to invoke */\n\tname: string;\n\t/** Arguments to pass to the tool */\n\targuments: Record<string, unknown>;\n\t/**\n\t * Provider-specific signature used by some APIs (notably Gemini 3) to\n\t * associate tool calls with preceding thoughts. If present, it must be\n\t * preserved across turns when replaying the message history back to the provider.\n\t */\n\tthoughtSignature?: string;\n}\n\nexport type ToolSchedulingDecisionKind =\n\t| \"scheduled\"\n\t| \"parallelized\"\n\t| \"delayed\"\n\t| \"serialized\"\n\t| \"cached\"\n\t| \"skipped\";\n\nexport interface ToolSchedulingDecision {\n\t/** Tool call identifier; duplicated here for standalone telemetry use. */\n\tcallId: string;\n\t/** Tool name, never arguments. */\n\ttoolName: string;\n\t/** Zero-based order from the model-emitted tool-call list. */\n\temittedIndex: number;\n\t/** Scheduler wave number when the call entered an execution wave. */\n\twaveIndex?: number;\n\t/** Scheduler outcome for this call. */\n\tdecision: ToolSchedulingDecisionKind;\n\t/** Stable reason code; intentionally avoids raw paths and arguments. */\n\treason: string;\n\t/** Time spent waiting inside the scheduler after model emission. */\n\tschedulerWaitMs?: number;\n\t/** True when an MCP server opt-in made the call parallel-safe. */\n\tmcpOptIn?: boolean;\n\t/** True when execution was served from reusable tool-result state. */\n\tcacheHit?: boolean;\n\t/** True when an in-flight mutation forced a wait or serialization. */\n\tblockedByMutation?: boolean;\n}\n\nexport type ToolPhaseDecisionOutcome =\n\t| \"parallelized\"\n\t| \"serialized\"\n\t| \"delayed\"\n\t| \"cached\"\n\t| \"skipped\";\n\nexport interface ToolPhaseDecision {\n\ttoolCallId: string;\n\ttoolName: string;\n\temittedIndex: number;\n\toutcome: ToolPhaseDecisionOutcome;\n\tdecision: ToolPhaseDecisionOutcome;\n\treason: string;\n\twaveIndex?: number;\n\twaitMs: number;\n\tschedulerWaitMs: number;\n\tmcpOptIn?: boolean;\n\tcacheHit?: boolean;\n\tblockedByMutation?: boolean;\n}\n\nexport interface ParallelismScopeMetadata {\n\tpathScope?: string[];\n\tpathScopeSource?: \"annotation\" | \"known_tool\";\n\tpathArgumentKeys?: string[];\n}\n\nexport interface ParallelismGatedEvent extends ParallelismScopeMetadata {\n\ttype: \"parallelism_gated\";\n\ttoolCallId: string;\n\ttoolName: string;\n\treason: \"mutation_scope_overlap\" | \"mutation_unknown_write_set\";\n\tqueueDepth: number;\n\tpendingMutations: number;\n\tpendingToolCallIds: string[];\n\tpendingToolNames: string[];\n}\n\nexport interface ParallelConflictDetectedEvent\n\textends ParallelismScopeMetadata {\n\ttype: \"parallel_conflict_detected\";\n\ttoolCallId: string;\n\ttoolName: string;\n\tconflictingToolCallId: string;\n\tconflictingToolName: string;\n\tconflictingPathScope?: string[];\n\tconflictingPathScopeSource?: \"annotation\" | \"known_tool\";\n}\n\nexport interface ToolPhaseBatchShapingFeedback {\n\tavoidableSingleton: boolean;\n\treason: string;\n\thint: string;\n}\n\nexport interface ToolPhaseSummary {\n\ttype: \"tool_phase_summary\";\n\tmodelToolCallCount: number;\n\tmodelEmittedToolCallCount: number;\n\tschedulableWaveCount: number;\n\tparallelizedCallCount: number;\n\tactuallyParallelizedCallCount: number;\n\tserializedCallCount: number;\n\tdelayedCallCount: number;\n\tblockedByMutationCount: number;\n\tmcpOptInCallCount: number;\n\tmcpOptInUseCount: number;\n\tcacheHitCount: number;\n\ttotalToolWaitMs: number;\n\ttoolWaitTimeMs: number;\n\tserializationReasons: Record<string, number>;\n\tdecisions: ToolPhaseDecision[];\n\tbatchShapingFeedback?: ToolPhaseBatchShapingFeedback;\n}\n\n/**\n * Token usage and cost information for a message or request.\n *\n * Tracks input/output tokens and cache utilization for cost monitoring\n * and context window management.\n */\nexport interface Usage {\n\t/** Number of input tokens consumed */\n\tinput: number;\n\t/** Number of output tokens generated */\n\toutput: number;\n\t/** Tokens served from prompt cache (reduces cost) */\n\tcacheRead: number;\n\t/** Tokens written to prompt cache */\n\tcacheWrite: number;\n\t/** Calculated cost breakdown in USD */\n\tcost: {\n\t\t/** Cost for input tokens */\n\t\tinput: number;\n\t\t/** Cost for output tokens */\n\t\toutput: number;\n\t\t/** Cost savings from cache reads */\n\t\tcacheRead: number;\n\t\t/** Cost for cache writes */\n\t\tcacheWrite: number;\n\t\t/** Total cost for this message/request */\n\t\ttotal: number;\n\t};\n}\n\n/**\n * Reason why the model stopped generating.\n *\n * - `stop` - Natural completion (end of response)\n * - `length` - Hit max_tokens limit\n * - `toolUse` - Model wants to use a tool (generation paused)\n * - `error` - An error occurred during generation\n * - `aborted` - Request was cancelled by the user\n */\nexport type StopReason = \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\";\n\n/**\n * Message from the human user.\n *\n * User messages can contain plain text or an array of content blocks\n * (for multi-modal input with images).\n *\n * @example\n * ```typescript\n * // Simple text message\n * const msg: UserMessage = {\n * role: \"user\",\n * content: \"What is this code doing?\",\n * timestamp: Date.now()\n * };\n *\n * // Message with image\n * const multiModal: UserMessage = {\n * role: \"user\",\n * content: [\n * { type: \"text\", text: \"What's in this screenshot?\" },\n * { type: \"image\", data: base64Data, mimeType: \"image/png\" }\n * ],\n * timestamp: Date.now()\n * };\n * ```\n */\nexport interface UserMessage {\n\t/** Message role discriminator */\n\trole: \"user\";\n\t/** Message content - string or array of content blocks */\n\tcontent: string | (TextContent | ImageContent)[];\n\t/** Optional non-LLM metadata for runtime bookkeeping */\n\tmetadata?: Record<string, unknown>;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n}\n\n/**\n * Response message from the AI assistant.\n *\n * Contains the model's response along with metadata about the generation\n * including token usage, stop reason, and provider information.\n *\n * The content array may contain:\n * - {@link TextContent} - The actual response text\n * - {@link ThinkingContent} - Extended reasoning (if enabled)\n * - {@link ToolCall} - Tool invocation requests\n */\nexport interface AssistantMessage {\n\t/** Message role discriminator */\n\trole: \"assistant\";\n\t/** Array of content blocks (text, thinking, tool calls) */\n\tcontent: (TextContent | ThinkingContent | ToolCall)[];\n\t/** API format used for this response */\n\tapi: Api;\n\t/** Provider that generated this response */\n\tprovider: Provider;\n\t/** Model ID that generated this response */\n\tmodel: string;\n\t/** Token usage and cost information */\n\tusage: Usage;\n\t/** Reason why generation stopped */\n\tstopReason: StopReason;\n\t/** Error message if stopReason is \"error\" */\n\terrorMessage?: string;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n\t/** Immutable model/profile routing decision for this turn. */\n\troutingReceipt?: RoutingReceipt;\n}\n\n/**\n * Result message from a tool execution.\n *\n * After a tool is executed, the result is sent back to the model\n * as a ToolResultMessage so it can incorporate the information\n * into its response.\n *\n * @typeParam TDetails - Type of additional details attached to the result\n *\n * @example\n * ```typescript\n * const result: ToolResultMessage = {\n * role: \"toolResult\",\n * toolCallId: \"call_abc123\",\n * toolName: \"read\",\n * content: [{ type: \"text\", text: \"file contents...\" }],\n * isError: false,\n * timestamp: Date.now()\n * };\n * ```\n */\nexport interface ToolResultMessage<TDetails = unknown> {\n\t/** Message role discriminator */\n\trole: \"toolResult\";\n\t/** ID of the tool call this result corresponds to */\n\ttoolCallId: string;\n\t/** Name of the tool that was executed */\n\ttoolName: string;\n\t/** Result content (text or images) */\n\tcontent: (TextContent | ImageContent)[];\n\t/** Optional additional details about the execution */\n\tdetails?: TDetails;\n\t/** Whether the tool execution resulted in an error */\n\tisError: boolean;\n\t/** Unix timestamp in milliseconds when result was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for hook-injected messages.\n *\n * Hooks can inject these into the conversation. They are converted to user\n * messages for LLM context and can optionally be hidden from the UI.\n */\nexport interface HookMessage<T = unknown> {\n\t/** Message role discriminator */\n\trole: \"hookMessage\";\n\t/** Hook-defined message category */\n\tcustomType: string;\n\t/** Message content - string or array of content blocks */\n\tcontent: string | (TextContent | ImageContent)[];\n\t/** Whether to render this message in the UI */\n\tdisplay: boolean;\n\t/** Optional hook-specific metadata (not sent to the LLM) */\n\tdetails?: T;\n\t/** Unix timestamp in milliseconds when message was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for branch summaries when navigating session trees.\n */\nexport interface BranchSummaryMessage {\n\t/** Message role discriminator */\n\trole: \"branchSummary\";\n\t/** Summary text */\n\tsummary: string;\n\t/** ID of the branch point this summary came from */\n\tfromId: string;\n\t/** Unix timestamp in milliseconds when summary was created */\n\ttimestamp: number;\n}\n\n/**\n * Message type for compaction summaries.\n */\nexport interface CompactionSummaryMessage {\n\t/** Message role discriminator */\n\trole: \"compactionSummary\";\n\t/** Summary text */\n\tsummary: string;\n\t/** Token count before compaction (for diagnostics) */\n\ttokensBefore: number;\n\t/** Unix timestamp in milliseconds when summary was created */\n\ttimestamp: number;\n}\n\n/**\n * Union type representing LLM-native messages that can be sent to the model.\n *\n * A conversation with the LLM consists of user input, assistant responses,\n * and tool results.\n */\nexport type Message = UserMessage | AssistantMessage | ToolResultMessage;\n\n/**\n * Empty interface for declaration merging to add custom message types.\n *\n * Consumers can extend this interface to add their own message types:\n *\n * @example\n * ```typescript\n * declare module \"@evalops/maestro\" {\n * interface CustomAgentMessages {\n * notification: { role: \"notification\"; text: string; timestamp: number };\n * }\n * }\n * ```\n */\n// biome-ignore lint/suspicious/noEmptyInterface: Required for declaration merging\nexport interface CustomAgentMessages {}\n\n/**\n * Union type representing all messages in the agent conversation history.\n *\n * Includes both LLM-native messages (user, assistant, toolResult) and\n * custom message types (hookMessage, branchSummary, compactionSummary,\n * plus any types added via declaration merging).\n *\n * Custom messages are preserved in session history but filtered out\n * before being sent to the LLM via {@link convertToLlm}.\n */\nexport type AgentMessage =\n\t| Message\n\t| HookMessage\n\t| BranchSummaryMessage\n\t| CompactionSummaryMessage\n\t| CustomAgentMessages[keyof CustomAgentMessages];\n\n/**\n * Tool definition schema for API serialization.\n *\n * This interface defines a tool's metadata and parameter schema\n * for transmission to the LLM. The actual execution logic is in\n * {@link AgentTool}.\n *\n * @typeParam TParameters - TypeBox schema for the tool's parameters\n *\n * @example\n * ```typescript\n * import { Type } from \"@sinclair/typebox\";\n *\n * const readTool: Tool = {\n * name: \"read\",\n * description: \"Read a file from the filesystem\",\n * parameters: Type.Object({\n * file_path: Type.String({ description: \"Path to the file\" })\n * })\n * };\n * ```\n */\nexport interface Tool<TParameters extends TSchema = TSchema> {\n\t/** Unique tool identifier */\n\tname: string;\n\t/** Human-readable description of what the tool does */\n\tdescription: string;\n\t/** TypeBox schema defining the tool's parameters */\n\tparameters: TParameters;\n\t/** Optional categorization (e.g., \"file\", \"shell\", \"web\") */\n\ttoolType?: string;\n\t/** Example inputs for documentation/few-shot prompting */\n\tinputExamples?: unknown[];\n\t/** List of caller identifiers allowed to use this tool */\n\tallowedCallers?: string[];\n\t/** If true, don't send tool definition to API (used for internal tools) */\n\tdeferApiDefinition?: boolean;\n}\n\n/**\n * Behavioral hints for tools (from MCP annotations).\n *\n * These hints help the model and UI understand the tool's behavior\n * for better decision-making and user feedback.\n */\nexport interface ToolAnnotations {\n\t/** If true, the tool does not modify its environment (safe to retry) */\n\treadOnlyHint?: boolean;\n\t/** If true, the tool may perform destructive/irreversible updates */\n\tdestructiveHint?: boolean;\n\t/** If true, mutating calls are scoped to explicit path arguments */\n\tpathScopedMutationHint?: boolean;\n\t/** If true, calling repeatedly with same args has no additional effect */\n\tidempotentHint?: boolean;\n\t/** If true, the tool interacts with external systems (network, APIs) */\n\topenWorldHint?: boolean;\n}\n\nexport interface McpToolSourceMetadata {\n\ttype: \"mcp\";\n\tserver: string;\n\ttool: string;\n\tcapability?: ToolCapabilityMetadata;\n\tsupportsParallelToolCalls?: boolean;\n\tparallelSafetyProvenance?: \"static_config\" | \"server_capability\" | \"none\";\n\tparallelMaxConcurrency?: number;\n}\n\nexport type ToolSourceMetadata = McpToolSourceMetadata;\n\n/**\n * Complete tool definition with execute function.\n *\n * This is the runtime representation of a tool, including both\n * the schema (for the LLM) and the execute function (for the runtime).\n *\n * @typeParam TParameters - TypeBox schema for the tool's parameters\n * @typeParam TDetails - Type of additional details returned with results\n *\n * @example\n * ```typescript\n * import { Type } from \"@sinclair/typebox\";\n *\n * const readTool: AgentTool = {\n * name: \"read\",\n * description: \"Read a file from the filesystem\",\n * parameters: Type.Object({\n * file_path: Type.String()\n * }),\n * execute: async (toolCallId, params) => {\n * const content = await fs.readFile(params.file_path, \"utf-8\");\n * return { content: [{ type: \"text\", text: content }] };\n * }\n * };\n * ```\n */\nexport interface AgentTool<\n\tTParameters extends TSchema = TSchema,\n\tTDetails = unknown,\n> {\n\t/** Unique tool identifier */\n\tname: string;\n\t/** Display label for UI (defaults to name) */\n\tlabel?: string;\n\t/** Human-readable description of what the tool does */\n\tdescription: string;\n\t/** TypeBox schema defining the tool's parameters */\n\tparameters: TParameters;\n\t/** Tool behavior hints from MCP annotations */\n\tannotations?: ToolAnnotations;\n\t/** Exact runtime provenance for bridged or remote tool sources */\n\tsource?: ToolSourceMetadata;\n\t/** Optional categorization (e.g., \"file\", \"shell\", \"web\") */\n\ttoolType?: string;\n\t/**\n\t * Where the tool should be executed.\n\t * - `\"server\"`: (default) Executed by the backend agent\n\t * - `\"client\"`: Executed by the client (VS Code, browser) via callback\n\t */\n\texecutionLocation?: \"server\" | \"client\";\n\t/** Example inputs for documentation/few-shot prompting */\n\tinputExamples?: unknown[];\n\t/** List of caller identifiers allowed to use this tool */\n\tallowedCallers?: string[];\n\t/** If true, don't send tool definition to API */\n\tdeferApiDefinition?: boolean;\n\t/** Optional max retries configured by the tool itself */\n\tmaxRetries?: number;\n\t/** Optional retry delay configured by the tool itself */\n\tretryDelayMs?: number;\n\t/** Optional tool-level retry predicate */\n\tshouldRetry?: (error: unknown) => boolean;\n\t/** Optional compact summary used after a tool finishes. */\n\tgetToolUseSummary?: (params: Record<string, unknown>) => string | null;\n\t/** Optional human-facing label used for live tool UI. */\n\tgetDisplayName?: (params: Record<string, unknown>) => string | null;\n\t/** Optional present-tense activity label used while a tool is running. */\n\tgetActivityDescription?: (params: Record<string, unknown>) => string | null;\n\t/**\n\t * Execute the tool with the given parameters.\n\t *\n\t * @param toolCallId - Unique identifier for this tool call\n\t * @param params - Parameters matching the tool's schema\n\t * @param signal - Optional AbortSignal for cancellation\n\t * @param context - Optional execution context (sandbox, etc.)\n\t * @param onUpdate - Optional callback for partial tool output streaming\n\t * @returns Tool result with content and optional details\n\t */\n\texecute: (\n\t\ttoolCallId: string,\n\t\tparams: Record<string, unknown>,\n\t\tsignal?: AbortSignal,\n\t\tcontext?: { sandbox?: import(\"../sandbox/types.js\").Sandbox },\n\t\tonUpdate?: AgentToolUpdateCallback<TDetails>,\n\t) => AgentToolResult<TDetails> | Promise<AgentToolResult<TDetails>>;\n}\n\nexport type AgentToolUpdateCallback<TDetails = unknown> = (\n\tpartial: AgentToolResult<TDetails>,\n) => void;\n\n/**\n * Result returned from tool execution.\n *\n * @typeParam TDetails - Type of additional details attached to the result\n */\nexport interface AgentToolResult<TDetails = unknown> {\n\t/** Result content (text or images) */\n\tcontent: (TextContent | ImageContent)[];\n\t/** Optional additional details about the execution */\n\tdetails?: TDetails;\n\t/** Whether the execution resulted in an error */\n\tisError?: boolean;\n\t/** Optional Platform ToolExecution identifier used for audit joins */\n\ttoolExecutionId?: string;\n\t/** Optional Platform approval request identifier correlated to ToolExecution */\n\tapprovalRequestId?: string;\n}\n\n/**\n * Conversation context for LLM requests.\n *\n * Contains the system prompt, conversation history, and available tools\n * for a single LLM request.\n */\nexport interface Context {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt?: string;\n\t/** Conversation history */\n\tmessages: Message[];\n\t/** Tools available for the model to use */\n\ttools?: Tool[];\n}\n\n/**\n * Streaming events during assistant message construction.\n *\n * These events are emitted as the LLM generates its response, enabling\n * real-time UI updates and progress tracking.\n *\n * ## Event Types\n *\n * | Type | Description |\n * |------|-------------|\n * | `start` | Message generation started |\n * | `text_start` | New text content block started |\n * | `text_delta` | Incremental text content |\n * | `text_end` | Text content block completed |\n * | `thinking_start` | Extended thinking block started |\n * | `thinking_delta` | Incremental thinking content |\n * | `thinking_end` | Thinking block completed |\n * | `toolcall_start` | Tool call started |\n * | `toolcall_delta` | Incremental tool call args |\n * | `toolcall_end` | Tool call completed |\n * | `done` | Generation completed successfully |\n * | `error` | Generation failed or was aborted |\n */\nexport type AssistantMessageEvent =\n\t| {\n\t\t\t/** Message generation started */\n\t\t\ttype: \"start\";\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** New text content block started */\n\t\t\ttype: \"text_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental text content received */\n\t\t\ttype: \"text_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New text to append */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Text content block completed */\n\t\t\ttype: \"text_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Final text content */\n\t\t\tcontent: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Extended thinking block started */\n\t\t\ttype: \"thinking_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental thinking content received */\n\t\t\ttype: \"thinking_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New thinking text to append */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Thinking content block completed */\n\t\t\ttype: \"thinking_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Final thinking content */\n\t\t\tcontent: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Tool call started */\n\t\t\ttype: \"toolcall_start\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Incremental tool call arguments received */\n\t\t\ttype: \"toolcall_delta\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** New JSON fragment to append to arguments */\n\t\t\tdelta: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Tool call completed */\n\t\t\ttype: \"toolcall_end\";\n\t\t\t/** Index of the content block */\n\t\t\tcontentIndex: number;\n\t\t\t/** Completed tool call */\n\t\t\ttoolCall: ToolCall;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution started outside Maestro's local executor */\n\t\t\ttype: \"provider_tool_execution_start\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool arguments */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution produced an incremental update */\n\t\t\ttype: \"provider_tool_execution_update\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool arguments */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Partial provider result */\n\t\t\tpartialResult: AgentToolResult;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Provider-owned tool execution completed outside Maestro's local executor */\n\t\t\ttype: \"provider_tool_execution_end\";\n\t\t\t/** Provider tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Provider tool name */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Provider tool result */\n\t\t\tresult: ToolResultMessage;\n\t\t\t/** Whether the provider tool returned an error */\n\t\t\tisError: boolean;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Optional Platform approval request identifier correlated to ToolExecution */\n\t\t\tapprovalRequestId?: string;\n\t\t\t/** Partial message state */\n\t\t\tpartial: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Generation completed successfully */\n\t\t\ttype: \"done\";\n\t\t\t/** Reason for completion */\n\t\t\treason: Extract<StopReason, \"stop\" | \"length\" | \"toolUse\">;\n\t\t\t/** Final assistant message */\n\t\t\tmessage: AssistantMessage;\n\t }\n\t| {\n\t\t\t/** Generation failed or was aborted */\n\t\t\ttype: \"error\";\n\t\t\t/** Reason for failure */\n\t\t\treason: Extract<StopReason, \"aborted\" | \"error\">;\n\t\t\t/** Error message details */\n\t\t\terror: AssistantMessage;\n\t };\n\n/**\n * LLM model configuration.\n *\n * Contains all the information needed to use a model, including\n * API endpoints, capabilities, and pricing.\n *\n * @typeParam TApi - The API format this model uses\n *\n * @example\n * ```typescript\n * const claude: Model<\"anthropic-messages\"> = {\n * id: \"claude-sonnet-4-5-20250929\",\n * name: \"Claude Sonnet 4.5\",\n * api: \"anthropic-messages\",\n * provider: \"anthropic\",\n * baseUrl: \"https://api.anthropic.com/v1\",\n * reasoning: true,\n * input: [\"text\", \"image\"],\n * cost: { input: 3.00, output: 15.00, cacheRead: 0.30, cacheWrite: 3.75 },\n * contextWindow: 200000,\n * maxTokens: 8192\n * };\n * ```\n */\nexport interface Model<TApi extends Api> {\n\t/** Unique model identifier (e.g., \"claude-sonnet-4-5-20250929\") */\n\tid: string;\n\t/** Human-readable model name (e.g., \"Claude Sonnet 4.5\") */\n\tname: string;\n\t/** API format used for requests */\n\tapi: TApi;\n\t/** Provider serving this model */\n\tprovider: Provider;\n\t/** Base URL for API requests */\n\tbaseUrl: string;\n\t/** Optional custom headers to include in API requests */\n\theaders?: Record<string, string>;\n\t/** Optional OpenAI-compatibility overrides for vendor quirks */\n\tcompat?: OpenAICompatOverrides;\n\t/** Whether the model supports extended thinking */\n\treasoning: boolean;\n\t/** Whether the model supports tool use */\n\ttoolUse?: boolean;\n\t/** Supported input modalities */\n\tinput: (\"text\" | \"image\")[];\n\t/** Cost per million tokens in USD */\n\tcost: {\n\t\t/** Input token cost */\n\t\tinput: number;\n\t\t/** Output token cost */\n\t\toutput: number;\n\t\t/** Cache read cost (typically discounted) */\n\t\tcacheRead: number;\n\t\t/** Cache write cost */\n\t\tcacheWrite: number;\n\t};\n\t/** Maximum context window in tokens */\n\tcontextWindow: number;\n\t/** Maximum output tokens per response */\n\tmaxTokens: number;\n}\n\n/**\n * File attachment for messages.\n *\n * Represents an uploaded file (image or document) that can be\n * included in a user message.\n */\nexport interface Attachment {\n\t/** Unique identifier for this attachment */\n\tid: string;\n\t/** Type of attachment */\n\ttype: \"image\" | \"document\";\n\t/** Original filename */\n\tfileName: string;\n\t/** MIME type of the file */\n\tmimeType: string;\n\t/** File size in bytes */\n\tsize: number;\n\t/** Base64-encoded file content */\n\tcontent: string;\n\t/** Extracted text content (for documents) */\n\textractedText?: string;\n\t/** Preview image (for documents) */\n\tpreview?: string;\n}\n\n/**\n * User-configurable thinking level for extended reasoning.\n *\n * Controls how much computational effort the model spends on\n * reasoning before generating a response.\n *\n * - `off` - No extended thinking\n * - `minimal` - Brief reasoning hints\n * - `low` - Short reasoning steps\n * - `medium` - Moderate reasoning (default)\n * - `high` - Thorough step-by-step reasoning\n * - `max` - Maximum reasoning depth\n */\nexport type ThinkingLevel =\n\t| \"off\"\n\t| \"minimal\"\n\t| \"low\"\n\t| \"medium\"\n\t| \"high\"\n\t| \"ultra\"\n\t| \"max\";\n\n/**\n * User message with optional file attachments.\n *\n * Extends the base UserMessage to support file attachments\n * for rich multi-modal interactions.\n */\nexport type UserMessageWithAttachments = UserMessage & {\n\t/** Optional file attachments */\n\tattachments?: Attachment[];\n};\n\n/**\n * Placeholder for custom message types.\n * Can be extended to add application-specific message types.\n */\nexport interface CustomMessages {\n\thookMessage: HookMessage;\n\tbranchSummary: BranchSummaryMessage;\n\tcompactionSummary: CompactionSummaryMessage;\n}\n\n/**\n * Application-level message type.\n *\n * Union of all message types that can appear in the UI,\n * including user messages with attachments.\n */\nexport type AppMessage =\n\t| AssistantMessage\n\t| UserMessageWithAttachments\n\t| Message\n\t| CustomMessages[keyof CustomMessages];\n\n/**\n * Information about a tool call currently being executed.\n */\nexport interface PendingToolCall {\n\t/** Name of the tool being executed */\n\ttoolName: string;\n\t/** Original arguments passed to the tool */\n\targs?: Record<string, unknown>;\n\t/** Tool metadata captured when execution started */\n\ttool?: Pick<\n\t\tAgentTool,\n\t\t\"label\" | \"getDisplayName\" | \"getToolUseSummary\" | \"getActivityDescription\"\n\t>;\n\t/** Stable display name for live UI */\n\tdisplayName?: string;\n\t/** Stable compact summary for live UI */\n\tsummaryLabel?: string;\n}\n\n/**\n * Current state of an agent instance.\n *\n * This is the central state object managed by the Agent class,\n * containing all information about the current conversation,\n * configuration, and execution status.\n */\nexport interface AgentState {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt: string;\n\t/** Version/hash metadata for the base system prompt instructions */\n\tpromptMetadata?: PromptMetadata;\n\t/** Exact prompt source files layered into the current system prompt */\n\tsystemPromptSourcePaths?: string[];\n\t/** Manifest of project instruction files layered into the current system prompt */\n\tpromptContextManifest?: PromptProjectDocManifest;\n\t/** Full filesystem and MCP context provenance captured for this run */\n\tunifiedContextManifest?: UnifiedContextManifest;\n\t/** Current model configuration */\n\tmodel: Model<Api>;\n\t/** Current thinking level for extended reasoning */\n\tthinkingLevel: ThinkingLevel;\n\t/** Optional reasoning summary preference for Responses API */\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\t/** Available tools for this agent */\n\ttools: AgentTool[];\n\t/**\n\t * Controls how queued steering messages are sent between turns.\n\t * - `\"all\"` - Send all queued messages at once\n\t * - `\"one\"` - Send one message at a time\n\t */\n\tsteeringMode: \"all\" | \"one\";\n\t/**\n\t * Controls how queued follow-up messages are sent between turns.\n\t * - `\"all\"` - Send all queued messages at once\n\t * - `\"one\"` - Send one message at a time\n\t */\n\tfollowUpMode: \"all\" | \"one\";\n\t/**\n\t * @deprecated Use steeringMode/followUpMode instead.\n\t */\n\tqueueMode: \"all\" | \"one\";\n\t/** Conversation history */\n\tmessages: AppMessage[];\n\t/** Whether the agent is currently streaming a response */\n\tisStreaming: boolean;\n\t/** Current streaming message (partial response) */\n\tstreamMessage: Message | null;\n\t/** Tool calls currently being executed */\n\tpendingToolCalls: Map<string, PendingToolCall>;\n\t/** Current error message, if any */\n\terror?: string;\n\t/** Optional sandbox for isolated tool execution */\n\tsandbox?: import(\"../sandbox/types.js\").Sandbox;\n\t/** Current sandbox mode (e.g., \"docker\", \"local\") */\n\tsandboxMode?: string | null;\n\t/** Whether sandboxing is enabled */\n\tsandboxEnabled?: boolean;\n\t/** User identification for tracking */\n\tuser?: {\n\t\t/** User UUID */\n\t\tid: string;\n\t\t/** Organization UUID */\n\t\torgId: string;\n\t};\n\t/** Session information for persistence */\n\tsession?: {\n\t\t/** Session UUID */\n\t\tid: string;\n\t\t/** When the session started */\n\t\tstartedAt: Date;\n\t};\n\t/** Sampling temperature override (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Top-p sampling override (0.0-1.0) */\n\ttopP?: number;\n}\n\n/**\n * Events emitted during agent execution.\n *\n * These events provide real-time updates about agent activity,\n * enabling UI updates, logging, and progress tracking.\n *\n * ## Lifecycle Events\n * - `agent_start` - Agent execution started\n * - `agent_end` - Agent execution completed\n * - `turn_start` - New conversation turn started\n * - `turn_end` - Conversation turn completed\n *\n * ## Message Events\n * - `message_start` - New message being constructed\n * - `message_update` - Incremental message update\n * - `message_end` - Message completed\n *\n * ## Tool Events\n * - `tool_execution_start` - Tool execution started\n * - `tool_execution_update` - Tool execution produced partial output\n * - `tool_execution_end` - Tool execution completed\n * - `parallelism_gated` - Scheduler delayed a tool because in-flight mutations made parallel execution unsafe\n * - `parallel_conflict_detected` - Scheduler detected overlapping write scopes while evaluating parallel execution\n * - `tool_batch_summary` - Tool batch completed with a transient summary label\n * - `client_tool_request` - Client-side tool invocation needed\n *\n * ## Approval Events\n * - `action_approval_required` - User approval needed\n * - `action_approval_resolved` - User made approval decision\n *\n * ## Tool Retry Events\n * - `tool_retry_required` - Tool failed and retry decision needed\n * - `tool_retry_resolved` - Tool retry decision resolved\n *\n * ## Status Events\n * - `status` - Status update\n * - `error` - Error occurred\n * - `compaction` - Context was compacted\n */\nexport interface ToolSchedulingMetadata {\n\tclassification:\n\t\t| \"read_only\"\n\t\t| \"path_scoped_mutation\"\n\t\t| \"parallel_safe_mutation\"\n\t\t| \"serialized_mutation\"\n\t\t| \"workflow_serialized\"\n\t\t| \"cache_reuse\"\n\t\t| \"unknown\";\n\treason:\n\t\t| \"read_only_tool\"\n\t\t| \"mcp_parallel_opt_in\"\n\t\t| \"path_scope_available\"\n\t\t| \"path_scope_disjoint\"\n\t\t| \"path_scope_overlap\"\n\t\t| \"pending_mutation\"\n\t\t| \"mutating_tool\"\n\t\t| \"workflow_state_tracker\"\n\t\t| \"cache_hit\"\n\t\t| \"cache_pending\"\n\t\t| \"unknown_tool\";\n\tconcurrencyLimit?: number;\n\tqueueDepth?: number;\n\tpendingMutations?: number;\n\tpathScope?: string[];\n\tpathScopeSource?: \"annotation\" | \"known_tool\";\n\tpathArgumentKeys?: string[];\n\tcache?: \"disabled\" | \"miss\" | \"candidate\" | \"pending_hit\" | \"hit\";\n}\n\nexport type AgentEvent =\n\t| {\n\t\t\t/** Agent execution started */\n\t\t\ttype: \"agent_start\";\n\t\t\t/** Whether this execution is an automatic continuation of the current turn */\n\t\t\tcontinuation?: boolean;\n\t }\n\t| {\n\t\t\t/** Agent execution completed */\n\t\t\ttype: \"agent_end\";\n\t\t\t/** Final messages from this execution */\n\t\t\tmessages: AppMessage[];\n\t\t\t/** Whether execution was aborted */\n\t\t\taborted?: boolean;\n\t\t\t/** If aborted with partial acceptance, contains the saved partial message */\n\t\t\tpartialAccepted?: AppMessage;\n\t\t\t/** Final stop reason from the LLM - \"length\" indicates output hit the max token limit */\n\t\t\tstopReason?: StopReason;\n\t }\n\t| {\n\t\t\t/** Status update during execution */\n\t\t\ttype: \"status\";\n\t\t\t/** Status message */\n\t\t\tstatus: string;\n\t\t\t/** Additional details */\n\t\t\tdetails: Record<string, unknown>;\n\t }\n\t| {\n\t\t\t/** Error occurred during execution */\n\t\t\ttype: \"error\";\n\t\t\t/** Error message */\n\t\t\tmessage: string;\n\t }\n\t| {\n\t\t\t/** New conversation turn started */\n\t\t\ttype: \"turn_start\";\n\t }\n\t| {\n\t\t\t/** Conversation turn completed */\n\t\t\ttype: \"turn_end\";\n\t\t\t/** Assistant message from this turn */\n\t\t\tmessage: AppMessage;\n\t\t\t/** Tool results from this turn */\n\t\t\ttoolResults: AppMessage[];\n\t }\n\t| {\n\t\t\t/** New message being constructed */\n\t\t\ttype: \"message_start\";\n\t\t\t/** The message being built */\n\t\t\tmessage: AppMessage;\n\t }\n\t| {\n\t\t\t/** Incremental update to current message */\n\t\t\ttype: \"message_update\";\n\t\t\t/** Updated message state */\n\t\t\tmessage: AppMessage;\n\t\t\t/** The streaming event that triggered this update */\n\t\t\tassistantMessageEvent: AssistantMessageEvent;\n\t }\n\t| {\n\t\t\t/** Message completed */\n\t\t\ttype: \"message_end\";\n\t\t\t/** Final message */\n\t\t\tmessage: AppMessage;\n\t }\n\t| {\n\t\t\t/** Tool execution started */\n\t\t\ttype: \"tool_execution_start\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Arguments passed to the tool */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Scheduler classification and serialization reason for this call */\n\t\t\tscheduling?: ToolSchedulingMetadata;\n\t }\n\t| {\n\t\t\t/** Tool execution completed */\n\t\t\ttype: \"tool_execution_end\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Optional approval request identifier correlated to Platform ToolExecution */\n\t\t\tapprovalRequestId?: string;\n\t\t\t/** Optional stable error or outcome code for telemetry and clients */\n\t\t\terrorCode?: string;\n\t\t\t/** Optional governed outcome classification surfaced by the tool result */\n\t\t\tgovernedOutcome?:\n\t\t\t\t| \"approval_required\"\n\t\t\t\t| \"approval_pending\"\n\t\t\t\t| \"authentication_required\"\n\t\t\t\t| \"denied\"\n\t\t\t\t| \"rate_limited\";\n\t\t\t/** Optional selected skill artifact metadata surfaced by the tool result */\n\t\t\tskillMetadata?: SkillArtifactMetadata;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Result from the tool */\n\t\t\tresult: ToolResultMessage;\n\t\t\t/** Whether the tool returned an error */\n\t\t\tisError: boolean;\n\t\t\t/** Scheduler classification and final reuse/serialization reason */\n\t\t\tscheduling?: ToolSchedulingMetadata;\n\t }\n\t| ParallelismGatedEvent\n\t| ParallelConflictDetectedEvent\n\t| {\n\t\t\t/** LSP diagnostic delta produced by an edit/write tool call */\n\t\t\ttype: \"diagnostic_delta\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** File affected by the diagnostic delta */\n\t\t\tfile: string;\n\t\t\t/** User-facing file path from the tool call */\n\t\t\tdisplayPath: string;\n\t\t\t/** Whether a pre-edit baseline was available */\n\t\t\tusedDelta: boolean;\n\t\t\t/** Newly introduced diagnostic count */\n\t\t\tintroducedCount: number;\n\t\t\t/** Diagnostics repaired by the tool call */\n\t\t\trepairedCount: number;\n\t\t\t/** Remaining diagnostics for the affected file */\n\t\t\tremainingCount: number;\n\t\t\t/** Stable fingerprint for introduced diagnostics */\n\t\t\tfingerprint: string;\n\t\t\t/** Repair attempt number for this fingerprint */\n\t\t\trepairAttempt?: number;\n\t\t\t/** Maximum automatic repair attempts for this fingerprint */\n\t\t\tmaxRepairAttempts?: number;\n\t\t\t/** Whether Agent queued a follow-up repair turn */\n\t\t\twillAutoFollowUp: boolean;\n\t\t\t/** Why a repair follow-up was or was not queued */\n\t\t\treason: string;\n\t }\n\t| {\n\t\t\t/** Summary emitted after the final tool in a batch completes */\n\t\t\ttype: \"tool_batch_summary\";\n\t\t\t/** Stable one-line summary of what the completed tool batch did */\n\t\t\tsummary: string;\n\t\t\t/** Underlying per-tool summary labels used to build the summary */\n\t\t\tsummaryLabels: string[];\n\t\t\t/** Tool call identifiers included in this batch */\n\t\t\ttoolCallIds: string[];\n\t\t\t/** Tool names included in this batch */\n\t\t\ttoolNames: string[];\n\t\t\t/** Successful tool calls in the batch */\n\t\t\tcallsSucceeded: number;\n\t\t\t/** Failed tool calls in the batch */\n\t\t\tcallsFailed: number;\n\t }\n\t| ToolPhaseSummary\n\t| {\n\t\t\t/** Tool execution produced partial output */\n\t\t\ttype: \"tool_execution_update\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Optional Platform ToolExecution identifier */\n\t\t\ttoolExecutionId?: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Optional human-facing label for live UI */\n\t\t\tdisplayName?: string;\n\t\t\t/** Optional compact summary for live UI */\n\t\t\tsummaryLabel?: string;\n\t\t\t/** Arguments passed to the tool */\n\t\t\targs: Record<string, unknown>;\n\t\t\t/** Partial tool result */\n\t\t\tpartialResult: AgentToolResult;\n\t }\n\t| {\n\t\t\t/** User approval required for an action */\n\t\t\ttype: \"action_approval_required\";\n\t\t\t/** Details of the approval request */\n\t\t\trequest: ActionApprovalRequest;\n\t }\n\t| {\n\t\t\t/** User made approval decision */\n\t\t\ttype: \"action_approval_resolved\";\n\t\t\t/** The original request */\n\t\t\trequest: ActionApprovalRequest;\n\t\t\t/** User's decision */\n\t\t\tdecision: ActionApprovalDecision;\n\t }\n\t| {\n\t\t\t/** Tool failed and requires a retry decision */\n\t\t\ttype: \"tool_retry_required\";\n\t\t\t/** Details of the retry request */\n\t\t\trequest: ToolRetryRequest;\n\t }\n\t| {\n\t\t\t/** Tool retry decision resolved */\n\t\t\ttype: \"tool_retry_resolved\";\n\t\t\t/** The original request */\n\t\t\trequest: ToolRetryRequest;\n\t\t\t/** User or policy decision */\n\t\t\tdecision: ToolRetryDecision;\n\t }\n\t| {\n\t\t\t/** Client-side tool invocation needed */\n\t\t\ttype: \"client_tool_request\";\n\t\t\t/** Tool call identifier */\n\t\t\ttoolCallId: string;\n\t\t\t/** Name of the tool */\n\t\t\ttoolName: string;\n\t\t\t/** Arguments for the tool */\n\t\t\targs: unknown;\n\t }\n\t| {\n\t\t\t/** Context was compacted (older messages summarized) */\n\t\t\ttype: \"compaction\";\n\t\t\t/** Generated summary of compacted messages */\n\t\t\tsummary: string;\n\t\t\t/** Index of first entry to keep (entries before were summarized) */\n\t\t\tfirstKeptEntryIndex: number;\n\t\t\t/** Token count before compaction */\n\t\t\ttokensBefore: number;\n\t\t\t/** Whether this was auto-triggered vs manual /compact */\n\t\t\tauto?: boolean;\n\t\t\t/** Custom instructions used for summarization */\n\t\t\tcustomInstructions?: string;\n\t\t\t/** Timestamp of compaction */\n\t\t\ttimestamp: string;\n\t }\n\t| {\n\t\t\t/** Auto-retry started for transient error (rate limit, overload, 5xx) */\n\t\t\ttype: \"auto_retry_start\";\n\t\t\t/** Current retry attempt (1-based) */\n\t\t\tattempt: number;\n\t\t\t/** Maximum number of retry attempts */\n\t\t\tmaxAttempts: number;\n\t\t\t/** Delay in milliseconds before retry */\n\t\t\tdelayMs: number;\n\t\t\t/** The error message that triggered the retry */\n\t\t\terrorMessage: string;\n\t }\n\t| {\n\t\t\t/** Auto-retry completed (success or final failure) */\n\t\t\ttype: \"auto_retry_end\";\n\t\t\t/** Whether the retry eventually succeeded */\n\t\t\tsuccess: boolean;\n\t\t\t/** Final attempt number */\n\t\t\tattempt: number;\n\t\t\t/** If failed, the final error message */\n\t\t\tfinalError?: string;\n\t };\n\n/**\n * Events emitted over streaming transports (SSE/WebSocket).\n *\n * Includes core agent events plus transport-level signals.\n */\nexport type AgentStreamEvent =\n\t| AgentEvent\n\t| { type: \"session_update\"; sessionId: string }\n\t| { type: \"heartbeat\" }\n\t| { type: \"aborted\" }\n\t| { type: \"done\" };\n\n/**\n * Message queued for sending to the LLM.\n *\n * Wraps the original message with an optional LLM-formatted version,\n * allowing for message transformation before sending.\n *\n * @typeParam TOriginal - Type of the original message\n */\nexport interface QueuedMessage<TOriginal = AppMessage> {\n\t/** Stable identifier for queue operations */\n\tid: number;\n\t/** When the message was queued */\n\tcreatedAt: number;\n\t/** Original message as received */\n\toriginal: TOriginal;\n\t/** Optional LLM-formatted version of the message */\n\tllm?: Message;\n}\n\n/**\n * Runtime configuration for agent execution.\n *\n * Passed to the transport layer when starting a new agent run,\n * containing all the configuration needed to execute a conversation turn.\n */\nexport interface AgentRunConfig {\n\t/** System prompt providing instructions and context */\n\tsystemPrompt: string;\n\t/** Tools available for this run */\n\ttools: AgentTool[];\n\t/** Model to use for generation */\n\tmodel: Model<Api>;\n\t/** Optional reasoning effort level */\n\treasoning?: ReasoningEffort;\n\t/** Optional reasoning summary preference for Responses API */\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\t/** Emit message_end for the initial user message (defaults to true). */\n\temitUserMessageEnd?: boolean;\n\t/** Function to retrieve steering messages for batch sending */\n\tgetSteeringMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/** Function to retrieve follow-up messages for batch sending */\n\tgetFollowUpMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/** Function to retrieve prompt-only messages for the next turn. */\n\tgetPromptOnlyMessages?: () => Promise<Message[]>;\n\t/** @deprecated Use getSteeringMessages/getFollowUpMessages instead */\n\tgetQueuedMessages?: <T>() => Promise<QueuedMessage<T>[]>;\n\t/**\n\t * Optional message preprocessor applied immediately before calling the LLM provider.\n\t *\n\t * Use this to implement provider-specific compatibility transforms (e.g., image limits,\n\t * signature preservation, prompt caching markers) without polluting the core tools.\n\t *\n\t * Note: This is a pure preprocessing hook. It should not execute tools or perform I/O.\n\t */\n\tpreprocessMessages?: (\n\t\tmessages: Message[],\n\t\tcontext: {\n\t\t\tsystemPrompt: string;\n\t\t\ttools: AgentTool[];\n\t\t\tmodel: Model<Api>;\n\t\t\tuserMessage?: Message;\n\t\t},\n\t\tsignal?: AbortSignal,\n\t) => Message[] | Promise<Message[]>;\n\t/** User identification for tracking */\n\tuser?: {\n\t\t/** User UUID */\n\t\tid: string;\n\t\t/** Organization UUID */\n\t\torgId: string;\n\t};\n\t/** Session information for persistence */\n\tsession?: {\n\t\t/** Session UUID */\n\t\tid: string;\n\t\t/** When the session started */\n\t\tstartedAt: Date;\n\t};\n\t/** User/org guarded-files override policy for this run */\n\tguardedFiles?: GuardedFilesPolicySettings;\n\t/** Optional helper function for running LLM queries (e.g., for summarization) */\n\trunLLM?: (systemPrompt: string, userPrompt: string) => Promise<string>;\n\t/** Optional debug checkpoint profiler for local query latency diagnostics. */\n\tqueryProfiler?: CheckpointProfiler;\n\t/** Optional sandbox for isolated tool execution */\n\tsandbox?: import(\"../sandbox/types.js\").Sandbox;\n\t/** Sampling temperature override (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Top-p sampling override (0.0-1.0) */\n\ttopP?: number;\n\t/** Optional Anthropic API-side task budget for the current turn */\n\ttaskBudget?: {\n\t\ttotal: number;\n\t\tremaining?: number;\n\t};\n}\n\n/**\n * Transport interface for LLM communication.\n *\n * Implementors of this interface handle the actual communication\n * with the LLM provider, including streaming and tool execution.\n */\nexport interface AgentTransport {\n\t/**\n\t * Execute a conversation turn with a new user message.\n\t *\n\t * @param messages - Conversation history\n\t * @param userMessage - New user message\n\t * @param config - Runtime configuration\n\t * @param signal - Optional abort signal for cancellation\n\t * @returns Async iterable of agent events\n\t */\n\trun(\n\t\tmessages: Message[],\n\t\tuserMessage: Message,\n\t\tconfig: AgentRunConfig,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<AgentEvent>;\n\n\t/**\n\t * Continue from current context without a new user message.\n\t *\n\t * Used for:\n\t * - Retrying after transient errors (rate limits, overload)\n\t * - Continuing after context compaction\n\t * - Resuming interrupted tool execution\n\t *\n\t * @param messages - Current conversation history\n\t * @param config - Runtime configuration\n\t * @param signal - Optional abort signal for cancellation\n\t * @returns Async iterable of agent events\n\t */\n\tcontinue(\n\t\tmessages: Message[],\n\t\tconfig: AgentRunConfig,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<AgentEvent>;\n\n\t/**\n\t * Optional lightweight connectivity probe for UI health checks.\n\t */\n\tping?: () => Promise<void>;\n}\n\n/**\n * Options for streaming LLM requests.\n *\n * These options are passed to the transport layer when making\n * streaming requests to the LLM provider.\n */\nexport interface StreamOptions {\n\t/** Sampling temperature (0.0-2.0, lower = more deterministic) */\n\ttemperature?: number;\n\t/** Maximum tokens to generate */\n\tmaxTokens?: number;\n\t/** Abort signal for cancellation */\n\tsignal?: AbortSignal;\n\t/** API key for authentication */\n\tapiKey?: string;\n\t/** Additional headers to include in requests */\n\theaders?: Record<string, string>;\n\t/** Additional request body fields for provider-specific extensions */\n\trequestBody?: Record<string, unknown>;\n\t/** Stable session id for provider-side request grouping/cache keys */\n\tsessionId?: string;\n\t/** Current working directory for local provider runtimes. */\n\tcwd?: string;\n\t/** Authentication type for the request */\n\tauthType?: \"api-key\" | \"bearer-token\";\n\t/** Optional Anthropic API-side task budget for the current turn */\n\ttaskBudget?: {\n\t\ttotal: number;\n\t\tremaining?: number;\n\t};\n\t/** Optional governed executor for provider-native dynamic tool callbacks. */\n\texecuteDynamicTool?: (toolCall: ToolCall) => Promise<AgentToolResult>;\n}\n\n/**\n * Cache control hint for prompt caching.\n *\n * Used to mark content that should be cached for faster\n * subsequent requests.\n */\nexport interface PromptCacheControl {\n\t/** Cache type - currently only \"ephemeral\" is supported */\n\ttype: \"ephemeral\";\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"enterprise-routes.d.ts","sourceRoot":"","sources":["../../src/api/enterprise-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AA0TjD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAelE;AAMD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,CA+I5E"}
1
+ {"version":3,"file":"enterprise-routes.d.ts","sourceRoot":"","sources":["../../src/api/enterprise-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAyZjD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAelE;AAMD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,CA2J5E"}
@@ -2,21 +2,24 @@
2
2
  * Enterprise API Routes
3
3
  * Handles authentication, RBAC, organizations, and admin features
4
4
  */
5
- import { and, eq } from "drizzle-orm";
5
+ import { and, eq, sql } from "drizzle-orm";
6
6
  import { AUDIT_ACTIONS, AuditLogger } from "../audit/logger.js";
7
7
  import { TokenTracker } from "../billing/token-tracker.js";
8
8
  import { getDb } from "../db/client.js";
9
- import { alerts, organizations, roles, } from "../db/schema.js";
10
- import { decryptOrgSettings, encryptOrgSettings, } from "../db/settings-encryption.js";
9
+ import { alerts, organizations, roles, users, } from "../db/schema.js";
10
+ import { decryptOrgSettings, decryptUserSettings, encryptOrgSettings, encryptUserSettings, } from "../db/settings-encryption.js";
11
11
  import { ACTIONS, PermissionChecker, RESOURCES, seedPermissions, } from "../rbac/permissions.js";
12
12
  import { readJsonBody, sendJson } from "../server/server-utils.js";
13
13
  import { resolveInternalTelemetryDisabledSetting } from "../telemetry/disablement.js";
14
+ import { isPlainObject } from "../utils/json.js";
14
15
  import { createLogger } from "../utils/logger.js";
15
16
  import { handleLogin, handleMe, handleRegister, } from "./enterprise/auth-handlers.js";
16
17
  import { handleCreateDirectoryRule, handleDeleteDirectoryRule, handleGetDirectoryRules, } from "./enterprise/directory-rule-handlers.js";
17
18
  import { handleGetOrgMembers, handleInviteUser, handleRemoveMember, handleUpdateMemberQuota, handleUpdateMemberRole, } from "./enterprise/member-handlers.js";
18
19
  import { authenticateJWT } from "./enterprise/middleware.js";
19
20
  import { handleApproveModel, handleDenyModel, handleGetModelApprovals, } from "./enterprise/model-approval-handlers.js";
21
+ import { mergeOrganizationSettings } from "./org-settings-merge.js";
22
+ import { mergeUserSettings } from "./user-settings-merge.js";
20
23
  const logger = createLogger("enterprise-api");
21
24
  // ============================================================================
22
25
  // USAGE & QUOTA ENDPOINTS
@@ -158,13 +161,7 @@ async function handleUpdateOrgSettings(req, res, cors) {
158
161
  return;
159
162
  }
160
163
  const previousSettings = decryptOrgSettings(org.settings) || {};
161
- const mergedSettings = {
162
- ...previousSettings,
163
- ...body,
164
- internal: body.internal || previousSettings.internal
165
- ? { ...previousSettings.internal, ...body.internal }
166
- : undefined,
167
- };
164
+ const mergedSettings = mergeOrganizationSettings(previousSettings, body);
168
165
  const previousTelemetryDisabled = resolveInternalTelemetryDisabledSetting(previousSettings);
169
166
  const nextTelemetryDisabled = resolveInternalTelemetryDisabledSetting(mergedSettings);
170
167
  // Encrypt sensitive fields (webhookSigningSecret) before storing
@@ -188,6 +185,75 @@ async function handleUpdateOrgSettings(req, res, cors) {
188
185
  }
189
186
  sendJson(res, 200, { success: true }, cors, req);
190
187
  }
188
+ async function handleGetUserSettings(req, res, cors) {
189
+ const auth = await authenticateJWT(req);
190
+ if (!auth) {
191
+ sendJson(res, 401, { error: "Unauthorized" }, cors, req);
192
+ return;
193
+ }
194
+ const db = getDb();
195
+ const user = await db.query.users.findFirst({
196
+ where: eq(users.id, auth.userId),
197
+ });
198
+ if (!user) {
199
+ sendJson(res, 404, { error: "User not found" }, cors, req);
200
+ return;
201
+ }
202
+ // Decrypt sensitive fields (twoFactor secret) before returning.
203
+ const decryptedSettings = decryptUserSettings(user.settings) || {};
204
+ sendJson(res, 200, decryptedSettings, cors, req);
205
+ }
206
+ async function handleUpdateUserSettings(req, res, cors) {
207
+ const auth = await authenticateJWT(req);
208
+ if (!auth) {
209
+ sendJson(res, 401, { error: "Unauthorized" }, cors, req);
210
+ return;
211
+ }
212
+ const body = await readJsonBody(req);
213
+ if (!isPlainObject(body)) {
214
+ sendJson(res, 400, { error: "Settings body must be an object" }, cors, req);
215
+ return;
216
+ }
217
+ const requestedSettings = body;
218
+ const db = getDb();
219
+ for (let attempt = 0; attempt < 3; attempt++) {
220
+ const user = await db.query.users.findFirst({
221
+ where: eq(users.id, auth.userId),
222
+ });
223
+ if (!user) {
224
+ sendJson(res, 404, { error: "User not found" }, cors, req);
225
+ return;
226
+ }
227
+ // Self-scoped: the caller can only touch their own user settings. 2FA
228
+ // state is preserved from the latest committed row by retrying on
229
+ // concurrent settings writes, and the maestro runtime-knob namespace is
230
+ // validated against the MaestroSettings catalog.
231
+ const previousSettings = decryptUserSettings(user.settings) || {};
232
+ const mergedSettings = mergeUserSettings(previousSettings, requestedSettings);
233
+ const encryptedSettings = encryptUserSettings(mergedSettings);
234
+ const storedSettingsMatch = user.settings == null
235
+ ? sql `${users.settings} IS NULL`
236
+ : sql `${users.settings} IS NOT DISTINCT FROM ${JSON.stringify(user.settings)}::jsonb`;
237
+ const updatedRows = await db
238
+ .update(users)
239
+ .set({ settings: encryptedSettings })
240
+ .where(and(eq(users.id, auth.userId), storedSettingsMatch))
241
+ .returning({ id: users.id });
242
+ if (updatedRows.length > 0) {
243
+ await AuditLogger.log({
244
+ orgId: auth.orgId,
245
+ userId: auth.userId,
246
+ action: AUDIT_ACTIONS.CONFIG_WRITE,
247
+ resourceType: "user_settings",
248
+ status: "success",
249
+ metadata: {},
250
+ });
251
+ sendJson(res, 200, { success: true }, cors, req);
252
+ return;
253
+ }
254
+ }
255
+ sendJson(res, 409, { error: "Settings changed concurrently; please retry" }, cors, req);
256
+ }
191
257
  // ============================================================================
192
258
  // ROLES
193
259
  // ============================================================================
@@ -309,6 +375,17 @@ export function createEnterpriseRoutes(cors) {
309
375
  path: "/api/org/settings",
310
376
  handler: (req, res) => handleUpdateOrgSettings(req, res, cors),
311
377
  },
378
+ // User Settings (self-scoped to the authenticated user)
379
+ {
380
+ method: "GET",
381
+ path: "/api/user/settings",
382
+ handler: (req, res) => handleGetUserSettings(req, res, cors),
383
+ },
384
+ {
385
+ method: "PUT",
386
+ path: "/api/user/settings",
387
+ handler: (req, res) => handleUpdateUserSettings(req, res, cors),
388
+ },
312
389
  // Roles
313
390
  {
314
391
  method: "GET",
@@ -1 +1 @@
1
- {"version":3,"file":"enterprise-routes.js","sourceRoot":"","sources":["../../src/api/enterprise-routes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Enterprise API Routes\n * Handles authentication, RBAC, organizations, and admin features\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { and, eq } from \"drizzle-orm\";\nimport { AUDIT_ACTIONS, AuditLogger } from \"../audit/logger.js\";\nimport { TokenTracker } from \"../billing/token-tracker.js\";\nimport { getDb } from \"../db/client.js\";\nimport {\n\ttype OrganizationSettings,\n\talerts,\n\torganizations,\n\troles,\n} from \"../db/schema.js\";\nimport {\n\tdecryptOrgSettings,\n\tencryptOrgSettings,\n} from \"../db/settings-encryption.js\";\nimport {\n\tACTIONS,\n\tPermissionChecker,\n\tRESOURCES,\n\tseedPermissions,\n} from \"../rbac/permissions.js\";\nimport type { Route } from \"../server/router.js\";\nimport { readJsonBody, sendJson } from \"../server/server-utils.js\";\nimport { resolveInternalTelemetryDisabledSetting } from \"../telemetry/disablement.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\thandleLogin,\n\thandleMe,\n\thandleRegister,\n} from \"./enterprise/auth-handlers.js\";\nimport {\n\thandleCreateDirectoryRule,\n\thandleDeleteDirectoryRule,\n\thandleGetDirectoryRules,\n} from \"./enterprise/directory-rule-handlers.js\";\nimport {\n\thandleGetOrgMembers,\n\thandleInviteUser,\n\thandleRemoveMember,\n\thandleUpdateMemberQuota,\n\thandleUpdateMemberRole,\n} from \"./enterprise/member-handlers.js\";\nimport { authenticateJWT } from \"./enterprise/middleware.js\";\nimport {\n\thandleApproveModel,\n\thandleDenyModel,\n\thandleGetModelApprovals,\n} from \"./enterprise/model-approval-handlers.js\";\n\nconst logger = createLogger(\"enterprise-api\");\n\n// ============================================================================\n// USAGE & QUOTA ENDPOINTS\n// ============================================================================\n\nasync function handleUsageQuota(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst quota = await TokenTracker.getQuota(auth.userId, auth.orgId);\n\tsendJson(res, 200, quota, cors, req);\n}\n\nasync function handleOrgUsage(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Check permission\n\tconst allowed = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId, roleId: auth.roleId },\n\t\tRESOURCES.AUDIT,\n\t\tACTIONS.READ,\n\t);\n\n\tif (!allowed) {\n\t\tsendJson(res, 403, { error: \"Forbidden\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst summary = await TokenTracker.getOrgUsageSummary(auth.orgId);\n\tsendJson(res, 200, summary, cors, req);\n}\n\n// ============================================================================\n// AUDIT LOG ENDPOINTS\n// ============================================================================\n\nasync function handleAuditLogs(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Check permission\n\tconst allowed = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId, roleId: auth.roleId },\n\t\tRESOURCES.AUDIT,\n\t\tACTIONS.READ,\n\t);\n\n\tif (!allowed) {\n\t\tsendJson(res, 403, { error: \"Forbidden\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst logs = await AuditLogger.query({\n\t\torgId: auth.orgId,\n\t\tlimit: 100,\n\t});\n\n\tsendJson(res, 200, { logs }, cors, req);\n}\n\n// ============================================================================\n// ALERT ENDPOINTS\n// ============================================================================\n\nasync function handleAlerts(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst userAlerts = await db.query.alerts.findMany({\n\t\twhere: and(eq(alerts.orgId, auth.orgId), eq(alerts.userId, auth.userId)),\n\t\torderBy: (alerts, { desc }) => [desc(alerts.createdAt)],\n\t\tlimit: 50,\n\t});\n\n\tsendJson(res, 200, { alerts: userAlerts }, cors, req);\n}\n\n// ============================================================================\n// ALERT ACTIONS\n// ============================================================================\n\nasync function handleMarkAlertRead(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n\talertId: string,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tawait db\n\t\t.update(alerts)\n\t\t.set({ isRead: true })\n\t\t.where(and(eq(alerts.id, alertId), eq(alerts.orgId, auth.orgId)));\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\nasync function handleResolveAlert(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n\talertId: string,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tawait db\n\t\t.update(alerts)\n\t\t.set({ resolvedAt: new Date() })\n\t\t.where(and(eq(alerts.id, alertId), eq(alerts.orgId, auth.orgId)));\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\n// ============================================================================\n// ORGANIZATION SETTINGS\n// ============================================================================\n\nasync function handleGetOrgSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst org = await db.query.organizations.findFirst({\n\t\twhere: eq(organizations.id, auth.orgId),\n\t});\n\n\tif (!org) {\n\t\tsendJson(res, 404, { error: \"Organization not found\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Decrypt sensitive fields (webhookSigningSecret) before returning\n\tconst decryptedSettings = decryptOrgSettings(org.settings) || {};\n\tsendJson(res, 200, decryptedSettings, cors, req);\n}\n\nasync function handleUpdateOrgSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst hasPermission = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId },\n\t\tRESOURCES.ORGS,\n\t\tACTIONS.WRITE,\n\t);\n\tif (!hasPermission) {\n\t\tsendJson(res, 403, { error: \"Permission denied\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst body = await readJsonBody<OrganizationSettings>(req);\n\tif (!body) {\n\t\tsendJson(res, 400, { error: \"Settings body required\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst org = await db.query.organizations.findFirst({\n\t\twhere: eq(organizations.id, auth.orgId),\n\t});\n\tif (!org) {\n\t\tsendJson(res, 404, { error: \"Organization not found\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst previousSettings = decryptOrgSettings(org.settings) || {};\n\tconst mergedSettings: OrganizationSettings = {\n\t\t...previousSettings,\n\t\t...body,\n\t\tinternal:\n\t\t\tbody.internal || previousSettings.internal\n\t\t\t\t? { ...previousSettings.internal, ...body.internal }\n\t\t\t\t: undefined,\n\t};\n\tconst previousTelemetryDisabled =\n\t\tresolveInternalTelemetryDisabledSetting(previousSettings);\n\tconst nextTelemetryDisabled =\n\t\tresolveInternalTelemetryDisabledSetting(mergedSettings);\n\n\t// Encrypt sensitive fields (webhookSigningSecret) before storing\n\tconst encryptedSettings = encryptOrgSettings(mergedSettings);\n\n\tawait db\n\t\t.update(organizations)\n\t\t.set({ settings: encryptedSettings })\n\t\t.where(eq(organizations.id, auth.orgId));\n\n\tif (previousTelemetryDisabled !== nextTelemetryDisabled) {\n\t\tawait AuditLogger.log({\n\t\t\torgId: auth.orgId,\n\t\t\tuserId: auth.userId,\n\t\t\taction: AUDIT_ACTIONS.CONFIG_WRITE,\n\t\t\tresourceType: \"organization_settings\",\n\t\t\tstatus: \"success\",\n\t\t\tmetadata: {\n\t\t\t\toriginalValue: String(previousTelemetryDisabled),\n\t\t\t\tnewValue: String(nextTelemetryDisabled),\n\t\t\t},\n\t\t});\n\t}\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\n// ============================================================================\n// ROLES\n// ============================================================================\n\nasync function handleGetRoles(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst orgRoles = await db.query.roles.findMany({\n\t\twhere: eq(roles.isSystem, true),\n\t});\n\n\tsendJson(res, 200, { roles: orgRoles }, cors, req);\n}\n\n// ============================================================================\n// INITIALIZE ENTERPRISE FEATURES\n// ============================================================================\n\nexport async function initializeEnterpriseFeatures(): Promise<void> {\n\ttry {\n\t\tlogger.info(\"Initializing enterprise features...\");\n\n\t\t// Seed default permissions and roles\n\t\tawait seedPermissions();\n\n\t\tlogger.info(\"Enterprise features initialized successfully\");\n\t} catch (error) {\n\t\tlogger.error(\n\t\t\t\"Failed to initialize enterprise features\",\n\t\t\terror instanceof Error ? error : undefined,\n\t\t);\n\t\tthrow error;\n\t}\n}\n\n// ============================================================================\n// ROUTE EXPORTS\n// ============================================================================\n\nexport function createEnterpriseRoutes(cors: Record<string, string>): Route[] {\n\treturn [\n\t\t// Authentication\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/auth/register\",\n\t\t\thandler: (req, res) => handleRegister(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/auth/login\",\n\t\t\thandler: (req, res) => handleLogin(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/auth/me\",\n\t\t\thandler: (req, res) => handleMe(req, res, cors),\n\t\t},\n\n\t\t// Usage & Quotas\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/usage/quota\",\n\t\t\thandler: (req, res) => handleUsageQuota(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/usage/org\",\n\t\t\thandler: (req, res) => handleOrgUsage(req, res, cors),\n\t\t},\n\n\t\t// Audit Logs\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/audit/logs\",\n\t\t\thandler: (req, res) => handleAuditLogs(req, res, cors),\n\t\t},\n\n\t\t// Alerts\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/alerts\",\n\t\t\thandler: (req, res) => handleAlerts(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/alerts/:alertId/read\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleMarkAlertRead(req, res, cors, params?.alertId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/alerts/:alertId/resolve\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleResolveAlert(req, res, cors, params?.alertId || \"\"),\n\t\t},\n\n\t\t// Organization Members\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/org/members\",\n\t\t\thandler: (req, res) => handleGetOrgMembers(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/org/members/invite\",\n\t\t\thandler: (req, res) => handleInviteUser(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/members/:userId/role\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleUpdateMemberRole(req, res, cors, params?.userId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/members/:userId/quota\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleUpdateMemberQuota(req, res, cors, params?.userId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: \"/api/org/members/:userId\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleRemoveMember(req, res, cors, params?.userId || \"\"),\n\t\t},\n\n\t\t// Organization Settings\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/org/settings\",\n\t\t\thandler: (req, res) => handleGetOrgSettings(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/settings\",\n\t\t\thandler: (req, res) => handleUpdateOrgSettings(req, res, cors),\n\t\t},\n\n\t\t// Roles\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/roles\",\n\t\t\thandler: (req, res) => handleGetRoles(req, res, cors),\n\t\t},\n\n\t\t// Model Approvals\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/models/approvals\",\n\t\t\thandler: (req, res) => handleGetModelApprovals(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/models/approvals/:modelId/approve\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleApproveModel(req, res, cors, params?.modelId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/models/approvals/:modelId/deny\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleDenyModel(req, res, cors, params?.modelId || \"\"),\n\t\t},\n\n\t\t// Directory Access Rules\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/directory-rules\",\n\t\t\thandler: (req, res) => handleGetDirectoryRules(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/directory-rules\",\n\t\t\thandler: (req, res) => handleCreateDirectoryRule(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: \"/api/directory-rules/:ruleId\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleDeleteDirectoryRule(req, res, cors, params?.ruleId || \"\"),\n\t\t},\n\t];\n}\n"]}
1
+ {"version":3,"file":"enterprise-routes.js","sourceRoot":"","sources":["../../src/api/enterprise-routes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Enterprise API Routes\n * Handles authentication, RBAC, organizations, and admin features\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { and, eq, sql } from \"drizzle-orm\";\nimport { AUDIT_ACTIONS, AuditLogger } from \"../audit/logger.js\";\nimport { TokenTracker } from \"../billing/token-tracker.js\";\nimport { getDb } from \"../db/client.js\";\nimport {\n\ttype OrganizationSettings,\n\ttype UserSettings,\n\talerts,\n\torganizations,\n\troles,\n\tusers,\n} from \"../db/schema.js\";\nimport {\n\tdecryptOrgSettings,\n\tdecryptUserSettings,\n\tencryptOrgSettings,\n\tencryptUserSettings,\n} from \"../db/settings-encryption.js\";\nimport {\n\tACTIONS,\n\tPermissionChecker,\n\tRESOURCES,\n\tseedPermissions,\n} from \"../rbac/permissions.js\";\nimport type { Route } from \"../server/router.js\";\nimport { readJsonBody, sendJson } from \"../server/server-utils.js\";\nimport { resolveInternalTelemetryDisabledSetting } from \"../telemetry/disablement.js\";\nimport { isPlainObject } from \"../utils/json.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\thandleLogin,\n\thandleMe,\n\thandleRegister,\n} from \"./enterprise/auth-handlers.js\";\nimport {\n\thandleCreateDirectoryRule,\n\thandleDeleteDirectoryRule,\n\thandleGetDirectoryRules,\n} from \"./enterprise/directory-rule-handlers.js\";\nimport {\n\thandleGetOrgMembers,\n\thandleInviteUser,\n\thandleRemoveMember,\n\thandleUpdateMemberQuota,\n\thandleUpdateMemberRole,\n} from \"./enterprise/member-handlers.js\";\nimport { authenticateJWT } from \"./enterprise/middleware.js\";\nimport {\n\thandleApproveModel,\n\thandleDenyModel,\n\thandleGetModelApprovals,\n} from \"./enterprise/model-approval-handlers.js\";\nimport { mergeOrganizationSettings } from \"./org-settings-merge.js\";\nimport { mergeUserSettings } from \"./user-settings-merge.js\";\n\nconst logger = createLogger(\"enterprise-api\");\n\n// ============================================================================\n// USAGE & QUOTA ENDPOINTS\n// ============================================================================\n\nasync function handleUsageQuota(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst quota = await TokenTracker.getQuota(auth.userId, auth.orgId);\n\tsendJson(res, 200, quota, cors, req);\n}\n\nasync function handleOrgUsage(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Check permission\n\tconst allowed = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId, roleId: auth.roleId },\n\t\tRESOURCES.AUDIT,\n\t\tACTIONS.READ,\n\t);\n\n\tif (!allowed) {\n\t\tsendJson(res, 403, { error: \"Forbidden\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst summary = await TokenTracker.getOrgUsageSummary(auth.orgId);\n\tsendJson(res, 200, summary, cors, req);\n}\n\n// ============================================================================\n// AUDIT LOG ENDPOINTS\n// ============================================================================\n\nasync function handleAuditLogs(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Check permission\n\tconst allowed = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId, roleId: auth.roleId },\n\t\tRESOURCES.AUDIT,\n\t\tACTIONS.READ,\n\t);\n\n\tif (!allowed) {\n\t\tsendJson(res, 403, { error: \"Forbidden\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst logs = await AuditLogger.query({\n\t\torgId: auth.orgId,\n\t\tlimit: 100,\n\t});\n\n\tsendJson(res, 200, { logs }, cors, req);\n}\n\n// ============================================================================\n// ALERT ENDPOINTS\n// ============================================================================\n\nasync function handleAlerts(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n) {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst userAlerts = await db.query.alerts.findMany({\n\t\twhere: and(eq(alerts.orgId, auth.orgId), eq(alerts.userId, auth.userId)),\n\t\torderBy: (alerts, { desc }) => [desc(alerts.createdAt)],\n\t\tlimit: 50,\n\t});\n\n\tsendJson(res, 200, { alerts: userAlerts }, cors, req);\n}\n\n// ============================================================================\n// ALERT ACTIONS\n// ============================================================================\n\nasync function handleMarkAlertRead(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n\talertId: string,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tawait db\n\t\t.update(alerts)\n\t\t.set({ isRead: true })\n\t\t.where(and(eq(alerts.id, alertId), eq(alerts.orgId, auth.orgId)));\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\nasync function handleResolveAlert(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n\talertId: string,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tawait db\n\t\t.update(alerts)\n\t\t.set({ resolvedAt: new Date() })\n\t\t.where(and(eq(alerts.id, alertId), eq(alerts.orgId, auth.orgId)));\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\n// ============================================================================\n// ORGANIZATION SETTINGS\n// ============================================================================\n\nasync function handleGetOrgSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst org = await db.query.organizations.findFirst({\n\t\twhere: eq(organizations.id, auth.orgId),\n\t});\n\n\tif (!org) {\n\t\tsendJson(res, 404, { error: \"Organization not found\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Decrypt sensitive fields (webhookSigningSecret) before returning\n\tconst decryptedSettings = decryptOrgSettings(org.settings) || {};\n\tsendJson(res, 200, decryptedSettings, cors, req);\n}\n\nasync function handleUpdateOrgSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst hasPermission = await PermissionChecker.check(\n\t\t{ userId: auth.userId, orgId: auth.orgId },\n\t\tRESOURCES.ORGS,\n\t\tACTIONS.WRITE,\n\t);\n\tif (!hasPermission) {\n\t\tsendJson(res, 403, { error: \"Permission denied\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst body = await readJsonBody<OrganizationSettings>(req);\n\tif (!body) {\n\t\tsendJson(res, 400, { error: \"Settings body required\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst org = await db.query.organizations.findFirst({\n\t\twhere: eq(organizations.id, auth.orgId),\n\t});\n\tif (!org) {\n\t\tsendJson(res, 404, { error: \"Organization not found\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst previousSettings = decryptOrgSettings(org.settings) || {};\n\tconst mergedSettings = mergeOrganizationSettings(previousSettings, body);\n\tconst previousTelemetryDisabled =\n\t\tresolveInternalTelemetryDisabledSetting(previousSettings);\n\tconst nextTelemetryDisabled =\n\t\tresolveInternalTelemetryDisabledSetting(mergedSettings);\n\n\t// Encrypt sensitive fields (webhookSigningSecret) before storing\n\tconst encryptedSettings = encryptOrgSettings(mergedSettings);\n\n\tawait db\n\t\t.update(organizations)\n\t\t.set({ settings: encryptedSettings })\n\t\t.where(eq(organizations.id, auth.orgId));\n\n\tif (previousTelemetryDisabled !== nextTelemetryDisabled) {\n\t\tawait AuditLogger.log({\n\t\t\torgId: auth.orgId,\n\t\t\tuserId: auth.userId,\n\t\t\taction: AUDIT_ACTIONS.CONFIG_WRITE,\n\t\t\tresourceType: \"organization_settings\",\n\t\t\tstatus: \"success\",\n\t\t\tmetadata: {\n\t\t\t\toriginalValue: String(previousTelemetryDisabled),\n\t\t\t\tnewValue: String(nextTelemetryDisabled),\n\t\t\t},\n\t\t});\n\t}\n\n\tsendJson(res, 200, { success: true }, cors, req);\n}\n\nasync function handleGetUserSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst user = await db.query.users.findFirst({\n\t\twhere: eq(users.id, auth.userId),\n\t});\n\n\tif (!user) {\n\t\tsendJson(res, 404, { error: \"User not found\" }, cors, req);\n\t\treturn;\n\t}\n\n\t// Decrypt sensitive fields (twoFactor secret) before returning.\n\tconst decryptedSettings = decryptUserSettings(user.settings) || {};\n\tsendJson(res, 200, decryptedSettings, cors, req);\n}\n\nasync function handleUpdateUserSettings(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst body = await readJsonBody<unknown>(req);\n\tif (!isPlainObject(body)) {\n\t\tsendJson(res, 400, { error: \"Settings body must be an object\" }, cors, req);\n\t\treturn;\n\t}\n\tconst requestedSettings = body as UserSettings;\n\n\tconst db = getDb();\n\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\tconst user = await db.query.users.findFirst({\n\t\t\twhere: eq(users.id, auth.userId),\n\t\t});\n\t\tif (!user) {\n\t\t\tsendJson(res, 404, { error: \"User not found\" }, cors, req);\n\t\t\treturn;\n\t\t}\n\n\t\t// Self-scoped: the caller can only touch their own user settings. 2FA\n\t\t// state is preserved from the latest committed row by retrying on\n\t\t// concurrent settings writes, and the maestro runtime-knob namespace is\n\t\t// validated against the MaestroSettings catalog.\n\t\tconst previousSettings = decryptUserSettings(user.settings) || {};\n\t\tconst mergedSettings = mergeUserSettings(\n\t\t\tpreviousSettings,\n\t\t\trequestedSettings,\n\t\t);\n\t\tconst encryptedSettings = encryptUserSettings(mergedSettings);\n\t\tconst storedSettingsMatch =\n\t\t\tuser.settings == null\n\t\t\t\t? sql`${users.settings} IS NULL`\n\t\t\t\t: sql`${users.settings} IS NOT DISTINCT FROM ${JSON.stringify(user.settings)}::jsonb`;\n\n\t\tconst updatedRows = await db\n\t\t\t.update(users)\n\t\t\t.set({ settings: encryptedSettings })\n\t\t\t.where(and(eq(users.id, auth.userId), storedSettingsMatch))\n\t\t\t.returning({ id: users.id });\n\n\t\tif (updatedRows.length > 0) {\n\t\t\tawait AuditLogger.log({\n\t\t\t\torgId: auth.orgId,\n\t\t\t\tuserId: auth.userId,\n\t\t\t\taction: AUDIT_ACTIONS.CONFIG_WRITE,\n\t\t\t\tresourceType: \"user_settings\",\n\t\t\t\tstatus: \"success\",\n\t\t\t\tmetadata: {},\n\t\t\t});\n\n\t\t\tsendJson(res, 200, { success: true }, cors, req);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tsendJson(\n\t\tres,\n\t\t409,\n\t\t{ error: \"Settings changed concurrently; please retry\" },\n\t\tcors,\n\t\treq,\n\t);\n}\n\n// ============================================================================\n// ROLES\n// ============================================================================\n\nasync function handleGetRoles(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcors: Record<string, string>,\n): Promise<void> {\n\tconst auth = await authenticateJWT(req);\n\tif (!auth) {\n\t\tsendJson(res, 401, { error: \"Unauthorized\" }, cors, req);\n\t\treturn;\n\t}\n\n\tconst db = getDb();\n\tconst orgRoles = await db.query.roles.findMany({\n\t\twhere: eq(roles.isSystem, true),\n\t});\n\n\tsendJson(res, 200, { roles: orgRoles }, cors, req);\n}\n\n// ============================================================================\n// INITIALIZE ENTERPRISE FEATURES\n// ============================================================================\n\nexport async function initializeEnterpriseFeatures(): Promise<void> {\n\ttry {\n\t\tlogger.info(\"Initializing enterprise features...\");\n\n\t\t// Seed default permissions and roles\n\t\tawait seedPermissions();\n\n\t\tlogger.info(\"Enterprise features initialized successfully\");\n\t} catch (error) {\n\t\tlogger.error(\n\t\t\t\"Failed to initialize enterprise features\",\n\t\t\terror instanceof Error ? error : undefined,\n\t\t);\n\t\tthrow error;\n\t}\n}\n\n// ============================================================================\n// ROUTE EXPORTS\n// ============================================================================\n\nexport function createEnterpriseRoutes(cors: Record<string, string>): Route[] {\n\treturn [\n\t\t// Authentication\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/auth/register\",\n\t\t\thandler: (req, res) => handleRegister(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/auth/login\",\n\t\t\thandler: (req, res) => handleLogin(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/auth/me\",\n\t\t\thandler: (req, res) => handleMe(req, res, cors),\n\t\t},\n\n\t\t// Usage & Quotas\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/usage/quota\",\n\t\t\thandler: (req, res) => handleUsageQuota(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/usage/org\",\n\t\t\thandler: (req, res) => handleOrgUsage(req, res, cors),\n\t\t},\n\n\t\t// Audit Logs\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/audit/logs\",\n\t\t\thandler: (req, res) => handleAuditLogs(req, res, cors),\n\t\t},\n\n\t\t// Alerts\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/alerts\",\n\t\t\thandler: (req, res) => handleAlerts(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/alerts/:alertId/read\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleMarkAlertRead(req, res, cors, params?.alertId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/alerts/:alertId/resolve\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleResolveAlert(req, res, cors, params?.alertId || \"\"),\n\t\t},\n\n\t\t// Organization Members\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/org/members\",\n\t\t\thandler: (req, res) => handleGetOrgMembers(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/org/members/invite\",\n\t\t\thandler: (req, res) => handleInviteUser(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/members/:userId/role\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleUpdateMemberRole(req, res, cors, params?.userId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/members/:userId/quota\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleUpdateMemberQuota(req, res, cors, params?.userId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: \"/api/org/members/:userId\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleRemoveMember(req, res, cors, params?.userId || \"\"),\n\t\t},\n\n\t\t// Organization Settings\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/org/settings\",\n\t\t\thandler: (req, res) => handleGetOrgSettings(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/org/settings\",\n\t\t\thandler: (req, res) => handleUpdateOrgSettings(req, res, cors),\n\t\t},\n\n\t\t// User Settings (self-scoped to the authenticated user)\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/user/settings\",\n\t\t\thandler: (req, res) => handleGetUserSettings(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: \"/api/user/settings\",\n\t\t\thandler: (req, res) => handleUpdateUserSettings(req, res, cors),\n\t\t},\n\n\t\t// Roles\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/roles\",\n\t\t\thandler: (req, res) => handleGetRoles(req, res, cors),\n\t\t},\n\n\t\t// Model Approvals\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/models/approvals\",\n\t\t\thandler: (req, res) => handleGetModelApprovals(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/models/approvals/:modelId/approve\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleApproveModel(req, res, cors, params?.modelId || \"\"),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/models/approvals/:modelId/deny\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleDenyModel(req, res, cors, params?.modelId || \"\"),\n\t\t},\n\n\t\t// Directory Access Rules\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\tpath: \"/api/directory-rules\",\n\t\t\thandler: (req, res) => handleGetDirectoryRules(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tpath: \"/api/directory-rules\",\n\t\t\thandler: (req, res) => handleCreateDirectoryRule(req, res, cors),\n\t\t},\n\t\t{\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: \"/api/directory-rules/:ruleId\",\n\t\t\thandler: (req, res, params) =>\n\t\t\t\thandleDeleteDirectoryRule(req, res, cors, params?.ruleId || \"\"),\n\t\t},\n\t];\n}\n"]}