@evalops/maestro 0.10.23 → 0.10.25

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 (376) hide show
  1. package/README.md +4 -4
  2. package/dist/agent/agent.d.ts +2 -2
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +1 -1
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/keys.d.ts +2 -5
  7. package/dist/agent/keys.d.ts.map +1 -1
  8. package/dist/agent/keys.js +4 -5
  9. package/dist/agent/keys.js.map +1 -1
  10. package/dist/agent/modes.d.ts +2 -2
  11. package/dist/agent/modes.d.ts.map +1 -1
  12. package/dist/agent/modes.js +6 -7
  13. package/dist/agent/modes.js.map +1 -1
  14. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  15. package/dist/agent/providers/anthropic.js +4 -4
  16. package/dist/agent/providers/anthropic.js.map +1 -1
  17. package/dist/agent/providers/google.js +1 -1
  18. package/dist/agent/swarm/executor.d.ts +2 -0
  19. package/dist/agent/swarm/executor.d.ts.map +1 -1
  20. package/dist/agent/swarm/executor.js +208 -35
  21. package/dist/agent/swarm/executor.js.map +1 -1
  22. package/dist/agent/swarm/types.d.ts +2 -0
  23. package/dist/agent/swarm/types.d.ts.map +1 -1
  24. package/dist/agent/swarm/types.js.map +1 -1
  25. package/dist/agent/tool-capability-types.d.ts +36 -0
  26. package/dist/agent/tool-capability-types.d.ts.map +1 -0
  27. package/dist/agent/tool-capability-types.js +2 -0
  28. package/dist/agent/tool-capability-types.js.map +1 -0
  29. package/dist/agent/transport/tool-execution-bridge.d.ts +13 -0
  30. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  31. package/dist/agent/transport/tool-execution-bridge.js +28 -15
  32. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  33. package/dist/agent/transport/transport-utils.d.ts.map +1 -1
  34. package/dist/agent/transport/transport-utils.js +2 -3
  35. package/dist/agent/transport/transport-utils.js.map +1 -1
  36. package/dist/agent/transport.js +1 -1
  37. package/dist/agent/transport.js.map +1 -1
  38. package/dist/agent/type-guards.d.ts +1 -1
  39. package/dist/agent/type-guards.js +1 -1
  40. package/dist/agent/type-guards.js.map +1 -1
  41. package/dist/agent/types.d.ts +5 -3
  42. package/dist/agent/types.d.ts.map +1 -1
  43. package/dist/agent/types.js +2 -2
  44. package/dist/agent/types.js.map +1 -1
  45. package/dist/app-server/daemon-lifecycle-api.d.ts +31 -0
  46. package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -0
  47. package/dist/app-server/daemon-lifecycle-api.js +259 -0
  48. package/dist/app-server/daemon-lifecycle-api.js.map +1 -0
  49. package/dist/app-server/external-agent-import-api.d.ts +30 -0
  50. package/dist/app-server/external-agent-import-api.d.ts.map +1 -0
  51. package/dist/app-server/external-agent-import-api.js +553 -0
  52. package/dist/app-server/external-agent-import-api.js.map +1 -0
  53. package/dist/app-server/host-control-api.d.ts +30 -0
  54. package/dist/app-server/host-control-api.d.ts.map +1 -0
  55. package/dist/app-server/host-control-api.js +343 -0
  56. package/dist/app-server/host-control-api.js.map +1 -0
  57. package/dist/app-server/in-process-client.d.ts +2 -2
  58. package/dist/app-server/in-process-client.d.ts.map +1 -1
  59. package/dist/app-server/in-process-client.js.map +1 -1
  60. package/dist/app-server/network-governance-api.d.ts +26 -0
  61. package/dist/app-server/network-governance-api.d.ts.map +1 -0
  62. package/dist/app-server/network-governance-api.js +476 -0
  63. package/dist/app-server/network-governance-api.js.map +1 -0
  64. package/dist/app-server/plugin-bundle-api.d.ts +17 -0
  65. package/dist/app-server/plugin-bundle-api.d.ts.map +1 -0
  66. package/dist/app-server/plugin-bundle-api.js +219 -0
  67. package/dist/app-server/plugin-bundle-api.js.map +1 -0
  68. package/dist/app-server/policy-control-api.d.ts +14 -0
  69. package/dist/app-server/policy-control-api.d.ts.map +1 -0
  70. package/dist/app-server/policy-control-api.js +200 -0
  71. package/dist/app-server/policy-control-api.js.map +1 -0
  72. package/dist/app-server/protocol-modes-api.d.ts +22 -0
  73. package/dist/app-server/protocol-modes-api.d.ts.map +1 -0
  74. package/dist/app-server/protocol-modes-api.js +124 -0
  75. package/dist/app-server/protocol-modes-api.js.map +1 -0
  76. package/dist/app-server/sandbox-proof-api.d.ts +21 -0
  77. package/dist/app-server/sandbox-proof-api.d.ts.map +1 -0
  78. package/dist/app-server/sandbox-proof-api.js +127 -0
  79. package/dist/app-server/sandbox-proof-api.js.map +1 -0
  80. package/dist/app-server/session-api.d.ts +93 -3
  81. package/dist/app-server/session-api.d.ts.map +1 -1
  82. package/dist/app-server/session-api.js +706 -18
  83. package/dist/app-server/session-api.js.map +1 -1
  84. package/dist/audit/logger.d.ts +1 -1
  85. package/dist/bootstrap/auth-setup.d.ts.map +1 -1
  86. package/dist/bootstrap/auth-setup.js +17 -2
  87. package/dist/bootstrap/auth-setup.js.map +1 -1
  88. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  89. package/dist/bootstrap/model-resolution-setup.js +19 -4
  90. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  91. package/dist/cli/args.d.ts +2 -2
  92. package/dist/cli/args.d.ts.map +1 -1
  93. package/dist/cli/args.js +2 -2
  94. package/dist/cli/args.js.map +1 -1
  95. package/dist/cli/commands/a2a.d.ts.map +1 -1
  96. package/dist/cli/commands/a2a.js +226 -14
  97. package/dist/cli/commands/a2a.js.map +1 -1
  98. package/dist/cli/commands/anthropic.d.ts +1 -1
  99. package/dist/cli/commands/anthropic.d.ts.map +1 -1
  100. package/dist/cli/commands/anthropic.js +3 -68
  101. package/dist/cli/commands/anthropic.js.map +1 -1
  102. package/dist/cli/commands/modes.js +1 -1
  103. package/dist/cli/commands/modes.js.map +1 -1
  104. package/dist/cli/help.d.ts.map +1 -1
  105. package/dist/cli/help.js +5 -7
  106. package/dist/cli/help.js.map +1 -1
  107. package/dist/cli/rpc-mode.d.ts +1 -1
  108. package/dist/cli/rpc-mode.js +1 -1
  109. package/dist/cli/rpc-mode.js.map +1 -1
  110. package/dist/cli/session.js +1 -1
  111. package/dist/cli/session.js.map +1 -1
  112. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  113. package/dist/cli-tui/commands/command-catalog.js +7 -12
  114. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  115. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +1 -1
  116. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
  117. package/dist/cli-tui/commands/subcommands/auth-commands.js +4 -12
  118. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
  119. package/dist/cli-tui/custom-editor.d.ts +1 -1
  120. package/dist/cli-tui/custom-editor.js +2 -2
  121. package/dist/cli-tui/custom-editor.js.map +1 -1
  122. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  123. package/dist/cli-tui/oauth/oauth-flow-controller.js +19 -23
  124. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  125. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  126. package/dist/cli-tui/selectors/model-selector.js +0 -1
  127. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  128. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +2 -2
  129. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
  130. package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
  131. package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -2
  132. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
  133. package/dist/cli-tui/selectors/oauth-selector.js +3 -4
  134. package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
  135. package/dist/cli-tui/tui-renderer/mcp-events-setup.js +1 -1
  136. package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +1 -1
  137. package/dist/cli-tui/tui-renderer.js +2 -2
  138. package/dist/cli-tui/tui-renderer.js.map +1 -1
  139. package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
  140. package/dist/cli-tui/utils/footer-utils.js +1 -1
  141. package/dist/cli-tui/utils/footer-utils.js.map +1 -1
  142. package/dist/cli.js +15156 -14232
  143. package/dist/commands/prompts.d.ts +1 -1
  144. package/dist/commands/prompts.js +1 -1
  145. package/dist/commands/prompts.js.map +1 -1
  146. package/dist/config/constants.d.ts +2 -2
  147. package/dist/config/constants.d.ts.map +1 -1
  148. package/dist/config/constants.js +2 -2
  149. package/dist/config/constants.js.map +1 -1
  150. package/dist/config/index.d.ts +1 -1
  151. package/dist/config/index.js +1 -1
  152. package/dist/config/index.js.map +1 -1
  153. package/dist/config/toml-config.js +3 -3
  154. package/dist/config/toml-config.js.map +1 -1
  155. package/dist/db/client.d.ts +2 -2
  156. package/dist/db/client.js +2 -2
  157. package/dist/db/client.js.map +1 -1
  158. package/dist/db/migrate.d.ts +1 -1
  159. package/dist/db/migrate.js +1 -1
  160. package/dist/db/migrate.js.map +1 -1
  161. package/dist/db/schema.d.ts +2 -2
  162. package/dist/db/schema.js +1 -1
  163. package/dist/db/schema.js.map +1 -1
  164. package/dist/errors/index.d.ts +2 -2
  165. package/dist/errors/index.js +2 -2
  166. package/dist/errors/index.js.map +1 -1
  167. package/dist/main.d.ts +4 -5
  168. package/dist/main.d.ts.map +1 -1
  169. package/dist/main.js +17 -14
  170. package/dist/main.js.map +1 -1
  171. package/dist/mcp/config.d.ts +15 -2
  172. package/dist/mcp/config.d.ts.map +1 -1
  173. package/dist/mcp/config.js +50 -26
  174. package/dist/mcp/config.js.map +1 -1
  175. package/dist/mcp/fathom-cua.d.ts.map +1 -1
  176. package/dist/mcp/fathom-cua.js +10 -0
  177. package/dist/mcp/fathom-cua.js.map +1 -1
  178. package/dist/mcp/manager.d.ts.map +1 -1
  179. package/dist/mcp/manager.js +32 -1
  180. package/dist/mcp/manager.js.map +1 -1
  181. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  182. package/dist/mcp/tool-bridge.js +12 -3
  183. package/dist/mcp/tool-bridge.js.map +1 -1
  184. package/dist/mcp/tool-capabilities.d.ts +5 -0
  185. package/dist/mcp/tool-capabilities.d.ts.map +1 -0
  186. package/dist/mcp/tool-capabilities.js +271 -0
  187. package/dist/mcp/tool-capabilities.js.map +1 -0
  188. package/dist/mcp/types.d.ts +6 -1
  189. package/dist/mcp/types.d.ts.map +1 -1
  190. package/dist/mcp/types.js.map +1 -1
  191. package/dist/models/config-loader.d.ts +1 -1
  192. package/dist/models/factory-integration.d.ts +1 -1
  193. package/dist/models/factory-integration.js +1 -1
  194. package/dist/models/factory-integration.js.map +1 -1
  195. package/dist/node_modules/@evalops/contracts/dist/index.d.ts +3 -3
  196. package/dist/node_modules/@evalops/contracts/dist/index.js +2 -2
  197. package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  198. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +1182 -14
  199. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  200. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +450 -1
  201. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  202. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  203. package/dist/node_modules/@evalops/tui/package.json +1 -1
  204. package/dist/oauth/connectors.d.ts +2 -2
  205. package/dist/oauth/connectors.d.ts.map +1 -1
  206. package/dist/oauth/connectors.js +3 -5
  207. package/dist/oauth/connectors.js.map +1 -1
  208. package/dist/oauth/github-copilot.d.ts +1 -1
  209. package/dist/oauth/github-copilot.js +1 -1
  210. package/dist/oauth/github-copilot.js.map +1 -1
  211. package/dist/oauth/index.d.ts +10 -8
  212. package/dist/oauth/index.d.ts.map +1 -1
  213. package/dist/oauth/index.js +54 -31
  214. package/dist/oauth/index.js.map +1 -1
  215. package/dist/oauth/openai.d.ts +1 -1
  216. package/dist/oauth/openai.js +2 -2
  217. package/dist/oauth/openai.js.map +1 -1
  218. package/dist/platform/a2a-completion-audit.d.ts +41 -0
  219. package/dist/platform/a2a-completion-audit.d.ts.map +1 -0
  220. package/dist/platform/a2a-completion-audit.js +177 -0
  221. package/dist/platform/a2a-completion-audit.js.map +1 -0
  222. package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
  223. package/dist/platform/a2a-task-ledger.js +17 -0
  224. package/dist/platform/a2a-task-ledger.js.map +1 -1
  225. package/dist/platform/a2a-telemetry-inspect.d.ts +58 -0
  226. package/dist/platform/a2a-telemetry-inspect.d.ts.map +1 -0
  227. package/dist/platform/a2a-telemetry-inspect.js +224 -0
  228. package/dist/platform/a2a-telemetry-inspect.js.map +1 -0
  229. package/dist/platform/agent-registry-client.d.ts +8 -0
  230. package/dist/platform/agent-registry-client.d.ts.map +1 -1
  231. package/dist/platform/agent-registry-client.js +9 -1
  232. package/dist/platform/agent-registry-client.js.map +1 -1
  233. package/dist/providers/api-keys.d.ts +2 -2
  234. package/dist/providers/api-keys.js +2 -2
  235. package/dist/providers/api-keys.js.map +1 -1
  236. package/dist/providers/auth.d.ts +3 -6
  237. package/dist/providers/auth.d.ts.map +1 -1
  238. package/dist/providers/auth.js +1 -40
  239. package/dist/providers/auth.js.map +1 -1
  240. package/dist/rpc/index.d.ts +2 -2
  241. package/dist/rpc/index.js +2 -2
  242. package/dist/rpc/index.js.map +1 -1
  243. package/dist/rpc/rpc-types.d.ts +1 -1
  244. package/dist/rpc/rpc-types.js +1 -1
  245. package/dist/rpc/rpc-types.js.map +1 -1
  246. package/dist/safety/nested-agent-guard.js +1 -1
  247. package/dist/safety/nested-agent-guard.js.map +1 -1
  248. package/dist/safety/policy.d.ts +2 -2
  249. package/dist/safety/policy.js +2 -2
  250. package/dist/safety/policy.js.map +1 -1
  251. package/dist/safety/validators/network-policy-validator.d.ts +8 -0
  252. package/dist/safety/validators/network-policy-validator.d.ts.map +1 -1
  253. package/dist/safety/validators/network-policy-validator.js +29 -4
  254. package/dist/safety/validators/network-policy-validator.js.map +1 -1
  255. package/dist/sandbox/local-sandbox.d.ts +1 -1
  256. package/dist/sandbox/local-sandbox.js +1 -1
  257. package/dist/sandbox/local-sandbox.js.map +1 -1
  258. package/dist/server/app-context.d.ts +2 -0
  259. package/dist/server/app-context.d.ts.map +1 -1
  260. package/dist/server/app-context.js.map +1 -1
  261. package/dist/server/handlers/attachments.d.ts.map +1 -1
  262. package/dist/server/handlers/attachments.js +1 -0
  263. package/dist/server/handlers/attachments.js.map +1 -1
  264. package/dist/server/handlers/models.d.ts.map +1 -1
  265. package/dist/server/handlers/models.js +3 -1
  266. package/dist/server/handlers/models.js.map +1 -1
  267. package/dist/server/handlers/session-attachments.d.ts.map +1 -1
  268. package/dist/server/handlers/session-attachments.js +2 -0
  269. package/dist/server/handlers/session-attachments.js.map +1 -1
  270. package/dist/server/handlers/sessions.js +1 -1
  271. package/dist/server/handlers/sessions.js.map +1 -1
  272. package/dist/server/handlers/status.d.ts +2 -0
  273. package/dist/server/handlers/status.d.ts.map +1 -1
  274. package/dist/server/handlers/status.js +3 -2
  275. package/dist/server/handlers/status.js.map +1 -1
  276. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  277. package/dist/server/headless-runtime-service.js +32 -3
  278. package/dist/server/headless-runtime-service.js.map +1 -1
  279. package/dist/server/hosted-session-manager.d.ts +2 -0
  280. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  281. package/dist/server/hosted-session-manager.js +9 -0
  282. package/dist/server/hosted-session-manager.js.map +1 -1
  283. package/dist/server/model-selection.d.ts.map +1 -1
  284. package/dist/server/model-selection.js +9 -1
  285. package/dist/server/model-selection.js.map +1 -1
  286. package/dist/server/rate-limiter.d.ts +1 -1
  287. package/dist/server/rate-limiter.js +1 -1
  288. package/dist/server/rate-limiter.js.map +1 -1
  289. package/dist/server/router.d.ts +2 -2
  290. package/dist/server/router.js.map +1 -1
  291. package/dist/server/session-serialization.d.ts +9 -9
  292. package/dist/server/session-serialization.js +15 -15
  293. package/dist/server/session-serialization.js.map +1 -1
  294. package/dist/session/manager.d.ts +5 -0
  295. package/dist/session/manager.d.ts.map +1 -1
  296. package/dist/session/manager.js +56 -8
  297. package/dist/session/manager.js.map +1 -1
  298. package/dist/session/session-catalog.d.ts +2 -0
  299. package/dist/session/session-catalog.d.ts.map +1 -1
  300. package/dist/session/session-catalog.js +6 -0
  301. package/dist/session/session-catalog.js.map +1 -1
  302. package/dist/session/session-context.d.ts +2 -0
  303. package/dist/session/session-context.d.ts.map +1 -1
  304. package/dist/session/session-context.js +15 -0
  305. package/dist/session/session-context.js.map +1 -1
  306. package/dist/session/types.d.ts +7 -0
  307. package/dist/session/types.d.ts.map +1 -1
  308. package/dist/session/types.js.map +1 -1
  309. package/dist/session/wire-format.generated.d.ts +1 -0
  310. package/dist/session/wire-format.generated.d.ts.map +1 -1
  311. package/dist/session/wire-format.generated.js +1 -0
  312. package/dist/session/wire-format.generated.js.map +1 -1
  313. package/dist/shared-memory/contract.d.ts +4 -4
  314. package/dist/shared-memory/contract.js +2 -2
  315. package/dist/shared-memory/contract.js.map +1 -1
  316. package/dist/telemetry/index.d.ts +2 -2
  317. package/dist/telemetry/index.d.ts.map +1 -1
  318. package/dist/telemetry/index.js +2 -2
  319. package/dist/telemetry/index.js.map +1 -1
  320. package/dist/telemetry/maestro-event-bus.d.ts +57 -0
  321. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  322. package/dist/telemetry/maestro-event-bus.js +59 -1
  323. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  324. package/dist/telemetry/maestro-event-catalog.d.ts +17 -1
  325. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  326. package/dist/telemetry/maestro-event-catalog.js +24 -0
  327. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  328. package/dist/telemetry/mcp-beacon.d.ts +2 -0
  329. package/dist/telemetry/mcp-beacon.d.ts.map +1 -1
  330. package/dist/telemetry/mcp-beacon.js +15 -0
  331. package/dist/telemetry/mcp-beacon.js.map +1 -1
  332. package/dist/telemetry/metrics.d.ts +62 -0
  333. package/dist/telemetry/metrics.d.ts.map +1 -1
  334. package/dist/telemetry/metrics.js +84 -0
  335. package/dist/telemetry/metrics.js.map +1 -1
  336. package/dist/telemetry.d.ts +44 -0
  337. package/dist/telemetry.d.ts.map +1 -1
  338. package/dist/telemetry.js +84 -2
  339. package/dist/telemetry.js.map +1 -1
  340. package/dist/theme/theme-loader.js +2 -2
  341. package/dist/theme/theme-loader.js.map +1 -1
  342. package/dist/theme/theme-schema.json +2 -2
  343. package/dist/theme/theme.d.ts +1 -1
  344. package/dist/theme/theme.js.map +1 -1
  345. package/dist/tools/background/task-types.d.ts +1 -1
  346. package/dist/tools/extract-document.d.ts +1 -0
  347. package/dist/tools/extract-document.d.ts.map +1 -1
  348. package/dist/tools/extract-document.js +2 -1
  349. package/dist/tools/extract-document.js.map +1 -1
  350. package/dist/tools/index.d.ts +55 -55
  351. package/dist/tools/index.js +1 -1
  352. package/dist/tools/index.js.map +1 -1
  353. package/dist/tools/tool-dsl.d.ts +1 -1
  354. package/dist/tools/tool-dsl.js +1 -1
  355. package/dist/tools/tool-dsl.js.map +1 -1
  356. package/dist/utils/document-extractor.d.ts +1 -0
  357. package/dist/utils/document-extractor.d.ts.map +1 -1
  358. package/dist/utils/document-extractor.js +320 -40
  359. package/dist/utils/document-extractor.js.map +1 -1
  360. package/dist/utils/logger.d.ts +1 -1
  361. package/dist/utils/logger.js +1 -1
  362. package/dist/utils/logger.js.map +1 -1
  363. package/dist/version.json +2 -2
  364. package/dist/web-server.d.ts +1 -1
  365. package/dist/web-server.d.ts.map +1 -1
  366. package/dist/web-server.js +12 -8
  367. package/dist/web-server.js.map +1 -1
  368. package/package.json +4 -2
  369. package/dist/oauth/anthropic.d.ts +0 -17
  370. package/dist/oauth/anthropic.d.ts.map +0 -1
  371. package/dist/oauth/anthropic.js +0 -81
  372. package/dist/oauth/anthropic.js.map +0 -1
  373. package/dist/providers/anthropic-auth.d.ts +0 -75
  374. package/dist/providers/anthropic-auth.d.ts.map +0 -1
  375. package/dist/providers/anthropic-auth.js +0 -221
  376. package/dist/providers/anthropic-auth.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-api.js","sourceRoot":"","sources":["../../src/app-server/session-api.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype MaestroAppServerClientRequest,\n\ttype MaestroAppServerModel,\n\ttype MaestroAppServerModelListResult,\n\ttype MaestroAppServerModelProviderCapabilities,\n\ttype MaestroAppServerModelProviderCapabilitiesReadResult,\n\ttype MaestroAppServerResponse,\n\ttype MaestroAppServerThread,\n\ttype MaestroAppServerThreadGoal,\n\ttype MaestroAppServerThreadGoalResult,\n\ttype MaestroAppServerThreadGraph,\n\ttype MaestroAppServerThreadItem,\n\ttype MaestroAppServerThreadListResult,\n\ttype MaestroAppServerThreadMetadataUpdateResult,\n\ttype MaestroAppServerThreadSummary,\n\ttype MaestroAppServerTurn,\n\ttype MaestroAppServerTurnsListResult,\n\tmaestroAppServerClientMethods,\n\tmaestroAppServerProtocolVersion,\n} from \"@evalops/contracts\";\nimport type { AppMessage } from \"../agent/types.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { safeReadSessionEntries } from \"../session/session-context.js\";\nimport {\n\ttype SessionGraphProjection,\n\tbuildSessionGraphProjection,\n} from \"../session/session-graph-projection.js\";\nimport type {\n\tSessionEntry,\n\tSessionMessagesView,\n\tSessionMetadata,\n\tSessionSummary,\n\tSessionTreeEntry,\n} from \"../session/types.js\";\n\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 100;\n\ntype JsonRpcId = string | number;\ntype MaybePromise<T> = T | Promise<T>;\n\ntype SessionStore = Pick<\n\tSessionManager,\n\t\"getSessionFileById\" | \"loadAllSessions\" | \"listSessions\" | \"loadSession\"\n> & {\n\tloadEntries?: (sessionId: string) => Promise<SessionEntry[] | null>;\n\tflush?: () => Promise<void>;\n\tsaveSessionSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsaveSessionResumeSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsetSessionFavorite?: (\n\t\tsessionPath: string,\n\t\tfavorite: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionTitle?: (sessionPath: string, title: string) => MaybePromise<void>;\n\tsetSessionTags?: (sessionPath: string, tags: string[]) => MaybePromise<void>;\n\tsetSessionAppServerGoal?: (\n\t\tsessionPath: string,\n\t\tgoal: MaestroAppServerThreadGoal | null,\n\t) => MaybePromise<void>;\n};\n\nexport interface MaestroAppServerSessionApi {\n\tinitialize(): MaestroAppServerResponse[\"result\"];\n\tlistModels(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelListResult>;\n\treadModelProviderCapabilities(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelProviderCapabilitiesReadResult>;\n\tlistThreads(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadListResult>;\n\treadThread(params?: Record<string, unknown>): Promise<MaestroAppServerThread>;\n\tupdateThreadMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tsetThreadName(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tgetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tsetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tclearThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tlistTurns(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerTurnsListResult>;\n}\n\nexport class MaestroAppServerError extends Error {\n\tconstructor(\n\t\treadonly code: number,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"MaestroAppServerError\";\n\t}\n}\n\nfunction normalizeLimit(value: unknown): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) {\n\t\treturn DEFAULT_PAGE_LIMIT;\n\t}\n\treturn Math.min(MAX_PAGE_LIMIT, Math.max(1, Math.trunc(value)));\n}\n\nfunction encodeCursor(offset: number): string {\n\treturn Buffer.from(JSON.stringify({ offset }), \"utf8\").toString(\"base64url\");\n}\n\nfunction decodeCursor(value: unknown): number {\n\tif (value === undefined || value === null || value === \"\") {\n\t\treturn 0;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n\t}\n\ttry {\n\t\tconst decoded = JSON.parse(\n\t\t\tBuffer.from(value, \"base64url\").toString(\"utf8\"),\n\t\t);\n\t\tif (\n\t\t\ttypeof decoded === \"object\" &&\n\t\t\tdecoded !== null &&\n\t\t\ttypeof decoded.offset === \"number\" &&\n\t\t\tNumber.isFinite(decoded.offset) &&\n\t\t\tdecoded.offset >= 0\n\t\t) {\n\t\t\treturn Math.trunc(decoded.offset);\n\t\t}\n\t} catch {\n\t\t// Fall through to the normalized JSON-RPC error below.\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n}\n\nfunction requireThreadId(params?: Record<string, unknown>): string {\n\tconst threadId = params?.threadId;\n\tif (typeof threadId !== \"string\" || threadId.length === 0) {\n\t\tthrow new MaestroAppServerError(-32602, \"Missing threadId\");\n\t}\n\treturn threadId;\n}\n\nfunction toThreadSummary(\n\tmetadata: SessionMetadata,\n\tsummary?: SessionSummary,\n): MaestroAppServerThreadSummary {\n\treturn {\n\t\tid: metadata.id,\n\t\tsource: \"session\",\n\t\tstatus: \"notLoaded\",\n\t\ttitle: summary?.title ?? metadata.title ?? metadata.summary,\n\t\tsummary: metadata.summary,\n\t\tresumeSummary: summary?.resumeSummary ?? metadata.resumeSummary,\n\t\tmemoryExtractionHash:\n\t\t\tsummary?.memoryExtractionHash ?? metadata.memoryExtractionHash,\n\t\tsubject: metadata.subject,\n\t\tpath: metadata.path,\n\t\tcreatedAt: metadata.created.toISOString(),\n\t\tupdatedAt: metadata.modified.toISOString(),\n\t\tmessageCount: metadata.messageCount,\n\t\tfavorite: summary?.favorite ?? metadata.favorite,\n\t\ttags: summary?.tags ?? metadata.tags,\n\t};\n}\n\nfunction toThreadSummaryFromSessionSummary(\n\tsummary: SessionSummary,\n): MaestroAppServerThreadSummary {\n\treturn {\n\t\tid: summary.id,\n\t\tsource: \"session\",\n\t\tstatus: \"notLoaded\",\n\t\ttitle: summary.title ?? summary.subject,\n\t\tsummary: summary.summary ?? summary.title ?? summary.subject,\n\t\tresumeSummary: summary.resumeSummary,\n\t\tmemoryExtractionHash: summary.memoryExtractionHash,\n\t\tsubject: summary.subject,\n\t\tcreatedAt: summary.createdAt,\n\t\tupdatedAt: summary.updatedAt,\n\t\tmessageCount: summary.messageCount,\n\t\tfavorite: summary.favorite,\n\t\ttags: summary.tags,\n\t};\n}\n\nfunction toThreadSummaryFromLoadedSession(loaded: {\n\tid: string;\n\tsubject?: string;\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tmemoryExtractionHash?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tmessageCount: number;\n\tfavorite: boolean;\n\ttags?: string[];\n}): MaestroAppServerThreadSummary {\n\treturn {\n\t\tid: loaded.id,\n\t\tsource: \"session\",\n\t\tstatus: \"notLoaded\",\n\t\ttitle: loaded.title ?? loaded.subject,\n\t\tsummary: loaded.summary ?? loaded.title ?? loaded.subject,\n\t\tresumeSummary: loaded.resumeSummary,\n\t\tmemoryExtractionHash: loaded.memoryExtractionHash,\n\t\tsubject: loaded.subject,\n\t\tcreatedAt: loaded.createdAt,\n\t\tupdatedAt: loaded.updatedAt,\n\t\tmessageCount: loaded.messageCount,\n\t\tfavorite: loaded.favorite,\n\t\ttags: loaded.tags,\n\t};\n}\n\nfunction appMessageContent(message: AppMessage): unknown {\n\treturn \"content\" in message ? message.content : message;\n}\n\nfunction treeEntryToItem(entry: SessionTreeEntry): MaestroAppServerThreadItem {\n\tif (entry.type === \"message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: \"message\",\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\trole: entry.message.role,\n\t\t\tcontent: appMessageContent(entry.message),\n\t\t};\n\t}\n\tif (entry.type === \"custom_message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: entry.customType,\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\tcontent: entry.content,\n\t\t\tdata: entry.details,\n\t\t};\n\t}\n\treturn {\n\t\tid: entry.id,\n\t\ttype: entry.type,\n\t\tparentId: entry.parentId,\n\t\ttimestamp: entry.timestamp,\n\t\tdata: entry,\n\t};\n}\n\nexport function buildTurnsFromSessionEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerTurn[] {\n\treturn turnsFromProjection(buildSessionGraphProjection(entries));\n}\n\nfunction turnsFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerTurn[] {\n\treturn projection.turns.map((turn) => ({\n\t\tid: turn.id,\n\t\tparentTurnId: turn.parentTurnId,\n\t\tstatus: turn.status,\n\t\tstartedAt: turn.startedAt,\n\t\tcompletedAt: turn.completedAt,\n\t\tsourceEntryIds: turn.sourceEntryIds,\n\t\ttoolCallIds: turn.toolCallIds,\n\t\titems: turn.entries.map(treeEntryToItem),\n\t}));\n}\n\nfunction graphFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerThreadGraph {\n\treturn {\n\t\tbranchId: projection.branchId,\n\t\tleafEntryId: projection.leafEntryId,\n\t\tactiveEntryIds: projection.activeEntryIds,\n\t\tcompactionSpans: projection.compactionSpans,\n\t};\n}\n\nfunction parseMessagesView(value: unknown): SessionMessagesView {\n\tif (value === undefined || value === null) {\n\t\treturn \"notLoaded\";\n\t}\n\tif (value === \"full\" || value === \"summary\" || value === \"notLoaded\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid messagesView\");\n}\n\nfunction optionalTrimmedString(\n\tvalue: unknown,\n\tfield: string,\n): string | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value.trim() || undefined;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalStringArray(\n\tvalue: unknown,\n\tfield: string,\n): string[] | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\t!Array.isArray(value) ||\n\t\tvalue.some((entry) => typeof entry !== \"string\")\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn Array.from(\n\t\tnew Set(value.map((entry) => entry.trim()).filter(Boolean)),\n\t);\n}\n\nfunction requireThreadReference(store: SessionStore, threadId: string): string {\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function requireExistingThreadReference(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<string> {\n\tconst sessionFile = requireThreadReference(store, threadId);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function flushSessionWrites(store: SessionStore): Promise<void> {\n\tawait store.flush?.();\n}\n\ninterface ThreadMetadataExpectation {\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tfavorite?: boolean;\n\ttags?: string[];\n}\n\nasync function summarizeThreadAfterMutation(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadSummary> {\n\tawait flushSessionWrites(store);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tconst summary = toThreadSummaryFromLoadedSession(loaded);\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\tsummary.path = sessionFile;\n\t}\n\treturn summary;\n}\n\nfunction tagsEqual(left: string[] | undefined, right: string[] | undefined) {\n\tif (left === undefined || right === undefined) {\n\t\treturn left === right;\n\t}\n\treturn (\n\t\tleft.length === right.length &&\n\t\tleft.every((value, index) => value === right[index])\n\t);\n}\n\nfunction verifyThreadMetadataPersisted(\n\tthread: MaestroAppServerThreadSummary,\n\texpected: ThreadMetadataExpectation,\n): void {\n\tconst persisted =\n\t\t(expected.title === undefined || thread.title === expected.title) &&\n\t\t(expected.summary === undefined || thread.summary === expected.summary) &&\n\t\t(expected.resumeSummary === undefined ||\n\t\t\tthread.resumeSummary === expected.resumeSummary) &&\n\t\t(expected.favorite === undefined ||\n\t\t\tthread.favorite === expected.favorite) &&\n\t\t(expected.tags === undefined || tagsEqual(thread.tags, expected.tags));\n\tif (!persisted) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread metadata update was not persisted\",\n\t\t);\n\t}\n}\n\nfunction latestGoalFromEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerThreadGoal | null {\n\tlet goal: MaestroAppServerThreadGoal | null = null;\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"session_meta\" || entry.appServerGoal === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tgoal = entry.appServerGoal;\n\t}\n\treturn goal;\n}\n\nfunction goalsEqual(\n\tactual: MaestroAppServerThreadGoal | null,\n\texpected: MaestroAppServerThreadGoal | null,\n): boolean {\n\tif (actual === null || expected === null) {\n\t\treturn actual === expected;\n\t}\n\treturn (\n\t\tactual.objective === expected.objective &&\n\t\tactual.status === expected.status &&\n\t\tactual.tokenBudget === expected.tokenBudget &&\n\t\tactual.createdAt === expected.createdAt &&\n\t\tactual.updatedAt === expected.updatedAt\n\t);\n}\n\nasync function verifyThreadGoalPersisted(\n\tstore: SessionStore,\n\tthreadId: string,\n\texpected: MaestroAppServerThreadGoal | null,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tconst persisted = await loadThreadGoal(store, threadId);\n\tif (!goalsEqual(persisted, expected)) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread goal update was not persisted\",\n\t\t);\n\t}\n\treturn persisted;\n}\n\nfunction normalizeGoalStatus(\n\tvalue: unknown,\n): MaestroAppServerThreadGoal[\"status\"] {\n\tif (value === undefined || value === null) {\n\t\treturn \"active\";\n\t}\n\tif (value === \"active\" || value === \"complete\" || value === \"cancelled\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid status\");\n}\n\nfunction normalizeTokenBudget(value: unknown): number | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\ttypeof value !== \"number\" ||\n\t\t!Number.isFinite(value) ||\n\t\tvalue <= 0 ||\n\t\t!Number.isInteger(value)\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid tokenBudget\");\n\t}\n\treturn value;\n}\n\nfunction modelToAppServerModel(model: RegisteredModel): MaestroAppServerModel {\n\tconst responsesApi =\n\t\tmodel.api === \"openai-responses\" || model.api === \"openai-codex-responses\";\n\tconst codexBackend =\n\t\tmodel.api === \"openai-codex-responses\" ||\n\t\tmodel.api === \"openai-codex-app-server\";\n\treturn {\n\t\tid: model.id,\n\t\tprovider: model.provider,\n\t\tname: model.name || model.id,\n\t\tapi: model.api,\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tcost: model.cost,\n\t\tsource: model.source,\n\t\tsupportedReasoningEfforts: model.reasoning\n\t\t\t? [\"minimal\", \"low\", \"medium\", \"high\", \"ultra\"]\n\t\t\t: undefined,\n\t\tdefaultReasoningEffort: model.reasoning ? \"medium\" : undefined,\n\t\tcapabilities: {\n\t\t\tstreaming: true,\n\t\t\ttools: model.toolUse === true,\n\t\t\tvision: model.input?.includes(\"image\") || false,\n\t\t\treasoning: model.reasoning || false,\n\t\t\tresponsesApi,\n\t\t\tcodexBackend,\n\t\t\tlocal: model.isLocal,\n\t\t},\n\t};\n}\n\nfunction mergeProviderCapabilities(\n\tcurrent: MaestroAppServerModelProviderCapabilities | undefined,\n\tmodel: MaestroAppServerModel,\n\tproviderName: string,\n): MaestroAppServerModelProviderCapabilities {\n\tconst capabilities = current?.capabilities ?? {\n\t\tstreaming: false,\n\t\ttools: false,\n\t\tvision: false,\n\t\treasoning: false,\n\t\tresponsesApi: false,\n\t\tcodexBackend: false,\n\t\tlocal: false,\n\t};\n\tconst apis = new Set(current?.apis ?? []);\n\tapis.add(model.api);\n\treturn {\n\t\tid: model.provider,\n\t\tname: current?.name ?? providerName,\n\t\tapis: Array.from(apis).sort(),\n\t\tmodelCount: (current?.modelCount ?? 0) + 1,\n\t\tcapabilities: {\n\t\t\tstreaming: capabilities.streaming || model.capabilities.streaming,\n\t\t\ttools: capabilities.tools || model.capabilities.tools,\n\t\t\tvision: capabilities.vision || model.capabilities.vision,\n\t\t\treasoning: capabilities.reasoning || model.capabilities.reasoning,\n\t\t\tresponsesApi:\n\t\t\t\tcapabilities.responsesApi || model.capabilities.responsesApi,\n\t\t\tcodexBackend:\n\t\t\t\tcapabilities.codexBackend || model.capabilities.codexBackend,\n\t\t\tlocal: capabilities.local || model.capabilities.local,\n\t\t},\n\t};\n}\n\nexport function createMaestroAppServerSessionApi(\n\tstore: SessionStore,\n): MaestroAppServerSessionApi {\n\tconst canUpdateThreadMetadata = Boolean(\n\t\tstore.setSessionTitle &&\n\t\t\tstore.saveSessionSummary &&\n\t\t\tstore.saveSessionResumeSummary &&\n\t\t\tstore.setSessionFavorite &&\n\t\t\tstore.setSessionTags,\n\t);\n\tconst canSetThreadName = Boolean(store.setSessionTitle);\n\tconst canUseThreadGoals = Boolean(\n\t\tstore.setSessionAppServerGoal && store.loadEntries,\n\t);\n\n\treturn {\n\t\tinitialize() {\n\t\t\treturn {\n\t\t\t\tprotocolVersion: maestroAppServerProtocolVersion,\n\t\t\t\tserverInfo: {\n\t\t\t\t\tname: \"maestro\",\n\t\t\t\t},\n\t\t\t\tcapabilities: {\n\t\t\t\t\tsessions: true,\n\t\t\t\t\tmodelList: true,\n\t\t\t\t\tmodelProviderCapabilities: true,\n\t\t\t\t\tthreadList: true,\n\t\t\t\t\tthreadRead: true,\n\t\t\t\t\tthreadMetadataUpdate: canUpdateThreadMetadata,\n\t\t\t\t\tthreadNameSet: canSetThreadName,\n\t\t\t\t\tthreadGoals: canUseThreadGoals,\n\t\t\t\t\tturnsList: true,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\tasync listModels(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst api = optionalTrimmedString(params.api, \"api\");\n\t\t\tconst models = getRegisteredModels()\n\t\t\t\t.filter((model) => !provider || model.provider === provider)\n\t\t\t\t.filter((model) => !api || model.api === api)\n\t\t\t\t.map(modelToAppServerModel)\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\t`${left.provider}/${left.id}`.localeCompare(\n\t\t\t\t\t\t`${right.provider}/${right.id}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn { models };\n\t\t},\n\n\t\tasync readModelProviderCapabilities(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst providers = new Map<\n\t\t\t\tstring,\n\t\t\t\tMaestroAppServerModelProviderCapabilities\n\t\t\t>();\n\t\t\tfor (const model of getRegisteredModels()) {\n\t\t\t\tif (provider && model.provider !== provider) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst appServerModel = modelToAppServerModel(model);\n\t\t\t\tproviders.set(\n\t\t\t\t\tmodel.provider,\n\t\t\t\t\tmergeProviderCapabilities(\n\t\t\t\t\t\tproviders.get(model.provider),\n\t\t\t\t\t\tappServerModel,\n\t\t\t\t\t\tmodel.providerName || model.provider,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tproviders: Array.from(providers.values()).sort((left, right) =>\n\t\t\t\t\tleft.id.localeCompare(right.id),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\tasync listThreads(params = {}) {\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst metadata = store.loadAllSessions();\n\t\t\tif (metadata.length === 0) {\n\t\t\t\tconst summaries = await store.listSessions({\n\t\t\t\t\tlimit: limit + 1,\n\t\t\t\t\toffset,\n\t\t\t\t});\n\t\t\t\tconst page = summaries.slice(0, limit);\n\t\t\t\treturn {\n\t\t\t\t\tthreads: page.map(toThreadSummaryFromSessionSummary),\n\t\t\t\t\tnextCursor:\n\t\t\t\t\t\tsummaries.length > limit ? encodeCursor(offset + limit) : null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst page = metadata.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreads: page.map((session) => toThreadSummary(session)),\n\t\t\t\tnextCursor:\n\t\t\t\t\tnextOffset < metadata.length ? encodeCursor(nextOffset) : null,\n\t\t\t};\n\t\t},\n\n\t\tasync readThread(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst includeTurns = params.includeTurns === true;\n\t\t\tconst messagesView = parseMessagesView(params.messagesView);\n\t\t\tconst loaded = await store.loadSession(threadId, { messagesView });\n\t\t\tif (!loaded) {\n\t\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t\t}\n\t\t\tconst thread: MaestroAppServerThread = {\n\t\t\t\t...toThreadSummaryFromLoadedSession(loaded),\n\t\t\t\tmessagesView: loaded.messagesView,\n\t\t\t};\n\t\t\tconst sessionFile = store.getSessionFileById(threadId);\n\t\t\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\t\t\tthread.path = sessionFile;\n\t\t\t}\n\t\t\tif (includeTurns) {\n\t\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\t\tthread.turns = turnsFromProjection(projection);\n\t\t\t\tthread.graph = graphFromProjection(projection);\n\t\t\t}\n\t\t\treturn thread;\n\t\t},\n\n\t\tasync updateThreadMetadata(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst summary = optionalTrimmedString(params.summary, \"summary\");\n\t\t\tconst resumeSummary = optionalTrimmedString(\n\t\t\t\tparams.resumeSummary,\n\t\t\t\t\"resumeSummary\",\n\t\t\t);\n\t\t\tconst favorite = optionalBoolean(params.favorite, \"favorite\");\n\t\t\tconst tags = optionalStringArray(params.tags, \"tags\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\n\t\t\tif (title !== undefined) {\n\t\t\t\tif (!store.setSessionTitle) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread title updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTitle(sessionFile, title);\n\t\t\t}\n\t\t\tif (summary !== undefined) {\n\t\t\t\tif (!store.saveSessionSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionSummary(summary, sessionFile);\n\t\t\t}\n\t\t\tif (resumeSummary !== undefined) {\n\t\t\t\tif (!store.saveSessionResumeSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread resume summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionResumeSummary(resumeSummary, sessionFile);\n\t\t\t}\n\t\t\tif (favorite !== undefined) {\n\t\t\t\tif (!store.setSessionFavorite) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread favorite updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionFavorite(sessionFile, favorite);\n\t\t\t}\n\t\t\tif (tags !== undefined) {\n\t\t\t\tif (!store.setSessionTags) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread tag updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTags(sessionFile, tags);\n\t\t\t}\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, {\n\t\t\t\ttitle,\n\t\t\t\tsummary,\n\t\t\t\tresumeSummary,\n\t\t\t\tfavorite,\n\t\t\t\ttags,\n\t\t\t});\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync setThreadName(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst name = optionalTrimmedString(params.name, \"name\");\n\t\t\tif (!name) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing name\");\n\t\t\t}\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionTitle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread name updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionTitle(sessionFile, name);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, { title: name });\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync getThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await loadThreadGoal(store, threadId),\n\t\t\t};\n\t\t},\n\n\t\tasync setThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst objective = optionalTrimmedString(params.objective, \"objective\");\n\t\t\tif (!objective) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing objective\");\n\t\t\t}\n\t\t\tconst existing = await loadThreadGoal(store, threadId);\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst goal: MaestroAppServerThreadGoal = {\n\t\t\t\tobjective,\n\t\t\t\tstatus: normalizeGoalStatus(params.status),\n\t\t\t\ttokenBudget: normalizeTokenBudget(params.tokenBudget),\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, goal);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await verifyThreadGoalPersisted(store, threadId, goal),\n\t\t\t};\n\t\t},\n\n\t\tasync clearThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, null);\n\t\t\tawait flushSessionWrites(store);\n\t\t\tawait verifyThreadGoalPersisted(store, threadId, null);\n\t\t\treturn { threadId, goal: null };\n\t\t},\n\n\t\tasync listTurns(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\tconst turns = turnsFromProjection(projection);\n\t\t\tconst page = turns.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tturns: page,\n\t\t\t\tnextCursor: nextOffset < turns.length ? encodeCursor(nextOffset) : null,\n\t\t\t\tgraph: graphFromProjection(projection),\n\t\t\t};\n\t\t},\n\t};\n}\n\nasync function loadProjectionForThread(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<SessionGraphProjection> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn buildSessionGraphProjection(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile || sessionFile.startsWith(\"db:\")) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn buildSessionGraphProjection(safeReadSessionEntries(sessionFile));\n}\n\nasync function loadThreadGoal(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn latestGoalFromEntries(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tif (sessionFile.startsWith(\"db:\")) {\n\t\tconst loaded = await store.loadSession(threadId, {\n\t\t\tmessagesView: \"notLoaded\",\n\t\t});\n\t\tif (!loaded) {\n\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t}\n\t\treturn null;\n\t}\n\treturn latestGoalFromEntries(safeReadSessionEntries(sessionFile));\n}\n\nfunction isSupportedMethod(\n\tmethod: string,\n): method is (typeof maestroAppServerClientMethods)[number] {\n\treturn maestroAppServerClientMethods.includes(\n\t\tmethod as (typeof maestroAppServerClientMethods)[number],\n\t);\n}\n\nexport async function handleMaestroAppServerRequest(\n\tapi: MaestroAppServerSessionApi,\n\trequest: MaestroAppServerClientRequest,\n): Promise<MaestroAppServerResponse> {\n\tconst id = request.id as JsonRpcId;\n\ttry {\n\t\tif (!isSupportedMethod(request.method)) {\n\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\n\t\tswitch (request.method) {\n\t\t\tcase \"initialize\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: api.initialize(),\n\t\t\t\t};\n\t\t\tcase \"model/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listModels(request.params),\n\t\t\t\t};\n\t\t\tcase \"modelProvider/capabilities/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readModelProviderCapabilities(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listThreads(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tthread: await api.readThread(request.params),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"thread/metadata/update\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.updateThreadMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/name/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadName(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/get\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/clear\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.clearThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/turns/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listTurns(request.params),\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof MaestroAppServerError) {\n\t\t\treturn {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\terror: {\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid,\n\t\t\terror: {\n\t\t\t\tcode: -32603,\n\t\t\t\tmessage: error instanceof Error ? error.message : \"Internal error\",\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"session-api.js","sourceRoot":"","sources":["../../src/app-server/session-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport {\n\ttype MaestroAppServerClientRequest,\n\ttype MaestroAppServerCommandExecResult,\n\ttype MaestroAppServerCommandProcessResult,\n\ttype MaestroAppServerDaemonStatusResult,\n\ttype MaestroAppServerEmptyResult,\n\ttype MaestroAppServerExternalAgentImportResult,\n\ttype MaestroAppServerFsMetadataResult,\n\ttype MaestroAppServerFsReadDirectoryResult,\n\ttype MaestroAppServerFsReadFileResult,\n\ttype MaestroAppServerFsWatchResult,\n\ttype MaestroAppServerModel,\n\ttype MaestroAppServerModelListResult,\n\ttype MaestroAppServerModelProviderCapabilities,\n\ttype MaestroAppServerModelProviderCapabilitiesReadResult,\n\ttype MaestroAppServerNetworkAuditListResult,\n\ttype MaestroAppServerNetworkFetchResult,\n\ttype MaestroAppServerPluginBundleListResult,\n\ttype MaestroAppServerPluginBundleMutationResult,\n\ttype MaestroAppServerPolicyCheckResult,\n\ttype MaestroAppServerPolicyReadResult,\n\ttype MaestroAppServerProtocolModeListResult,\n\ttype MaestroAppServerProtocolModeSetResult,\n\ttype MaestroAppServerRemoteControlDrainResult,\n\ttype MaestroAppServerRemoteControlLeaseResult,\n\ttype MaestroAppServerRemoteControlStatusResult,\n\ttype MaestroAppServerRequirementsListResult,\n\ttype MaestroAppServerResponse,\n\ttype MaestroAppServerSandboxProbeResult,\n\ttype MaestroAppServerSandboxProofResult,\n\ttype MaestroAppServerServerNotification,\n\ttype MaestroAppServerThread,\n\ttype MaestroAppServerThreadArchiveResult,\n\ttype MaestroAppServerThreadDeleteResult,\n\ttype MaestroAppServerThreadForkResult,\n\ttype MaestroAppServerThreadGoal,\n\ttype MaestroAppServerThreadGoalResult,\n\ttype MaestroAppServerThreadGraph,\n\ttype MaestroAppServerThreadItem,\n\ttype MaestroAppServerThreadListResult,\n\ttype MaestroAppServerThreadMetadataUpdateResult,\n\ttype MaestroAppServerThreadStartResult,\n\ttype MaestroAppServerThreadSummary,\n\ttype MaestroAppServerTurn,\n\ttype MaestroAppServerTurnsListResult,\n\tmaestroAppServerClientMethods,\n\tmaestroAppServerProtocolVersion,\n\tmaestroAppServerSupportedProtocolVersions,\n} from \"@evalops/contracts\";\nimport type { AppMessage } from \"../agent/types.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { safeReadSessionEntries } from \"../session/session-context.js\";\nimport {\n\ttype SessionGraphProjection,\n\tbuildSessionGraphProjection,\n} from \"../session/session-graph-projection.js\";\nimport type {\n\tSessionEntry,\n\tSessionMessagesView,\n\tSessionMetadata,\n\tSessionSummary,\n\tSessionTreeEntry,\n} from \"../session/types.js\";\nimport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tMaestroAppServerDaemonLifecycleError,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nimport {\n\ttype MaestroAppServerExternalAgentImport,\n\tMaestroAppServerExternalAgentImportError,\n\tcreateMaestroAppServerExternalAgentImport,\n\tnormalizeExternalAgentImportParams,\n} from \"./external-agent-import-api.js\";\nimport {\n\ttype MaestroAppServerHostControl,\n\tMaestroAppServerHostControlError,\n\tcreateMaestroAppServerHostControl,\n} from \"./host-control-api.js\";\nimport {\n\ttype MaestroAppServerNetworkGovernance,\n\tMaestroAppServerNetworkGovernanceError,\n\tcreateMaestroAppServerNetworkGovernance,\n} from \"./network-governance-api.js\";\nimport {\n\ttype MaestroAppServerPluginBundleApi,\n\tMaestroAppServerPluginBundleError,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nimport {\n\ttype MaestroAppServerPolicyControl,\n\tMaestroAppServerPolicyControlError,\n\tcreateMaestroAppServerPolicyControl,\n} from \"./policy-control-api.js\";\nimport {\n\ttype MaestroAppServerProtocolModeDecision,\n\ttype MaestroAppServerProtocolModes,\n\tMaestroAppServerProtocolModesError,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nimport {\n\ttype MaestroAppServerSandboxProof,\n\tMaestroAppServerSandboxProofError,\n\tcreateMaestroAppServerSandboxProof,\n\tnormalizeSandboxProofParams,\n} from \"./sandbox-proof-api.js\";\n\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 100;\n\nexport type { MaestroAppServerServerNotification };\nexport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nexport {\n\ttype MaestroAppServerExternalAgentImport,\n\tcreateMaestroAppServerExternalAgentImport,\n} from \"./external-agent-import-api.js\";\nexport {\n\ttype MaestroAppServerPluginBundleApi,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nexport {\n\ttype MaestroAppServerProtocolModes,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nexport {\n\ttype MaestroAppServerSandboxProof,\n\tcreateMaestroAppServerSandboxProof,\n} from \"./sandbox-proof-api.js\";\n\ntype JsonRpcId = string | number;\ntype MaybePromise<T> = T | Promise<T>;\n\ntype SessionStore = Pick<\n\tSessionManager,\n\t\"getSessionFileById\" | \"loadAllSessions\" | \"listSessions\" | \"loadSession\"\n> & {\n\tgetSessionFile?: () => string;\n\tloadEntries?: (sessionId: string) => Promise<SessionEntry[] | null>;\n\tflush?: () => Promise<void>;\n\tsaveSessionSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsaveSessionResumeSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsetSessionFavorite?: (\n\t\tsessionPath: string,\n\t\tfavorite: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionTitle?: (sessionPath: string, title: string) => MaybePromise<void>;\n\tsetSessionTags?: (sessionPath: string, tags: string[]) => MaybePromise<void>;\n\tsetSessionArchived?: (\n\t\tsessionPath: string,\n\t\tarchived: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionAppServerGoal?: (\n\t\tsessionPath: string,\n\t\tgoal: MaestroAppServerThreadGoal | null,\n\t) => MaybePromise<void>;\n\tcreateSession?: (options?: { title?: string }) => Promise<{\n\t\tid: string;\n\t\ttitle?: string;\n\t\tcreatedAt: string;\n\t\tupdatedAt: string;\n\t\tmessageCount: number;\n\t}>;\n\tcanCreateSession?: () => boolean;\n\tcreateBranchedSession?: (leafId: string) => string;\n\tsetSessionFile?: (path: string) => MaybePromise<void>;\n\tresumeSession?: (sessionId: string) => Promise<boolean>;\n\tgetLeafId?: () => string | null;\n\tgetCurrentLeafId?: () => string | null;\n\tbranch?: (branchFromId: string) => MaybePromise<void>;\n\tresetLeaf?: () => MaybePromise<void>;\n\tdeleteSession?: (sessionId: string) => MaybePromise<void>;\n\timportSessionEntries?: (entries: SessionEntry[]) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n\timportPortableSession?: (path: string) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n};\n\nexport interface MaestroAppServerSessionApiOptions {\n\thostControl?: MaestroAppServerHostControl | false;\n\tpolicyControl?: MaestroAppServerPolicyControl | false;\n\tnetworkGovernance?: MaestroAppServerNetworkGovernance | false;\n\tsandboxProof?: MaestroAppServerSandboxProof | false;\n\texternalAgentImport?: MaestroAppServerExternalAgentImport | false;\n\tpluginBundles?: MaestroAppServerPluginBundleApi | false;\n\tdaemonLifecycle?: MaestroAppServerDaemonLifecycle | false;\n\tprotocolModes?: MaestroAppServerProtocolModes | false;\n\tonNotification?: (notification: MaestroAppServerServerNotification) => void;\n}\n\nexport interface MaestroAppServerSessionApi {\n\tinitialize(): MaestroAppServerResponse[\"result\"];\n\tcheckProtocolMode(\n\t\tmethod: (typeof maestroAppServerClientMethods)[number],\n\t): MaestroAppServerProtocolModeDecision;\n\tlistProtocolModes(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeListResult>;\n\tsetProtocolMode(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeSetResult>;\n\tlistModels(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelListResult>;\n\treadModelProviderCapabilities(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelProviderCapabilitiesReadResult>;\n\treadPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyReadResult>;\n\tcheckPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyCheckResult>;\n\tlistRequirements(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRequirementsListResult>;\n\tfetchNetwork(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkFetchResult>;\n\tlistNetworkAudit(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkAuditListResult>;\n\tprobeSandbox(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxProbeResult>;\n\trunSandboxProof(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxProofResult>;\n\timportExternalAgent(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerExternalAgentImportResult>;\n\tlistPluginBundles(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleListResult>;\n\tinstallPluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\tremovePluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\treadDaemonStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerDaemonStatusResult>;\n\treadRemoteControlStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlStatusResult>;\n\treadRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\theartbeatRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\tdrainRemoteControl(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlDrainResult>;\n\texecCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandExecResult>;\n\twriteCommandStdin(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\tterminateCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\treadFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadFileResult>;\n\twriteFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\treadDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadDirectoryResult>;\n\tgetMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsMetadataResult>;\n\tcreateDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tremove(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tcopy(params?: Record<string, unknown>): Promise<MaestroAppServerEmptyResult>;\n\twatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsWatchResult>;\n\tunwatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tlistThreads(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadListResult>;\n\treadThread(params?: Record<string, unknown>): Promise<MaestroAppServerThread>;\n\tupdateThreadMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tsetThreadName(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tgetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tsetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tclearThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tstartThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadStartResult>;\n\tforkThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadForkResult>;\n\tarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tunarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tdeleteThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadDeleteResult>;\n\tlistTurns(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerTurnsListResult>;\n}\n\nexport class MaestroAppServerError extends Error {\n\tconstructor(\n\t\treadonly code: number,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"MaestroAppServerError\";\n\t}\n}\n\nfunction normalizeLimit(value: unknown): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) {\n\t\treturn DEFAULT_PAGE_LIMIT;\n\t}\n\treturn Math.min(MAX_PAGE_LIMIT, Math.max(1, Math.trunc(value)));\n}\n\nfunction encodeCursor(offset: number): string {\n\treturn Buffer.from(JSON.stringify({ offset }), \"utf8\").toString(\"base64url\");\n}\n\nfunction decodeCursor(value: unknown): number {\n\tif (value === undefined || value === null || value === \"\") {\n\t\treturn 0;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n\t}\n\ttry {\n\t\tconst decoded = JSON.parse(\n\t\t\tBuffer.from(value, \"base64url\").toString(\"utf8\"),\n\t\t);\n\t\tif (\n\t\t\ttypeof decoded === \"object\" &&\n\t\t\tdecoded !== null &&\n\t\t\ttypeof decoded.offset === \"number\" &&\n\t\t\tNumber.isFinite(decoded.offset) &&\n\t\t\tdecoded.offset >= 0\n\t\t) {\n\t\t\treturn Math.trunc(decoded.offset);\n\t\t}\n\t} catch {\n\t\t// Fall through to the normalized JSON-RPC error below.\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n}\n\nfunction requireThreadId(params?: Record<string, unknown>): string {\n\tconst threadId = params?.threadId;\n\tif (typeof threadId !== \"string\" || threadId.length === 0) {\n\t\tthrow new MaestroAppServerError(-32602, \"Missing threadId\");\n\t}\n\treturn threadId;\n}\n\nfunction toThreadSummary(\n\tmetadata: SessionMetadata,\n\tsummary?: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary?.archived ?? metadata.archived ?? false;\n\tconst archivedAt = archived\n\t\t? (summary?.archivedAt ?? metadata.archivedAt)\n\t\t: undefined;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: metadata.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary?.title ?? metadata.title ?? metadata.summary,\n\t\tsummary: metadata.summary,\n\t\tresumeSummary: summary?.resumeSummary ?? metadata.resumeSummary,\n\t\tmemoryExtractionHash:\n\t\t\tsummary?.memoryExtractionHash ?? metadata.memoryExtractionHash,\n\t\tsubject: metadata.subject,\n\t\tpath: metadata.path,\n\t\tcreatedAt: metadata.created.toISOString(),\n\t\tupdatedAt: metadata.modified.toISOString(),\n\t\tmessageCount: metadata.messageCount,\n\t\tfavorite: summary?.favorite ?? metadata.favorite,\n\t\ttags: summary?.tags ?? metadata.tags,\n\t\tarchived,\n\t};\n\tif (archivedAt) {\n\t\tthread.archivedAt = archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromSessionSummary(\n\tsummary: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: summary.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary.title ?? summary.subject,\n\t\tsummary: summary.summary ?? summary.title ?? summary.subject,\n\t\tresumeSummary: summary.resumeSummary,\n\t\tmemoryExtractionHash: summary.memoryExtractionHash,\n\t\tsubject: summary.subject,\n\t\tcreatedAt: summary.createdAt,\n\t\tupdatedAt: summary.updatedAt,\n\t\tmessageCount: summary.messageCount,\n\t\tfavorite: summary.favorite,\n\t\ttags: summary.tags,\n\t\tarchived,\n\t};\n\tif (archived && summary.archivedAt) {\n\t\tthread.archivedAt = summary.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromLoadedSession(loaded: {\n\tid: string;\n\tsubject?: string;\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tmemoryExtractionHash?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tmessageCount: number;\n\tfavorite: boolean;\n\ttags?: string[];\n\tarchived?: boolean;\n\tarchivedAt?: string;\n}): MaestroAppServerThreadSummary {\n\tconst archived = loaded.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: loaded.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: loaded.title ?? loaded.subject,\n\t\tsummary: loaded.summary ?? loaded.title ?? loaded.subject,\n\t\tresumeSummary: loaded.resumeSummary,\n\t\tmemoryExtractionHash: loaded.memoryExtractionHash,\n\t\tsubject: loaded.subject,\n\t\tcreatedAt: loaded.createdAt,\n\t\tupdatedAt: loaded.updatedAt,\n\t\tmessageCount: loaded.messageCount,\n\t\tfavorite: loaded.favorite,\n\t\ttags: loaded.tags,\n\t\tarchived,\n\t};\n\tif (archived && loaded.archivedAt) {\n\t\tthread.archivedAt = loaded.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction appMessageContent(message: AppMessage): unknown {\n\treturn \"content\" in message ? message.content : message;\n}\n\nfunction treeEntryToItem(entry: SessionTreeEntry): MaestroAppServerThreadItem {\n\tif (entry.type === \"message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: \"message\",\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\trole: entry.message.role,\n\t\t\tcontent: appMessageContent(entry.message),\n\t\t};\n\t}\n\tif (entry.type === \"custom_message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: entry.customType,\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\tcontent: entry.content,\n\t\t\tdata: entry.details,\n\t\t};\n\t}\n\treturn {\n\t\tid: entry.id,\n\t\ttype: entry.type,\n\t\tparentId: entry.parentId,\n\t\ttimestamp: entry.timestamp,\n\t\tdata: entry,\n\t};\n}\n\nexport function buildTurnsFromSessionEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerTurn[] {\n\treturn turnsFromProjection(buildSessionGraphProjection(entries));\n}\n\nfunction turnsFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerTurn[] {\n\treturn projection.turns.map((turn) => ({\n\t\tid: turn.id,\n\t\tparentTurnId: turn.parentTurnId,\n\t\tstatus: turn.status,\n\t\tstartedAt: turn.startedAt,\n\t\tcompletedAt: turn.completedAt,\n\t\tsourceEntryIds: turn.sourceEntryIds,\n\t\ttoolCallIds: turn.toolCallIds,\n\t\titems: turn.entries.map(treeEntryToItem),\n\t}));\n}\n\nfunction graphFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerThreadGraph {\n\treturn {\n\t\tbranchId: projection.branchId,\n\t\tleafEntryId: projection.leafEntryId,\n\t\tactiveEntryIds: projection.activeEntryIds,\n\t\tcompactionSpans: projection.compactionSpans,\n\t};\n}\n\nfunction parseMessagesView(value: unknown): SessionMessagesView {\n\tif (value === undefined || value === null) {\n\t\treturn \"notLoaded\";\n\t}\n\tif (value === \"full\" || value === \"summary\" || value === \"notLoaded\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid messagesView\");\n}\n\nfunction optionalTrimmedString(\n\tvalue: unknown,\n\tfield: string,\n): string | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value.trim() || undefined;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalStringArray(\n\tvalue: unknown,\n\tfield: string,\n): string[] | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\t!Array.isArray(value) ||\n\t\tvalue.some((entry) => typeof entry !== \"string\")\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn Array.from(\n\t\tnew Set(value.map((entry) => entry.trim()).filter(Boolean)),\n\t);\n}\n\nfunction requireThreadReference(store: SessionStore, threadId: string): string {\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function requireExistingThreadReference(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<string> {\n\tconst sessionFile = requireThreadReference(store, threadId);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function flushSessionWrites(store: SessionStore): Promise<void> {\n\tawait store.flush?.();\n}\n\nasync function restoreSessionBinding(\n\tstore: SessionStore,\n\tsessionReference: string | undefined,\n\tleafId?: string | null,\n): Promise<void> {\n\tif (!sessionReference) {\n\t\treturn;\n\t}\n\tconst dbSessionId = sessionReference.startsWith(\"db:\")\n\t\t? sessionReference.slice(\"db:\".length)\n\t\t: undefined;\n\tlet restored = false;\n\tif (dbSessionId && store.resumeSession) {\n\t\trestored = await store.resumeSession(dbSessionId);\n\t}\n\tif (!restored) {\n\t\tawait store.setSessionFile?.(sessionReference);\n\t}\n\tif (leafId === null) {\n\t\tawait store.resetLeaf?.();\n\t} else if (leafId && store.branch) {\n\t\tawait store.branch(leafId);\n\t}\n}\n\nfunction getCurrentLeafId(store: SessionStore): string | null {\n\treturn store.getLeafId?.() ?? store.getCurrentLeafId?.() ?? null;\n}\n\nfunction isActiveThreadSessionFile(\n\tstore: SessionStore,\n\tsessionFile: string,\n): boolean {\n\tconst activeSessionFile = store.getSessionFile?.();\n\tif (!activeSessionFile) {\n\t\treturn false;\n\t}\n\treturn resolve(activeSessionFile) === resolve(sessionFile);\n}\n\ninterface ThreadMetadataExpectation {\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tfavorite?: boolean;\n\ttags?: string[];\n}\n\nasync function summarizeThreadAfterMutation(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadSummary> {\n\tawait flushSessionWrites(store);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tconst summary = toThreadSummaryFromLoadedSession(loaded);\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\tsummary.path = sessionFile;\n\t}\n\treturn summary;\n}\n\nfunction tagsEqual(left: string[] | undefined, right: string[] | undefined) {\n\tif (left === undefined || right === undefined) {\n\t\treturn left === right;\n\t}\n\treturn (\n\t\tleft.length === right.length &&\n\t\tleft.every((value, index) => value === right[index])\n\t);\n}\n\nfunction verifyThreadMetadataPersisted(\n\tthread: MaestroAppServerThreadSummary,\n\texpected: ThreadMetadataExpectation,\n): void {\n\tconst persisted =\n\t\t(expected.title === undefined || thread.title === expected.title) &&\n\t\t(expected.summary === undefined || thread.summary === expected.summary) &&\n\t\t(expected.resumeSummary === undefined ||\n\t\t\tthread.resumeSummary === expected.resumeSummary) &&\n\t\t(expected.favorite === undefined ||\n\t\t\tthread.favorite === expected.favorite) &&\n\t\t(expected.tags === undefined || tagsEqual(thread.tags, expected.tags));\n\tif (!persisted) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread metadata update was not persisted\",\n\t\t);\n\t}\n}\n\nfunction latestGoalFromEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerThreadGoal | null {\n\tlet goal: MaestroAppServerThreadGoal | null = null;\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"session_meta\" || entry.appServerGoal === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tgoal = entry.appServerGoal;\n\t}\n\treturn goal;\n}\n\nfunction goalsEqual(\n\tactual: MaestroAppServerThreadGoal | null,\n\texpected: MaestroAppServerThreadGoal | null,\n): boolean {\n\tif (actual === null || expected === null) {\n\t\treturn actual === expected;\n\t}\n\treturn (\n\t\tactual.objective === expected.objective &&\n\t\tactual.status === expected.status &&\n\t\tactual.tokenBudget === expected.tokenBudget &&\n\t\tactual.createdAt === expected.createdAt &&\n\t\tactual.updatedAt === expected.updatedAt\n\t);\n}\n\nasync function verifyThreadGoalPersisted(\n\tstore: SessionStore,\n\tthreadId: string,\n\texpected: MaestroAppServerThreadGoal | null,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tconst persisted = await loadThreadGoal(store, threadId);\n\tif (!goalsEqual(persisted, expected)) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread goal update was not persisted\",\n\t\t);\n\t}\n\treturn persisted;\n}\n\nfunction normalizeGoalStatus(\n\tvalue: unknown,\n): MaestroAppServerThreadGoal[\"status\"] {\n\tif (value === undefined || value === null) {\n\t\treturn \"active\";\n\t}\n\tif (value === \"active\" || value === \"complete\" || value === \"cancelled\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid status\");\n}\n\nfunction normalizeTokenBudget(value: unknown): number | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\ttypeof value !== \"number\" ||\n\t\t!Number.isFinite(value) ||\n\t\tvalue <= 0 ||\n\t\t!Number.isInteger(value)\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid tokenBudget\");\n\t}\n\treturn value;\n}\n\nfunction modelToAppServerModel(model: RegisteredModel): MaestroAppServerModel {\n\tconst responsesApi =\n\t\tmodel.api === \"openai-responses\" || model.api === \"openai-codex-responses\";\n\tconst codexBackend =\n\t\tmodel.api === \"openai-codex-responses\" ||\n\t\tmodel.api === \"openai-codex-app-server\";\n\treturn {\n\t\tid: model.id,\n\t\tprovider: model.provider,\n\t\tname: model.name || model.id,\n\t\tapi: model.api,\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tcost: model.cost,\n\t\tsource: model.source,\n\t\tsupportedReasoningEfforts: model.reasoning\n\t\t\t? [\"minimal\", \"low\", \"medium\", \"high\", \"ultra\"]\n\t\t\t: undefined,\n\t\tdefaultReasoningEffort: model.reasoning ? \"medium\" : undefined,\n\t\tcapabilities: {\n\t\t\tstreaming: true,\n\t\t\ttools: model.toolUse === true,\n\t\t\tvision: model.input?.includes(\"image\") || false,\n\t\t\treasoning: model.reasoning || false,\n\t\t\tresponsesApi,\n\t\t\tcodexBackend,\n\t\t\tlocal: model.isLocal,\n\t\t},\n\t};\n}\n\nfunction mergeProviderCapabilities(\n\tcurrent: MaestroAppServerModelProviderCapabilities | undefined,\n\tmodel: MaestroAppServerModel,\n\tproviderName: string,\n): MaestroAppServerModelProviderCapabilities {\n\tconst capabilities = current?.capabilities ?? {\n\t\tstreaming: false,\n\t\ttools: false,\n\t\tvision: false,\n\t\treasoning: false,\n\t\tresponsesApi: false,\n\t\tcodexBackend: false,\n\t\tlocal: false,\n\t};\n\tconst apis = new Set(current?.apis ?? []);\n\tapis.add(model.api);\n\treturn {\n\t\tid: model.provider,\n\t\tname: current?.name ?? providerName,\n\t\tapis: Array.from(apis).sort(),\n\t\tmodelCount: (current?.modelCount ?? 0) + 1,\n\t\tcapabilities: {\n\t\t\tstreaming: capabilities.streaming || model.capabilities.streaming,\n\t\t\ttools: capabilities.tools || model.capabilities.tools,\n\t\t\tvision: capabilities.vision || model.capabilities.vision,\n\t\t\treasoning: capabilities.reasoning || model.capabilities.reasoning,\n\t\t\tresponsesApi:\n\t\t\t\tcapabilities.responsesApi || model.capabilities.responsesApi,\n\t\t\tcodexBackend:\n\t\t\t\tcapabilities.codexBackend || model.capabilities.codexBackend,\n\t\t\tlocal: capabilities.local || model.capabilities.local,\n\t\t},\n\t};\n}\n\nexport function createMaestroAppServerSessionApi(\n\tstore: SessionStore,\n\toptions: MaestroAppServerSessionApiOptions = {},\n): MaestroAppServerSessionApi {\n\tconst hostControl =\n\t\toptions.hostControl === false\n\t\t\t? undefined\n\t\t\t: (options.hostControl ??\n\t\t\t\tcreateMaestroAppServerHostControl({\n\t\t\t\t\tonNotification: options.onNotification,\n\t\t\t\t}));\n\tconst policyControl =\n\t\toptions.policyControl === false\n\t\t\t? undefined\n\t\t\t: (options.policyControl ?? createMaestroAppServerPolicyControl());\n\tconst networkGovernance =\n\t\toptions.networkGovernance === false\n\t\t\t? undefined\n\t\t\t: (options.networkGovernance ??\n\t\t\t\tcreateMaestroAppServerNetworkGovernance());\n\tconst sandboxProof =\n\t\toptions.sandboxProof === false\n\t\t\t? undefined\n\t\t\t: (options.sandboxProof ?? createMaestroAppServerSandboxProof());\n\tconst pluginBundles =\n\t\toptions.pluginBundles === false\n\t\t\t? undefined\n\t\t\t: (options.pluginBundles ?? createMaestroAppServerPluginBundleApi());\n\tconst daemonLifecycle =\n\t\toptions.daemonLifecycle === false\n\t\t\t? undefined\n\t\t\t: (options.daemonLifecycle ?? createMaestroAppServerDaemonLifecycle());\n\tconst protocolModes =\n\t\toptions.protocolModes === false\n\t\t\t? undefined\n\t\t\t: (options.protocolModes ?? createMaestroAppServerProtocolModes());\n\tconst daemonLifecycleCapabilities = daemonLifecycle?.capabilities() ?? {\n\t\tdaemonStatus: false,\n\t\tremoteControlStatus: false,\n\t\tremoteControlLease: false,\n\t\tremoteControlDrain: false,\n\t};\n\tconst canUpdateThreadMetadata = Boolean(\n\t\tstore.setSessionTitle &&\n\t\t\tstore.saveSessionSummary &&\n\t\t\tstore.saveSessionResumeSummary &&\n\t\t\tstore.setSessionFavorite &&\n\t\t\tstore.setSessionTags,\n\t);\n\tconst canSetThreadName = Boolean(store.setSessionTitle);\n\tconst canUseThreadGoals = Boolean(\n\t\tstore.setSessionAppServerGoal && store.loadEntries,\n\t);\n\tconst canMutateSessionPersistence = store.canCreateSession?.() ?? true;\n\tconst externalAgentImport =\n\t\toptions.externalAgentImport === false || !canMutateSessionPersistence\n\t\t\t? undefined\n\t\t\t: (options.externalAgentImport ??\n\t\t\t\tcreateMaestroAppServerExternalAgentImport({ store }));\n\tconst canStartThreads = Boolean(\n\t\tstore.createSession && canMutateSessionPersistence,\n\t);\n\tconst canForkThreads = Boolean(\n\t\tcanMutateSessionPersistence &&\n\t\t\tstore.createBranchedSession &&\n\t\t\tstore.setSessionFile,\n\t);\n\tconst canArchiveThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.setSessionArchived,\n\t);\n\tconst canDeleteThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.deleteSession,\n\t);\n\tconst canUseHostControl = Boolean(hostControl);\n\tconst canUseFilesystemWatch = Boolean(hostControl?.supportsWatch());\n\tconst canUsePolicyControl = Boolean(policyControl);\n\tconst canUseNetworkGovernance = Boolean(networkGovernance);\n\tconst canUseSandboxProof = Boolean(sandboxProof);\n\tconst canUseExternalAgentImport = Boolean(externalAgentImport);\n\tconst canUsePluginBundles = Boolean(pluginBundles);\n\n\treturn {\n\t\tinitialize() {\n\t\t\treturn {\n\t\t\t\tprotocolVersion: maestroAppServerProtocolVersion,\n\t\t\t\tsupportedProtocolVersions: [\n\t\t\t\t\t...maestroAppServerSupportedProtocolVersions,\n\t\t\t\t],\n\t\t\t\tserverInfo: {\n\t\t\t\t\tname: \"maestro\",\n\t\t\t\t},\n\t\t\t\tcapabilities: {\n\t\t\t\t\tsessions: true,\n\t\t\t\t\tprotocolModes: Boolean(protocolModes),\n\t\t\t\t\tmodelList: true,\n\t\t\t\t\tmodelProviderCapabilities: true,\n\t\t\t\t\tmanagedPolicy: canUsePolicyControl,\n\t\t\t\t\trequirements: canUsePolicyControl,\n\t\t\t\t\tnetworkProxy: canUseNetworkGovernance,\n\t\t\t\t\tnetworkAudit: canUseNetworkGovernance,\n\t\t\t\t\tsandboxProbe: canUseSandboxProof,\n\t\t\t\t\tsandboxProof: canUseSandboxProof,\n\t\t\t\t\texternalAgentImport: canUseExternalAgentImport,\n\t\t\t\t\tpluginBundles: canUsePluginBundles,\n\t\t\t\t\tdaemonStatus: daemonLifecycleCapabilities.daemonStatus,\n\t\t\t\t\tremoteControlStatus: daemonLifecycleCapabilities.remoteControlStatus,\n\t\t\t\t\tremoteControlLease: daemonLifecycleCapabilities.remoteControlLease,\n\t\t\t\t\tremoteControlDrain: daemonLifecycleCapabilities.remoteControlDrain,\n\t\t\t\t\tcommandExec: canUseHostControl,\n\t\t\t\t\tcommandProcessControl: canUseHostControl,\n\t\t\t\t\tfilesystem: canUseHostControl,\n\t\t\t\t\tfilesystemWatch: canUseFilesystemWatch,\n\t\t\t\t\tthreadList: true,\n\t\t\t\t\tthreadRead: true,\n\t\t\t\t\tthreadMetadataUpdate: canUpdateThreadMetadata,\n\t\t\t\t\tthreadNameSet: canSetThreadName,\n\t\t\t\t\tthreadGoals: canUseThreadGoals,\n\t\t\t\t\tthreadStart: canStartThreads,\n\t\t\t\t\tthreadFork: canForkThreads,\n\t\t\t\t\tthreadArchive: canArchiveThreads,\n\t\t\t\t\tthreadDelete: canDeleteThreads,\n\t\t\t\t\tturnsList: true,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\tcheckProtocolMode(method) {\n\t\t\treturn protocolModes?.checkMethod(method) ?? { allowed: true };\n\t\t},\n\n\t\tasync listProtocolModes(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.listModes(params);\n\t\t},\n\n\t\tasync setProtocolMode(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.setMode(params);\n\t\t},\n\n\t\tasync readPolicy() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.readPolicy();\n\t\t},\n\n\t\tasync checkPolicy(params = {}) {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.checkPolicy(params);\n\t\t},\n\n\t\tasync listRequirements() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Requirements are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.listRequirements();\n\t\t},\n\n\t\tasync fetchNetwork(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network proxy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.fetch(params);\n\t\t},\n\n\t\tasync listNetworkAudit(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network audit is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.listAudit(params);\n\t\t},\n\n\t\tasync probeSandbox(params = {}) {\n\t\t\tif (!sandboxProof) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox probe is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tnormalizeSandboxProofParams(params);\n\t\t\treturn sandboxProof.probe();\n\t\t},\n\n\t\tasync runSandboxProof(params = {}) {\n\t\t\tif (!sandboxProof) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox proof is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeSandboxProofParams(params);\n\t\t\treturn sandboxProof.runProof(normalizedParams);\n\t\t},\n\n\t\tasync importExternalAgent(params = {}) {\n\t\t\tif (!externalAgentImport) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"External agent import is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeExternalAgentImportParams(params);\n\t\t\treturn externalAgentImport.importBundle(normalizedParams);\n\t\t},\n\n\t\tasync listPluginBundles(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.listBundles(params);\n\t\t},\n\n\t\tasync installPluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.installBundle(params);\n\t\t},\n\n\t\tasync removePluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.removeBundle(params);\n\t\t},\n\n\t\tasync readDaemonStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Daemon lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.status(params);\n\t\t},\n\n\t\tasync readRemoteControlStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.remoteControlStatus(params);\n\t\t},\n\n\t\tasync readRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.readLease(params);\n\t\t},\n\n\t\tasync heartbeatRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.heartbeatLease(params);\n\t\t},\n\n\t\tasync drainRemoteControl(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control drain is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.drain(params);\n\t\t},\n\n\t\tasync execCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command exec is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.execCommand(params);\n\t\t},\n\n\t\tasync writeCommandStdin(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.writeCommandStdin(params);\n\t\t},\n\n\t\tasync terminateCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.terminateCommand(params);\n\t\t},\n\n\t\tasync readFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readFile(params);\n\t\t},\n\n\t\tasync writeFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.writeFile(params);\n\t\t},\n\n\t\tasync readDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readDirectory(params);\n\t\t},\n\n\t\tasync getMetadata(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.getMetadata(params);\n\t\t},\n\n\t\tasync createDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.createDirectory(params);\n\t\t},\n\n\t\tasync remove(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.remove(params);\n\t\t},\n\n\t\tasync copy(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.copy(params);\n\t\t},\n\n\t\tasync watch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.watch(params);\n\t\t},\n\n\t\tasync unwatch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.unwatch(params);\n\t\t},\n\n\t\tasync listModels(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst api = optionalTrimmedString(params.api, \"api\");\n\t\t\tconst models = getRegisteredModels()\n\t\t\t\t.filter((model) => !provider || model.provider === provider)\n\t\t\t\t.filter((model) => !api || model.api === api)\n\t\t\t\t.map(modelToAppServerModel)\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\t`${left.provider}/${left.id}`.localeCompare(\n\t\t\t\t\t\t`${right.provider}/${right.id}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn { models };\n\t\t},\n\n\t\tasync readModelProviderCapabilities(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst providers = new Map<\n\t\t\t\tstring,\n\t\t\t\tMaestroAppServerModelProviderCapabilities\n\t\t\t>();\n\t\t\tfor (const model of getRegisteredModels()) {\n\t\t\t\tif (provider && model.provider !== provider) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst appServerModel = modelToAppServerModel(model);\n\t\t\t\tproviders.set(\n\t\t\t\t\tmodel.provider,\n\t\t\t\t\tmergeProviderCapabilities(\n\t\t\t\t\t\tproviders.get(model.provider),\n\t\t\t\t\t\tappServerModel,\n\t\t\t\t\t\tmodel.providerName || model.provider,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tproviders: Array.from(providers.values()).sort((left, right) =>\n\t\t\t\t\tleft.id.localeCompare(right.id),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\tasync listThreads(params = {}) {\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst includeArchived =\n\t\t\t\toptionalBoolean(params.includeArchived, \"includeArchived\") ?? false;\n\t\t\tconst metadata = store.loadAllSessions();\n\t\t\tif (metadata.length === 0) {\n\t\t\t\tconst page: SessionSummary[] = [];\n\t\t\t\tlet rawOffset = offset;\n\t\t\t\tlet cursorAfterPage = offset;\n\t\t\t\tlet hasMoreVisible = false;\n\t\t\t\tlet exhausted = false;\n\t\t\t\twhile (!hasMoreVisible && !exhausted) {\n\t\t\t\t\tconst summaries = await store.listSessions({\n\t\t\t\t\t\tlimit: limit + 1,\n\t\t\t\t\t\toffset: rawOffset,\n\t\t\t\t\t});\n\t\t\t\t\texhausted = summaries.length <= limit;\n\t\t\t\t\tfor (const summary of summaries) {\n\t\t\t\t\t\trawOffset += 1;\n\t\t\t\t\t\tif (includeArchived || !summary.archived) {\n\t\t\t\t\t\t\tif (page.length < limit) {\n\t\t\t\t\t\t\t\tpage.push(summary);\n\t\t\t\t\t\t\t\tcursorAfterPage = rawOffset;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thasMoreVisible = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (summaries.length === 0) {\n\t\t\t\t\t\texhausted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tthreads: page.map(toThreadSummaryFromSessionSummary),\n\t\t\t\t\tnextCursor: hasMoreVisible ? encodeCursor(cursorAfterPage) : null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst visible = includeArchived\n\t\t\t\t? metadata\n\t\t\t\t: metadata.filter((session) => !session.archived);\n\t\t\tconst page = visible.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreads: page.map((session) => toThreadSummary(session)),\n\t\t\t\tnextCursor:\n\t\t\t\t\tnextOffset < visible.length ? encodeCursor(nextOffset) : null,\n\t\t\t};\n\t\t},\n\n\t\tasync readThread(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst includeTurns = params.includeTurns === true;\n\t\t\tconst messagesView = parseMessagesView(params.messagesView);\n\t\t\tconst loaded = await store.loadSession(threadId, { messagesView });\n\t\t\tif (!loaded) {\n\t\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t\t}\n\t\t\tconst thread: MaestroAppServerThread = {\n\t\t\t\t...toThreadSummaryFromLoadedSession(loaded),\n\t\t\t\tmessagesView: loaded.messagesView,\n\t\t\t};\n\t\t\tconst sessionFile = store.getSessionFileById(threadId);\n\t\t\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\t\t\tthread.path = sessionFile;\n\t\t\t}\n\t\t\tif (includeTurns) {\n\t\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\t\tthread.turns = turnsFromProjection(projection);\n\t\t\t\tthread.graph = graphFromProjection(projection);\n\t\t\t}\n\t\t\treturn thread;\n\t\t},\n\n\t\tasync updateThreadMetadata(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst summary = optionalTrimmedString(params.summary, \"summary\");\n\t\t\tconst resumeSummary = optionalTrimmedString(\n\t\t\t\tparams.resumeSummary,\n\t\t\t\t\"resumeSummary\",\n\t\t\t);\n\t\t\tconst favorite = optionalBoolean(params.favorite, \"favorite\");\n\t\t\tconst tags = optionalStringArray(params.tags, \"tags\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\n\t\t\tif (title !== undefined) {\n\t\t\t\tif (!store.setSessionTitle) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread title updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTitle(sessionFile, title);\n\t\t\t}\n\t\t\tif (summary !== undefined) {\n\t\t\t\tif (!store.saveSessionSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionSummary(summary, sessionFile);\n\t\t\t}\n\t\t\tif (resumeSummary !== undefined) {\n\t\t\t\tif (!store.saveSessionResumeSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread resume summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionResumeSummary(resumeSummary, sessionFile);\n\t\t\t}\n\t\t\tif (favorite !== undefined) {\n\t\t\t\tif (!store.setSessionFavorite) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread favorite updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionFavorite(sessionFile, favorite);\n\t\t\t}\n\t\t\tif (tags !== undefined) {\n\t\t\t\tif (!store.setSessionTags) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread tag updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTags(sessionFile, tags);\n\t\t\t}\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, {\n\t\t\t\ttitle,\n\t\t\t\tsummary,\n\t\t\t\tresumeSummary,\n\t\t\t\tfavorite,\n\t\t\t\ttags,\n\t\t\t});\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync setThreadName(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst name = optionalTrimmedString(params.name, \"name\");\n\t\t\tif (!name) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing name\");\n\t\t\t}\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionTitle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread name updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionTitle(sessionFile, name);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, { title: name });\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync getThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await loadThreadGoal(store, threadId),\n\t\t\t};\n\t\t},\n\n\t\tasync setThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst objective = optionalTrimmedString(params.objective, \"objective\");\n\t\t\tif (!objective) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing objective\");\n\t\t\t}\n\t\t\tconst existing = await loadThreadGoal(store, threadId);\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst goal: MaestroAppServerThreadGoal = {\n\t\t\t\tobjective,\n\t\t\t\tstatus: normalizeGoalStatus(params.status),\n\t\t\t\ttokenBudget: normalizeTokenBudget(params.tokenBudget),\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, goal);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await verifyThreadGoalPersisted(store, threadId, goal),\n\t\t\t};\n\t\t},\n\n\t\tasync clearThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, null);\n\t\t\tawait flushSessionWrites(store);\n\t\t\tawait verifyThreadGoalPersisted(store, threadId, null);\n\t\t\treturn { threadId, goal: null };\n\t\t},\n\n\t\tasync startThread(params = {}) {\n\t\t\tconst createThreadSession = store.createSession;\n\t\t\tif (!canStartThreads || !createThreadSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread start is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet created: Awaited<\n\t\t\t\tReturnType<NonNullable<SessionStore[\"createSession\"]>>\n\t\t\t>;\n\t\t\ttry {\n\t\t\t\tcreated = await createThreadSession.call(\n\t\t\t\t\tstore,\n\t\t\t\t\ttitle ? { title } : undefined,\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, created.id),\n\t\t\t};\n\t\t},\n\n\t\tasync forkThread(params = {}) {\n\t\t\tconst createBranchedSession = store.createBranchedSession;\n\t\t\tif (!canForkThreads || !createBranchedSession) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Thread fork is not available\");\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst leafEntryId = optionalTrimmedString(\n\t\t\t\tparams.leafEntryId,\n\t\t\t\t\"leafEntryId\",\n\t\t\t);\n\t\t\tif (!leafEntryId) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing leafEntryId\");\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet forkedThreadId: string | undefined;\n\t\t\ttry {\n\t\t\t\tawait store.setSessionFile?.(sessionFile);\n\t\t\t\tlet forkedSessionFile: string;\n\t\t\t\ttry {\n\t\t\t\t\tforkedSessionFile = createBranchedSession.call(store, leafEntryId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\terror instanceof Error &&\n\t\t\t\t\t\terror.message === `Entry ${leafEntryId} not found`\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new MaestroAppServerError(-32602, \"Unknown leafEntryId\");\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst forkedEntries = safeReadSessionEntries(forkedSessionFile);\n\t\t\t\tconst forkedHeader = forkedEntries.find(\n\t\t\t\t\t(entry) => entry.type === \"session\",\n\t\t\t\t);\n\t\t\t\tforkedThreadId =\n\t\t\t\t\tforkedHeader && \"id\" in forkedHeader ? forkedHeader.id : undefined;\n\t\t\t\tif (!forkedThreadId) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32000,\n\t\t\t\t\t\t\"Thread fork did not produce a readable session\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (title && store.setSessionTitle) {\n\t\t\t\t\tawait store.setSessionTitle(forkedSessionFile, title);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, forkedThreadId),\n\t\t\t\tparentThreadId: threadId,\n\t\t\t\tforkedFromEntryId: leafEntryId,\n\t\t\t};\n\t\t},\n\n\t\tasync archiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, true);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (!thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: true };\n\t\t},\n\n\t\tasync unarchiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, false);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: false };\n\t\t},\n\n\t\tasync deleteThread(params = {}) {\n\t\t\tconst deleteSession = store.deleteSession;\n\t\t\tif (!canDeleteThreads || !deleteSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread delete is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (isActiveThreadSessionFile(store, sessionFile)) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Cannot delete the currently active thread\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait deleteSession.call(store, threadId);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn { threadId, deleted: true };\n\t\t},\n\n\t\tasync listTurns(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\tconst turns = turnsFromProjection(projection);\n\t\t\tconst page = turns.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tturns: page,\n\t\t\t\tnextCursor: nextOffset < turns.length ? encodeCursor(nextOffset) : null,\n\t\t\t\tgraph: graphFromProjection(projection),\n\t\t\t};\n\t\t},\n\t};\n}\n\nasync function loadProjectionForThread(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<SessionGraphProjection> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn buildSessionGraphProjection(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile || sessionFile.startsWith(\"db:\")) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn buildSessionGraphProjection(safeReadSessionEntries(sessionFile));\n}\n\nasync function loadThreadGoal(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn latestGoalFromEntries(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tif (sessionFile.startsWith(\"db:\")) {\n\t\tconst loaded = await store.loadSession(threadId, {\n\t\t\tmessagesView: \"notLoaded\",\n\t\t});\n\t\tif (!loaded) {\n\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t}\n\t\treturn null;\n\t}\n\treturn latestGoalFromEntries(safeReadSessionEntries(sessionFile));\n}\n\nfunction isSupportedMethod(\n\tmethod: string,\n): method is (typeof maestroAppServerClientMethods)[number] {\n\treturn maestroAppServerClientMethods.includes(\n\t\tmethod as (typeof maestroAppServerClientMethods)[number],\n\t);\n}\n\nexport async function handleMaestroAppServerRequest(\n\tapi: MaestroAppServerSessionApi,\n\trequest: MaestroAppServerClientRequest,\n): Promise<MaestroAppServerResponse> {\n\tconst id = request.id as JsonRpcId;\n\ttry {\n\t\tif (!isSupportedMethod(request.method)) {\n\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t\tconst method = request.method;\n\t\tconst protocolModeDecision = api.checkProtocolMode?.(method) ?? {\n\t\t\tallowed: true,\n\t\t};\n\t\tif (!protocolModeDecision.allowed) {\n\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t-32003,\n\t\t\t\tprotocolModeDecision.reason ?? \"Method blocked by protocol mode\",\n\t\t\t);\n\t\t}\n\n\t\tswitch (method) {\n\t\t\tcase \"initialize\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: api.initialize(),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listProtocolModes(request.params),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setProtocolMode(request.params),\n\t\t\t\t};\n\t\t\tcase \"model/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listModels(request.params),\n\t\t\t\t};\n\t\t\tcase \"modelProvider/capabilities/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readModelProviderCapabilities(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/check\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.checkPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"requirements/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listRequirements(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/fetch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.fetchNetwork(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/audit/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listNetworkAudit(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/probe\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.probeSandbox(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/proof/run\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.runSandboxProof(request.params),\n\t\t\t\t};\n\t\t\tcase \"externalAgent/import\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.importExternalAgent(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listPluginBundles(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/install\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.installPluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.removePluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"daemon/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDaemonStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/heartbeat\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.heartbeatRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/drain\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.drainRemoteControl(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.execCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/write\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeCommandStdin(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/terminate\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.terminateCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/writeFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/getMetadata\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/createDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.createDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.remove(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/copy\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.copy(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/watch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.watch(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/unwatch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unwatch(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listThreads(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tthread: await api.readThread(request.params),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"thread/metadata/update\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.updateThreadMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/name/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadName(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/get\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/clear\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.clearThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/start\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.startThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/fork\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.forkThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/archive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.archiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/unarchive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unarchiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/delete\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.deleteThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/turns/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listTurns(request.params),\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof MaestroAppServerError ||\n\t\t\terror instanceof MaestroAppServerHostControlError ||\n\t\t\terror instanceof MaestroAppServerNetworkGovernanceError ||\n\t\t\terror instanceof MaestroAppServerPolicyControlError ||\n\t\t\terror instanceof MaestroAppServerSandboxProofError ||\n\t\t\terror instanceof MaestroAppServerExternalAgentImportError ||\n\t\t\terror instanceof MaestroAppServerPluginBundleError ||\n\t\t\terror instanceof MaestroAppServerDaemonLifecycleError ||\n\t\t\terror instanceof MaestroAppServerProtocolModesError\n\t\t) {\n\t\t\treturn {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\terror: {\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid,\n\t\t\terror: {\n\t\t\t\tcode: -32603,\n\t\t\t\tmessage: error instanceof Error ? error.message : \"Internal error\",\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
@@ -126,10 +126,10 @@ export declare function queryAuditLogs(filters: {
126
126
  offset?: number;
127
127
  }): Promise<{
128
128
  orgId: string;
129
- status: "error" | "denied" | "success" | "failure";
130
129
  id: string;
131
130
  metadata: AuditMetadata | null;
132
131
  action: string;
132
+ status: "error" | "denied" | "success" | "failure";
133
133
  createdAt: Date;
134
134
  sessionId: string | null;
135
135
  userId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-setup.d.ts","sourceRoot":"","sources":["../../src/bootstrap/auth-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,QAAQ,EAEb,MAAM,sBAAsB,CAAC;AAO9B,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,2EAA2E;IAC3E,iBAAiB,EAAE,CAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,KACV,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,oEAAoE;IACpE,qBAAqB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;CAC5D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,eAAe,CA8ElB"}
1
+ {"version":3,"file":"auth-setup.d.ts","sourceRoot":"","sources":["../../src/bootstrap/auth-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,QAAQ,EAEb,MAAM,sBAAsB,CAAC;AAO9B,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,2EAA2E;IAC3E,iBAAiB,EAAE,CAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,KACV,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,oEAAoE;IACpE,qBAAqB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;CAC5D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CA0BzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,eAAe,CAuFlB"}
@@ -31,6 +31,16 @@ export function validateCodexFlags(args, command) {
31
31
  if (codexFlagsUsed) {
32
32
  throw new Error("Legacy Codex/ChatGPT auth flags are no longer supported. Use the openai-codex provider with `maestro codex login` instead.");
33
33
  }
34
+ const retiredAnthropicAuthUsed = args.some((arg, index) => {
35
+ if (arg === "--auth" && args[index + 1] === "claude")
36
+ return true;
37
+ if (arg.startsWith("--auth=claude"))
38
+ return true;
39
+ return false;
40
+ });
41
+ if (retiredAnthropicAuthUsed) {
42
+ throw new Error("Anthropic OAuth auth mode is no longer supported. Set ANTHROPIC_API_KEY to use Anthropic models, or run `maestro codex login` for the default Codex flow.");
43
+ }
34
44
  }
35
45
  }
36
46
  /**
@@ -50,7 +60,7 @@ export function createAuthSetup(params) {
50
60
  push(`Error: No credentials found for provider "${providerName}"`, chalk.red(`Error: No credentials found for provider "${providerName}"`));
51
61
  if (authMode !== "api-key") {
52
62
  const loginHint = providerName === "anthropic"
53
- ? 'Run "maestro anthropic login" (claude) or use /login to authenticate before retrying.'
63
+ ? "Anthropic OAuth login has been removed."
54
64
  : providerName === "openai"
55
65
  ? 'Run "maestro openai login" or use /login to authenticate before retrying.'
56
66
  : isKnownEvalOpsManagedProvider(providerName) &&
@@ -59,7 +69,12 @@ export function createAuthSetup(params) {
59
69
  : isEvalOpsManagedProvider(providerName)
60
70
  ? 'Run "maestro evalops login" or "/login evalops" to authenticate before retrying.'
61
71
  : 'Run "/login" to authenticate before retrying.';
62
- push(`${loginHint} Or provide an API key for the selected provider.`, chalk.dim(`${loginHint} Or provide an API key for the selected provider.`));
72
+ if (providerName === "anthropic") {
73
+ push(`${loginHint} Provide an API key for the selected provider.`, chalk.dim(`${loginHint} Provide an API key for the selected provider.`));
74
+ }
75
+ else {
76
+ push(`${loginHint} Or provide an API key for the selected provider.`, chalk.dim(`${loginHint} Or provide an API key for the selected provider.`));
77
+ }
63
78
  }
64
79
  const envVars = getEnvVarsForProvider(providerName);
65
80
  if (envVars.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-setup.js","sourceRoot":"","sources":["../../src/bootstrap/auth-setup.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authentication Setup - Credential resolution and validation.\n *\n * Extracts auth-related initialization from main.ts Phase 4:\n * auth mode determination, Codex flag validation, credential resolution,\n * and missing-auth error message building.\n *\n * @module bootstrap/auth-setup\n */\n\nimport chalk from \"chalk\";\nimport { getCustomProviderMetadata } from \"../models/registry.js\";\nimport { getEnvVarsForProvider } from \"../providers/api-keys.js\";\nimport {\n\ttype AuthCredential,\n\ttype AuthMode,\n\tcreateAuthResolver,\n} from \"../providers/auth.js\";\nimport {\n\tisEvalOpsManagedGatewayEnabled,\n\tisEvalOpsManagedProvider,\n\tisKnownEvalOpsManagedProvider,\n} from \"../providers/evalops-managed.js\";\n\n/** A plain + colored error line for terminal display. */\nexport interface AuthLine {\n\tplain: string;\n\tcolored: string;\n}\n\nexport interface AuthSetupResult {\n\t/** Resolve a credential for a provider, throwing or exiting on failure. */\n\trequireCredential: (\n\t\tproviderName: string,\n\t\tfatal: boolean,\n\t) => Promise<AuthCredential>;\n\t/** Build user-friendly error lines when credentials are missing. */\n\tbuildMissingAuthLines: (providerName: string) => AuthLine[];\n}\n\n/**\n * Validate that no unsupported legacy Codex/ChatGPT flags are used.\n * Throws with an error message on invalid flags.\n */\nexport function validateCodexFlags(args: string[], command?: string): void {\n\tif (command !== \"help\" && command !== \"config\") {\n\t\tconst codexFlagsUsed = args.some((arg, index) => {\n\t\t\tif (arg === \"--codex-api-key\" || arg.startsWith(\"--codex-api-key=\")) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (arg === \"--auth\" && args[index + 1] === \"chatgpt\") return true;\n\t\t\tif (arg.startsWith(\"--auth=chatgpt\")) return true;\n\t\t\treturn false;\n\t\t});\n\t\tif (codexFlagsUsed) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Legacy Codex/ChatGPT auth flags are no longer supported. Use the openai-codex provider with `maestro codex login` instead.\",\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Create the auth resolver and helper functions used throughout startup.\n */\nexport function createAuthSetup(params: {\n\tauthMode: AuthMode;\n\texplicitApiKey?: string;\n}): AuthSetupResult {\n\tconst { authMode, explicitApiKey } = params;\n\n\tconst authResolver = createAuthResolver({\n\t\tmode: authMode,\n\t\texplicitApiKey,\n\t});\n\n\tconst buildMissingAuthLines = (providerName: string): AuthLine[] => {\n\t\tconst lines: AuthLine[] = [];\n\t\tconst push = (plain: string, colored?: string) => {\n\t\t\tlines.push({ plain, colored: colored ?? plain });\n\t\t};\n\t\tpush(\n\t\t\t`Error: No credentials found for provider \"${providerName}\"`,\n\t\t\tchalk.red(`Error: No credentials found for provider \"${providerName}\"`),\n\t\t);\n\t\tif (authMode !== \"api-key\") {\n\t\t\tconst loginHint =\n\t\t\t\tproviderName === \"anthropic\"\n\t\t\t\t\t? 'Run \"maestro anthropic login\" (claude) or use /login to authenticate before retrying.'\n\t\t\t\t\t: providerName === \"openai\"\n\t\t\t\t\t\t? 'Run \"maestro openai login\" or use /login to authenticate before retrying.'\n\t\t\t\t\t\t: isKnownEvalOpsManagedProvider(providerName) &&\n\t\t\t\t\t\t\t\t!isEvalOpsManagedGatewayEnabled()\n\t\t\t\t\t\t\t? \"EvalOps managed gateway access is currently disabled by dynamic config.\"\n\t\t\t\t\t\t\t: isEvalOpsManagedProvider(providerName)\n\t\t\t\t\t\t\t\t? 'Run \"maestro evalops login\" or \"/login evalops\" to authenticate before retrying.'\n\t\t\t\t\t\t\t\t: 'Run \"/login\" to authenticate before retrying.';\n\t\t\tpush(\n\t\t\t\t`${loginHint} Or provide an API key for the selected provider.`,\n\t\t\t\tchalk.dim(\n\t\t\t\t\t`${loginHint} Or provide an API key for the selected provider.`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst envVars = getEnvVarsForProvider(providerName);\n\t\tif (envVars.length) {\n\t\t\tpush(\n\t\t\t\t`Set ${envVars.join(\" or \")} or provide --api-key for ${providerName}.`,\n\t\t\t\tchalk.dim(\n\t\t\t\t\t`Set ${envVars.join(\" or \")} or provide --api-key for ${providerName}.`,\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tconst customMeta = getCustomProviderMetadata(providerName);\n\t\t\tif (customMeta?.apiKeyEnv) {\n\t\t\t\tpush(\n\t\t\t\t\t`Set ${customMeta.apiKeyEnv} environment variable or provide --api-key for ${providerName}.`,\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t`Set ${customMeta.apiKeyEnv} environment variable or provide --api-key for ${providerName}.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn lines;\n\t};\n\n\tconst requireCredential = async (\n\t\tproviderName: string,\n\t\tfatal: boolean,\n\t): Promise<AuthCredential> => {\n\t\tconst credential = await authResolver(providerName);\n\t\tif (credential) {\n\t\t\treturn credential;\n\t\t}\n\t\tconst lines = buildMissingAuthLines(providerName);\n\t\tif (fatal) {\n\t\t\tfor (const line of lines) {\n\t\t\t\tconsole.error(line.colored);\n\t\t\t}\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst plain = lines.map((line) => line.plain).join(\"\\n\");\n\t\tthrow new Error(plain);\n\t};\n\n\treturn { requireCredential, buildMissingAuthLines };\n}\n"]}
1
+ {"version":3,"file":"auth-setup.js","sourceRoot":"","sources":["../../src/bootstrap/auth-setup.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authentication Setup - Credential resolution and validation.\n *\n * Extracts auth-related initialization from main.ts Phase 4:\n * auth mode determination, Codex flag validation, credential resolution,\n * and missing-auth error message building.\n *\n * @module bootstrap/auth-setup\n */\n\nimport chalk from \"chalk\";\nimport { getCustomProviderMetadata } from \"../models/registry.js\";\nimport { getEnvVarsForProvider } from \"../providers/api-keys.js\";\nimport {\n\ttype AuthCredential,\n\ttype AuthMode,\n\tcreateAuthResolver,\n} from \"../providers/auth.js\";\nimport {\n\tisEvalOpsManagedGatewayEnabled,\n\tisEvalOpsManagedProvider,\n\tisKnownEvalOpsManagedProvider,\n} from \"../providers/evalops-managed.js\";\n\n/** A plain + colored error line for terminal display. */\nexport interface AuthLine {\n\tplain: string;\n\tcolored: string;\n}\n\nexport interface AuthSetupResult {\n\t/** Resolve a credential for a provider, throwing or exiting on failure. */\n\trequireCredential: (\n\t\tproviderName: string,\n\t\tfatal: boolean,\n\t) => Promise<AuthCredential>;\n\t/** Build user-friendly error lines when credentials are missing. */\n\tbuildMissingAuthLines: (providerName: string) => AuthLine[];\n}\n\n/**\n * Validate that no unsupported legacy Codex/ChatGPT flags are used.\n * Throws with an error message on invalid flags.\n */\nexport function validateCodexFlags(args: string[], command?: string): void {\n\tif (command !== \"help\" && command !== \"config\") {\n\t\tconst codexFlagsUsed = args.some((arg, index) => {\n\t\t\tif (arg === \"--codex-api-key\" || arg.startsWith(\"--codex-api-key=\")) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (arg === \"--auth\" && args[index + 1] === \"chatgpt\") return true;\n\t\t\tif (arg.startsWith(\"--auth=chatgpt\")) return true;\n\t\t\treturn false;\n\t\t});\n\t\tif (codexFlagsUsed) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Legacy Codex/ChatGPT auth flags are no longer supported. Use the openai-codex provider with `maestro codex login` instead.\",\n\t\t\t);\n\t\t}\n\t\tconst retiredAnthropicAuthUsed = args.some((arg, index) => {\n\t\t\tif (arg === \"--auth\" && args[index + 1] === \"claude\") return true;\n\t\t\tif (arg.startsWith(\"--auth=claude\")) return true;\n\t\t\treturn false;\n\t\t});\n\t\tif (retiredAnthropicAuthUsed) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Anthropic OAuth auth mode is no longer supported. Set ANTHROPIC_API_KEY to use Anthropic models, or run `maestro codex login` for the default Codex flow.\",\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Create the auth resolver and helper functions used throughout startup.\n */\nexport function createAuthSetup(params: {\n\tauthMode: AuthMode;\n\texplicitApiKey?: string;\n}): AuthSetupResult {\n\tconst { authMode, explicitApiKey } = params;\n\n\tconst authResolver = createAuthResolver({\n\t\tmode: authMode,\n\t\texplicitApiKey,\n\t});\n\n\tconst buildMissingAuthLines = (providerName: string): AuthLine[] => {\n\t\tconst lines: AuthLine[] = [];\n\t\tconst push = (plain: string, colored?: string) => {\n\t\t\tlines.push({ plain, colored: colored ?? plain });\n\t\t};\n\t\tpush(\n\t\t\t`Error: No credentials found for provider \"${providerName}\"`,\n\t\t\tchalk.red(`Error: No credentials found for provider \"${providerName}\"`),\n\t\t);\n\t\tif (authMode !== \"api-key\") {\n\t\t\tconst loginHint =\n\t\t\t\tproviderName === \"anthropic\"\n\t\t\t\t\t? \"Anthropic OAuth login has been removed.\"\n\t\t\t\t\t: providerName === \"openai\"\n\t\t\t\t\t\t? 'Run \"maestro openai login\" or use /login to authenticate before retrying.'\n\t\t\t\t\t\t: isKnownEvalOpsManagedProvider(providerName) &&\n\t\t\t\t\t\t\t\t!isEvalOpsManagedGatewayEnabled()\n\t\t\t\t\t\t\t? \"EvalOps managed gateway access is currently disabled by dynamic config.\"\n\t\t\t\t\t\t\t: isEvalOpsManagedProvider(providerName)\n\t\t\t\t\t\t\t\t? 'Run \"maestro evalops login\" or \"/login evalops\" to authenticate before retrying.'\n\t\t\t\t\t\t\t\t: 'Run \"/login\" to authenticate before retrying.';\n\t\t\tif (providerName === \"anthropic\") {\n\t\t\t\tpush(\n\t\t\t\t\t`${loginHint} Provide an API key for the selected provider.`,\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t`${loginHint} Provide an API key for the selected provider.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush(\n\t\t\t\t\t`${loginHint} Or provide an API key for the selected provider.`,\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t`${loginHint} Or provide an API key for the selected provider.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst envVars = getEnvVarsForProvider(providerName);\n\t\tif (envVars.length) {\n\t\t\tpush(\n\t\t\t\t`Set ${envVars.join(\" or \")} or provide --api-key for ${providerName}.`,\n\t\t\t\tchalk.dim(\n\t\t\t\t\t`Set ${envVars.join(\" or \")} or provide --api-key for ${providerName}.`,\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tconst customMeta = getCustomProviderMetadata(providerName);\n\t\t\tif (customMeta?.apiKeyEnv) {\n\t\t\t\tpush(\n\t\t\t\t\t`Set ${customMeta.apiKeyEnv} environment variable or provide --api-key for ${providerName}.`,\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t`Set ${customMeta.apiKeyEnv} environment variable or provide --api-key for ${providerName}.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn lines;\n\t};\n\n\tconst requireCredential = async (\n\t\tproviderName: string,\n\t\tfatal: boolean,\n\t): Promise<AuthCredential> => {\n\t\tconst credential = await authResolver(providerName);\n\t\tif (credential) {\n\t\t\treturn credential;\n\t\t}\n\t\tconst lines = buildMissingAuthLines(providerName);\n\t\tif (fatal) {\n\t\t\tfor (const line of lines) {\n\t\t\t\tconsole.error(line.colored);\n\t\t\t}\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst plain = lines.map((line) => line.plain).join(\"\\n\");\n\t\tthrow new Error(plain);\n\t};\n\n\treturn { requireCredential, buildMissingAuthLines };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolution-setup.d.ts","sourceRoot":"","sources":["../../src/bootstrap/model-resolution-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,CAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,KACV,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA6FjC"}
1
+ {"version":3,"file":"model-resolution-setup.d.ts","sourceRoot":"","sources":["../../src/bootstrap/model-resolution-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AASpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAClB;AAqBD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,CAClB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,KACV,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA6FjC"}
@@ -8,8 +8,23 @@
8
8
  * @module bootstrap/model-resolution-setup
9
9
  */
10
10
  import chalk from "chalk";
11
- import { findModelById, getFactoryDefaultModelSelection, getSupportedProviders, resolveAlias, resolveModel, } from "../models/registry.js";
11
+ import { findModelById, getFactoryDefaultModelSelection, getRegisteredModels, getSupportedProviders, resolveAlias, resolveModel, } from "../models/registry.js";
12
12
  import { PolicyError } from "../safety/policy.js";
13
+ const DEFAULT_PROVIDER = "openai-codex";
14
+ const DEFAULT_MODEL_ID = "gpt-5.5";
15
+ const DEFAULT_MODEL_ID_BY_PROVIDER = {
16
+ anthropic: "claude-opus-4-6",
17
+ "openai-codex": DEFAULT_MODEL_ID,
18
+ openai: "gpt-5.2",
19
+ };
20
+ function defaultModelIdForProvider(provider) {
21
+ const preferred = DEFAULT_MODEL_ID_BY_PROVIDER[provider];
22
+ const models = getRegisteredModels().filter((model) => model.provider === provider);
23
+ if (preferred && models.some((model) => model.id === preferred)) {
24
+ return preferred;
25
+ }
26
+ return models[0]?.id ?? preferred;
27
+ }
13
28
  /**
14
29
  * Resolve provider and model from CLI args, aliases, cross-provider search,
15
30
  * and factory defaults. Validates credentials and policy.
@@ -55,13 +70,13 @@ export async function resolveModelFromArgs(params) {
55
70
  if (!provider) {
56
71
  provider = factoryDefault.provider;
57
72
  }
58
- if (!modelId) {
73
+ if (!modelId && factoryDefault.provider === provider) {
59
74
  modelId = factoryDefault.modelId;
60
75
  }
61
76
  }
62
77
  }
63
- provider ??= "anthropic";
64
- modelId ??= "claude-opus-4-6";
78
+ provider ??= DEFAULT_PROVIDER;
79
+ modelId ??= defaultModelIdForProvider(provider) ?? DEFAULT_MODEL_ID;
65
80
  // Validate provider
66
81
  const supportedProviders = new Set(getSupportedProviders());
67
82
  if (!supportedProviders.has(provider)) {