@synapse-research/synapse 0.2.13 → 0.2.14

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 (537) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +531 -509
  3. package/dist/.next/app-path-routes-manifest.json +53 -52
  4. package/dist/.next/build-manifest.json +5 -5
  5. package/dist/.next/prerender-manifest.json +15 -15
  6. package/dist/.next/routes-manifest.json +8 -0
  7. package/dist/.next/server/app/(dashboard)/agents/page.js +2 -2
  8. package/dist/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -1
  9. package/dist/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(dashboard)/compute/page.js +2 -2
  11. package/dist/.next/server/app/(dashboard)/compute/page.js.nft.json +1 -1
  12. package/dist/.next/server/app/(dashboard)/compute/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  14. package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  15. package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page.js +2 -2
  17. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page.js.nft.json +1 -1
  18. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page.js +3 -3
  20. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page.js.nft.json +1 -1
  21. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page.js +3 -3
  23. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  24. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page.js +2 -2
  26. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page.js.nft.json +1 -1
  27. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page.js +1 -1
  29. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page.js.nft.json +1 -1
  30. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page_client-reference-manifest.js +1 -1
  31. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page.js +3 -3
  32. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page.js.nft.json +1 -1
  33. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page.js +1 -1
  35. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page.js.nft.json +1 -1
  36. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page.js +2 -2
  38. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page.js.nft.json +1 -1
  39. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page.js +1 -1
  41. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page.js.nft.json +1 -1
  42. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page.js +1 -1
  44. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page.js.nft.json +1 -1
  45. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page.js +2 -2
  47. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page.js.nft.json +1 -1
  48. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page_client-reference-manifest.js +1 -1
  49. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page.js +1 -1
  50. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page.js.nft.json +1 -1
  51. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/lessons/page.js +82 -0
  53. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/lessons/page.js.nft.json +1 -0
  54. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/lessons/page_client-reference-manifest.js +1 -0
  55. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page.js +1 -1
  56. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page.js.nft.json +1 -1
  57. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page.js +1 -1
  59. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page.js.nft.json +1 -1
  60. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page_client-reference-manifest.js +1 -1
  61. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page.js +1 -1
  62. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page.js.nft.json +1 -1
  63. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page_client-reference-manifest.js +1 -1
  64. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page.js +1 -1
  65. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page.js.nft.json +1 -1
  66. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page_client-reference-manifest.js +1 -1
  67. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page.js +1 -1
  68. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page.js.nft.json +1 -1
  69. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page_client-reference-manifest.js +1 -1
  70. package/dist/.next/server/app/(dashboard)/research-projects/new/page.js +1 -1
  71. package/dist/.next/server/app/(dashboard)/research-projects/new/page.js.nft.json +1 -1
  72. package/dist/.next/server/app/(dashboard)/research-projects/new/page_client-reference-manifest.js +1 -1
  73. package/dist/.next/server/app/(dashboard)/research-projects/page.js +1 -1
  74. package/dist/.next/server/app/(dashboard)/research-projects/page.js.nft.json +1 -1
  75. package/dist/.next/server/app/(dashboard)/research-projects/page_client-reference-manifest.js +1 -1
  76. package/dist/.next/server/app/(dashboard)/settings/page.js +1 -1
  77. package/dist/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  78. package/dist/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  80. package/dist/.next/server/app/_not-found.html +1 -1
  81. package/dist/.next/server/app/_not-found.rsc +2 -2
  82. package/dist/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  83. package/dist/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/admin/companies/new.html +1 -1
  85. package/dist/.next/server/app/admin/companies/new.rsc +4 -4
  86. package/dist/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  87. package/dist/.next/server/app/admin/companies.html +1 -1
  88. package/dist/.next/server/app/admin/companies.rsc +4 -4
  89. package/dist/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/admin.html +1 -1
  91. package/dist/.next/server/app/admin.rsc +4 -4
  92. package/dist/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  93. package/dist/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  94. package/dist/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  95. package/dist/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  96. package/dist/.next/server/app/api/admin/stats/route_client-reference-manifest.js +1 -1
  97. package/dist/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  98. package/dist/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  99. package/dist/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  100. package/dist/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  101. package/dist/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  102. package/dist/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  103. package/dist/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  104. package/dist/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  105. package/dist/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  106. package/dist/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  107. package/dist/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  108. package/dist/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  109. package/dist/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  110. package/dist/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  111. package/dist/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  112. package/dist/.next/server/app/api/compute-gpus/[uuid]/release/route_client-reference-manifest.js +1 -1
  113. package/dist/.next/server/app/api/compute-nodes/[uuid]/route_client-reference-manifest.js +1 -1
  114. package/dist/.next/server/app/api/compute-nodes/route_client-reference-manifest.js +1 -1
  115. package/dist/.next/server/app/api/compute-pools/[uuid]/route_client-reference-manifest.js +1 -1
  116. package/dist/.next/server/app/api/compute-pools/route_client-reference-manifest.js +1 -1
  117. package/dist/.next/server/app/api/documents/[uuid]/images/[filename]/route_client-reference-manifest.js +1 -1
  118. package/dist/.next/server/app/api/documents/[uuid]/images/route_client-reference-manifest.js +1 -1
  119. package/dist/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  120. package/dist/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  121. package/dist/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  122. package/dist/.next/server/app/api/experiment-designs/[uuid]/approve/route_client-reference-manifest.js +1 -1
  123. package/dist/.next/server/app/api/experiment-designs/[uuid]/close/route_client-reference-manifest.js +1 -1
  124. package/dist/.next/server/app/api/experiment-designs/[uuid]/reject/route_client-reference-manifest.js +1 -1
  125. package/dist/.next/server/app/api/experiment-designs/[uuid]/route_client-reference-manifest.js +1 -1
  126. package/dist/.next/server/app/api/experiment-runs/[uuid]/claim/route_client-reference-manifest.js +1 -1
  127. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route_client-reference-manifest.js +1 -1
  128. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  129. package/dist/.next/server/app/api/experiment-runs/[uuid]/evaluate-criteria/route_client-reference-manifest.js +1 -1
  130. package/dist/.next/server/app/api/experiment-runs/[uuid]/registry/route_client-reference-manifest.js +1 -1
  131. package/dist/.next/server/app/api/experiment-runs/[uuid]/release/route_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/api/experiment-runs/[uuid]/route_client-reference-manifest.js +1 -1
  133. package/dist/.next/server/app/api/experiment-runs/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  134. package/dist/.next/server/app/api/experiments/[uuid]/complete/route_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/api/experiments/[uuid]/progress/route_client-reference-manifest.js +1 -1
  136. package/dist/.next/server/app/api/experiments/[uuid]/request-plan/route_client-reference-manifest.js +1 -1
  137. package/dist/.next/server/app/api/experiments/[uuid]/reset/route_client-reference-manifest.js +1 -1
  138. package/dist/.next/server/app/api/experiments/[uuid]/review/route_client-reference-manifest.js +1 -1
  139. package/dist/.next/server/app/api/experiments/[uuid]/route_client-reference-manifest.js +1 -1
  140. package/dist/.next/server/app/api/experiments/[uuid]/start/route_client-reference-manifest.js +1 -1
  141. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  142. package/dist/.next/server/app/api/mcp/route.js +83 -3
  143. package/dist/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  144. package/dist/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  145. package/dist/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  146. package/dist/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  147. package/dist/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  148. package/dist/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  149. package/dist/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  150. package/dist/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  151. package/dist/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  152. package/dist/.next/server/app/api/onboarding/status/route_client-reference-manifest.js +1 -1
  153. package/dist/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  154. package/dist/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  155. package/dist/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  156. package/dist/.next/server/app/api/research-projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  157. package/dist/.next/server/app/api/research-projects/[uuid]/agent-activity/route_client-reference-manifest.js +1 -1
  158. package/dist/.next/server/app/api/research-projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  159. package/dist/.next/server/app/api/research-projects/[uuid]/baselines/route_client-reference-manifest.js +1 -1
  160. package/dist/.next/server/app/api/research-projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  161. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route_client-reference-manifest.js +1 -1
  162. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/route_client-reference-manifest.js +1 -1
  163. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/summary/route_client-reference-manifest.js +1 -1
  164. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/dependencies/route_client-reference-manifest.js +1 -1
  165. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/route_client-reference-manifest.js +1 -1
  166. package/dist/.next/server/app/api/research-projects/[uuid]/experiments/route_client-reference-manifest.js +1 -1
  167. package/dist/.next/server/app/api/research-projects/[uuid]/github/branches/route_client-reference-manifest.js +1 -1
  168. package/dist/.next/server/app/api/research-projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  169. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/[workUuid]/route_client-reference-manifest.js +1 -1
  170. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/complete/route_client-reference-manifest.js +1 -1
  171. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/route_client-reference-manifest.js +1 -1
  172. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/complete/route_client-reference-manifest.js +1 -1
  173. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/route_client-reference-manifest.js +1 -1
  174. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/route_client-reference-manifest.js +1 -1
  175. package/dist/.next/server/app/api/research-projects/[uuid]/research-questions/route_client-reference-manifest.js +1 -1
  176. package/dist/.next/server/app/api/research-projects/[uuid]/route_client-reference-manifest.js +1 -1
  177. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/complete/route_client-reference-manifest.js +1 -1
  178. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/refresh/route_client-reference-manifest.js +1 -1
  179. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/trigger/route_client-reference-manifest.js +1 -1
  180. package/dist/.next/server/app/api/research-projects/route_client-reference-manifest.js +1 -1
  181. package/dist/.next/server/app/api/research-questions/[uuid]/claim/route_client-reference-manifest.js +1 -1
  182. package/dist/.next/server/app/api/research-questions/[uuid]/move/route_client-reference-manifest.js +1 -1
  183. package/dist/.next/server/app/api/research-questions/[uuid]/release/route_client-reference-manifest.js +1 -1
  184. package/dist/.next/server/app/api/research-questions/[uuid]/review/route_client-reference-manifest.js +1 -1
  185. package/dist/.next/server/app/api/research-questions/[uuid]/route_client-reference-manifest.js +1 -1
  186. package/dist/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  187. package/dist/.next/server/app/api/settings/integrations/route_client-reference-manifest.js +1 -1
  188. package/dist/.next/server/app/api/ssh-config/route_client-reference-manifest.js +1 -1
  189. package/dist/.next/server/app/index.html +1 -1
  190. package/dist/.next/server/app/index.rsc +2 -2
  191. package/dist/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  192. package/dist/.next/server/app/login/admin.html +1 -1
  193. package/dist/.next/server/app/login/admin.rsc +3 -3
  194. package/dist/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  195. package/dist/.next/server/app/login/callback.html +1 -1
  196. package/dist/.next/server/app/login/callback.rsc +2 -2
  197. package/dist/.next/server/app/login/page_client-reference-manifest.js +1 -1
  198. package/dist/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  199. package/dist/.next/server/app/login/silent-refresh.html +1 -1
  200. package/dist/.next/server/app/login/silent-refresh.rsc +2 -2
  201. package/dist/.next/server/app/login.html +1 -1
  202. package/dist/.next/server/app/login.rsc +3 -3
  203. package/dist/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  204. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  205. package/dist/.next/server/app/research-projects/new.html +1 -1
  206. package/dist/.next/server/app/research-projects/new.rsc +4 -4
  207. package/dist/.next/server/app/research-projects.html +1 -1
  208. package/dist/.next/server/app/research-projects.rsc +4 -4
  209. package/dist/.next/server/app/settings.html +1 -1
  210. package/dist/.next/server/app/settings.rsc +4 -4
  211. package/dist/.next/server/app-paths-manifest.json +53 -52
  212. package/dist/.next/server/chunks/2457.js +1 -0
  213. package/dist/.next/server/chunks/2961.js +1 -1
  214. package/dist/.next/server/chunks/314.js +1 -1
  215. package/dist/.next/server/chunks/3390.js +1 -0
  216. package/dist/.next/server/chunks/3791.js +1 -1
  217. package/dist/.next/server/chunks/38.js +1 -0
  218. package/dist/.next/server/chunks/5562.js +1 -0
  219. package/dist/.next/server/chunks/5731.js +1 -0
  220. package/dist/.next/server/chunks/6113.js +1 -1
  221. package/dist/.next/server/chunks/7368.js +1 -1
  222. package/dist/.next/server/chunks/7422.js +1 -1
  223. package/dist/.next/server/chunks/7950.js +5 -0
  224. package/dist/.next/server/chunks/8283.js +1 -1
  225. package/dist/.next/server/chunks/8499.js +2 -2
  226. package/dist/.next/server/chunks/920.js +1 -1
  227. package/dist/.next/server/middleware-build-manifest.js +1 -1
  228. package/dist/.next/server/middleware-manifest.json +1 -1
  229. package/dist/.next/server/pages/404.html +1 -1
  230. package/dist/.next/server/pages/500.html +1 -1
  231. package/dist/.next/server/pages-manifest.json +1 -1
  232. package/dist/.next/static/chunks/11370-8dbcaac1521218ba.js +1 -0
  233. package/dist/.next/static/chunks/{93093-24ce597a2771d2b4.js → 12790-d3547c5d0ba40341.js} +1 -1
  234. package/dist/.next/static/chunks/{93114-fecdce8b8178aac5.js → 24393-0180ede85b53b481.js} +1 -1
  235. package/dist/.next/static/chunks/2737-f6c323e9c6e8d008.js +1 -0
  236. package/dist/.next/static/chunks/{21139-d60467f21097636a.js → 30102-38e46ac99fdf4b58.js} +1 -1
  237. package/dist/.next/static/chunks/4073-2c91d56c6a35deca.js +1 -0
  238. package/dist/.next/static/chunks/{43721-ae7eb4a95e230f06.js → 43721-35cac435f9f90ebb.js} +1 -1
  239. package/dist/.next/static/chunks/4860.dc4631dc159e353e.js +1 -0
  240. package/dist/.next/static/chunks/52891-ceb6172bf494a95d.js +1 -0
  241. package/dist/.next/static/chunks/53241-ee634986ecd50e43.js +1 -0
  242. package/dist/.next/static/chunks/58229-09f15b58bdfce521.js +5 -0
  243. package/dist/.next/static/chunks/71350-e9acd6eea60c4535.js +1 -0
  244. package/dist/.next/static/chunks/{97844-1df9ddfcc5b2421a.js → 72664-44d48812ccc05bd8.js} +1 -1
  245. package/dist/.next/static/chunks/80382-794293a6415df0b7.js +1 -0
  246. package/dist/.next/static/chunks/99373.14bb226afd207689.js +1 -0
  247. package/dist/.next/static/chunks/app/(dashboard)/agents/loading-94bec255806637fb.js +1 -0
  248. package/dist/.next/static/chunks/app/(dashboard)/agents/{page-f22762510a1aba92.js → page-5c42502d3418fea0.js} +1 -1
  249. package/dist/.next/static/chunks/app/(dashboard)/compute/loading-94bec255806637fb.js +1 -0
  250. package/dist/.next/static/chunks/app/(dashboard)/compute/{page-69bcc7e8611d9a67.js → page-b1e10b06af4a57c3.js} +1 -1
  251. package/dist/.next/static/chunks/app/(dashboard)/layout-d7c0c55fdba0b163.js +1 -0
  252. package/dist/.next/static/chunks/app/(dashboard)/loading-94bec255806637fb.js +1 -0
  253. package/dist/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-0a21af59529a8509.js +1 -0
  254. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/activity/page-94bec255806637fb.js +1 -0
  255. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/dashboard/loading-94bec255806637fb.js +1 -0
  256. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/dashboard/page-b7f19c062b2c8f02.js +1 -0
  257. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page-05f8715faaae4033.js +1 -0
  258. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/loading-94bec255806637fb.js +1 -0
  259. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/page-eaed24baf6186f5b.js +1 -0
  260. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page-59331da86cfbd003.js +1 -0
  261. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-designs/page-94bec255806637fb.js +1 -0
  262. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page-15b1b86e6f55f21e.js +1 -0
  263. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-runs/page-94bec255806637fb.js +1 -0
  264. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiments/loading-94bec255806637fb.js +1 -0
  265. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiments/page-5323a1a768358d47.js +1 -0
  266. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/insights/loading-94bec255806637fb.js +1 -0
  267. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/insights/{page-1c58128ace8f50f2.js → page-ad987324ef5a425d.js} +1 -1
  268. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/lessons/loading-94bec255806637fb.js +1 -0
  269. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/lessons/page-572ec754feeaffec.js +1 -0
  270. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/loading-94bec255806637fb.js +1 -0
  271. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/page-94bec255806637fb.js +1 -0
  272. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/related-works/loading-94bec255806637fb.js +1 -0
  273. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/related-works/page-9b513afaf235e272.js +1 -0
  274. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page-94bec255806637fb.js +1 -0
  275. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/loading-94bec255806637fb.js +1 -0
  276. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/page-032daa6cc9ef5908.js +1 -0
  277. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/settings/loading-94bec255806637fb.js +1 -0
  278. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/settings/page-3321b22cb77f244e.js +1 -0
  279. package/dist/.next/static/chunks/app/(dashboard)/research-projects/new/{page-7b7e9752df9a4343.js → page-ec36a137724ea1c7.js} +1 -1
  280. package/dist/.next/static/chunks/app/(dashboard)/research-projects/{page-e1833dc32e8e5180.js → page-3ce35d315183d0e7.js} +1 -1
  281. package/dist/.next/static/chunks/app/(dashboard)/settings/{page-5c5369e7fe336fbf.js → page-2b9b838ede7154fb.js} +1 -1
  282. package/dist/.next/static/chunks/app/admin/companies/[uuid]/page-1dd55ce3a4bb64a8.js +1 -0
  283. package/dist/.next/static/chunks/app/admin/companies/new/page-7407b0a795cb3bab.js +1 -0
  284. package/dist/.next/static/chunks/app/admin/companies/page-9266b9905f865716.js +1 -0
  285. package/dist/.next/static/chunks/app/admin/layout-e8ba70042af5389f.js +1 -0
  286. package/dist/.next/static/chunks/app/admin/page-c8e46daaf1069303.js +1 -0
  287. package/dist/.next/static/chunks/app/api/admin/companies/[uuid]/route-94bec255806637fb.js +1 -0
  288. package/dist/.next/static/chunks/app/api/admin/companies/route-94bec255806637fb.js +1 -0
  289. package/dist/.next/static/chunks/app/api/admin/login/route-94bec255806637fb.js +1 -0
  290. package/dist/.next/static/chunks/app/api/admin/session/route-94bec255806637fb.js +1 -0
  291. package/dist/.next/static/chunks/app/api/admin/stats/route-94bec255806637fb.js +1 -0
  292. package/dist/.next/static/chunks/app/api/agents/[uuid]/route-94bec255806637fb.js +1 -0
  293. package/dist/.next/static/chunks/app/api/agents/[uuid]/sessions/route-94bec255806637fb.js +1 -0
  294. package/dist/.next/static/chunks/app/api/agents/route-94bec255806637fb.js +1 -0
  295. package/dist/.next/static/chunks/app/api/api-keys/[uuid]/route-94bec255806637fb.js +1 -0
  296. package/dist/.next/static/chunks/app/api/api-keys/route-94bec255806637fb.js +1 -0
  297. package/dist/.next/static/chunks/app/api/auth/callback/route-94bec255806637fb.js +1 -0
  298. package/dist/.next/static/chunks/app/api/auth/check-default/route-94bec255806637fb.js +1 -0
  299. package/dist/.next/static/chunks/app/api/auth/default-login/route-94bec255806637fb.js +1 -0
  300. package/dist/.next/static/chunks/app/api/auth/identify/route-94bec255806637fb.js +1 -0
  301. package/dist/.next/static/chunks/app/api/auth/logout/route-94bec255806637fb.js +1 -0
  302. package/dist/.next/static/chunks/app/api/auth/me/route-94bec255806637fb.js +1 -0
  303. package/dist/.next/static/chunks/app/api/auth/refresh/route-94bec255806637fb.js +1 -0
  304. package/dist/.next/static/chunks/app/api/auth/session/route-94bec255806637fb.js +1 -0
  305. package/dist/.next/static/chunks/app/api/auth/sync-token/route-94bec255806637fb.js +1 -0
  306. package/dist/.next/static/chunks/app/api/comments/route-94bec255806637fb.js +1 -0
  307. package/dist/.next/static/chunks/app/api/compute-gpus/[uuid]/release/route-94bec255806637fb.js +1 -0
  308. package/dist/.next/static/chunks/app/api/compute-nodes/[uuid]/route-94bec255806637fb.js +1 -0
  309. package/dist/.next/static/chunks/app/api/compute-nodes/route-94bec255806637fb.js +1 -0
  310. package/dist/.next/static/chunks/app/api/compute-pools/[uuid]/route-94bec255806637fb.js +1 -0
  311. package/dist/.next/static/chunks/app/api/compute-pools/route-94bec255806637fb.js +1 -0
  312. package/dist/.next/static/chunks/app/api/documents/[uuid]/images/[filename]/route-94bec255806637fb.js +1 -0
  313. package/dist/.next/static/chunks/app/api/documents/[uuid]/images/route-94bec255806637fb.js +1 -0
  314. package/dist/.next/static/chunks/app/api/documents/[uuid]/route-94bec255806637fb.js +1 -0
  315. package/dist/.next/static/chunks/app/api/events/notifications/route-94bec255806637fb.js +1 -0
  316. package/dist/.next/static/chunks/app/api/events/route-94bec255806637fb.js +1 -0
  317. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/approve/route-94bec255806637fb.js +1 -0
  318. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/close/route-94bec255806637fb.js +1 -0
  319. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/reject/route-94bec255806637fb.js +1 -0
  320. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/route-94bec255806637fb.js +1 -0
  321. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/claim/route-94bec255806637fb.js +1 -0
  322. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route-94bec255806637fb.js +1 -0
  323. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/dependencies/route-94bec255806637fb.js +1 -0
  324. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/evaluate-criteria/route-94bec255806637fb.js +1 -0
  325. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/registry/route-94bec255806637fb.js +1 -0
  326. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/release/route-94bec255806637fb.js +1 -0
  327. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/route-94bec255806637fb.js +1 -0
  328. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/sessions/route-94bec255806637fb.js +1 -0
  329. package/dist/.next/static/chunks/app/api/experiments/[uuid]/complete/route-94bec255806637fb.js +1 -0
  330. package/dist/.next/static/chunks/app/api/experiments/[uuid]/progress/route-94bec255806637fb.js +1 -0
  331. package/dist/.next/static/chunks/app/api/experiments/[uuid]/request-plan/route-94bec255806637fb.js +1 -0
  332. package/dist/.next/static/chunks/app/api/experiments/[uuid]/reset/route-94bec255806637fb.js +1 -0
  333. package/dist/.next/static/chunks/app/api/experiments/[uuid]/review/route-94bec255806637fb.js +1 -0
  334. package/dist/.next/static/chunks/app/api/experiments/[uuid]/route-94bec255806637fb.js +1 -0
  335. package/dist/.next/static/chunks/app/api/experiments/[uuid]/start/route-94bec255806637fb.js +1 -0
  336. package/dist/.next/static/chunks/app/api/health/route-94bec255806637fb.js +1 -0
  337. package/dist/.next/static/chunks/app/api/mcp/route-94bec255806637fb.js +1 -0
  338. package/dist/.next/static/chunks/app/api/me/assignments/route-94bec255806637fb.js +1 -0
  339. package/dist/.next/static/chunks/app/api/mentionables/route-94bec255806637fb.js +1 -0
  340. package/dist/.next/static/chunks/app/api/notifications/[uuid]/archive/route-94bec255806637fb.js +1 -0
  341. package/dist/.next/static/chunks/app/api/notifications/[uuid]/read/route-94bec255806637fb.js +1 -0
  342. package/dist/.next/static/chunks/app/api/notifications/preferences/route-94bec255806637fb.js +1 -0
  343. package/dist/.next/static/chunks/app/api/notifications/read-all/route-94bec255806637fb.js +1 -0
  344. package/dist/.next/static/chunks/app/api/notifications/route-94bec255806637fb.js +1 -0
  345. package/dist/.next/static/chunks/app/api/notifications/unread-count/route-94bec255806637fb.js +1 -0
  346. package/dist/.next/static/chunks/app/api/onboarding/status/route-94bec255806637fb.js +1 -0
  347. package/dist/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-94bec255806637fb.js +1 -0
  348. package/dist/.next/static/chunks/app/api/project-groups/[uuid]/route-94bec255806637fb.js +1 -0
  349. package/dist/.next/static/chunks/app/api/project-groups/route-94bec255806637fb.js +1 -0
  350. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/activity/route-94bec255806637fb.js +1 -0
  351. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/agent-activity/route-94bec255806637fb.js +1 -0
  352. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/available/route-94bec255806637fb.js +1 -0
  353. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/baselines/route-94bec255806637fb.js +1 -0
  354. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/documents/route-94bec255806637fb.js +1 -0
  355. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route-94bec255806637fb.js +1 -0
  356. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/route-94bec255806637fb.js +1 -0
  357. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/summary/route-94bec255806637fb.js +1 -0
  358. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-runs/dependencies/route-94bec255806637fb.js +1 -0
  359. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-runs/route-94bec255806637fb.js +1 -0
  360. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiments/route-94bec255806637fb.js +1 -0
  361. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/github/branches/route-94bec255806637fb.js +1 -0
  362. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/group/route-94bec255806637fb.js +1 -0
  363. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/[workUuid]/route-94bec255806637fb.js +1 -0
  364. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/auto-search/complete/route-94bec255806637fb.js +1 -0
  365. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/auto-search/route-94bec255806637fb.js +1 -0
  366. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/deep-research/complete/route-94bec255806637fb.js +1 -0
  367. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/deep-research/route-94bec255806637fb.js +1 -0
  368. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/route-94bec255806637fb.js +1 -0
  369. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/research-questions/route-94bec255806637fb.js +1 -0
  370. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/route-94bec255806637fb.js +1 -0
  371. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/complete/route-94bec255806637fb.js +1 -0
  372. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/refresh/route-94bec255806637fb.js +1 -0
  373. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/trigger/route-94bec255806637fb.js +1 -0
  374. package/dist/.next/static/chunks/app/api/research-projects/route-94bec255806637fb.js +1 -0
  375. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/claim/route-94bec255806637fb.js +1 -0
  376. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/move/route-94bec255806637fb.js +1 -0
  377. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/release/route-94bec255806637fb.js +1 -0
  378. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/review/route-94bec255806637fb.js +1 -0
  379. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/route-94bec255806637fb.js +1 -0
  380. package/dist/.next/static/chunks/app/api/sessions/[uuid]/route-94bec255806637fb.js +1 -0
  381. package/dist/.next/static/chunks/app/api/settings/integrations/route-94bec255806637fb.js +1 -0
  382. package/dist/.next/static/chunks/app/api/ssh-config/route-94bec255806637fb.js +1 -0
  383. package/dist/.next/static/chunks/app/login/admin/page-78ff162d0a473389.js +1 -0
  384. package/dist/.next/static/chunks/app/login/{page-d3862c6ba55e15f6.js → page-7f563c406447e242.js} +1 -1
  385. package/dist/.next/static/chunks/app/onboarding/{page-ee736550d4f970e2.js → page-b0e345a7959b1576.js} +1 -1
  386. package/dist/.next/static/chunks/{webpack-a5770aaad373187a.js → webpack-22f5eba5b76c577a.js} +1 -1
  387. package/dist/.next/static/css/a10581cad102651e.css +1 -0
  388. package/dist/prisma/migrations/20260514192000_add_experiment_incident_lessons/migration.sql +59 -0
  389. package/dist/prisma/schema.prisma +36 -0
  390. package/package.json +1 -1
  391. package/dist/.next/server/chunks/1216.js +0 -1
  392. package/dist/.next/server/chunks/5826.js +0 -5
  393. package/dist/.next/server/chunks/6088.js +0 -1
  394. package/dist/.next/server/chunks/658.js +0 -1
  395. package/dist/.next/server/chunks/907.js +0 -1
  396. package/dist/.next/static/chunks/1156-c099265b7c7de8ea.js +0 -1
  397. package/dist/.next/static/chunks/18148-29dd083467122773.js +0 -1
  398. package/dist/.next/static/chunks/30895-8fe158fae80e0ac2.js +0 -1
  399. package/dist/.next/static/chunks/32825-46542f8813e05868.js +0 -1
  400. package/dist/.next/static/chunks/41320-4cbf34803a25b1ad.js +0 -1
  401. package/dist/.next/static/chunks/4860.267547168b346b58.js +0 -1
  402. package/dist/.next/static/chunks/52559-356f88ebc2bb1714.js +0 -5
  403. package/dist/.next/static/chunks/6322-9e58509119d6db0b.js +0 -1
  404. package/dist/.next/static/chunks/67620-3b37bef40b49d08b.js +0 -1
  405. package/dist/.next/static/chunks/99373.3c4a4c4eccf26a3b.js +0 -1
  406. package/dist/.next/static/chunks/app/(dashboard)/agents/loading-6b2a05f797e2c4a9.js +0 -1
  407. package/dist/.next/static/chunks/app/(dashboard)/compute/loading-6b2a05f797e2c4a9.js +0 -1
  408. package/dist/.next/static/chunks/app/(dashboard)/layout-ea19529c2ac3ff78.js +0 -1
  409. package/dist/.next/static/chunks/app/(dashboard)/loading-6b2a05f797e2c4a9.js +0 -1
  410. package/dist/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-4253047e033c8fb4.js +0 -1
  411. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/activity/page-6b2a05f797e2c4a9.js +0 -1
  412. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/dashboard/loading-6b2a05f797e2c4a9.js +0 -1
  413. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/dashboard/page-ec1b0b839044995f.js +0 -1
  414. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page-568a065a6fe9562f.js +0 -1
  415. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/loading-6b2a05f797e2c4a9.js +0 -1
  416. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/documents/page-e878d5cfbf44770c.js +0 -1
  417. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page-5be7b5428cfa9953.js +0 -1
  418. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-designs/page-6b2a05f797e2c4a9.js +0 -1
  419. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page-9eaecee406d4cccc.js +0 -1
  420. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiment-runs/page-6b2a05f797e2c4a9.js +0 -1
  421. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiments/loading-6b2a05f797e2c4a9.js +0 -1
  422. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/experiments/page-e25f36eeb9b68948.js +0 -1
  423. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/insights/loading-6b2a05f797e2c4a9.js +0 -1
  424. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/loading-6b2a05f797e2c4a9.js +0 -1
  425. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/page-6b2a05f797e2c4a9.js +0 -1
  426. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/related-works/loading-6b2a05f797e2c4a9.js +0 -1
  427. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/related-works/page-e8591798d8d793b0.js +0 -1
  428. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page-6b2a05f797e2c4a9.js +0 -1
  429. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/loading-6b2a05f797e2c4a9.js +0 -1
  430. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/research-questions/page-ec1db775ef5d5e4e.js +0 -1
  431. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/settings/loading-6b2a05f797e2c4a9.js +0 -1
  432. package/dist/.next/static/chunks/app/(dashboard)/research-projects/[uuid]/settings/page-de1cf685bb18e7a2.js +0 -1
  433. package/dist/.next/static/chunks/app/admin/companies/[uuid]/page-66ee6875a58dfcc9.js +0 -1
  434. package/dist/.next/static/chunks/app/admin/companies/new/page-acf33900c54cbf61.js +0 -1
  435. package/dist/.next/static/chunks/app/admin/companies/page-44f47c5fe9f01931.js +0 -1
  436. package/dist/.next/static/chunks/app/admin/layout-bcbd13b1b30f7c39.js +0 -1
  437. package/dist/.next/static/chunks/app/admin/page-4b50b1de904861bf.js +0 -1
  438. package/dist/.next/static/chunks/app/api/admin/companies/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  439. package/dist/.next/static/chunks/app/api/admin/companies/route-6b2a05f797e2c4a9.js +0 -1
  440. package/dist/.next/static/chunks/app/api/admin/login/route-6b2a05f797e2c4a9.js +0 -1
  441. package/dist/.next/static/chunks/app/api/admin/session/route-6b2a05f797e2c4a9.js +0 -1
  442. package/dist/.next/static/chunks/app/api/admin/stats/route-6b2a05f797e2c4a9.js +0 -1
  443. package/dist/.next/static/chunks/app/api/agents/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  444. package/dist/.next/static/chunks/app/api/agents/[uuid]/sessions/route-6b2a05f797e2c4a9.js +0 -1
  445. package/dist/.next/static/chunks/app/api/agents/route-6b2a05f797e2c4a9.js +0 -1
  446. package/dist/.next/static/chunks/app/api/api-keys/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  447. package/dist/.next/static/chunks/app/api/api-keys/route-6b2a05f797e2c4a9.js +0 -1
  448. package/dist/.next/static/chunks/app/api/auth/callback/route-6b2a05f797e2c4a9.js +0 -1
  449. package/dist/.next/static/chunks/app/api/auth/check-default/route-6b2a05f797e2c4a9.js +0 -1
  450. package/dist/.next/static/chunks/app/api/auth/default-login/route-6b2a05f797e2c4a9.js +0 -1
  451. package/dist/.next/static/chunks/app/api/auth/identify/route-6b2a05f797e2c4a9.js +0 -1
  452. package/dist/.next/static/chunks/app/api/auth/logout/route-6b2a05f797e2c4a9.js +0 -1
  453. package/dist/.next/static/chunks/app/api/auth/me/route-6b2a05f797e2c4a9.js +0 -1
  454. package/dist/.next/static/chunks/app/api/auth/refresh/route-6b2a05f797e2c4a9.js +0 -1
  455. package/dist/.next/static/chunks/app/api/auth/session/route-6b2a05f797e2c4a9.js +0 -1
  456. package/dist/.next/static/chunks/app/api/auth/sync-token/route-6b2a05f797e2c4a9.js +0 -1
  457. package/dist/.next/static/chunks/app/api/comments/route-6b2a05f797e2c4a9.js +0 -1
  458. package/dist/.next/static/chunks/app/api/compute-gpus/[uuid]/release/route-6b2a05f797e2c4a9.js +0 -1
  459. package/dist/.next/static/chunks/app/api/compute-nodes/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  460. package/dist/.next/static/chunks/app/api/compute-nodes/route-6b2a05f797e2c4a9.js +0 -1
  461. package/dist/.next/static/chunks/app/api/compute-pools/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  462. package/dist/.next/static/chunks/app/api/compute-pools/route-6b2a05f797e2c4a9.js +0 -1
  463. package/dist/.next/static/chunks/app/api/documents/[uuid]/images/[filename]/route-6b2a05f797e2c4a9.js +0 -1
  464. package/dist/.next/static/chunks/app/api/documents/[uuid]/images/route-6b2a05f797e2c4a9.js +0 -1
  465. package/dist/.next/static/chunks/app/api/documents/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  466. package/dist/.next/static/chunks/app/api/events/notifications/route-6b2a05f797e2c4a9.js +0 -1
  467. package/dist/.next/static/chunks/app/api/events/route-6b2a05f797e2c4a9.js +0 -1
  468. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/approve/route-6b2a05f797e2c4a9.js +0 -1
  469. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/close/route-6b2a05f797e2c4a9.js +0 -1
  470. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/reject/route-6b2a05f797e2c4a9.js +0 -1
  471. package/dist/.next/static/chunks/app/api/experiment-designs/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  472. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/claim/route-6b2a05f797e2c4a9.js +0 -1
  473. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route-6b2a05f797e2c4a9.js +0 -1
  474. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/dependencies/route-6b2a05f797e2c4a9.js +0 -1
  475. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/evaluate-criteria/route-6b2a05f797e2c4a9.js +0 -1
  476. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/registry/route-6b2a05f797e2c4a9.js +0 -1
  477. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/release/route-6b2a05f797e2c4a9.js +0 -1
  478. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  479. package/dist/.next/static/chunks/app/api/experiment-runs/[uuid]/sessions/route-6b2a05f797e2c4a9.js +0 -1
  480. package/dist/.next/static/chunks/app/api/experiments/[uuid]/complete/route-6b2a05f797e2c4a9.js +0 -1
  481. package/dist/.next/static/chunks/app/api/experiments/[uuid]/progress/route-6b2a05f797e2c4a9.js +0 -1
  482. package/dist/.next/static/chunks/app/api/experiments/[uuid]/request-plan/route-6b2a05f797e2c4a9.js +0 -1
  483. package/dist/.next/static/chunks/app/api/experiments/[uuid]/reset/route-6b2a05f797e2c4a9.js +0 -1
  484. package/dist/.next/static/chunks/app/api/experiments/[uuid]/review/route-6b2a05f797e2c4a9.js +0 -1
  485. package/dist/.next/static/chunks/app/api/experiments/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  486. package/dist/.next/static/chunks/app/api/experiments/[uuid]/start/route-6b2a05f797e2c4a9.js +0 -1
  487. package/dist/.next/static/chunks/app/api/health/route-6b2a05f797e2c4a9.js +0 -1
  488. package/dist/.next/static/chunks/app/api/mcp/route-6b2a05f797e2c4a9.js +0 -1
  489. package/dist/.next/static/chunks/app/api/me/assignments/route-6b2a05f797e2c4a9.js +0 -1
  490. package/dist/.next/static/chunks/app/api/mentionables/route-6b2a05f797e2c4a9.js +0 -1
  491. package/dist/.next/static/chunks/app/api/notifications/[uuid]/archive/route-6b2a05f797e2c4a9.js +0 -1
  492. package/dist/.next/static/chunks/app/api/notifications/[uuid]/read/route-6b2a05f797e2c4a9.js +0 -1
  493. package/dist/.next/static/chunks/app/api/notifications/preferences/route-6b2a05f797e2c4a9.js +0 -1
  494. package/dist/.next/static/chunks/app/api/notifications/read-all/route-6b2a05f797e2c4a9.js +0 -1
  495. package/dist/.next/static/chunks/app/api/notifications/route-6b2a05f797e2c4a9.js +0 -1
  496. package/dist/.next/static/chunks/app/api/notifications/unread-count/route-6b2a05f797e2c4a9.js +0 -1
  497. package/dist/.next/static/chunks/app/api/onboarding/status/route-6b2a05f797e2c4a9.js +0 -1
  498. package/dist/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-6b2a05f797e2c4a9.js +0 -1
  499. package/dist/.next/static/chunks/app/api/project-groups/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  500. package/dist/.next/static/chunks/app/api/project-groups/route-6b2a05f797e2c4a9.js +0 -1
  501. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/activity/route-6b2a05f797e2c4a9.js +0 -1
  502. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/agent-activity/route-6b2a05f797e2c4a9.js +0 -1
  503. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/available/route-6b2a05f797e2c4a9.js +0 -1
  504. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/baselines/route-6b2a05f797e2c4a9.js +0 -1
  505. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/documents/route-6b2a05f797e2c4a9.js +0 -1
  506. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route-6b2a05f797e2c4a9.js +0 -1
  507. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/route-6b2a05f797e2c4a9.js +0 -1
  508. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-designs/summary/route-6b2a05f797e2c4a9.js +0 -1
  509. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-runs/dependencies/route-6b2a05f797e2c4a9.js +0 -1
  510. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiment-runs/route-6b2a05f797e2c4a9.js +0 -1
  511. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/experiments/route-6b2a05f797e2c4a9.js +0 -1
  512. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/github/branches/route-6b2a05f797e2c4a9.js +0 -1
  513. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/group/route-6b2a05f797e2c4a9.js +0 -1
  514. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/[workUuid]/route-6b2a05f797e2c4a9.js +0 -1
  515. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/auto-search/complete/route-6b2a05f797e2c4a9.js +0 -1
  516. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/auto-search/route-6b2a05f797e2c4a9.js +0 -1
  517. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/deep-research/complete/route-6b2a05f797e2c4a9.js +0 -1
  518. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/deep-research/route-6b2a05f797e2c4a9.js +0 -1
  519. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/related-works/route-6b2a05f797e2c4a9.js +0 -1
  520. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/research-questions/route-6b2a05f797e2c4a9.js +0 -1
  521. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  522. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/complete/route-6b2a05f797e2c4a9.js +0 -1
  523. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/refresh/route-6b2a05f797e2c4a9.js +0 -1
  524. package/dist/.next/static/chunks/app/api/research-projects/[uuid]/synthesis/trigger/route-6b2a05f797e2c4a9.js +0 -1
  525. package/dist/.next/static/chunks/app/api/research-projects/route-6b2a05f797e2c4a9.js +0 -1
  526. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/claim/route-6b2a05f797e2c4a9.js +0 -1
  527. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/move/route-6b2a05f797e2c4a9.js +0 -1
  528. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/release/route-6b2a05f797e2c4a9.js +0 -1
  529. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/review/route-6b2a05f797e2c4a9.js +0 -1
  530. package/dist/.next/static/chunks/app/api/research-questions/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  531. package/dist/.next/static/chunks/app/api/sessions/[uuid]/route-6b2a05f797e2c4a9.js +0 -1
  532. package/dist/.next/static/chunks/app/api/settings/integrations/route-6b2a05f797e2c4a9.js +0 -1
  533. package/dist/.next/static/chunks/app/api/ssh-config/route-6b2a05f797e2c4a9.js +0 -1
  534. package/dist/.next/static/chunks/app/login/admin/page-8dda79e82c76ba88.js +0 -1
  535. package/dist/.next/static/css/81cb96eb0c1ad534.css +0 -1
  536. /package/dist/.next/static/{VlyiqgSt6DSLuCX7rlcKa → pDqWpKlO0UvhYF_M3n6bG}/_buildManifest.js +0 -0
  537. /package/dist/.next/static/{VlyiqgSt6DSLuCX7rlcKa → pDqWpKlO0UvhYF_M3n6bG}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  ]))`;continue}else if("$"===d[a]){e+=`($|(?=[\r
3
3
  ]))`;continue}}if(c.s&&"."===d[a]){e+=g?`${d[a]}\r
4
4
  `:`[${d[a]}\r
5
- ]`;continue}e+=d[a],"\\"===d[a]?f=!0:g&&"]"===d[a]?g=!1:g||"["!==d[a]||(g=!0)}try{new RegExp(e)}catch{return console.warn(`Could not convert regex pattern at ${b.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),a.source}return e}function a4(a,b){if("openAi"===b.target&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),"openApi3"===b.target&&a.keyType?._def.typeName===aA.ZodEnum)return{type:"object",required:a.keyType._def.values,properties:a.keyType._def.values.reduce((c,d)=>({...c,[d]:a7(a.valueType._def,{...b,currentPath:[...b.currentPath,"properties",d]})??aV(b)}),{}),additionalProperties:b.rejectedAdditionalProperties};let c={type:"object",additionalProperties:a7(a.valueType._def,{...b,currentPath:[...b.currentPath,"additionalProperties"]})??b.allowedAdditionalProperties};if("openApi3"===b.target)return c;if(a.keyType?._def.typeName===aA.ZodString&&a.keyType._def.checks?.length){let{type:d,...e}=a$(a.keyType._def,b);return{...c,propertyNames:e}}if(a.keyType?._def.typeName===aA.ZodEnum)return{...c,propertyNames:{enum:a.keyType._def.values}};if(a.keyType?._def.typeName===aA.ZodBranded&&a.keyType._def.type._def.typeName===aA.ZodString&&a.keyType._def.type._def.checks?.length){let{type:d,...e}=aY(a.keyType._def,b);return{...c,propertyNames:e}}return c}let a5={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},a6=(a,b)=>{let c=(a.options instanceof Map?Array.from(a.options.values()):a.options).map((a,c)=>a7(a._def,{...b,currentPath:[...b.currentPath,"anyOf",`${c}`]})).filter(a=>!!a&&(!b.strictUnions||"object"==typeof a&&Object.keys(a).length>0));return c.length?{anyOf:c}:void 0};function a7(a,b,c=!1){let d=b.seen.get(a);if(b.override){let e=b.override?.(a,b,d,c);if(e!==aS)return e}if(d&&!c){let a=a8(d,b);if(void 0!==a)return a}let e={def:a,path:b.currentPath,jsonSchema:void 0};b.seen.set(a,e);let f=((a,b,c)=>{switch(b){case aA.ZodString:return a$(a,c);case aA.ZodNumber:var d,e,f,g,h,i,j,k,l,m=a,n=c;let o={type:"number"};if(!m.checks)return o;for(let a of m.checks)switch(a.kind){case"int":o.type="integer",aW(o,"type",a.message,n);break;case"min":"jsonSchema7"===n.target?a.inclusive?aX(o,"minimum",a.value,a.message,n):aX(o,"exclusiveMinimum",a.value,a.message,n):(a.inclusive||(o.exclusiveMinimum=!0),aX(o,"minimum",a.value,a.message,n));break;case"max":"jsonSchema7"===n.target?a.inclusive?aX(o,"maximum",a.value,a.message,n):aX(o,"exclusiveMaximum",a.value,a.message,n):(a.inclusive||(o.exclusiveMaximum=!0),aX(o,"maximum",a.value,a.message,n));break;case"multipleOf":aX(o,"multipleOf",a.value,a.message,n)}return o;case aA.ZodObject:return function(a,b){let c="openAi"===b.target,d={type:"object",properties:{}},e=[],f=a.shape();for(let a in f){let g=f[a];if(void 0===g||void 0===g._def)continue;let h=function(a){try{return a.isOptional()}catch{return!0}}(g);h&&c&&("ZodOptional"===g._def.typeName&&(g=g._def.innerType),g.isNullable()||(g=g.nullable()),h=!1);let i=a7(g._def,{...b,currentPath:[...b.currentPath,"properties",a],propertyPath:[...b.currentPath,"properties",a]});void 0!==i&&(d.properties[a]=i,h||e.push(a))}e.length&&(d.required=e);let g=function(a,b){if("ZodNever"!==a.catchall._def.typeName)return a7(a.catchall._def,{...b,currentPath:[...b.currentPath,"additionalProperties"]});switch(a.unknownKeys){case"passthrough":return b.allowedAdditionalProperties;case"strict":return b.rejectedAdditionalProperties;case"strip":return"strict"===b.removeAdditionalStrategy?b.allowedAdditionalProperties:b.rejectedAdditionalProperties}}(a,b);return void 0!==g&&(d.additionalProperties=g),d}(a,c);case aA.ZodBigInt:var p=a,q=c;let r={type:"integer",format:"int64"};if(!p.checks)return r;for(let a of p.checks)switch(a.kind){case"min":"jsonSchema7"===q.target?a.inclusive?aX(r,"minimum",a.value,a.message,q):aX(r,"exclusiveMinimum",a.value,a.message,q):(a.inclusive||(r.exclusiveMinimum=!0),aX(r,"minimum",a.value,a.message,q));break;case"max":"jsonSchema7"===q.target?a.inclusive?aX(r,"maximum",a.value,a.message,q):aX(r,"exclusiveMaximum",a.value,a.message,q):(a.inclusive||(r.exclusiveMaximum=!0),aX(r,"maximum",a.value,a.message,q));break;case"multipleOf":aX(r,"multipleOf",a.value,a.message,q)}return r;case aA.ZodBoolean:return{type:"boolean"};case aA.ZodDate:return function a(b,c,d){let e=d??c.dateStrategy;if(Array.isArray(e))return{anyOf:e.map((d,e)=>a(b,c,d))};switch(e){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":var f=b,g=c;let h={type:"integer",format:"unix-time"};if("openApi3"===g.target)return h;for(let a of f.checks)switch(a.kind){case"min":aX(h,"minimum",a.value,a.message,g);break;case"max":aX(h,"maximum",a.value,a.message,g)}return h}}(a,c);case aA.ZodUndefined:return{not:aV(c)};case aA.ZodNull:return"openApi3"===c.target?{enum:["null"],nullable:!0}:{type:"null"};case aA.ZodArray:var s=a,t=c;let u={type:"array"};return s.type?._def&&s.type?._def?.typeName!==aA.ZodAny&&(u.items=a7(s.type._def,{...t,currentPath:[...t.currentPath,"items"]})),s.minLength&&aX(u,"minItems",s.minLength.value,s.minLength.message,t),s.maxLength&&aX(u,"maxItems",s.maxLength.value,s.maxLength.message,t),s.exactLength&&(aX(u,"minItems",s.exactLength.value,s.exactLength.message,t),aX(u,"maxItems",s.exactLength.value,s.exactLength.message,t)),u;case aA.ZodUnion:case aA.ZodDiscriminatedUnion:var v=a,w=c;if("openApi3"===w.target)return a6(v,w);let x=v.options instanceof Map?Array.from(v.options.values()):v.options;if(x.every(a=>a._def.typeName in a5&&(!a._def.checks||!a._def.checks.length))){let a=x.reduce((a,b)=>{let c=a5[b._def.typeName];return c&&!a.includes(c)?[...a,c]:a},[]);return{type:a.length>1?a:a[0]}}if(x.every(a=>"ZodLiteral"===a._def.typeName&&!a.description)){let a=x.reduce((a,b)=>{let c=typeof b._def.value;switch(c){case"string":case"number":case"boolean":return[...a,c];case"bigint":return[...a,"integer"];case"object":if(null===b._def.value)return[...a,"null"];default:return a}},[]);if(a.length===x.length){let b=a.filter((a,b,c)=>c.indexOf(a)===b);return{type:b.length>1?b:b[0],enum:x.reduce((a,b)=>a.includes(b._def.value)?a:[...a,b._def.value],[])}}}else if(x.every(a=>"ZodEnum"===a._def.typeName))return{type:"string",enum:x.reduce((a,b)=>[...a,...b._def.values.filter(b=>!a.includes(b))],[])};return a6(v,w);case aA.ZodIntersection:var y=a,z=c;let A=[a7(y.left._def,{...z,currentPath:[...z.currentPath,"allOf","0"]}),a7(y.right._def,{...z,currentPath:[...z.currentPath,"allOf","1"]})].filter(a=>!!a),B="jsonSchema2019-09"===z.target?{unevaluatedProperties:!1}:void 0,C=[];return A.forEach(a=>{if((!("type"in a)||"string"!==a.type)&&"allOf"in a)C.push(...a.allOf),void 0===a.unevaluatedProperties&&(B=void 0);else{let b=a;if("additionalProperties"in a&&!1===a.additionalProperties){let{additionalProperties:c,...d}=a;b=d}else B=void 0;C.push(b)}}),C.length?{allOf:C,...B}:void 0;case aA.ZodTuple:return d=a,e=c,d.rest?{type:"array",minItems:d.items.length,items:d.items.map((a,b)=>a7(a._def,{...e,currentPath:[...e.currentPath,"items",`${b}`]})).reduce((a,b)=>void 0===b?a:[...a,b],[]),additionalItems:a7(d.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:d.items.length,maxItems:d.items.length,items:d.items.map((a,b)=>a7(a._def,{...e,currentPath:[...e.currentPath,"items",`${b}`]})).reduce((a,b)=>void 0===b?a:[...a,b],[])};case aA.ZodRecord:return a4(a,c);case aA.ZodLiteral:var D=a,E=c;let F=typeof D.value;return"bigint"!==F&&"number"!==F&&"boolean"!==F&&"string"!==F?{type:Array.isArray(D.value)?"array":"object"}:"openApi3"===E.target?{type:"bigint"===F?"integer":F,enum:[D.value]}:{type:"bigint"===F?"integer":F,const:D.value};case aA.ZodEnum:return{type:"string",enum:Array.from(a.values)};case aA.ZodNativeEnum:var G=a;let H=G.values,I=Object.keys(G.values).filter(a=>"number"!=typeof H[H[a]]).map(a=>H[a]),J=Array.from(new Set(I.map(a=>typeof a)));return{type:1===J.length?"string"===J[0]?"string":"number":["string","number"],enum:I};case aA.ZodNullable:var K=a,L=c;if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(K.innerType._def.typeName)&&(!K.innerType._def.checks||!K.innerType._def.checks.length))return"openApi3"===L.target?{type:a5[K.innerType._def.typeName],nullable:!0}:{type:[a5[K.innerType._def.typeName],"null"]};if("openApi3"===L.target){let a=a7(K.innerType._def,{...L,currentPath:[...L.currentPath]});return a&&"$ref"in a?{allOf:[a],nullable:!0}:a&&{...a,nullable:!0}}let M=a7(K.innerType._def,{...L,currentPath:[...L.currentPath,"anyOf","0"]});return M&&{anyOf:[M,{type:"null"}]};case aA.ZodOptional:var N=a,O=c;if(O.currentPath.toString()===O.propertyPath?.toString())return a7(N.innerType._def,O);let P=a7(N.innerType._def,{...O,currentPath:[...O.currentPath,"anyOf","1"]});return P?{anyOf:[{not:aV(O)},P]}:aV(O);case aA.ZodMap:return f=a,"record"===(g=c).mapStrategy?a4(f,g):{type:"array",maxItems:125,items:{type:"array",items:[a7(f.keyType._def,{...g,currentPath:[...g.currentPath,"items","items","0"]})||aV(g),a7(f.valueType._def,{...g,currentPath:[...g.currentPath,"items","items","1"]})||aV(g)],minItems:2,maxItems:2}};case aA.ZodSet:var Q=a,R=c;let S={type:"array",uniqueItems:!0,items:a7(Q.valueType._def,{...R,currentPath:[...R.currentPath,"items"]})};return Q.minSize&&aX(S,"minItems",Q.minSize.value,Q.minSize.message,R),Q.maxSize&&aX(S,"maxItems",Q.maxSize.value,Q.maxSize.message,R),S;case aA.ZodLazy:return()=>a.getter()._def;case aA.ZodPromise:return a7(a.type._def,c);case aA.ZodNaN:case aA.ZodNever:return"openAi"===(h=c).target?void 0:{not:aV({...h,currentPath:[...h.currentPath,"not"]})};case aA.ZodEffects:return i=a,"input"===(j=c).effectStrategy?a7(i.schema._def,j):aV(j);case aA.ZodAny:case aA.ZodUnknown:return aV(c);case aA.ZodDefault:return k=a,l=c,{...a7(k.innerType._def,l),default:k.defaultValue()};case aA.ZodBranded:return aY(a,c);case aA.ZodReadonly:case aA.ZodCatch:return a7(a.innerType._def,c);case aA.ZodPipeline:var T=a,U=c;if("input"===U.pipeStrategy)return a7(T.in._def,U);if("output"===U.pipeStrategy)return a7(T.out._def,U);let V=a7(T.in._def,{...U,currentPath:[...U.currentPath,"allOf","0"]}),W=a7(T.out._def,{...U,currentPath:[...U.currentPath,"allOf",V?"1":"0"]});return{allOf:[V,W].filter(a=>void 0!==a)};case aA.ZodFunction:case aA.ZodVoid:case aA.ZodSymbol:default:return}})(a,a.typeName,b),g="function"==typeof f?a7(f(),b):f;if(g&&a9(a,b,g),b.postProcess){let c=b.postProcess(g,a,b);return e.jsonSchema=g,c}return e.jsonSchema=g,g}let a8=(a,b)=>{switch(b.$refStrategy){case"root":return{$ref:a.path.join("/")};case"relative":return{$ref:aU(b.currentPath,a.path)};case"none":case"seen":if(a.path.length<b.currentPath.length&&a.path.every((a,c)=>b.currentPath[c]===a))return console.warn(`Recursive reference detected at ${b.currentPath.join("/")}! Defaulting to any`),aV(b);return"seen"===b.$refStrategy?aV(b):void 0}},a9=(a,b,c)=>(a.description&&(c.description=a.description,b.markdownDescription&&(c.markdownDescription=a.description)),c);function ba(a,b){if(aI(a)){var c;return aH.bl(a,{target:(c=b?.target)&&"jsonSchema7"!==c&&"draft-7"!==c&&("jsonSchema2019-09"===c||"draft-2020-12"===c)?"draft-2020-12":"draft-7",io:b?.pipeStrategy??"input"})}return((a,b)=>{let c=(a=>{let b,c="string"==typeof(b=a)?{...aT,name:b}:{...aT,...b},d=void 0!==c.name?[...c.basePath,c.definitionPath,c.name]:c.basePath;return{...c,flags:{hasReferencedOpenAiAnyType:!1},currentPath:d,propertyPath:void 0,seen:new Map(Object.entries(c.definitions).map(([a,b])=>[b._def,{def:b._def,path:[...c.basePath,c.definitionPath,a],jsonSchema:void 0}]))}})(b),d="object"==typeof b&&b.definitions?Object.entries(b.definitions).reduce((a,[b,d])=>({...a,[b]:a7(d._def,{...c,currentPath:[...c.basePath,c.definitionPath,b]},!0)??aV(c)}),{}):void 0,e="string"==typeof b?b:b?.nameStrategy==="title"?void 0:b?.name,f=a7(a._def,void 0===e?c:{...c,currentPath:[...c.basePath,c.definitionPath,e]},!1)??aV(c),g="object"==typeof b&&void 0!==b.name&&"title"===b.nameStrategy?b.name:void 0;void 0!==g&&(f.title=g),c.flags.hasReferencedOpenAiAnyType&&(d||(d={}),d[c.openAiAnyTypeName]||(d[c.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:"relative"===c.$refStrategy?"1":[...c.basePath,c.definitionPath,c.openAiAnyTypeName].join("/")}}));let h=void 0===e?d?{...f,[c.definitionPath]:d}:f:{$ref:[..."relative"===c.$refStrategy?[]:c.basePath,c.definitionPath,e].join("/"),[c.definitionPath]:{...d,[e]:f}};return"jsonSchema7"===c.target?h.$schema="http://json-schema.org/draft-07/schema#":("jsonSchema2019-09"===c.target||"openAi"===c.target)&&(h.$schema="https://json-schema.org/draft/2019-09/schema#"),"openAi"===c.target&&("anyOf"in h||"oneOf"in h||"allOf"in h||"type"in h&&Array.isArray(h.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),h})(a,{strictUnions:b?.strictUnions??!0,pipeStrategy:b?.pipeStrategy??"input"})}function bb(a){let b=aM(a),c=b?.method;if(!c)throw Error("Schema is missing a method literal");let d=aP(c);if("string"!=typeof d)throw Error("Schema method literal must be a string");return d}function bc(a,b){let c=aK(a,b);if(!c.success)throw c.error;return c.data}class bd{constructor(a){this._options=a,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(aQ.Sq,a=>{this._oncancel(a)}),this.setNotificationHandler(aQ._r,a=>{this._onprogress(a)}),this.setRequestHandler(aQ.tC,a=>({})),this._taskStore=a?.taskStore,this._taskMessageQueue=a?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(aQ.Ql,async(a,b)=>{let c=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,"Failed to retrieve task: Task not found");return{...c}}),this.setRequestHandler(aQ.oQ,async(a,b)=>{let c=async()=>{let d=a.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(d,b.sessionId);){if("response"===a.type||"error"===a.type){let b=a.message,c=b.id,d=this._requestResolvers.get(c);if(d)this._requestResolvers.delete(c),d("response"===a.type?b:new aQ.Nh(b.error.code,b.error.message,b.error.data));else{let b="response"===a.type?"Response":"Error";this._onerror(Error(`${b} handler missing for request ${c}`))}continue}await this._transport?.send(a.message,{relatedRequestId:b.requestId})}}let e=await this._taskStore.getTask(d,b.sessionId);if(!e)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found: ${d}`);if(!aR(e.status))return await this._waitForTaskUpdate(d,b.signal),await c();if(aR(e.status)){let a=await this._taskStore.getTaskResult(d,b.sessionId);return this._clearTaskQueue(d),{...a,_meta:{...a._meta,[aQ.EV]:{taskId:d}}}}return await c()};return await c()}),this.setRequestHandler(aQ.zR,async(a,b)=>{try{let{tasks:c,nextCursor:d}=await this._taskStore.listTasks(a.params?.cursor,b.sessionId);return{tasks:c,nextCursor:d,_meta:{}}}catch(a){throw new aQ.Nh(aQ.O4.InvalidParams,`Failed to list tasks: ${a instanceof Error?a.message:String(a)}`)}}),this.setRequestHandler(aQ.gd,async(a,b)=>{try{let c=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found: ${a.params.taskId}`);if(aR(c.status))throw new aQ.Nh(aQ.O4.InvalidParams,`Cannot cancel task in terminal status: ${c.status}`);await this._taskStore.updateTaskStatus(a.params.taskId,"cancelled","Client cancelled task execution.",b.sessionId),this._clearTaskQueue(a.params.taskId);let d=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!d)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found after cancellation: ${a.params.taskId}`);return{_meta:{},...d}}catch(a){if(a instanceof aQ.Nh)throw a;throw new aQ.Nh(aQ.O4.InvalidRequest,`Failed to cancel task: ${a instanceof Error?a.message:String(a)}`)}}))}async _oncancel(a){if(!a.params.requestId)return;let b=this._requestHandlerAbortControllers.get(a.params.requestId);b?.abort(a.params.reason)}_setupTimeout(a,b,c,d,e=!1){this._timeoutInfo.set(a,{timeoutId:setTimeout(d,b),startTime:Date.now(),timeout:b,maxTotalTimeout:c,resetTimeoutOnProgress:e,onTimeout:d})}_resetTimeout(a){let b=this._timeoutInfo.get(a);if(!b)return!1;let c=Date.now()-b.startTime;if(b.maxTotalTimeout&&c>=b.maxTotalTimeout)throw this._timeoutInfo.delete(a),aQ.Nh.fromError(aQ.O4.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:b.maxTotalTimeout,totalElapsed:c});return clearTimeout(b.timeoutId),b.timeoutId=setTimeout(b.onTimeout,b.timeout),!0}_cleanupTimeout(a){let b=this._timeoutInfo.get(a);b&&(clearTimeout(b.timeoutId),this._timeoutInfo.delete(a))}async connect(a){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=a;let b=this.transport?.onclose;this._transport.onclose=()=>{b?.(),this._onclose()};let c=this.transport?.onerror;this._transport.onerror=a=>{c?.(a),this._onerror(a)};let d=this._transport?.onmessage;this._transport.onmessage=(a,b)=>{d?.(a,b),(0,aQ.ig)(a)||(0,aQ.LW)(a)?this._onresponse(a):(0,aQ.vo)(a)?this._onrequest(a,b):(0,aQ.lg)(a)?this._onnotification(a):this._onerror(Error(`Unknown message type: ${JSON.stringify(a)}`))},await this._transport.start()}_onclose(){let a=this._responseHandlers;for(let a of(this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear(),this._requestHandlerAbortControllers.values()))a.abort();this._requestHandlerAbortControllers.clear();let b=aQ.Nh.fromError(aQ.O4.ConnectionClosed,"Connection closed");for(let c of(this._transport=void 0,this.onclose?.(),a.values()))c(b)}_onerror(a){this.onerror?.(a)}_onnotification(a){let b=this._notificationHandlers.get(a.method)??this.fallbackNotificationHandler;void 0!==b&&Promise.resolve().then(()=>b(a)).catch(a=>this._onerror(Error(`Uncaught error in notification handler: ${a}`)))}_onrequest(a,b){let c=this._requestHandlers.get(a.method)??this.fallbackRequestHandler,d=this._transport,e=a.params?._meta?.[aQ.EV]?.taskId;if(void 0===c){let b={jsonrpc:"2.0",id:a.id,error:{code:aQ.O4.MethodNotFound,message:"Method not found"}};e&&this._taskMessageQueue?this._enqueueTaskMessage(e,{type:"error",message:b,timestamp:Date.now()},d?.sessionId).catch(a=>this._onerror(Error(`Failed to enqueue error response: ${a}`))):d?.send(b).catch(a=>this._onerror(Error(`Failed to send an error response: ${a}`)));return}let f=new AbortController;this._requestHandlerAbortControllers.set(a.id,f);let g=(0,aQ.bZ)(a.params)?a.params.task:void 0,h=this._taskStore?this.requestTaskStore(a,d?.sessionId):void 0,i={signal:f.signal,sessionId:d?.sessionId,_meta:a.params?._meta,sendNotification:async b=>{if(f.signal.aborted)return;let c={relatedRequestId:a.id};e&&(c.relatedTask={taskId:e}),await this.notification(b,c)},sendRequest:async(b,c,d)=>{if(f.signal.aborted)throw new aQ.Nh(aQ.O4.ConnectionClosed,"Request was cancelled");let g={...d,relatedRequestId:a.id};e&&!g.relatedTask&&(g.relatedTask={taskId:e});let i=g.relatedTask?.taskId??e;return i&&h&&await h.updateTaskStatus(i,"input_required"),await this.request(b,c,g)},authInfo:b?.authInfo,requestId:a.id,requestInfo:b?.requestInfo,taskId:e,taskStore:h,taskRequestedTtl:g?.ttl,closeSSEStream:b?.closeSSEStream,closeStandaloneSSEStream:b?.closeStandaloneSSEStream};Promise.resolve().then(()=>{g&&this.assertTaskHandlerCapability(a.method)}).then(()=>c(a,i)).then(async b=>{if(f.signal.aborted)return;let c={result:b,jsonrpc:"2.0",id:a.id};e&&this._taskMessageQueue?await this._enqueueTaskMessage(e,{type:"response",message:c,timestamp:Date.now()},d?.sessionId):await d?.send(c)},async b=>{if(f.signal.aborted)return;let c={jsonrpc:"2.0",id:a.id,error:{code:Number.isSafeInteger(b.code)?b.code:aQ.O4.InternalError,message:b.message??"Internal error",...void 0!==b.data&&{data:b.data}}};e&&this._taskMessageQueue?await this._enqueueTaskMessage(e,{type:"error",message:c,timestamp:Date.now()},d?.sessionId):await d?.send(c)}).catch(a=>this._onerror(Error(`Failed to send response: ${a}`))).finally(()=>{this._requestHandlerAbortControllers.delete(a.id)})}_onprogress(a){let{progressToken:b,...c}=a.params,d=Number(b),e=this._progressHandlers.get(d);if(!e)return void this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(a)}`));let f=this._responseHandlers.get(d),g=this._timeoutInfo.get(d);if(g&&f&&g.resetTimeoutOnProgress)try{this._resetTimeout(d)}catch(a){this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),f(a);return}e(c)}_onresponse(a){let b=Number(a.id),c=this._requestResolvers.get(b);if(c){this._requestResolvers.delete(b),c((0,aQ.ig)(a)?a:new aQ.Nh(a.error.code,a.error.message,a.error.data));return}let d=this._responseHandlers.get(b);if(void 0===d)return void this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(a)}`));this._responseHandlers.delete(b),this._cleanupTimeout(b);let e=!1;if((0,aQ.ig)(a)&&a.result&&"object"==typeof a.result){let c=a.result;if(c.task&&"object"==typeof c.task){let a=c.task;"string"==typeof a.taskId&&(e=!0,this._taskProgressTokens.set(a.taskId,b))}}e||this._progressHandlers.delete(b),d((0,aQ.ig)(a)?a:aQ.Nh.fromError(a.error.code,a.error.message,a.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}async *requestStream(a,b,c){let d,{task:e}=c??{};if(!e){try{let d=await this.request(a,b,c);yield{type:"result",result:d}}catch(a){yield{type:"error",error:a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.InternalError,String(a))}}return}try{let e=await this.request(a,aQ.Mg,c);if(e.task)d=e.task.taskId,yield{type:"taskCreated",task:e.task};else throw new aQ.Nh(aQ.O4.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:d},c);if(yield{type:"taskStatus",task:a},aR(a.status)){if("completed"===a.status){let a=await this.getTaskResult({taskId:d},b,c);yield{type:"result",result:a}}else"failed"===a.status?yield{type:"error",error:new aQ.Nh(aQ.O4.InternalError,`Task ${d} failed`)}:"cancelled"===a.status&&(yield{type:"error",error:new aQ.Nh(aQ.O4.InternalError,`Task ${d} was cancelled`)});return}if("input_required"===a.status){let a=await this.getTaskResult({taskId:d},b,c);yield{type:"result",result:a};return}let e=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(a=>setTimeout(a,e)),c?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.InternalError,String(a))}}}request(a,b,c){let{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f,task:g,relatedTask:h}=c??{};return new Promise((i,j)=>{let k=a=>{j(a)};if(!this._transport)return void k(Error("Not connected"));if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(a.method),g&&this.assertTaskCapability(a.method)}catch(a){k(a);return}c?.signal?.throwIfAborted();let l=this._requestMessageId++,m={...a,jsonrpc:"2.0",id:l};c?.onprogress&&(this._progressHandlers.set(l,c.onprogress),m.params={...a.params,_meta:{...a.params?._meta||{},progressToken:l}}),g&&(m.params={...m.params,task:g}),h&&(m.params={...m.params,_meta:{...m.params?._meta||{},[aQ.EV]:h}});let n=a=>{this._responseHandlers.delete(l),this._progressHandlers.delete(l),this._cleanupTimeout(l),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:l,reason:String(a)}},{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f}).catch(a=>this._onerror(Error(`Failed to send cancellation: ${a}`))),j(a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.RequestTimeout,String(a)))};this._responseHandlers.set(l,a=>{if(!c?.signal?.aborted){if(a instanceof Error)return j(a);try{let c=aK(b,a.result);c.success?i(c.data):j(c.error)}catch(a){j(a)}}}),c?.signal?.addEventListener("abort",()=>{n(c?.signal?.reason)});let o=c?.timeout??6e4;this._setupTimeout(l,o,c?.maxTotalTimeout,()=>n(aQ.Nh.fromError(aQ.O4.RequestTimeout,"Request timed out",{timeout:o})),c?.resetTimeoutOnProgress??!1);let p=h?.taskId;if(p){let a=a=>{let b=this._responseHandlers.get(l);b?b(a):this._onerror(Error(`Response handler missing for side-channeled request ${l}`))};this._requestResolvers.set(l,a),this._enqueueTaskMessage(p,{type:"request",message:m,timestamp:Date.now()}).catch(a=>{this._cleanupTimeout(l),j(a)})}else this._transport.send(m,{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f}).catch(a=>{this._cleanupTimeout(l),j(a)})})}async getTask(a,b){return this.request({method:"tasks/get",params:a},aQ.Sc,b)}async getTaskResult(a,b,c){return this.request({method:"tasks/result",params:a},b,c)}async listTasks(a,b){return this.request({method:"tasks/list",params:a},aQ.a5,b)}async cancelTask(a,b){return this.request({method:"tasks/cancel",params:a},aQ.gH,b)}async notification(a,b){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability(a.method);let c=b?.relatedTask?.taskId;if(c){let d={...a,jsonrpc:"2.0",params:{...a.params,_meta:{...a.params?._meta||{},[aQ.EV]:b.relatedTask}}};await this._enqueueTaskMessage(c,{type:"notification",message:d,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(a.method)&&!a.params&&!b?.relatedRequestId&&!b?.relatedTask){if(this._pendingDebouncedNotifications.has(a.method))return;this._pendingDebouncedNotifications.add(a.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(a.method),!this._transport)return;let c={...a,jsonrpc:"2.0"};b?.relatedTask&&(c={...c,params:{...c.params,_meta:{...c.params?._meta||{},[aQ.EV]:b.relatedTask}}}),this._transport?.send(c,b).catch(a=>this._onerror(a))});return}let d={...a,jsonrpc:"2.0"};b?.relatedTask&&(d={...d,params:{...d.params,_meta:{...d.params?._meta||{},[aQ.EV]:b.relatedTask}}}),await this._transport.send(d,b)}setRequestHandler(a,b){let c=bb(a);this.assertRequestHandlerCapability(c),this._requestHandlers.set(c,(c,d)=>Promise.resolve(b(bc(a,c),d)))}removeRequestHandler(a){this._requestHandlers.delete(a)}assertCanSetRequestHandler(a){if(this._requestHandlers.has(a))throw Error(`A request handler for ${a} already exists, which would be overridden`)}setNotificationHandler(a,b){let c=bb(a);this._notificationHandlers.set(c,c=>Promise.resolve(b(bc(a,c))))}removeNotificationHandler(a){this._notificationHandlers.delete(a)}_cleanupTaskProgressHandler(a){let b=this._taskProgressTokens.get(a);void 0!==b&&(this._progressHandlers.delete(b),this._taskProgressTokens.delete(a))}async _enqueueTaskMessage(a,b,c){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let d=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(a,b,c,d)}async _clearTaskQueue(a,b){if(this._taskMessageQueue){for(let c of(await this._taskMessageQueue.dequeueAll(a,b)))if("request"===c.type&&(0,aQ.vo)(c.message)){let b=c.message.id,d=this._requestResolvers.get(b);d?(d(new aQ.Nh(aQ.O4.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(b)):this._onerror(Error(`Resolver missing for request ${b} during task ${a} cleanup`))}}}async _waitForTaskUpdate(a,b){let c=this._options?.defaultTaskPollInterval??1e3;try{let b=await this._taskStore?.getTask(a);b?.pollInterval&&(c=b.pollInterval)}catch{}return new Promise((a,d)=>{if(b.aborted)return void d(new aQ.Nh(aQ.O4.InvalidRequest,"Request cancelled"));let e=setTimeout(a,c);b.addEventListener("abort",()=>{clearTimeout(e),d(new aQ.Nh(aQ.O4.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(a,b){let c=this._taskStore;if(!c)throw Error("No task store configured");return{createTask:async d=>{if(!a)throw Error("No request provided");return await c.createTask(d,a.id,{method:a.method,params:a.params},b)},getTask:async a=>{let d=await c.getTask(a,b);if(!d)throw new aQ.Nh(aQ.O4.InvalidParams,"Failed to retrieve task: Task not found");return d},storeTaskResult:async(a,d,e)=>{await c.storeTaskResult(a,d,e,b);let f=await c.getTask(a,b);if(f){let b=aQ.ki.parse({method:"notifications/tasks/status",params:f});await this.notification(b),aR(f.status)&&this._cleanupTaskProgressHandler(a)}},getTaskResult:a=>c.getTaskResult(a,b),updateTaskStatus:async(a,d,e)=>{let f=await c.getTask(a,b);if(!f)throw new aQ.Nh(aQ.O4.InvalidParams,`Task "${a}" not found - it may have been cleaned up`);if(aR(f.status))throw new aQ.Nh(aQ.O4.InvalidParams,`Cannot update task "${a}" from terminal status "${f.status}" to "${d}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await c.updateTaskStatus(a,d,e,b);let g=await c.getTask(a,b);if(g){let b=aQ.ki.parse({method:"notifications/tasks/status",params:g});await this.notification(b),aR(g.status)&&this._cleanupTaskProgressHandler(a)}},listTasks:a=>c.listTasks(a,b)}}}function be(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}var bf=c(13370),bg=c(3395);class bh{constructor(a){this._ajv=a??function(){let a=new bf({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return bg(a),a}()}getValidator(a){let b="$id"in a&&"string"==typeof a.$id?this._ajv.getSchema(a.$id)??this._ajv.compile(a):this._ajv.compile(a);return a=>b(a)?{valid:!0,data:a,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(b.errors)}}}class bi{constructor(a){this._server=a}requestStream(a,b,c){return this._server.requestStream(a,b,c)}async getTask(a,b){return this._server.getTask({taskId:a},b)}async getTaskResult(a,b,c){return this._server.getTaskResult({taskId:a},b,c)}async listTasks(a,b){return this._server.listTasks(a?{cursor:a}:void 0,b)}async cancelTask(a,b){return this._server.cancelTask({taskId:a},b)}}class bj extends bd{constructor(a,b){super(b),this._serverInfo=a,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(aQ.FP.options.map((a,b)=>[a,b])),this.isMessageIgnored=(a,b)=>{let c=this._loggingLevels.get(b);return!!c&&this.LOG_LEVEL_SEVERITY.get(a)<this.LOG_LEVEL_SEVERITY.get(c)},this._capabilities=b?.capabilities??{},this._instructions=b?.instructions,this._jsonSchemaValidator=b?.jsonSchemaValidator??new bh,this.setRequestHandler(aQ.rk,a=>this._oninitialize(a)),this.setNotificationHandler(aQ.ZC,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(aQ.b_,async(a,b)=>{let c=b.sessionId||b.requestInfo?.headers["mcp-session-id"]||void 0,{level:d}=a.params,e=aQ.FP.safeParse(d);return e.success&&this._loggingLevels.set(c,e.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new bi(this)}),this._experimental}registerCapabilities(a){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=function(a,b){let c={...a};for(let a in b){let d=b[a];if(void 0===d)continue;let e=c[a];be(e)&&be(d)?c[a]={...e,...d}:c[a]=d}return c}(this._capabilities,a)}setRequestHandler(a,b){let c,d=aM(a),e=d?.method;if(!e)throw Error("Schema is missing a method literal");if(aI(e)){let a=e._zod?.def;c=a?.value??e.value}else{let a=e._def;c=a?.value??e.value}if("string"!=typeof c)throw Error("Schema method literal must be a string");if("tools/call"===c){let c=async(a,c)=>{let d=aK(aQ.FT,a);if(!d.success){let a=d.error instanceof Error?d.error.message:String(d.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid tools/call request: ${a}`)}let{params:e}=d.data,f=await Promise.resolve(b(a,c));if(e.task){let a=aK(aQ.Mg,f);if(!a.success){let b=a.error instanceof Error?a.error.message:String(a.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid task creation result: ${b}`)}return a.data}let g=aK(aQ.TF,f);if(!g.success){let a=g.error instanceof Error?g.error.message:String(g.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid tools/call result: ${a}`)}return g.data};return super.setRequestHandler(a,c)}return super.setRequestHandler(a,b)}assertCapabilityForMethod(a){switch(a){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${a})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${a})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${a})`)}}assertNotificationCapability(a){switch(a){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${a})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${a})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${a})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${a})`)}}assertRequestHandlerCapability(a){if(this._capabilities)switch(a){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${a})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${a})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${a})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${a})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${a})`)}}assertTaskCapability(a){var b=this._clientCapabilities?.tasks?.requests,c="Client";if(!b)throw Error(`${c} does not support task creation (required for ${a})`);switch(a){case"sampling/createMessage":if(!b.sampling?.createMessage)throw Error(`${c} does not support task creation for sampling/createMessage (required for ${a})`);break;case"elicitation/create":if(!b.elicitation?.create)throw Error(`${c} does not support task creation for elicitation/create (required for ${a})`)}}assertTaskHandlerCapability(a){if(this._capabilities){var b=this._capabilities.tasks?.requests,c="Server";if(!b)throw Error(`${c} does not support task creation (required for ${a})`);if("tools/call"===a&&!b.tools?.call)throw Error(`${c} does not support task creation for tools/call (required for ${a})`)}}async _oninitialize(a){let b=a.params.protocolVersion;return this._clientCapabilities=a.params.capabilities,this._clientVersion=a.params.clientInfo,{protocolVersion:aQ.Iu.includes(b)?b:aQ.aE,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},aQ.wR)}async createMessage(a,b){if((a.tools||a.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(a.messages.length>0){let b=a.messages[a.messages.length-1],c=Array.isArray(b.content)?b.content:[b.content],d=c.some(a=>"tool_result"===a.type),e=a.messages.length>1?a.messages[a.messages.length-2]:void 0,f=e?Array.isArray(e.content)?e.content:[e.content]:[],g=f.some(a=>"tool_use"===a.type);if(d){if(c.some(a=>"tool_result"!==a.type))throw Error("The last message must contain only tool_result content if any is present");if(!g)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(g){let a=new Set(f.filter(a=>"tool_use"===a.type).map(a=>a.id)),b=new Set(c.filter(a=>"tool_result"===a.type).map(a=>a.toolUseId));if(a.size!==b.size||![...a].every(a=>b.has(a)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return a.tools?this.request({method:"sampling/createMessage",params:a},aQ.TI,b):this.request({method:"sampling/createMessage",params:a},aQ.K1,b)}async elicitInput(a,b){switch(a.mode??"form"){case"url":if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");return this.request({method:"elicitation/create",params:a},aQ.n_,b);case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let c="form"===a.mode?a:{...a,mode:"form"},d=await this.request({method:"elicitation/create",params:c},aQ.n_,b);if("accept"===d.action&&d.content&&c.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(c.requestedSchema)(d.content);if(!a.valid)throw new aQ.Nh(aQ.O4.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(a){if(a instanceof aQ.Nh)throw a;throw new aQ.Nh(aQ.O4.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return d}}}createElicitationCompletionNotifier(a,b){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:a}},b)}async listRoots(a,b){return this.request({method:"roots/list",params:a},aQ.Cs,b)}async sendLoggingMessage(a,b){if(this._capabilities.logging&&!this.isMessageIgnored(a.level,b))return this.notification({method:"notifications/message",params:a})}async sendResourceUpdated(a){return this.notification({method:"notifications/resources/updated",params:a})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}let bk=Symbol.for("mcp.completable");function bl(a){return!!a&&"object"==typeof a&&bk in a}(aB||(aB={})).Completable="McpCompletable";let bm=/^[A-Za-z0-9._-]{1,128}$/;function bn(a){let b=function(a){let b=[];if(0===a.length)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(a.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${a.length})`]};if(a.includes(" ")&&b.push("Tool name contains spaces, which may cause parsing issues"),a.includes(",")&&b.push("Tool name contains commas, which may cause parsing issues"),(a.startsWith("-")||a.endsWith("-"))&&b.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(a.startsWith(".")||a.endsWith("."))&&b.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!bm.test(a)){let c=a.split("").filter(a=>!/[A-Za-z0-9._-]/.test(a)).filter((a,b,c)=>c.indexOf(a)===b);return b.push(`Tool name contains invalid characters: ${c.map(a=>`"${a}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:b}}return{isValid:!0,warnings:b}}(a);var c=b.warnings;if(c.length>0){for(let b of(console.warn(`Tool name validation warning for "${a}":`),c))console.warn(` - ${b}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}return b.isValid}class bo{constructor(a){this._mcpServer=a}registerToolTask(a,b,c){let d={taskSupport:"required",...b.execution};if("forbidden"===d.taskSupport)throw Error(`Cannot register task-based tool '${a}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(a,b.title,b.description,b.inputSchema,b.outputSchema,b.annotations,d,b._meta,c)}}var bp=c(77258);class bq{constructor(a,b){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new bj(a,b)}get experimental(){return this._experimental||(this._experimental={tasks:new bo(this)}),this._experimental}async connect(a){return await this.server.connect(a)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.gW)),this.server.assertCanSetRequestHandler(bv(aQ.FT)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(aQ.gW,()=>({tools:Object.entries(this._registeredTools).filter(([,a])=>a.enabled).map(([a,b])=>{let c={name:a,title:b.title,description:b.description,inputSchema:(()=>{let a=aN(b.inputSchema);return a?ba(a,{strictUnions:!0,pipeStrategy:"input"}):br})(),annotations:b.annotations,execution:b.execution,_meta:b._meta};if(b.outputSchema){let a=aN(b.outputSchema);a&&(c.outputSchema=ba(a,{strictUnions:!0,pipeStrategy:"output"}))}return c})})),this.server.setRequestHandler(aQ.FT,async(a,b)=>{try{let c=this._registeredTools[a.params.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Tool ${a.params.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Tool ${a.params.name} disabled`);let d=!!a.params.task,e=c.execution?.taskSupport,f="createTask"in c.handler;if(("required"===e||"optional"===e)&&!f)throw new aQ.Nh(aQ.O4.InternalError,`Tool ${a.params.name} has taskSupport '${e}' but was not registered with registerToolTask`);if("required"===e&&!d)throw new aQ.Nh(aQ.O4.MethodNotFound,`Tool ${a.params.name} requires task augmentation (taskSupport: 'required')`);if("optional"===e&&!d&&f)return await this.handleAutomaticTaskPolling(c,a,b);let g=await this.validateToolInput(c,a.params.arguments,a.params.name),h=await this.executeToolHandler(c,g,b);if(d)return h;return await this.validateToolOutput(c,h,a.params.name),h}catch(a){if(a instanceof aQ.Nh&&a.code===aQ.O4.UrlElicitationRequired)throw a;return this.createToolError(a instanceof Error?a.message:String(a))}}),this._toolHandlersInitialized=!0)}createToolError(a){return{content:[{type:"text",text:a}],isError:!0}}async validateToolInput(a,b,c){if(!a.inputSchema)return;let d=aN(a.inputSchema)??a.inputSchema,e=await aL(d,b);if(!e.success){let a=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Input validation error: Invalid arguments for tool ${c}: ${a}`)}return e.data}async validateToolOutput(a,b,c){if(!a.outputSchema||!("content"in b)||b.isError)return;if(!b.structuredContent)throw new aQ.Nh(aQ.O4.InvalidParams,`Output validation error: Tool ${c} has an output schema but no structured content was provided`);let d=aN(a.outputSchema),e=await aL(d,b.structuredContent);if(!e.success){let a=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Output validation error: Invalid structured content for tool ${c}: ${a}`)}}async executeToolHandler(a,b,c){let d=a.handler;if("createTask"in d){if(!c.taskStore)throw Error("No task store provided.");let e={...c,taskStore:c.taskStore};return a.inputSchema?await Promise.resolve(d.createTask(b,e)):await Promise.resolve(d.createTask(e))}return a.inputSchema?await Promise.resolve(d(b,c)):await Promise.resolve(d(c))}async handleAutomaticTaskPolling(a,b,c){if(!c.taskStore)throw Error("No task store provided for task-capable tool.");let d=await this.validateToolInput(a,b.params.arguments,b.params.name),e=a.handler,f={...c,taskStore:c.taskStore},g=d?await Promise.resolve(e.createTask(d,f)):await Promise.resolve(e.createTask(f)),h=g.task.taskId,i=g.task,j=i.pollInterval??5e3;for(;"completed"!==i.status&&"failed"!==i.status&&"cancelled"!==i.status;){await new Promise(a=>setTimeout(a,j));let a=await c.taskStore.getTask(h);if(!a)throw new aQ.Nh(aQ.O4.InternalError,`Task ${h} not found during polling`);i=a}return await c.taskStore.getTaskResult(h)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.iK)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(aQ.iK,async a=>{switch(a.params.ref.type){case"ref/prompt":return(0,aQ.uv)(a),this.handlePromptCompletion(a,a.params.ref);case"ref/resource":return(0,aQ.X6)(a),this.handleResourceCompletion(a,a.params.ref);default:throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid completion reference: ${a.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(a,b){let c=this._registeredPrompts[b.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${b.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${b.name} disabled`);if(!c.argsSchema)return bx;let d=aM(c.argsSchema),e=d?.[a.params.argument.name];if(!bl(e))return bx;let f=function(a){let b=a[bk];return b?.complete}(e);return f?bw(await f(a.params.argument.value,a.params.context)):bx}async handleResourceCompletion(a,b){let c=Object.values(this._registeredResourceTemplates).find(a=>a.resourceTemplate.uriTemplate.toString()===b.uri);if(!c){if(this._registeredResources[b.uri])return bx;throw new aQ.Nh(aQ.O4.InvalidParams,`Resource template ${a.params.ref.uri} not found`)}let d=c.resourceTemplate.completeCallback(a.params.argument.name);return d?bw(await d(a.params.argument.value,a.params.context)):bx}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.OI)),this.server.assertCanSetRequestHandler(bv(aQ.s)),this.server.assertCanSetRequestHandler(bv(aQ.R6)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(aQ.OI,async(a,b)=>{let c=Object.entries(this._registeredResources).filter(([a,b])=>b.enabled).map(([a,b])=>({uri:a,name:b.name,...b.metadata})),d=[];for(let a of Object.values(this._registeredResourceTemplates))if(a.resourceTemplate.listCallback)for(let c of(await a.resourceTemplate.listCallback(b)).resources)d.push({...a.metadata,...c});return{resources:[...c,...d]}}),this.server.setRequestHandler(aQ.s,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([a,b])=>({name:a,uriTemplate:b.resourceTemplate.uriTemplate.toString(),...b.metadata}))})),this.server.setRequestHandler(aQ.R6,async(a,b)=>{let c=new URL(a.params.uri),d=this._registeredResources[c.toString()];if(d){if(!d.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Resource ${c} disabled`);return d.readCallback(c,b)}for(let a of Object.values(this._registeredResourceTemplates)){let d=a.resourceTemplate.uriTemplate.match(c.toString());if(d)return a.readCallback(c,d,b)}throw new aQ.Nh(aQ.O4.InvalidParams,`Resource ${c} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.Qq)),this.server.assertCanSetRequestHandler(bv(aQ.$p)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(aQ.Qq,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,a])=>a.enabled).map(([a,b])=>({name:a,title:b.title,description:b.description,arguments:b.argsSchema?function(a){let b=aM(a);return b?Object.entries(b).map(([a,b])=>({name:a,description:b.description,required:!(aI(b)?b._zod?.def?.type==="optional":"function"==typeof b.isOptional?b.isOptional():b._def?.typeName==="ZodOptional")})):[]}(b.argsSchema):void 0}))})),this.server.setRequestHandler(aQ.$p,async(a,b)=>{let c=this._registeredPrompts[a.params.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${a.params.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${a.params.name} disabled`);if(c.argsSchema){let d=aN(c.argsSchema),e=await aL(d,a.params.arguments);if(!e.success){let b=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid arguments for prompt ${a.params.name}: ${b}`)}let f=e.data,g=c.callback;return await Promise.resolve(g(f,b))}{let a=c.callback;return await Promise.resolve(a(b))}}),this._promptHandlersInitialized=!0)}resource(a,b,...c){let d;"object"==typeof c[0]&&(d=c.shift());let e=c[0];if("string"==typeof b){if(this._registeredResources[b])throw Error(`Resource ${b} is already registered`);let c=this._createRegisteredResource(a,void 0,b,d,e);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),c}{if(this._registeredResourceTemplates[a])throw Error(`Resource template ${a} is already registered`);let c=this._createRegisteredResourceTemplate(a,void 0,b,d,e);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),c}}registerResource(a,b,c,d){if("string"==typeof b){if(this._registeredResources[b])throw Error(`Resource ${b} is already registered`);let e=this._createRegisteredResource(a,c.title,b,c,d);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),e}{if(this._registeredResourceTemplates[a])throw Error(`Resource template ${a} is already registered`);let e=this._createRegisteredResourceTemplate(a,c.title,b,c,d);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),e}}_createRegisteredResource(a,b,c,d,e){let f={name:a,title:b,metadata:d,readCallback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({uri:null}),update:a=>{void 0!==a.uri&&a.uri!==c&&(delete this._registeredResources[c],a.uri&&(this._registeredResources[a.uri]=f)),void 0!==a.name&&(f.name=a.name),void 0!==a.title&&(f.title=a.title),void 0!==a.metadata&&(f.metadata=a.metadata),void 0!==a.callback&&(f.readCallback=a.callback),void 0!==a.enabled&&(f.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[c]=f,f}_createRegisteredResourceTemplate(a,b,c,d,e){let f={resourceTemplate:c,title:b,metadata:d,readCallback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&(delete this._registeredResourceTemplates[a],b.name&&(this._registeredResourceTemplates[b.name]=f)),void 0!==b.title&&(f.title=b.title),void 0!==b.template&&(f.resourceTemplate=b.template),void 0!==b.metadata&&(f.metadata=b.metadata),void 0!==b.callback&&(f.readCallback=b.callback),void 0!==b.enabled&&(f.enabled=b.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[a]=f;let g=c.uriTemplate.variableNames;return Array.isArray(g)&&g.some(a=>!!c.completeCallback(a))&&this.setCompletionRequestHandler(),f}_createRegisteredPrompt(a,b,c,d,e){let f={title:b,description:c,argsSchema:void 0===d?void 0:aJ(d),callback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&(delete this._registeredPrompts[a],b.name&&(this._registeredPrompts[b.name]=f)),void 0!==b.title&&(f.title=b.title),void 0!==b.description&&(f.description=b.description),void 0!==b.argsSchema&&(f.argsSchema=aJ(b.argsSchema)),void 0!==b.callback&&(f.callback=b.callback),void 0!==b.enabled&&(f.enabled=b.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[a]=f,d&&Object.values(d).some(a=>bl(a instanceof bp.IiU?a._def?.innerType:a))&&this.setCompletionRequestHandler(),f}_createRegisteredTool(a,b,c,d,e,f,g,h,i){bn(a);let j={title:b,description:c,inputSchema:bu(d),outputSchema:bu(e),annotations:f,execution:g,_meta:h,handler:i,enabled:!0,disable:()=>j.update({enabled:!1}),enable:()=>j.update({enabled:!0}),remove:()=>j.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&("string"==typeof b.name&&bn(b.name),delete this._registeredTools[a],b.name&&(this._registeredTools[b.name]=j)),void 0!==b.title&&(j.title=b.title),void 0!==b.description&&(j.description=b.description),void 0!==b.paramsSchema&&(j.inputSchema=aJ(b.paramsSchema)),void 0!==b.outputSchema&&(j.outputSchema=aJ(b.outputSchema)),void 0!==b.callback&&(j.handler=b.callback),void 0!==b.annotations&&(j.annotations=b.annotations),void 0!==b._meta&&(j._meta=b._meta),void 0!==b.enabled&&(j.enabled=b.enabled),this.sendToolListChanged()}};return this._registeredTools[a]=j,this.setToolRequestHandlers(),this.sendToolListChanged(),j}tool(a,...b){let c,d,e,f;if(this._registeredTools[a])throw Error(`Tool ${a} is already registered`);if("string"==typeof b[0]&&(c=b.shift()),b.length>1){let a=b[0];bt(a)?(d=b.shift(),b.length>1&&"object"==typeof b[0]&&null!==b[0]&&!bt(b[0])&&(f=b.shift())):"object"==typeof a&&null!==a&&(f=b.shift())}let g=b[0];return this._createRegisteredTool(a,void 0,c,d,e,f,{taskSupport:"forbidden"},void 0,g)}registerTool(a,b,c){if(this._registeredTools[a])throw Error(`Tool ${a} is already registered`);let{title:d,description:e,inputSchema:f,outputSchema:g,annotations:h,_meta:i}=b;return this._createRegisteredTool(a,d,e,f,g,h,{taskSupport:"forbidden"},i,c)}prompt(a,...b){let c,d;if(this._registeredPrompts[a])throw Error(`Prompt ${a} is already registered`);"string"==typeof b[0]&&(c=b.shift()),b.length>1&&(d=b.shift());let e=b[0],f=this._createRegisteredPrompt(a,void 0,c,d,e);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),f}registerPrompt(a,b,c){if(this._registeredPrompts[a])throw Error(`Prompt ${a} is already registered`);let{title:d,description:e,argsSchema:f}=b,g=this._createRegisteredPrompt(a,d,e,f,c);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),g}isConnected(){return void 0!==this.server.transport}async sendLoggingMessage(a,b){return this.server.sendLoggingMessage(a,b)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}}let br={type:"object",properties:{}};function bs(a){return null!==a&&"object"==typeof a&&"parse"in a&&"function"==typeof a.parse&&"safeParse"in a&&"function"==typeof a.safeParse}function bt(a){return"object"==typeof a&&null!==a&&!("_def"in a||"_zod"in a||bs(a))&&(0===Object.keys(a).length||Object.values(a).some(bs))}function bu(a){if(a)return bt(a)?aJ(a):a}function bv(a){let b=aM(a),c=b?.method;if(!c)throw Error("Schema is missing a method literal");let d=aP(c);if("string"==typeof d)return d;throw Error("Schema method literal must be a string")}function bw(a){return{completion:{values:a.slice(0,100),total:a.length,hasMore:a.length>100}}}let bx={completion:{values:[],hasMore:!1}}},29020:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(20636),e=c(41016),f=c(16674),g=c(352),h=c(37085);b.default=[d.default,e.default,(0,f.default)(),g.default,h.metadataVocabulary,h.contentVocabulary]},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29563:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(34481);b.default={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxLength"===a?"more":"fewer"} than ${b} characters`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:g,it:h}=a,i="maxLength"===b?d.operators.GT:d.operators.LT,j=!1===h.opts.unicode?(0,d._)`${c}.length`:(0,d._)`${(0,e.useFunc)(a.gen,f.default)}(${c})`;a.fail$data((0,d._)`${j} ${i} ${g}`)}}},29799:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(1171);class e extends Error{constructor(a,b,c,e){super(e||`can't resolve reference ${c} from id ${b}`),this.missingRef=(0,d.resolveUrl)(a,b,c),this.missingSchema=(0,d.normalizeId)((0,d.getFullPath)(a,this.missingRef))}}b.default=e},30144:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getRules=b.isJSONType=void 0;let c=new Set(["string","number","integer","boolean","null","object","array"]);b.isJSONType=function(a){return"string"==typeof a&&c.has(a)},b.getRules=function(){let a={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...a,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},a.number,a.string,a.array,a.object],post:{rules:[]},all:{},keywords:{}}}},31079:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={data:new d.Name("data"),valCxt:new d.Name("valCxt"),instancePath:new d.Name("instancePath"),parentData:new d.Name("parentData"),parentDataProperty:new d.Name("parentDataProperty"),rootData:new d.Name("rootData"),dynamicAnchors:new d.Name("dynamicAnchors"),vErrors:new d.Name("vErrors"),errors:new d.Name("errors"),this:new d.Name("this"),self:new d.Name("self"),scope:new d.Name("scope"),json:new d.Name("json"),jsonPos:new d.Name("jsonPos"),jsonLen:new d.Name("jsonLen"),jsonPart:new d.Name("jsonPart")}},31270:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>s});var e=c(77258),f=c(85034),g=c(90136),h=c(8777),i=c(16617),j=c(88437),k=c(54349),l=c(63089),m=c(37943),n=c(53235),o=c(90494),p=c(52618),q=c(911),r=a([f,g,h,j,k,l,m,n,o,p]);function s(a,b){a.registerTool("synapse_get_research_project",{description:"Get research project details and context",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID")})},async({researchProjectUuid:a})=>{let c=await f.j5(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Research Project not found"}],isError:!0}}),a.registerTool("synapse_list_research_projects",{description:"List all research projects for the current company. Returns projects with counts of research questions, documents, experiment runs, and experiment designs.",inputSchema:e.Ikc({page:e.aig().default(1).describe("Page number"),pageSize:e.aig().default(20).describe("Items per page")})},async({page:a,pageSize:c})=>{let d=await f.AM({companyUuid:b.companyUuid,skip:(a-1)*c,take:c});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_get_research_questions",{description:"Get the list of Research Questions for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),status:e.YjP().optional().describe("Filter by status: open, elaborating, proposal_created, completed, closed"),page:e.aig().optional().default(1).describe("Page number"),pageSize:e.aig().optional().default(20).describe("Items per page")})},async({researchProjectUuid:a,status:c,page:d=1,pageSize:e=20})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{researchQuestions:h,total:i}=await g.vp({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(d-1)*e,take:e,status:c});return{content:[{type:"text",text:JSON.stringify({researchQuestions:h,total:i,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_documents",{description:"Get the list of Documents for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),type:e.YjP().optional().describe("Filter by type: prd, tech_design, adr, etc."),page:e.aig().optional().default(1),pageSize:e.aig().optional().default(20)})},async({researchProjectUuid:a,type:c,page:d=1,pageSize:e=20})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{documents:g,total:i}=await h.lC({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(d-1)*e,take:e,type:c});return{content:[{type:"text",text:JSON.stringify({documents:g,total:i,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_document",{description:"Get the detailed content of a single Document",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID")})},async({documentUuid:a})=>{let c=await h.YE(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Document not found"}],isError:!0}}),a.registerTool("synapse_get_activity",{description:"Get the activity stream for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),page:e.aig().optional().default(1),pageSize:e.aig().optional().default(50)})},async({researchProjectUuid:a,page:c=1,pageSize:d=50})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{activities:e,total:g}=await j.s3({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(c-1)*d,take:d});return{content:[{type:"text",text:JSON.stringify({activities:e,total:g,page:c,pageSize:d},null,2)}]}}),a.registerTool("synapse_add_comment",{description:"Add a comment to a Research Question/Experiment/Experiment Design/Experiment Run/Document",inputSchema:e.Ikc({targetType:e.k5n(["research_question","experiment","experiment_design","experiment_run","document"]).describe("Target type"),targetUuid:e.YjP().describe("Target UUID"),content:e.YjP().describe("Comment content")})},async({targetType:a,targetUuid:c,content:d})=>{try{let e=await k.eT({companyUuid:b.companyUuid,targetType:a,targetUuid:c,content:d,authorType:"agent",authorUuid:b.actorUuid}),f=await k.Hu(a,c);return f&&await j.E1({companyUuid:b.companyUuid,researchProjectUuid:f,targetType:a,targetUuid:c,actorType:"agent",actorUuid:b.actorUuid,action:"comment_added"}),{content:[{type:"text",text:JSON.stringify({uuid:e.uuid,targetType:a,targetUuid:c},null,2)}]}}catch(b){if(b instanceof Error&&b.message.includes("not found"))return{content:[{type:"text",text:`${a} not found`}],isError:!0};throw b}}),a.registerTool("synapse_checkin",{description:"Agent check-in. Returns agent identity (including owner/master info), roles, assigned work, and pending counts. Recommended at session start.",inputSchema:e.Ikc({})},async()=>{let a=await p.prisma.agent.update({where:{uuid:b.actorUuid},data:{lastActiveAt:new Date},select:{uuid:!0,name:!0,roles:!0,type:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,owner:{select:{uuid:!0,name:!0,email:!0}}}});q.B.emitChange({companyUuid:b.companyUuid,researchProjectUuid:"",entityType:"agent_session",entityUuid:a.uuid,action:"updated",actorUuid:b.actorUuid});let{researchQuestions:c,experimentRuns:d}=await l.j(b,b.researchProjectUuids),e=await p.prisma.experiment.findMany({where:{companyUuid:b.companyUuid,assigneeUuid:b.actorUuid,status:{in:["pending_start","in_progress"]},...b.researchProjectUuids&&b.researchProjectUuids.length>0?{researchProjectUuid:{in:b.researchProjectUuids}}:{}},select:{uuid:!0,title:!0,status:!0,researchProject:{select:{uuid:!0,name:!0}}},orderBy:{createdAt:"asc"}}),f=await p.prisma.researchProject.findMany({where:{companyUuid:b.companyUuid},select:{uuid:!0,name:!0,description:!0,deepResearchDocUuid:!0,researchQuestions:{select:{uuid:!0,title:!0,status:!0},orderBy:{createdAt:"asc"}},_count:{select:{relatedWorks:!0}}},orderBy:{updatedAt:"desc"}}),g={};if(f.length>0){let a=f.map(a=>a.uuid);for(let c of(await p.prisma.experiment.groupBy({by:["researchProjectUuid","status"],where:{companyUuid:b.companyUuid,researchProjectUuid:{in:a}},_count:!0})))g[c.researchProjectUuid]||(g[c.researchProjectUuid]={}),g[c.researchProjectUuid][c.status]=c._count}let h=await m.$M(b.companyUuid,b.type,b.actorUuid),i={research_lead:`You are an experienced Research Lead Agent. Your responsibilities are:
5
+ ]`;continue}e+=d[a],"\\"===d[a]?f=!0:g&&"]"===d[a]?g=!1:g||"["!==d[a]||(g=!0)}try{new RegExp(e)}catch{return console.warn(`Could not convert regex pattern at ${b.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),a.source}return e}function a4(a,b){if("openAi"===b.target&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),"openApi3"===b.target&&a.keyType?._def.typeName===aA.ZodEnum)return{type:"object",required:a.keyType._def.values,properties:a.keyType._def.values.reduce((c,d)=>({...c,[d]:a7(a.valueType._def,{...b,currentPath:[...b.currentPath,"properties",d]})??aV(b)}),{}),additionalProperties:b.rejectedAdditionalProperties};let c={type:"object",additionalProperties:a7(a.valueType._def,{...b,currentPath:[...b.currentPath,"additionalProperties"]})??b.allowedAdditionalProperties};if("openApi3"===b.target)return c;if(a.keyType?._def.typeName===aA.ZodString&&a.keyType._def.checks?.length){let{type:d,...e}=a$(a.keyType._def,b);return{...c,propertyNames:e}}if(a.keyType?._def.typeName===aA.ZodEnum)return{...c,propertyNames:{enum:a.keyType._def.values}};if(a.keyType?._def.typeName===aA.ZodBranded&&a.keyType._def.type._def.typeName===aA.ZodString&&a.keyType._def.type._def.checks?.length){let{type:d,...e}=aY(a.keyType._def,b);return{...c,propertyNames:e}}return c}let a5={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},a6=(a,b)=>{let c=(a.options instanceof Map?Array.from(a.options.values()):a.options).map((a,c)=>a7(a._def,{...b,currentPath:[...b.currentPath,"anyOf",`${c}`]})).filter(a=>!!a&&(!b.strictUnions||"object"==typeof a&&Object.keys(a).length>0));return c.length?{anyOf:c}:void 0};function a7(a,b,c=!1){let d=b.seen.get(a);if(b.override){let e=b.override?.(a,b,d,c);if(e!==aS)return e}if(d&&!c){let a=a8(d,b);if(void 0!==a)return a}let e={def:a,path:b.currentPath,jsonSchema:void 0};b.seen.set(a,e);let f=((a,b,c)=>{switch(b){case aA.ZodString:return a$(a,c);case aA.ZodNumber:var d,e,f,g,h,i,j,k,l,m=a,n=c;let o={type:"number"};if(!m.checks)return o;for(let a of m.checks)switch(a.kind){case"int":o.type="integer",aW(o,"type",a.message,n);break;case"min":"jsonSchema7"===n.target?a.inclusive?aX(o,"minimum",a.value,a.message,n):aX(o,"exclusiveMinimum",a.value,a.message,n):(a.inclusive||(o.exclusiveMinimum=!0),aX(o,"minimum",a.value,a.message,n));break;case"max":"jsonSchema7"===n.target?a.inclusive?aX(o,"maximum",a.value,a.message,n):aX(o,"exclusiveMaximum",a.value,a.message,n):(a.inclusive||(o.exclusiveMaximum=!0),aX(o,"maximum",a.value,a.message,n));break;case"multipleOf":aX(o,"multipleOf",a.value,a.message,n)}return o;case aA.ZodObject:return function(a,b){let c="openAi"===b.target,d={type:"object",properties:{}},e=[],f=a.shape();for(let a in f){let g=f[a];if(void 0===g||void 0===g._def)continue;let h=function(a){try{return a.isOptional()}catch{return!0}}(g);h&&c&&("ZodOptional"===g._def.typeName&&(g=g._def.innerType),g.isNullable()||(g=g.nullable()),h=!1);let i=a7(g._def,{...b,currentPath:[...b.currentPath,"properties",a],propertyPath:[...b.currentPath,"properties",a]});void 0!==i&&(d.properties[a]=i,h||e.push(a))}e.length&&(d.required=e);let g=function(a,b){if("ZodNever"!==a.catchall._def.typeName)return a7(a.catchall._def,{...b,currentPath:[...b.currentPath,"additionalProperties"]});switch(a.unknownKeys){case"passthrough":return b.allowedAdditionalProperties;case"strict":return b.rejectedAdditionalProperties;case"strip":return"strict"===b.removeAdditionalStrategy?b.allowedAdditionalProperties:b.rejectedAdditionalProperties}}(a,b);return void 0!==g&&(d.additionalProperties=g),d}(a,c);case aA.ZodBigInt:var p=a,q=c;let r={type:"integer",format:"int64"};if(!p.checks)return r;for(let a of p.checks)switch(a.kind){case"min":"jsonSchema7"===q.target?a.inclusive?aX(r,"minimum",a.value,a.message,q):aX(r,"exclusiveMinimum",a.value,a.message,q):(a.inclusive||(r.exclusiveMinimum=!0),aX(r,"minimum",a.value,a.message,q));break;case"max":"jsonSchema7"===q.target?a.inclusive?aX(r,"maximum",a.value,a.message,q):aX(r,"exclusiveMaximum",a.value,a.message,q):(a.inclusive||(r.exclusiveMaximum=!0),aX(r,"maximum",a.value,a.message,q));break;case"multipleOf":aX(r,"multipleOf",a.value,a.message,q)}return r;case aA.ZodBoolean:return{type:"boolean"};case aA.ZodDate:return function a(b,c,d){let e=d??c.dateStrategy;if(Array.isArray(e))return{anyOf:e.map((d,e)=>a(b,c,d))};switch(e){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":var f=b,g=c;let h={type:"integer",format:"unix-time"};if("openApi3"===g.target)return h;for(let a of f.checks)switch(a.kind){case"min":aX(h,"minimum",a.value,a.message,g);break;case"max":aX(h,"maximum",a.value,a.message,g)}return h}}(a,c);case aA.ZodUndefined:return{not:aV(c)};case aA.ZodNull:return"openApi3"===c.target?{enum:["null"],nullable:!0}:{type:"null"};case aA.ZodArray:var s=a,t=c;let u={type:"array"};return s.type?._def&&s.type?._def?.typeName!==aA.ZodAny&&(u.items=a7(s.type._def,{...t,currentPath:[...t.currentPath,"items"]})),s.minLength&&aX(u,"minItems",s.minLength.value,s.minLength.message,t),s.maxLength&&aX(u,"maxItems",s.maxLength.value,s.maxLength.message,t),s.exactLength&&(aX(u,"minItems",s.exactLength.value,s.exactLength.message,t),aX(u,"maxItems",s.exactLength.value,s.exactLength.message,t)),u;case aA.ZodUnion:case aA.ZodDiscriminatedUnion:var v=a,w=c;if("openApi3"===w.target)return a6(v,w);let x=v.options instanceof Map?Array.from(v.options.values()):v.options;if(x.every(a=>a._def.typeName in a5&&(!a._def.checks||!a._def.checks.length))){let a=x.reduce((a,b)=>{let c=a5[b._def.typeName];return c&&!a.includes(c)?[...a,c]:a},[]);return{type:a.length>1?a:a[0]}}if(x.every(a=>"ZodLiteral"===a._def.typeName&&!a.description)){let a=x.reduce((a,b)=>{let c=typeof b._def.value;switch(c){case"string":case"number":case"boolean":return[...a,c];case"bigint":return[...a,"integer"];case"object":if(null===b._def.value)return[...a,"null"];default:return a}},[]);if(a.length===x.length){let b=a.filter((a,b,c)=>c.indexOf(a)===b);return{type:b.length>1?b:b[0],enum:x.reduce((a,b)=>a.includes(b._def.value)?a:[...a,b._def.value],[])}}}else if(x.every(a=>"ZodEnum"===a._def.typeName))return{type:"string",enum:x.reduce((a,b)=>[...a,...b._def.values.filter(b=>!a.includes(b))],[])};return a6(v,w);case aA.ZodIntersection:var y=a,z=c;let A=[a7(y.left._def,{...z,currentPath:[...z.currentPath,"allOf","0"]}),a7(y.right._def,{...z,currentPath:[...z.currentPath,"allOf","1"]})].filter(a=>!!a),B="jsonSchema2019-09"===z.target?{unevaluatedProperties:!1}:void 0,C=[];return A.forEach(a=>{if((!("type"in a)||"string"!==a.type)&&"allOf"in a)C.push(...a.allOf),void 0===a.unevaluatedProperties&&(B=void 0);else{let b=a;if("additionalProperties"in a&&!1===a.additionalProperties){let{additionalProperties:c,...d}=a;b=d}else B=void 0;C.push(b)}}),C.length?{allOf:C,...B}:void 0;case aA.ZodTuple:return d=a,e=c,d.rest?{type:"array",minItems:d.items.length,items:d.items.map((a,b)=>a7(a._def,{...e,currentPath:[...e.currentPath,"items",`${b}`]})).reduce((a,b)=>void 0===b?a:[...a,b],[]),additionalItems:a7(d.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:d.items.length,maxItems:d.items.length,items:d.items.map((a,b)=>a7(a._def,{...e,currentPath:[...e.currentPath,"items",`${b}`]})).reduce((a,b)=>void 0===b?a:[...a,b],[])};case aA.ZodRecord:return a4(a,c);case aA.ZodLiteral:var D=a,E=c;let F=typeof D.value;return"bigint"!==F&&"number"!==F&&"boolean"!==F&&"string"!==F?{type:Array.isArray(D.value)?"array":"object"}:"openApi3"===E.target?{type:"bigint"===F?"integer":F,enum:[D.value]}:{type:"bigint"===F?"integer":F,const:D.value};case aA.ZodEnum:return{type:"string",enum:Array.from(a.values)};case aA.ZodNativeEnum:var G=a;let H=G.values,I=Object.keys(G.values).filter(a=>"number"!=typeof H[H[a]]).map(a=>H[a]),J=Array.from(new Set(I.map(a=>typeof a)));return{type:1===J.length?"string"===J[0]?"string":"number":["string","number"],enum:I};case aA.ZodNullable:var K=a,L=c;if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(K.innerType._def.typeName)&&(!K.innerType._def.checks||!K.innerType._def.checks.length))return"openApi3"===L.target?{type:a5[K.innerType._def.typeName],nullable:!0}:{type:[a5[K.innerType._def.typeName],"null"]};if("openApi3"===L.target){let a=a7(K.innerType._def,{...L,currentPath:[...L.currentPath]});return a&&"$ref"in a?{allOf:[a],nullable:!0}:a&&{...a,nullable:!0}}let M=a7(K.innerType._def,{...L,currentPath:[...L.currentPath,"anyOf","0"]});return M&&{anyOf:[M,{type:"null"}]};case aA.ZodOptional:var N=a,O=c;if(O.currentPath.toString()===O.propertyPath?.toString())return a7(N.innerType._def,O);let P=a7(N.innerType._def,{...O,currentPath:[...O.currentPath,"anyOf","1"]});return P?{anyOf:[{not:aV(O)},P]}:aV(O);case aA.ZodMap:return f=a,"record"===(g=c).mapStrategy?a4(f,g):{type:"array",maxItems:125,items:{type:"array",items:[a7(f.keyType._def,{...g,currentPath:[...g.currentPath,"items","items","0"]})||aV(g),a7(f.valueType._def,{...g,currentPath:[...g.currentPath,"items","items","1"]})||aV(g)],minItems:2,maxItems:2}};case aA.ZodSet:var Q=a,R=c;let S={type:"array",uniqueItems:!0,items:a7(Q.valueType._def,{...R,currentPath:[...R.currentPath,"items"]})};return Q.minSize&&aX(S,"minItems",Q.minSize.value,Q.minSize.message,R),Q.maxSize&&aX(S,"maxItems",Q.maxSize.value,Q.maxSize.message,R),S;case aA.ZodLazy:return()=>a.getter()._def;case aA.ZodPromise:return a7(a.type._def,c);case aA.ZodNaN:case aA.ZodNever:return"openAi"===(h=c).target?void 0:{not:aV({...h,currentPath:[...h.currentPath,"not"]})};case aA.ZodEffects:return i=a,"input"===(j=c).effectStrategy?a7(i.schema._def,j):aV(j);case aA.ZodAny:case aA.ZodUnknown:return aV(c);case aA.ZodDefault:return k=a,l=c,{...a7(k.innerType._def,l),default:k.defaultValue()};case aA.ZodBranded:return aY(a,c);case aA.ZodReadonly:case aA.ZodCatch:return a7(a.innerType._def,c);case aA.ZodPipeline:var T=a,U=c;if("input"===U.pipeStrategy)return a7(T.in._def,U);if("output"===U.pipeStrategy)return a7(T.out._def,U);let V=a7(T.in._def,{...U,currentPath:[...U.currentPath,"allOf","0"]}),W=a7(T.out._def,{...U,currentPath:[...U.currentPath,"allOf",V?"1":"0"]});return{allOf:[V,W].filter(a=>void 0!==a)};case aA.ZodFunction:case aA.ZodVoid:case aA.ZodSymbol:default:return}})(a,a.typeName,b),g="function"==typeof f?a7(f(),b):f;if(g&&a9(a,b,g),b.postProcess){let c=b.postProcess(g,a,b);return e.jsonSchema=g,c}return e.jsonSchema=g,g}let a8=(a,b)=>{switch(b.$refStrategy){case"root":return{$ref:a.path.join("/")};case"relative":return{$ref:aU(b.currentPath,a.path)};case"none":case"seen":if(a.path.length<b.currentPath.length&&a.path.every((a,c)=>b.currentPath[c]===a))return console.warn(`Recursive reference detected at ${b.currentPath.join("/")}! Defaulting to any`),aV(b);return"seen"===b.$refStrategy?aV(b):void 0}},a9=(a,b,c)=>(a.description&&(c.description=a.description,b.markdownDescription&&(c.markdownDescription=a.description)),c);function ba(a,b){if(aI(a)){var c;return aH.bl(a,{target:(c=b?.target)&&"jsonSchema7"!==c&&"draft-7"!==c&&("jsonSchema2019-09"===c||"draft-2020-12"===c)?"draft-2020-12":"draft-7",io:b?.pipeStrategy??"input"})}return((a,b)=>{let c=(a=>{let b,c="string"==typeof(b=a)?{...aT,name:b}:{...aT,...b},d=void 0!==c.name?[...c.basePath,c.definitionPath,c.name]:c.basePath;return{...c,flags:{hasReferencedOpenAiAnyType:!1},currentPath:d,propertyPath:void 0,seen:new Map(Object.entries(c.definitions).map(([a,b])=>[b._def,{def:b._def,path:[...c.basePath,c.definitionPath,a],jsonSchema:void 0}]))}})(b),d="object"==typeof b&&b.definitions?Object.entries(b.definitions).reduce((a,[b,d])=>({...a,[b]:a7(d._def,{...c,currentPath:[...c.basePath,c.definitionPath,b]},!0)??aV(c)}),{}):void 0,e="string"==typeof b?b:b?.nameStrategy==="title"?void 0:b?.name,f=a7(a._def,void 0===e?c:{...c,currentPath:[...c.basePath,c.definitionPath,e]},!1)??aV(c),g="object"==typeof b&&void 0!==b.name&&"title"===b.nameStrategy?b.name:void 0;void 0!==g&&(f.title=g),c.flags.hasReferencedOpenAiAnyType&&(d||(d={}),d[c.openAiAnyTypeName]||(d[c.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:"relative"===c.$refStrategy?"1":[...c.basePath,c.definitionPath,c.openAiAnyTypeName].join("/")}}));let h=void 0===e?d?{...f,[c.definitionPath]:d}:f:{$ref:[..."relative"===c.$refStrategy?[]:c.basePath,c.definitionPath,e].join("/"),[c.definitionPath]:{...d,[e]:f}};return"jsonSchema7"===c.target?h.$schema="http://json-schema.org/draft-07/schema#":("jsonSchema2019-09"===c.target||"openAi"===c.target)&&(h.$schema="https://json-schema.org/draft/2019-09/schema#"),"openAi"===c.target&&("anyOf"in h||"oneOf"in h||"allOf"in h||"type"in h&&Array.isArray(h.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),h})(a,{strictUnions:b?.strictUnions??!0,pipeStrategy:b?.pipeStrategy??"input"})}function bb(a){let b=aM(a),c=b?.method;if(!c)throw Error("Schema is missing a method literal");let d=aP(c);if("string"!=typeof d)throw Error("Schema method literal must be a string");return d}function bc(a,b){let c=aK(a,b);if(!c.success)throw c.error;return c.data}class bd{constructor(a){this._options=a,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(aQ.Sq,a=>{this._oncancel(a)}),this.setNotificationHandler(aQ._r,a=>{this._onprogress(a)}),this.setRequestHandler(aQ.tC,a=>({})),this._taskStore=a?.taskStore,this._taskMessageQueue=a?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(aQ.Ql,async(a,b)=>{let c=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,"Failed to retrieve task: Task not found");return{...c}}),this.setRequestHandler(aQ.oQ,async(a,b)=>{let c=async()=>{let d=a.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(d,b.sessionId);){if("response"===a.type||"error"===a.type){let b=a.message,c=b.id,d=this._requestResolvers.get(c);if(d)this._requestResolvers.delete(c),d("response"===a.type?b:new aQ.Nh(b.error.code,b.error.message,b.error.data));else{let b="response"===a.type?"Response":"Error";this._onerror(Error(`${b} handler missing for request ${c}`))}continue}await this._transport?.send(a.message,{relatedRequestId:b.requestId})}}let e=await this._taskStore.getTask(d,b.sessionId);if(!e)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found: ${d}`);if(!aR(e.status))return await this._waitForTaskUpdate(d,b.signal),await c();if(aR(e.status)){let a=await this._taskStore.getTaskResult(d,b.sessionId);return this._clearTaskQueue(d),{...a,_meta:{...a._meta,[aQ.EV]:{taskId:d}}}}return await c()};return await c()}),this.setRequestHandler(aQ.zR,async(a,b)=>{try{let{tasks:c,nextCursor:d}=await this._taskStore.listTasks(a.params?.cursor,b.sessionId);return{tasks:c,nextCursor:d,_meta:{}}}catch(a){throw new aQ.Nh(aQ.O4.InvalidParams,`Failed to list tasks: ${a instanceof Error?a.message:String(a)}`)}}),this.setRequestHandler(aQ.gd,async(a,b)=>{try{let c=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found: ${a.params.taskId}`);if(aR(c.status))throw new aQ.Nh(aQ.O4.InvalidParams,`Cannot cancel task in terminal status: ${c.status}`);await this._taskStore.updateTaskStatus(a.params.taskId,"cancelled","Client cancelled task execution.",b.sessionId),this._clearTaskQueue(a.params.taskId);let d=await this._taskStore.getTask(a.params.taskId,b.sessionId);if(!d)throw new aQ.Nh(aQ.O4.InvalidParams,`Task not found after cancellation: ${a.params.taskId}`);return{_meta:{},...d}}catch(a){if(a instanceof aQ.Nh)throw a;throw new aQ.Nh(aQ.O4.InvalidRequest,`Failed to cancel task: ${a instanceof Error?a.message:String(a)}`)}}))}async _oncancel(a){if(!a.params.requestId)return;let b=this._requestHandlerAbortControllers.get(a.params.requestId);b?.abort(a.params.reason)}_setupTimeout(a,b,c,d,e=!1){this._timeoutInfo.set(a,{timeoutId:setTimeout(d,b),startTime:Date.now(),timeout:b,maxTotalTimeout:c,resetTimeoutOnProgress:e,onTimeout:d})}_resetTimeout(a){let b=this._timeoutInfo.get(a);if(!b)return!1;let c=Date.now()-b.startTime;if(b.maxTotalTimeout&&c>=b.maxTotalTimeout)throw this._timeoutInfo.delete(a),aQ.Nh.fromError(aQ.O4.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:b.maxTotalTimeout,totalElapsed:c});return clearTimeout(b.timeoutId),b.timeoutId=setTimeout(b.onTimeout,b.timeout),!0}_cleanupTimeout(a){let b=this._timeoutInfo.get(a);b&&(clearTimeout(b.timeoutId),this._timeoutInfo.delete(a))}async connect(a){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=a;let b=this.transport?.onclose;this._transport.onclose=()=>{b?.(),this._onclose()};let c=this.transport?.onerror;this._transport.onerror=a=>{c?.(a),this._onerror(a)};let d=this._transport?.onmessage;this._transport.onmessage=(a,b)=>{d?.(a,b),(0,aQ.ig)(a)||(0,aQ.LW)(a)?this._onresponse(a):(0,aQ.vo)(a)?this._onrequest(a,b):(0,aQ.lg)(a)?this._onnotification(a):this._onerror(Error(`Unknown message type: ${JSON.stringify(a)}`))},await this._transport.start()}_onclose(){let a=this._responseHandlers;for(let a of(this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear(),this._requestHandlerAbortControllers.values()))a.abort();this._requestHandlerAbortControllers.clear();let b=aQ.Nh.fromError(aQ.O4.ConnectionClosed,"Connection closed");for(let c of(this._transport=void 0,this.onclose?.(),a.values()))c(b)}_onerror(a){this.onerror?.(a)}_onnotification(a){let b=this._notificationHandlers.get(a.method)??this.fallbackNotificationHandler;void 0!==b&&Promise.resolve().then(()=>b(a)).catch(a=>this._onerror(Error(`Uncaught error in notification handler: ${a}`)))}_onrequest(a,b){let c=this._requestHandlers.get(a.method)??this.fallbackRequestHandler,d=this._transport,e=a.params?._meta?.[aQ.EV]?.taskId;if(void 0===c){let b={jsonrpc:"2.0",id:a.id,error:{code:aQ.O4.MethodNotFound,message:"Method not found"}};e&&this._taskMessageQueue?this._enqueueTaskMessage(e,{type:"error",message:b,timestamp:Date.now()},d?.sessionId).catch(a=>this._onerror(Error(`Failed to enqueue error response: ${a}`))):d?.send(b).catch(a=>this._onerror(Error(`Failed to send an error response: ${a}`)));return}let f=new AbortController;this._requestHandlerAbortControllers.set(a.id,f);let g=(0,aQ.bZ)(a.params)?a.params.task:void 0,h=this._taskStore?this.requestTaskStore(a,d?.sessionId):void 0,i={signal:f.signal,sessionId:d?.sessionId,_meta:a.params?._meta,sendNotification:async b=>{if(f.signal.aborted)return;let c={relatedRequestId:a.id};e&&(c.relatedTask={taskId:e}),await this.notification(b,c)},sendRequest:async(b,c,d)=>{if(f.signal.aborted)throw new aQ.Nh(aQ.O4.ConnectionClosed,"Request was cancelled");let g={...d,relatedRequestId:a.id};e&&!g.relatedTask&&(g.relatedTask={taskId:e});let i=g.relatedTask?.taskId??e;return i&&h&&await h.updateTaskStatus(i,"input_required"),await this.request(b,c,g)},authInfo:b?.authInfo,requestId:a.id,requestInfo:b?.requestInfo,taskId:e,taskStore:h,taskRequestedTtl:g?.ttl,closeSSEStream:b?.closeSSEStream,closeStandaloneSSEStream:b?.closeStandaloneSSEStream};Promise.resolve().then(()=>{g&&this.assertTaskHandlerCapability(a.method)}).then(()=>c(a,i)).then(async b=>{if(f.signal.aborted)return;let c={result:b,jsonrpc:"2.0",id:a.id};e&&this._taskMessageQueue?await this._enqueueTaskMessage(e,{type:"response",message:c,timestamp:Date.now()},d?.sessionId):await d?.send(c)},async b=>{if(f.signal.aborted)return;let c={jsonrpc:"2.0",id:a.id,error:{code:Number.isSafeInteger(b.code)?b.code:aQ.O4.InternalError,message:b.message??"Internal error",...void 0!==b.data&&{data:b.data}}};e&&this._taskMessageQueue?await this._enqueueTaskMessage(e,{type:"error",message:c,timestamp:Date.now()},d?.sessionId):await d?.send(c)}).catch(a=>this._onerror(Error(`Failed to send response: ${a}`))).finally(()=>{this._requestHandlerAbortControllers.delete(a.id)})}_onprogress(a){let{progressToken:b,...c}=a.params,d=Number(b),e=this._progressHandlers.get(d);if(!e)return void this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(a)}`));let f=this._responseHandlers.get(d),g=this._timeoutInfo.get(d);if(g&&f&&g.resetTimeoutOnProgress)try{this._resetTimeout(d)}catch(a){this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),f(a);return}e(c)}_onresponse(a){let b=Number(a.id),c=this._requestResolvers.get(b);if(c){this._requestResolvers.delete(b),c((0,aQ.ig)(a)?a:new aQ.Nh(a.error.code,a.error.message,a.error.data));return}let d=this._responseHandlers.get(b);if(void 0===d)return void this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(a)}`));this._responseHandlers.delete(b),this._cleanupTimeout(b);let e=!1;if((0,aQ.ig)(a)&&a.result&&"object"==typeof a.result){let c=a.result;if(c.task&&"object"==typeof c.task){let a=c.task;"string"==typeof a.taskId&&(e=!0,this._taskProgressTokens.set(a.taskId,b))}}e||this._progressHandlers.delete(b),d((0,aQ.ig)(a)?a:aQ.Nh.fromError(a.error.code,a.error.message,a.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}async *requestStream(a,b,c){let d,{task:e}=c??{};if(!e){try{let d=await this.request(a,b,c);yield{type:"result",result:d}}catch(a){yield{type:"error",error:a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.InternalError,String(a))}}return}try{let e=await this.request(a,aQ.Mg,c);if(e.task)d=e.task.taskId,yield{type:"taskCreated",task:e.task};else throw new aQ.Nh(aQ.O4.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:d},c);if(yield{type:"taskStatus",task:a},aR(a.status)){if("completed"===a.status){let a=await this.getTaskResult({taskId:d},b,c);yield{type:"result",result:a}}else"failed"===a.status?yield{type:"error",error:new aQ.Nh(aQ.O4.InternalError,`Task ${d} failed`)}:"cancelled"===a.status&&(yield{type:"error",error:new aQ.Nh(aQ.O4.InternalError,`Task ${d} was cancelled`)});return}if("input_required"===a.status){let a=await this.getTaskResult({taskId:d},b,c);yield{type:"result",result:a};return}let e=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(a=>setTimeout(a,e)),c?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.InternalError,String(a))}}}request(a,b,c){let{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f,task:g,relatedTask:h}=c??{};return new Promise((i,j)=>{let k=a=>{j(a)};if(!this._transport)return void k(Error("Not connected"));if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(a.method),g&&this.assertTaskCapability(a.method)}catch(a){k(a);return}c?.signal?.throwIfAborted();let l=this._requestMessageId++,m={...a,jsonrpc:"2.0",id:l};c?.onprogress&&(this._progressHandlers.set(l,c.onprogress),m.params={...a.params,_meta:{...a.params?._meta||{},progressToken:l}}),g&&(m.params={...m.params,task:g}),h&&(m.params={...m.params,_meta:{...m.params?._meta||{},[aQ.EV]:h}});let n=a=>{this._responseHandlers.delete(l),this._progressHandlers.delete(l),this._cleanupTimeout(l),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:l,reason:String(a)}},{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f}).catch(a=>this._onerror(Error(`Failed to send cancellation: ${a}`))),j(a instanceof aQ.Nh?a:new aQ.Nh(aQ.O4.RequestTimeout,String(a)))};this._responseHandlers.set(l,a=>{if(!c?.signal?.aborted){if(a instanceof Error)return j(a);try{let c=aK(b,a.result);c.success?i(c.data):j(c.error)}catch(a){j(a)}}}),c?.signal?.addEventListener("abort",()=>{n(c?.signal?.reason)});let o=c?.timeout??6e4;this._setupTimeout(l,o,c?.maxTotalTimeout,()=>n(aQ.Nh.fromError(aQ.O4.RequestTimeout,"Request timed out",{timeout:o})),c?.resetTimeoutOnProgress??!1);let p=h?.taskId;if(p){let a=a=>{let b=this._responseHandlers.get(l);b?b(a):this._onerror(Error(`Response handler missing for side-channeled request ${l}`))};this._requestResolvers.set(l,a),this._enqueueTaskMessage(p,{type:"request",message:m,timestamp:Date.now()}).catch(a=>{this._cleanupTimeout(l),j(a)})}else this._transport.send(m,{relatedRequestId:d,resumptionToken:e,onresumptiontoken:f}).catch(a=>{this._cleanupTimeout(l),j(a)})})}async getTask(a,b){return this.request({method:"tasks/get",params:a},aQ.Sc,b)}async getTaskResult(a,b,c){return this.request({method:"tasks/result",params:a},b,c)}async listTasks(a,b){return this.request({method:"tasks/list",params:a},aQ.a5,b)}async cancelTask(a,b){return this.request({method:"tasks/cancel",params:a},aQ.gH,b)}async notification(a,b){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability(a.method);let c=b?.relatedTask?.taskId;if(c){let d={...a,jsonrpc:"2.0",params:{...a.params,_meta:{...a.params?._meta||{},[aQ.EV]:b.relatedTask}}};await this._enqueueTaskMessage(c,{type:"notification",message:d,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(a.method)&&!a.params&&!b?.relatedRequestId&&!b?.relatedTask){if(this._pendingDebouncedNotifications.has(a.method))return;this._pendingDebouncedNotifications.add(a.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(a.method),!this._transport)return;let c={...a,jsonrpc:"2.0"};b?.relatedTask&&(c={...c,params:{...c.params,_meta:{...c.params?._meta||{},[aQ.EV]:b.relatedTask}}}),this._transport?.send(c,b).catch(a=>this._onerror(a))});return}let d={...a,jsonrpc:"2.0"};b?.relatedTask&&(d={...d,params:{...d.params,_meta:{...d.params?._meta||{},[aQ.EV]:b.relatedTask}}}),await this._transport.send(d,b)}setRequestHandler(a,b){let c=bb(a);this.assertRequestHandlerCapability(c),this._requestHandlers.set(c,(c,d)=>Promise.resolve(b(bc(a,c),d)))}removeRequestHandler(a){this._requestHandlers.delete(a)}assertCanSetRequestHandler(a){if(this._requestHandlers.has(a))throw Error(`A request handler for ${a} already exists, which would be overridden`)}setNotificationHandler(a,b){let c=bb(a);this._notificationHandlers.set(c,c=>Promise.resolve(b(bc(a,c))))}removeNotificationHandler(a){this._notificationHandlers.delete(a)}_cleanupTaskProgressHandler(a){let b=this._taskProgressTokens.get(a);void 0!==b&&(this._progressHandlers.delete(b),this._taskProgressTokens.delete(a))}async _enqueueTaskMessage(a,b,c){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let d=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(a,b,c,d)}async _clearTaskQueue(a,b){if(this._taskMessageQueue){for(let c of(await this._taskMessageQueue.dequeueAll(a,b)))if("request"===c.type&&(0,aQ.vo)(c.message)){let b=c.message.id,d=this._requestResolvers.get(b);d?(d(new aQ.Nh(aQ.O4.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(b)):this._onerror(Error(`Resolver missing for request ${b} during task ${a} cleanup`))}}}async _waitForTaskUpdate(a,b){let c=this._options?.defaultTaskPollInterval??1e3;try{let b=await this._taskStore?.getTask(a);b?.pollInterval&&(c=b.pollInterval)}catch{}return new Promise((a,d)=>{if(b.aborted)return void d(new aQ.Nh(aQ.O4.InvalidRequest,"Request cancelled"));let e=setTimeout(a,c);b.addEventListener("abort",()=>{clearTimeout(e),d(new aQ.Nh(aQ.O4.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(a,b){let c=this._taskStore;if(!c)throw Error("No task store configured");return{createTask:async d=>{if(!a)throw Error("No request provided");return await c.createTask(d,a.id,{method:a.method,params:a.params},b)},getTask:async a=>{let d=await c.getTask(a,b);if(!d)throw new aQ.Nh(aQ.O4.InvalidParams,"Failed to retrieve task: Task not found");return d},storeTaskResult:async(a,d,e)=>{await c.storeTaskResult(a,d,e,b);let f=await c.getTask(a,b);if(f){let b=aQ.ki.parse({method:"notifications/tasks/status",params:f});await this.notification(b),aR(f.status)&&this._cleanupTaskProgressHandler(a)}},getTaskResult:a=>c.getTaskResult(a,b),updateTaskStatus:async(a,d,e)=>{let f=await c.getTask(a,b);if(!f)throw new aQ.Nh(aQ.O4.InvalidParams,`Task "${a}" not found - it may have been cleaned up`);if(aR(f.status))throw new aQ.Nh(aQ.O4.InvalidParams,`Cannot update task "${a}" from terminal status "${f.status}" to "${d}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await c.updateTaskStatus(a,d,e,b);let g=await c.getTask(a,b);if(g){let b=aQ.ki.parse({method:"notifications/tasks/status",params:g});await this.notification(b),aR(g.status)&&this._cleanupTaskProgressHandler(a)}},listTasks:a=>c.listTasks(a,b)}}}function be(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}var bf=c(13370),bg=c(3395);class bh{constructor(a){this._ajv=a??function(){let a=new bf({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return bg(a),a}()}getValidator(a){let b="$id"in a&&"string"==typeof a.$id?this._ajv.getSchema(a.$id)??this._ajv.compile(a):this._ajv.compile(a);return a=>b(a)?{valid:!0,data:a,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(b.errors)}}}class bi{constructor(a){this._server=a}requestStream(a,b,c){return this._server.requestStream(a,b,c)}async getTask(a,b){return this._server.getTask({taskId:a},b)}async getTaskResult(a,b,c){return this._server.getTaskResult({taskId:a},b,c)}async listTasks(a,b){return this._server.listTasks(a?{cursor:a}:void 0,b)}async cancelTask(a,b){return this._server.cancelTask({taskId:a},b)}}class bj extends bd{constructor(a,b){super(b),this._serverInfo=a,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(aQ.FP.options.map((a,b)=>[a,b])),this.isMessageIgnored=(a,b)=>{let c=this._loggingLevels.get(b);return!!c&&this.LOG_LEVEL_SEVERITY.get(a)<this.LOG_LEVEL_SEVERITY.get(c)},this._capabilities=b?.capabilities??{},this._instructions=b?.instructions,this._jsonSchemaValidator=b?.jsonSchemaValidator??new bh,this.setRequestHandler(aQ.rk,a=>this._oninitialize(a)),this.setNotificationHandler(aQ.ZC,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(aQ.b_,async(a,b)=>{let c=b.sessionId||b.requestInfo?.headers["mcp-session-id"]||void 0,{level:d}=a.params,e=aQ.FP.safeParse(d);return e.success&&this._loggingLevels.set(c,e.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new bi(this)}),this._experimental}registerCapabilities(a){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=function(a,b){let c={...a};for(let a in b){let d=b[a];if(void 0===d)continue;let e=c[a];be(e)&&be(d)?c[a]={...e,...d}:c[a]=d}return c}(this._capabilities,a)}setRequestHandler(a,b){let c,d=aM(a),e=d?.method;if(!e)throw Error("Schema is missing a method literal");if(aI(e)){let a=e._zod?.def;c=a?.value??e.value}else{let a=e._def;c=a?.value??e.value}if("string"!=typeof c)throw Error("Schema method literal must be a string");if("tools/call"===c){let c=async(a,c)=>{let d=aK(aQ.FT,a);if(!d.success){let a=d.error instanceof Error?d.error.message:String(d.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid tools/call request: ${a}`)}let{params:e}=d.data,f=await Promise.resolve(b(a,c));if(e.task){let a=aK(aQ.Mg,f);if(!a.success){let b=a.error instanceof Error?a.error.message:String(a.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid task creation result: ${b}`)}return a.data}let g=aK(aQ.TF,f);if(!g.success){let a=g.error instanceof Error?g.error.message:String(g.error);throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid tools/call result: ${a}`)}return g.data};return super.setRequestHandler(a,c)}return super.setRequestHandler(a,b)}assertCapabilityForMethod(a){switch(a){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${a})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${a})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${a})`)}}assertNotificationCapability(a){switch(a){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${a})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${a})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${a})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${a})`)}}assertRequestHandlerCapability(a){if(this._capabilities)switch(a){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${a})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${a})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${a})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${a})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${a})`)}}assertTaskCapability(a){var b=this._clientCapabilities?.tasks?.requests,c="Client";if(!b)throw Error(`${c} does not support task creation (required for ${a})`);switch(a){case"sampling/createMessage":if(!b.sampling?.createMessage)throw Error(`${c} does not support task creation for sampling/createMessage (required for ${a})`);break;case"elicitation/create":if(!b.elicitation?.create)throw Error(`${c} does not support task creation for elicitation/create (required for ${a})`)}}assertTaskHandlerCapability(a){if(this._capabilities){var b=this._capabilities.tasks?.requests,c="Server";if(!b)throw Error(`${c} does not support task creation (required for ${a})`);if("tools/call"===a&&!b.tools?.call)throw Error(`${c} does not support task creation for tools/call (required for ${a})`)}}async _oninitialize(a){let b=a.params.protocolVersion;return this._clientCapabilities=a.params.capabilities,this._clientVersion=a.params.clientInfo,{protocolVersion:aQ.Iu.includes(b)?b:aQ.aE,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},aQ.wR)}async createMessage(a,b){if((a.tools||a.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(a.messages.length>0){let b=a.messages[a.messages.length-1],c=Array.isArray(b.content)?b.content:[b.content],d=c.some(a=>"tool_result"===a.type),e=a.messages.length>1?a.messages[a.messages.length-2]:void 0,f=e?Array.isArray(e.content)?e.content:[e.content]:[],g=f.some(a=>"tool_use"===a.type);if(d){if(c.some(a=>"tool_result"!==a.type))throw Error("The last message must contain only tool_result content if any is present");if(!g)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(g){let a=new Set(f.filter(a=>"tool_use"===a.type).map(a=>a.id)),b=new Set(c.filter(a=>"tool_result"===a.type).map(a=>a.toolUseId));if(a.size!==b.size||![...a].every(a=>b.has(a)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return a.tools?this.request({method:"sampling/createMessage",params:a},aQ.TI,b):this.request({method:"sampling/createMessage",params:a},aQ.K1,b)}async elicitInput(a,b){switch(a.mode??"form"){case"url":if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");return this.request({method:"elicitation/create",params:a},aQ.n_,b);case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let c="form"===a.mode?a:{...a,mode:"form"},d=await this.request({method:"elicitation/create",params:c},aQ.n_,b);if("accept"===d.action&&d.content&&c.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(c.requestedSchema)(d.content);if(!a.valid)throw new aQ.Nh(aQ.O4.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(a){if(a instanceof aQ.Nh)throw a;throw new aQ.Nh(aQ.O4.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return d}}}createElicitationCompletionNotifier(a,b){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:a}},b)}async listRoots(a,b){return this.request({method:"roots/list",params:a},aQ.Cs,b)}async sendLoggingMessage(a,b){if(this._capabilities.logging&&!this.isMessageIgnored(a.level,b))return this.notification({method:"notifications/message",params:a})}async sendResourceUpdated(a){return this.notification({method:"notifications/resources/updated",params:a})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}let bk=Symbol.for("mcp.completable");function bl(a){return!!a&&"object"==typeof a&&bk in a}(aB||(aB={})).Completable="McpCompletable";let bm=/^[A-Za-z0-9._-]{1,128}$/;function bn(a){let b=function(a){let b=[];if(0===a.length)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(a.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${a.length})`]};if(a.includes(" ")&&b.push("Tool name contains spaces, which may cause parsing issues"),a.includes(",")&&b.push("Tool name contains commas, which may cause parsing issues"),(a.startsWith("-")||a.endsWith("-"))&&b.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(a.startsWith(".")||a.endsWith("."))&&b.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!bm.test(a)){let c=a.split("").filter(a=>!/[A-Za-z0-9._-]/.test(a)).filter((a,b,c)=>c.indexOf(a)===b);return b.push(`Tool name contains invalid characters: ${c.map(a=>`"${a}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:b}}return{isValid:!0,warnings:b}}(a);var c=b.warnings;if(c.length>0){for(let b of(console.warn(`Tool name validation warning for "${a}":`),c))console.warn(` - ${b}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}return b.isValid}class bo{constructor(a){this._mcpServer=a}registerToolTask(a,b,c){let d={taskSupport:"required",...b.execution};if("forbidden"===d.taskSupport)throw Error(`Cannot register task-based tool '${a}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(a,b.title,b.description,b.inputSchema,b.outputSchema,b.annotations,d,b._meta,c)}}var bp=c(77258);class bq{constructor(a,b){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new bj(a,b)}get experimental(){return this._experimental||(this._experimental={tasks:new bo(this)}),this._experimental}async connect(a){return await this.server.connect(a)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.gW)),this.server.assertCanSetRequestHandler(bv(aQ.FT)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(aQ.gW,()=>({tools:Object.entries(this._registeredTools).filter(([,a])=>a.enabled).map(([a,b])=>{let c={name:a,title:b.title,description:b.description,inputSchema:(()=>{let a=aN(b.inputSchema);return a?ba(a,{strictUnions:!0,pipeStrategy:"input"}):br})(),annotations:b.annotations,execution:b.execution,_meta:b._meta};if(b.outputSchema){let a=aN(b.outputSchema);a&&(c.outputSchema=ba(a,{strictUnions:!0,pipeStrategy:"output"}))}return c})})),this.server.setRequestHandler(aQ.FT,async(a,b)=>{try{let c=this._registeredTools[a.params.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Tool ${a.params.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Tool ${a.params.name} disabled`);let d=!!a.params.task,e=c.execution?.taskSupport,f="createTask"in c.handler;if(("required"===e||"optional"===e)&&!f)throw new aQ.Nh(aQ.O4.InternalError,`Tool ${a.params.name} has taskSupport '${e}' but was not registered with registerToolTask`);if("required"===e&&!d)throw new aQ.Nh(aQ.O4.MethodNotFound,`Tool ${a.params.name} requires task augmentation (taskSupport: 'required')`);if("optional"===e&&!d&&f)return await this.handleAutomaticTaskPolling(c,a,b);let g=await this.validateToolInput(c,a.params.arguments,a.params.name),h=await this.executeToolHandler(c,g,b);if(d)return h;return await this.validateToolOutput(c,h,a.params.name),h}catch(a){if(a instanceof aQ.Nh&&a.code===aQ.O4.UrlElicitationRequired)throw a;return this.createToolError(a instanceof Error?a.message:String(a))}}),this._toolHandlersInitialized=!0)}createToolError(a){return{content:[{type:"text",text:a}],isError:!0}}async validateToolInput(a,b,c){if(!a.inputSchema)return;let d=aN(a.inputSchema)??a.inputSchema,e=await aL(d,b);if(!e.success){let a=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Input validation error: Invalid arguments for tool ${c}: ${a}`)}return e.data}async validateToolOutput(a,b,c){if(!a.outputSchema||!("content"in b)||b.isError)return;if(!b.structuredContent)throw new aQ.Nh(aQ.O4.InvalidParams,`Output validation error: Tool ${c} has an output schema but no structured content was provided`);let d=aN(a.outputSchema),e=await aL(d,b.structuredContent);if(!e.success){let a=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Output validation error: Invalid structured content for tool ${c}: ${a}`)}}async executeToolHandler(a,b,c){let d=a.handler;if("createTask"in d){if(!c.taskStore)throw Error("No task store provided.");let e={...c,taskStore:c.taskStore};return a.inputSchema?await Promise.resolve(d.createTask(b,e)):await Promise.resolve(d.createTask(e))}return a.inputSchema?await Promise.resolve(d(b,c)):await Promise.resolve(d(c))}async handleAutomaticTaskPolling(a,b,c){if(!c.taskStore)throw Error("No task store provided for task-capable tool.");let d=await this.validateToolInput(a,b.params.arguments,b.params.name),e=a.handler,f={...c,taskStore:c.taskStore},g=d?await Promise.resolve(e.createTask(d,f)):await Promise.resolve(e.createTask(f)),h=g.task.taskId,i=g.task,j=i.pollInterval??5e3;for(;"completed"!==i.status&&"failed"!==i.status&&"cancelled"!==i.status;){await new Promise(a=>setTimeout(a,j));let a=await c.taskStore.getTask(h);if(!a)throw new aQ.Nh(aQ.O4.InternalError,`Task ${h} not found during polling`);i=a}return await c.taskStore.getTaskResult(h)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.iK)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(aQ.iK,async a=>{switch(a.params.ref.type){case"ref/prompt":return(0,aQ.uv)(a),this.handlePromptCompletion(a,a.params.ref);case"ref/resource":return(0,aQ.X6)(a),this.handleResourceCompletion(a,a.params.ref);default:throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid completion reference: ${a.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(a,b){let c=this._registeredPrompts[b.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${b.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${b.name} disabled`);if(!c.argsSchema)return bx;let d=aM(c.argsSchema),e=d?.[a.params.argument.name];if(!bl(e))return bx;let f=function(a){let b=a[bk];return b?.complete}(e);return f?bw(await f(a.params.argument.value,a.params.context)):bx}async handleResourceCompletion(a,b){let c=Object.values(this._registeredResourceTemplates).find(a=>a.resourceTemplate.uriTemplate.toString()===b.uri);if(!c){if(this._registeredResources[b.uri])return bx;throw new aQ.Nh(aQ.O4.InvalidParams,`Resource template ${a.params.ref.uri} not found`)}let d=c.resourceTemplate.completeCallback(a.params.argument.name);return d?bw(await d(a.params.argument.value,a.params.context)):bx}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.OI)),this.server.assertCanSetRequestHandler(bv(aQ.s)),this.server.assertCanSetRequestHandler(bv(aQ.R6)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(aQ.OI,async(a,b)=>{let c=Object.entries(this._registeredResources).filter(([a,b])=>b.enabled).map(([a,b])=>({uri:a,name:b.name,...b.metadata})),d=[];for(let a of Object.values(this._registeredResourceTemplates))if(a.resourceTemplate.listCallback)for(let c of(await a.resourceTemplate.listCallback(b)).resources)d.push({...a.metadata,...c});return{resources:[...c,...d]}}),this.server.setRequestHandler(aQ.s,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([a,b])=>({name:a,uriTemplate:b.resourceTemplate.uriTemplate.toString(),...b.metadata}))})),this.server.setRequestHandler(aQ.R6,async(a,b)=>{let c=new URL(a.params.uri),d=this._registeredResources[c.toString()];if(d){if(!d.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Resource ${c} disabled`);return d.readCallback(c,b)}for(let a of Object.values(this._registeredResourceTemplates)){let d=a.resourceTemplate.uriTemplate.match(c.toString());if(d)return a.readCallback(c,d,b)}throw new aQ.Nh(aQ.O4.InvalidParams,`Resource ${c} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(bv(aQ.Qq)),this.server.assertCanSetRequestHandler(bv(aQ.$p)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(aQ.Qq,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,a])=>a.enabled).map(([a,b])=>({name:a,title:b.title,description:b.description,arguments:b.argsSchema?function(a){let b=aM(a);return b?Object.entries(b).map(([a,b])=>({name:a,description:b.description,required:!(aI(b)?b._zod?.def?.type==="optional":"function"==typeof b.isOptional?b.isOptional():b._def?.typeName==="ZodOptional")})):[]}(b.argsSchema):void 0}))})),this.server.setRequestHandler(aQ.$p,async(a,b)=>{let c=this._registeredPrompts[a.params.name];if(!c)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${a.params.name} not found`);if(!c.enabled)throw new aQ.Nh(aQ.O4.InvalidParams,`Prompt ${a.params.name} disabled`);if(c.argsSchema){let d=aN(c.argsSchema),e=await aL(d,a.params.arguments);if(!e.success){let b=aO("error"in e?e.error:"Unknown error");throw new aQ.Nh(aQ.O4.InvalidParams,`Invalid arguments for prompt ${a.params.name}: ${b}`)}let f=e.data,g=c.callback;return await Promise.resolve(g(f,b))}{let a=c.callback;return await Promise.resolve(a(b))}}),this._promptHandlersInitialized=!0)}resource(a,b,...c){let d;"object"==typeof c[0]&&(d=c.shift());let e=c[0];if("string"==typeof b){if(this._registeredResources[b])throw Error(`Resource ${b} is already registered`);let c=this._createRegisteredResource(a,void 0,b,d,e);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),c}{if(this._registeredResourceTemplates[a])throw Error(`Resource template ${a} is already registered`);let c=this._createRegisteredResourceTemplate(a,void 0,b,d,e);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),c}}registerResource(a,b,c,d){if("string"==typeof b){if(this._registeredResources[b])throw Error(`Resource ${b} is already registered`);let e=this._createRegisteredResource(a,c.title,b,c,d);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),e}{if(this._registeredResourceTemplates[a])throw Error(`Resource template ${a} is already registered`);let e=this._createRegisteredResourceTemplate(a,c.title,b,c,d);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),e}}_createRegisteredResource(a,b,c,d,e){let f={name:a,title:b,metadata:d,readCallback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({uri:null}),update:a=>{void 0!==a.uri&&a.uri!==c&&(delete this._registeredResources[c],a.uri&&(this._registeredResources[a.uri]=f)),void 0!==a.name&&(f.name=a.name),void 0!==a.title&&(f.title=a.title),void 0!==a.metadata&&(f.metadata=a.metadata),void 0!==a.callback&&(f.readCallback=a.callback),void 0!==a.enabled&&(f.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[c]=f,f}_createRegisteredResourceTemplate(a,b,c,d,e){let f={resourceTemplate:c,title:b,metadata:d,readCallback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&(delete this._registeredResourceTemplates[a],b.name&&(this._registeredResourceTemplates[b.name]=f)),void 0!==b.title&&(f.title=b.title),void 0!==b.template&&(f.resourceTemplate=b.template),void 0!==b.metadata&&(f.metadata=b.metadata),void 0!==b.callback&&(f.readCallback=b.callback),void 0!==b.enabled&&(f.enabled=b.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[a]=f;let g=c.uriTemplate.variableNames;return Array.isArray(g)&&g.some(a=>!!c.completeCallback(a))&&this.setCompletionRequestHandler(),f}_createRegisteredPrompt(a,b,c,d,e){let f={title:b,description:c,argsSchema:void 0===d?void 0:aJ(d),callback:e,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&(delete this._registeredPrompts[a],b.name&&(this._registeredPrompts[b.name]=f)),void 0!==b.title&&(f.title=b.title),void 0!==b.description&&(f.description=b.description),void 0!==b.argsSchema&&(f.argsSchema=aJ(b.argsSchema)),void 0!==b.callback&&(f.callback=b.callback),void 0!==b.enabled&&(f.enabled=b.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[a]=f,d&&Object.values(d).some(a=>bl(a instanceof bp.IiU?a._def?.innerType:a))&&this.setCompletionRequestHandler(),f}_createRegisteredTool(a,b,c,d,e,f,g,h,i){bn(a);let j={title:b,description:c,inputSchema:bu(d),outputSchema:bu(e),annotations:f,execution:g,_meta:h,handler:i,enabled:!0,disable:()=>j.update({enabled:!1}),enable:()=>j.update({enabled:!0}),remove:()=>j.update({name:null}),update:b=>{void 0!==b.name&&b.name!==a&&("string"==typeof b.name&&bn(b.name),delete this._registeredTools[a],b.name&&(this._registeredTools[b.name]=j)),void 0!==b.title&&(j.title=b.title),void 0!==b.description&&(j.description=b.description),void 0!==b.paramsSchema&&(j.inputSchema=aJ(b.paramsSchema)),void 0!==b.outputSchema&&(j.outputSchema=aJ(b.outputSchema)),void 0!==b.callback&&(j.handler=b.callback),void 0!==b.annotations&&(j.annotations=b.annotations),void 0!==b._meta&&(j._meta=b._meta),void 0!==b.enabled&&(j.enabled=b.enabled),this.sendToolListChanged()}};return this._registeredTools[a]=j,this.setToolRequestHandlers(),this.sendToolListChanged(),j}tool(a,...b){let c,d,e,f;if(this._registeredTools[a])throw Error(`Tool ${a} is already registered`);if("string"==typeof b[0]&&(c=b.shift()),b.length>1){let a=b[0];bt(a)?(d=b.shift(),b.length>1&&"object"==typeof b[0]&&null!==b[0]&&!bt(b[0])&&(f=b.shift())):"object"==typeof a&&null!==a&&(f=b.shift())}let g=b[0];return this._createRegisteredTool(a,void 0,c,d,e,f,{taskSupport:"forbidden"},void 0,g)}registerTool(a,b,c){if(this._registeredTools[a])throw Error(`Tool ${a} is already registered`);let{title:d,description:e,inputSchema:f,outputSchema:g,annotations:h,_meta:i}=b;return this._createRegisteredTool(a,d,e,f,g,h,{taskSupport:"forbidden"},i,c)}prompt(a,...b){let c,d;if(this._registeredPrompts[a])throw Error(`Prompt ${a} is already registered`);"string"==typeof b[0]&&(c=b.shift()),b.length>1&&(d=b.shift());let e=b[0],f=this._createRegisteredPrompt(a,void 0,c,d,e);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),f}registerPrompt(a,b,c){if(this._registeredPrompts[a])throw Error(`Prompt ${a} is already registered`);let{title:d,description:e,argsSchema:f}=b,g=this._createRegisteredPrompt(a,d,e,f,c);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),g}isConnected(){return void 0!==this.server.transport}async sendLoggingMessage(a,b){return this.server.sendLoggingMessage(a,b)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}}let br={type:"object",properties:{}};function bs(a){return null!==a&&"object"==typeof a&&"parse"in a&&"function"==typeof a.parse&&"safeParse"in a&&"function"==typeof a.safeParse}function bt(a){return"object"==typeof a&&null!==a&&!("_def"in a||"_zod"in a||bs(a))&&(0===Object.keys(a).length||Object.values(a).some(bs))}function bu(a){if(a)return bt(a)?aJ(a):a}function bv(a){let b=aM(a),c=b?.method;if(!c)throw Error("Schema is missing a method literal");let d=aP(c);if("string"==typeof d)return d;throw Error("Schema method literal must be a string")}function bw(a){return{completion:{values:a.slice(0,100),total:a.length,hasMore:a.length>100}}}let bx={completion:{values:[],hasMore:!1}}},29020:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(20636),e=c(41016),f=c(16674),g=c(352),h=c(37085);b.default=[d.default,e.default,(0,f.default)(),g.default,h.metadataVocabulary,h.contentVocabulary]},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29563:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(34481);b.default={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxLength"===a?"more":"fewer"} than ${b} characters`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:g,it:h}=a,i="maxLength"===b?d.operators.GT:d.operators.LT,j=!1===h.opts.unicode?(0,d._)`${c}.length`:(0,d._)`${(0,e.useFunc)(a.gen,f.default)}(${c})`;a.fail$data((0,d._)`${j} ${i} ${g}`)}}},29799:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(1171);class e extends Error{constructor(a,b,c,e){super(e||`can't resolve reference ${c} from id ${b}`),this.missingRef=(0,d.resolveUrl)(a,b,c),this.missingSchema=(0,d.normalizeId)((0,d.getFullPath)(a,this.missingRef))}}b.default=e},30144:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getRules=b.isJSONType=void 0;let c=new Set(["string","number","integer","boolean","null","object","array"]);b.isJSONType=function(a){return"string"==typeof a&&c.has(a)},b.getRules=function(){let a={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...a,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},a.number,a.string,a.array,a.object],post:{rules:[]},all:{},keywords:{}}}},31079:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={data:new d.Name("data"),valCxt:new d.Name("valCxt"),instancePath:new d.Name("instancePath"),parentData:new d.Name("parentData"),parentDataProperty:new d.Name("parentDataProperty"),rootData:new d.Name("rootData"),dynamicAnchors:new d.Name("dynamicAnchors"),vErrors:new d.Name("vErrors"),errors:new d.Name("errors"),this:new d.Name("this"),self:new d.Name("self"),scope:new d.Name("scope"),json:new d.Name("json"),jsonPos:new d.Name("jsonPos"),jsonLen:new d.Name("jsonLen"),jsonPart:new d.Name("jsonPart")}},31270:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>t});var e=c(77258),f=c(85034),g=c(90136),h=c(8777),i=c(48499),j=c(16617),k=c(88437),l=c(54349),m=c(63089),n=c(37943),o=c(53235),p=c(90494),q=c(52618),r=c(911),s=a([f,g,h,i,k,l,m,n,o,p,q]);function t(a,b){a.registerTool("synapse_get_research_project",{description:"Get research project details and context",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID")})},async({researchProjectUuid:a})=>{let c=await f.j5(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Research Project not found"}],isError:!0}}),a.registerTool("synapse_list_research_projects",{description:"List all research projects for the current company. Returns projects with counts of research questions, documents, experiment runs, and experiment designs.",inputSchema:e.Ikc({page:e.aig().default(1).describe("Page number"),pageSize:e.aig().default(20).describe("Items per page")})},async({page:a,pageSize:c})=>{let d=await f.AM({companyUuid:b.companyUuid,skip:(a-1)*c,take:c});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_get_research_questions",{description:"Get the list of Research Questions for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),status:e.YjP().optional().describe("Filter by status: open, elaborating, proposal_created, completed, closed"),page:e.aig().optional().default(1).describe("Page number"),pageSize:e.aig().optional().default(20).describe("Items per page")})},async({researchProjectUuid:a,status:c,page:d=1,pageSize:e=20})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{researchQuestions:h,total:i}=await g.vp({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(d-1)*e,take:e,status:c});return{content:[{type:"text",text:JSON.stringify({researchQuestions:h,total:i,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_documents",{description:"Get the list of Documents for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),type:e.YjP().optional().describe("Filter by type: prd, tech_design, adr, etc."),page:e.aig().optional().default(1),pageSize:e.aig().optional().default(20)})},async({researchProjectUuid:a,type:c,page:d=1,pageSize:e=20})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{documents:g,total:i}=await h.lC({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(d-1)*e,take:e,type:c});return{content:[{type:"text",text:JSON.stringify({documents:g,total:i,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_document",{description:"Get the detailed content of a single Document",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID")})},async({documentUuid:a})=>{let c=await h.YE(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Document not found"}],isError:!0}}),a.registerTool("synapse_get_activity",{description:"Get the activity stream for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),page:e.aig().optional().default(1),pageSize:e.aig().optional().default(50)})},async({researchProjectUuid:a,page:c=1,pageSize:d=50})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{activities:e,total:g}=await k.s3({companyUuid:b.companyUuid,researchProjectUuid:a,skip:(c-1)*d,take:d});return{content:[{type:"text",text:JSON.stringify({activities:e,total:g,page:c,pageSize:d},null,2)}]}}),a.registerTool("synapse_add_comment",{description:"Add a comment to a Research Question/Experiment/Experiment Design/Experiment Run/Document",inputSchema:e.Ikc({targetType:e.k5n(["research_question","experiment","experiment_design","experiment_run","document"]).describe("Target type"),targetUuid:e.YjP().describe("Target UUID"),content:e.YjP().describe("Comment content")})},async({targetType:a,targetUuid:c,content:d})=>{try{let e=await l.eT({companyUuid:b.companyUuid,targetType:a,targetUuid:c,content:d,authorType:"agent",authorUuid:b.actorUuid}),f=await l.Hu(a,c);return f&&await k.E1({companyUuid:b.companyUuid,researchProjectUuid:f,targetType:a,targetUuid:c,actorType:"agent",actorUuid:b.actorUuid,action:"comment_added"}),{content:[{type:"text",text:JSON.stringify({uuid:e.uuid,targetType:a,targetUuid:c},null,2)}]}}catch(b){if(b instanceof Error&&b.message.includes("not found"))return{content:[{type:"text",text:`${a} not found`}],isError:!0};throw b}}),a.registerTool("synapse_checkin",{description:"Agent check-in. Returns agent identity (including owner/master info), roles, assigned work, and pending counts. Recommended at session start.",inputSchema:e.Ikc({})},async()=>{let a=await q.prisma.agent.update({where:{uuid:b.actorUuid},data:{lastActiveAt:new Date},select:{uuid:!0,name:!0,roles:!0,type:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,owner:{select:{uuid:!0,name:!0,email:!0}}}});r.B.emitChange({companyUuid:b.companyUuid,researchProjectUuid:"",entityType:"agent_session",entityUuid:a.uuid,action:"updated",actorUuid:b.actorUuid});let{researchQuestions:c,experimentRuns:d}=await m.j(b,b.researchProjectUuids),e=await q.prisma.experiment.findMany({where:{companyUuid:b.companyUuid,assigneeUuid:b.actorUuid,status:{in:["pending_start","in_progress"]},...b.researchProjectUuids&&b.researchProjectUuids.length>0?{researchProjectUuid:{in:b.researchProjectUuids}}:{}},select:{uuid:!0,title:!0,status:!0,researchProject:{select:{uuid:!0,name:!0}}},orderBy:{createdAt:"asc"}}),f=await q.prisma.researchProject.findMany({where:{companyUuid:b.companyUuid},select:{uuid:!0,name:!0,description:!0,deepResearchDocUuid:!0,researchQuestions:{select:{uuid:!0,title:!0,status:!0},orderBy:{createdAt:"asc"}},_count:{select:{relatedWorks:!0}}},orderBy:{updatedAt:"desc"}}),g={};if(f.length>0){let a=f.map(a=>a.uuid);for(let c of(await q.prisma.experiment.groupBy({by:["researchProjectUuid","status"],where:{companyUuid:b.companyUuid,researchProjectUuid:{in:a}},_count:!0})))g[c.researchProjectUuid]||(g[c.researchProjectUuid]={}),g[c.researchProjectUuid][c.status]=c._count}let h=await n.$M(b.companyUuid,b.type,b.actorUuid),i={research_lead:`You are an experienced Research Lead Agent. Your responsibilities are:
6
6
  - Analyze user requirements, distill core research questions
7
7
  - Transform vague ideas into clear experiment designs
8
8
  - Break down experiment runs appropriately, estimate compute budget (in agent hours)
@@ -15,7 +15,7 @@ Work style: pragmatic, detail-oriented, strong communicator`,researcher:`You are
15
15
  - Report progress promptly after completing experiment runs
16
16
  - Communicate proactively when encountering issues, avoid making assumptions
17
17
 
18
- Work style: rigorous, efficient, quality-focused`},j=a.persona;!j&&a.roles.length>0&&(j=i[a.roles[0]]||null);let k={checkinTime:new Date().toISOString(),agent:{uuid:a.uuid,name:a.name,roles:a.roles,type:a.type,persona:j,systemPrompt:a.systemPrompt,owner:a.owner?{uuid:a.owner.uuid,name:a.owner.name,email:a.owner.email}:null},assignments:{experiments:e.map(a=>({uuid:a.uuid,title:a.title,status:a.status,projectUuid:a.researchProject.uuid,projectName:a.researchProject.name})),researchQuestions:c.filter(a=>["assigned","in_progress"].includes(a.status)),experimentRuns:d.filter(a=>["assigned","in_progress"].includes(a.status))},pending:{researchQuestionsCount:c.length,experimentRunsCount:d.length},notifications:{unreadCount:h},projects:f.map(a=>({uuid:a.uuid,name:a.name,description:a.description,relatedWorksCount:a._count.relatedWorks,deepResearchExists:!!a.deepResearchDocUuid,researchQuestions:a.researchQuestions.map(a=>({uuid:a.uuid,title:a.title,status:a.status})),experimentCounts:g[a.uuid]||{}}))};return{content:[{type:"text",text:JSON.stringify(k,null,2)}]}}),a.registerTool("synapse_get_available_research_questions",{description:"Get Research Questions available to claim in a research project (status=open)",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID")})},async({researchProjectUuid:a})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{researchQuestions:c}=await l.m(b.companyUuid,a,!0,!1);return{content:[{type:"text",text:JSON.stringify({researchQuestions:c},null,2)}]}}),a.registerTool("synapse_get_research_question",{description:"Get detailed information for a single Research Question",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g.ok(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Research Question not found"}],isError:!0}}),a.registerTool("synapse_get_comments",{description:"Get the list of comments for a Research Question/Experiment/Experiment Design/Experiment Run/Document",inputSchema:e.Ikc({targetType:e.k5n(["research_question","experiment","experiment_design","experiment_run","document"]).describe("Target type"),targetUuid:e.YjP().describe("Target UUID"),page:e.aig().optional().default(1).describe("Page number"),pageSize:e.aig().optional().default(20).describe("Items per page")})},async({targetType:a,targetUuid:c,page:d=1,pageSize:e=20})=>{let{comments:f,total:g}=await k.fg({companyUuid:b.companyUuid,targetType:a,targetUuid:c,skip:(d-1)*e,take:e});return{content:[{type:"text",text:JSON.stringify({comments:f,total:g,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_notifications",{description:"Get the list of notifications for the current Agent. By default, fetching unread notifications automatically marks them as read. Set autoMarkRead=false to keep them unread.",inputSchema:e.Ikc({status:e.k5n(["unread","read","all"]).default("unread").optional().describe("Filter by status"),limit:e.aig().default(20).optional().describe("Items per page"),offset:e.aig().default(0).optional().describe("Offset"),autoMarkRead:e.zMY().default(!0).optional().describe("Automatically mark fetched unread notifications as read (default: true)")})},async a=>{let c=a.status??"unread",d=await m.p_({companyUuid:b.companyUuid,recipientType:b.type,recipientUuid:b.actorUuid,readFilter:"unread"===c?"unread":"read"===c?"read":"all",skip:a.offset??0,take:a.limit??20});if((a.autoMarkRead??!0)&&"unread"===c&&d.notifications?.length>0){let a=d.notifications.filter(a=>!a.readAt).map(a=>a.uuid);a.length>0&&await Promise.all(a.map(a=>m.Ip(a,b.companyUuid,b.type,b.actorUuid).catch(()=>{})))}return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_mark_notification_read",{description:"Mark notification(s) as read (single or all)",inputSchema:e.Ikc({notificationUuid:e.YjP().optional().describe("Single notification UUID"),all:e.zMY().default(!1).optional().describe("Whether to mark all as read")})},async a=>a.all?(await m.NL(b.companyUuid,b.type,b.actorUuid),{content:[{type:"text",text:JSON.stringify({success:!0},null,2)}]}):a.notificationUuid?(await m.Ip(a.notificationUuid,b.companyUuid,b.type,b.actorUuid),{content:[{type:"text",text:JSON.stringify({success:!0},null,2)}]}):{content:[{type:"text",text:JSON.stringify({error:"notificationUuid or all=true required"})}],isError:!0}),a.registerTool("synapse_get_project_groups",{description:"List all project groups for the current company. Returns groups with project counts.",inputSchema:e.Ikc({})},async()=>{let a=await n.a1(b.companyUuid);return{content:[{type:"text",text:JSON.stringify(a,null,2)}]}}),a.registerTool("synapse_get_project_group",{description:"Get a single project group by UUID with its projects list.",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID")})},async({groupUuid:a})=>{let c=await n.xv(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_get_group_dashboard",{description:"Get aggregated dashboard stats for a project group (project count, experiment runs, completion rate, research questions, experiment designs, activity stream).",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID")})},async({groupUuid:a})=>{let c=await n.Im(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_search_mentionables",{description:"Search for users and agents that can be @mentioned by the current caller. Users only see agents they own; agents see company users plus same-owner agents. Returns name, type, and UUID.",inputSchema:e.Ikc({query:e.YjP().describe("Name or keyword to search"),limit:e.aig().optional().default(10).describe("Max results to return (default 10)")})},async({query:a,limit:c})=>{let d=await o._L({companyUuid:b.companyUuid,query:a,actorType:b.type,actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,limit:c});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_upload_document_image",{description:"Upload a figure/image into a document's local image store and get back a Synapse-hosted URL for embedding in Markdown (e.g. ![alt](/api/documents/:uuid/images/...)). Use this for any figure you render in an experiment report or document — never embed third-party image-host links (catbox, litterbox, imgur, etc.), because they expire and are not reliably reachable from end users' browsers.",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID the image belongs to"),filename:e.YjP().describe("Original file name, used for extension and sanitized server-side (e.g. 'cross-benchmark-summary.png')"),mimeType:e.k5n(["image/png","image/jpeg","image/gif","image/webp","image/svg+xml"]).describe("Image MIME type"),base64Content:e.YjP().describe("Base64-encoded image bytes (no data: prefix)")})},async({documentUuid:a,filename:c,mimeType:d,base64Content:e})=>{let f;if(!await h.Cs(b.companyUuid,a))return{content:[{type:"text",text:"Document not found"}],isError:!0};if(!i.mD.has(d))return{content:[{type:"text",text:`Unsupported mimeType: ${d}`}],isError:!0};try{f=Buffer.from(e,"base64")}catch{return{content:[{type:"text",text:"base64Content is not valid base64"}],isError:!0}}try{let e=await (0,i.Q6)({companyUuid:b.companyUuid,documentUuid:a,originalName:c,mimeType:d,data:f});return{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to upload image"}],isError:!0}}})}[f,g,h,j,k,l,m,n,o,p]=r.then?(await r)():r,d()}catch(a){d(a)}})},31421:a=>{a.exports=require("node:child_process")},31657:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(15746),e=c(41033),f=c(23235),g=c(71296);b.default={keyword:"properties",type:"object",schemaType:"object",code(a){let{gen:b,schema:c,parentSchema:h,data:i,it:j}=a;"all"===j.opts.removeAdditional&&void 0===h.additionalProperties&&g.default.code(new d.KeywordCxt(j,g.default,"additionalProperties"));let k=(0,e.allSchemaProperties)(c);for(let a of k)j.definedProperties.add(a);j.opts.unevaluated&&k.length&&!0!==j.props&&(j.props=f.mergeEvaluated.props(b,(0,f.toHash)(k),j.props));let l=k.filter(a=>!(0,f.alwaysValidSchema)(j,c[a]));if(0===l.length)return;let m=b.name("valid");for(let d of l){var n;(n=d,j.opts.useDefaults&&!j.compositeRule&&void 0!==c[n].default)?o(d):(b.if((0,e.propertyInData)(b,i,d,j.opts.ownProperties)),o(d),j.allErrors||b.else().var(m,!0),b.endIf()),a.it.definedProperties.add(d),a.ok(m)}function o(b){a.subschema({keyword:"properties",schemaProp:b,dataProp:b},m)}}}},32739:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxItems"===a?"more":"fewer"} than ${b} items`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a,f="maxItems"===b?d.operators.GT:d.operators.LT;a.fail$data((0,d._)`${c}.length ${f} ${e}`)}}},33006:(a,b,c)=>{c.d(b,{FT:()=>a4,TF:()=>a2,gd:()=>an,gH:()=>ao,Sq:()=>I,iK:()=>bI,K1:()=>bk,TI:()=>bl,Mg:()=>af,PC:()=>g,n_:()=>bE,wR:()=>G,O4:()=>d,$p:()=>aO,oQ:()=>ak,Ql:()=>ai,Sc:()=>aj,rk:()=>T,ZC:()=>X,OR:()=>F,aE:()=>f,Qq:()=>aL,s:()=>az,OI:()=>ax,Cs:()=>bO,zR:()=>al,a5:()=>am,gW:()=>a0,FP:()=>a6,Nh:()=>bQ,tC:()=>Y,_r:()=>_,EV:()=>i,R6:()=>aC,Iu:()=>h,b_:()=>a8,ki:()=>ah,uv:()=>bJ,X6:()=>bK,eK:()=>U,LW:()=>E,lg:()=>A,vo:()=>y,ig:()=>C,bZ:()=>r});var d,e=c(77258);let f="2025-11-25",g="2025-03-26",h=[f,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],i="io.modelcontextprotocol/related-task",j=e.IeY(a=>null!==a&&("object"==typeof a||"function"==typeof a)),k=e.KCZ([e.YjP(),e.aig().int()]),l=e.YjP();e._H3({ttl:e.KCZ([e.aig(),e.chJ()]).optional(),pollInterval:e.aig().optional()});let m=e.Ikc({ttl:e.aig().optional()}),n=e.Ikc({taskId:e.YjP()}),o=e._H3({progressToken:k.optional(),[i]:n.optional()}),p=e.Ikc({_meta:o.optional()}),q=p.extend({task:m.optional()}),r=a=>q.safeParse(a).success,s=e.Ikc({method:e.YjP(),params:p.loose().optional()}),t=e.Ikc({_meta:o.optional()}),u=e.Ikc({method:e.YjP(),params:t.loose().optional()}),v=e._H3({_meta:o.optional()}),w=e.KCZ([e.YjP(),e.aig().int()]),x=e.Ikc({jsonrpc:e.euz("2.0"),id:w,...s.shape}).strict(),y=a=>x.safeParse(a).success,z=e.Ikc({jsonrpc:e.euz("2.0"),...u.shape}).strict(),A=a=>z.safeParse(a).success,B=e.Ikc({jsonrpc:e.euz("2.0"),id:w,result:v}).strict(),C=a=>B.safeParse(a).success;!function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError",a[a.UrlElicitationRequired=-32042]="UrlElicitationRequired"}(d||(d={}));let D=e.Ikc({jsonrpc:e.euz("2.0"),id:w.optional(),error:e.Ikc({code:e.aig().int(),message:e.YjP(),data:e.L5J().optional()})}).strict(),E=a=>D.safeParse(a).success,F=e.KCZ([x,z,B,D]);e.KCZ([B,D]);let G=v.strict(),H=t.extend({requestId:w.optional(),reason:e.YjP().optional()}),I=u.extend({method:e.euz("notifications/cancelled"),params:H}),J=e.Ikc({src:e.YjP(),mimeType:e.YjP().optional(),sizes:e.YOg(e.YjP()).optional(),theme:e.k5n(["light","dark"]).optional()}),K=e.Ikc({icons:e.YOg(J).optional()}),L=e.Ikc({name:e.YjP(),title:e.YjP().optional()}),M=L.extend({...L.shape,...K.shape,version:e.YjP(),websiteUrl:e.YjP().optional(),description:e.YjP().optional()}),N=e.E$q(e.Ikc({applyDefaults:e.zMY().optional()}),e.g1P(e.YjP(),e.L5J())),O=e.vkY(a=>a&&"object"==typeof a&&!Array.isArray(a)&&0===Object.keys(a).length?{form:{}}:a,e.E$q(e.Ikc({form:N.optional(),url:j.optional()}),e.g1P(e.YjP(),e.L5J()).optional())),P=e._H3({list:j.optional(),cancel:j.optional(),requests:e._H3({sampling:e._H3({createMessage:j.optional()}).optional(),elicitation:e._H3({create:j.optional()}).optional()}).optional()}),Q=e._H3({list:j.optional(),cancel:j.optional(),requests:e._H3({tools:e._H3({call:j.optional()}).optional()}).optional()}),R=e.Ikc({experimental:e.g1P(e.YjP(),j).optional(),sampling:e.Ikc({context:j.optional(),tools:j.optional()}).optional(),elicitation:O.optional(),roots:e.Ikc({listChanged:e.zMY().optional()}).optional(),tasks:P.optional()}),S=p.extend({protocolVersion:e.YjP(),capabilities:R,clientInfo:M}),T=s.extend({method:e.euz("initialize"),params:S}),U=a=>T.safeParse(a).success,V=e.Ikc({experimental:e.g1P(e.YjP(),j).optional(),logging:j.optional(),completions:j.optional(),prompts:e.Ikc({listChanged:e.zMY().optional()}).optional(),resources:e.Ikc({subscribe:e.zMY().optional(),listChanged:e.zMY().optional()}).optional(),tools:e.Ikc({listChanged:e.zMY().optional()}).optional(),tasks:Q.optional()}),W=v.extend({protocolVersion:e.YjP(),capabilities:V,serverInfo:M,instructions:e.YjP().optional()}),X=u.extend({method:e.euz("notifications/initialized"),params:t.optional()}),Y=s.extend({method:e.euz("ping"),params:p.optional()}),Z=e.Ikc({progress:e.aig(),total:e.lqM(e.aig()),message:e.lqM(e.YjP())}),$=e.Ikc({...t.shape,...Z.shape,progressToken:k}),_=u.extend({method:e.euz("notifications/progress"),params:$}),aa=p.extend({cursor:l.optional()}),ab=s.extend({params:aa.optional()}),ac=v.extend({nextCursor:l.optional()}),ad=e.k5n(["working","input_required","completed","failed","cancelled"]),ae=e.Ikc({taskId:e.YjP(),status:ad,ttl:e.KCZ([e.aig(),e.chJ()]),createdAt:e.YjP(),lastUpdatedAt:e.YjP(),pollInterval:e.lqM(e.aig()),statusMessage:e.lqM(e.YjP())}),af=v.extend({task:ae}),ag=t.merge(ae),ah=u.extend({method:e.euz("notifications/tasks/status"),params:ag}),ai=s.extend({method:e.euz("tasks/get"),params:p.extend({taskId:e.YjP()})}),aj=v.merge(ae),ak=s.extend({method:e.euz("tasks/result"),params:p.extend({taskId:e.YjP()})});v.loose();let al=ab.extend({method:e.euz("tasks/list")}),am=ac.extend({tasks:e.YOg(ae)}),an=s.extend({method:e.euz("tasks/cancel"),params:p.extend({taskId:e.YjP()})}),ao=v.merge(ae),ap=e.Ikc({uri:e.YjP(),mimeType:e.lqM(e.YjP()),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aq=ap.extend({text:e.YjP()}),ar=e.YjP().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),as=ap.extend({blob:ar}),at=e.k5n(["user","assistant"]),au=e.Ikc({audience:e.YOg(at).optional(),priority:e.aig().min(0).max(1).optional(),lastModified:e.KH5.datetime({offset:!0}).optional()}),av=e.Ikc({...L.shape,...K.shape,uri:e.YjP(),description:e.lqM(e.YjP()),mimeType:e.lqM(e.YjP()),annotations:au.optional(),_meta:e.lqM(e._H3({}))}),aw=e.Ikc({...L.shape,...K.shape,uriTemplate:e.YjP(),description:e.lqM(e.YjP()),mimeType:e.lqM(e.YjP()),annotations:au.optional(),_meta:e.lqM(e._H3({}))}),ax=ab.extend({method:e.euz("resources/list")}),ay=ac.extend({resources:e.YOg(av)}),az=ab.extend({method:e.euz("resources/templates/list")}),aA=ac.extend({resourceTemplates:e.YOg(aw)}),aB=p.extend({uri:e.YjP()}),aC=s.extend({method:e.euz("resources/read"),params:aB}),aD=v.extend({contents:e.YOg(e.KCZ([aq,as]))}),aE=u.extend({method:e.euz("notifications/resources/list_changed"),params:t.optional()}),aF=s.extend({method:e.euz("resources/subscribe"),params:aB}),aG=s.extend({method:e.euz("resources/unsubscribe"),params:aB}),aH=t.extend({uri:e.YjP()}),aI=u.extend({method:e.euz("notifications/resources/updated"),params:aH}),aJ=e.Ikc({name:e.YjP(),description:e.lqM(e.YjP()),required:e.lqM(e.zMY())}),aK=e.Ikc({...L.shape,...K.shape,description:e.lqM(e.YjP()),arguments:e.lqM(e.YOg(aJ)),_meta:e.lqM(e._H3({}))}),aL=ab.extend({method:e.euz("prompts/list")}),aM=ac.extend({prompts:e.YOg(aK)}),aN=p.extend({name:e.YjP(),arguments:e.g1P(e.YjP(),e.YjP()).optional()}),aO=s.extend({method:e.euz("prompts/get"),params:aN}),aP=e.Ikc({type:e.euz("text"),text:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aQ=e.Ikc({type:e.euz("image"),data:ar,mimeType:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aR=e.Ikc({type:e.euz("audio"),data:ar,mimeType:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aS=e.Ikc({type:e.euz("tool_use"),name:e.YjP(),id:e.YjP(),input:e.g1P(e.YjP(),e.L5J()),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aT=e.Ikc({type:e.euz("resource"),resource:e.KCZ([aq,as]),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aU=av.extend({type:e.euz("resource_link")}),aV=e.KCZ([aP,aQ,aR,aU,aT]),aW=e.Ikc({role:at,content:aV}),aX=v.extend({description:e.YjP().optional(),messages:e.YOg(aW)}),aY=u.extend({method:e.euz("notifications/prompts/list_changed"),params:t.optional()}),aZ=e.Ikc({title:e.YjP().optional(),readOnlyHint:e.zMY().optional(),destructiveHint:e.zMY().optional(),idempotentHint:e.zMY().optional(),openWorldHint:e.zMY().optional()}),a$=e.Ikc({taskSupport:e.k5n(["required","optional","forbidden"]).optional()}),a_=e.Ikc({...L.shape,...K.shape,description:e.YjP().optional(),inputSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),j).optional(),required:e.YOg(e.YjP()).optional()}).catchall(e.L5J()),outputSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),j).optional(),required:e.YOg(e.YjP()).optional()}).catchall(e.L5J()).optional(),annotations:aZ.optional(),execution:a$.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),a0=ab.extend({method:e.euz("tools/list")}),a1=ac.extend({tools:e.YOg(a_)}),a2=v.extend({content:e.YOg(aV).default([]),structuredContent:e.g1P(e.YjP(),e.L5J()).optional(),isError:e.zMY().optional()});a2.or(v.extend({toolResult:e.L5J()}));let a3=q.extend({name:e.YjP(),arguments:e.g1P(e.YjP(),e.L5J()).optional()}),a4=s.extend({method:e.euz("tools/call"),params:a3}),a5=u.extend({method:e.euz("notifications/tools/list_changed"),params:t.optional()});e.Ikc({autoRefresh:e.zMY().default(!0),debounceMs:e.aig().int().nonnegative().default(300)});let a6=e.k5n(["debug","info","notice","warning","error","critical","alert","emergency"]),a7=p.extend({level:a6}),a8=s.extend({method:e.euz("logging/setLevel"),params:a7}),a9=t.extend({level:a6,logger:e.YjP().optional(),data:e.L5J()}),ba=u.extend({method:e.euz("notifications/message"),params:a9}),bb=e.Ikc({name:e.YjP().optional()}),bc=e.Ikc({hints:e.YOg(bb).optional(),costPriority:e.aig().min(0).max(1).optional(),speedPriority:e.aig().min(0).max(1).optional(),intelligencePriority:e.aig().min(0).max(1).optional()}),bd=e.Ikc({mode:e.k5n(["auto","required","none"]).optional()}),be=e.Ikc({type:e.euz("tool_result"),toolUseId:e.YjP().describe("The unique identifier for the corresponding tool call."),content:e.YOg(aV).default([]),structuredContent:e.Ikc({}).loose().optional(),isError:e.zMY().optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bf=e.gMt("type",[aP,aQ,aR]),bg=e.gMt("type",[aP,aQ,aR,aS,be]),bh=e.Ikc({role:at,content:e.KCZ([bg,e.YOg(bg)]),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bi=q.extend({messages:e.YOg(bh),modelPreferences:bc.optional(),systemPrompt:e.YjP().optional(),includeContext:e.k5n(["none","thisServer","allServers"]).optional(),temperature:e.aig().optional(),maxTokens:e.aig().int(),stopSequences:e.YOg(e.YjP()).optional(),metadata:j.optional(),tools:e.YOg(a_).optional(),toolChoice:bd.optional()}),bj=s.extend({method:e.euz("sampling/createMessage"),params:bi}),bk=v.extend({model:e.YjP(),stopReason:e.lqM(e.k5n(["endTurn","stopSequence","maxTokens"]).or(e.YjP())),role:at,content:bf}),bl=v.extend({model:e.YjP(),stopReason:e.lqM(e.k5n(["endTurn","stopSequence","maxTokens","toolUse"]).or(e.YjP())),role:at,content:e.KCZ([bg,e.YOg(bg)])}),bm=e.Ikc({type:e.euz("boolean"),title:e.YjP().optional(),description:e.YjP().optional(),default:e.zMY().optional()}),bn=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),minLength:e.aig().optional(),maxLength:e.aig().optional(),format:e.k5n(["email","uri","date","date-time"]).optional(),default:e.YjP().optional()}),bo=e.Ikc({type:e.k5n(["number","integer"]),title:e.YjP().optional(),description:e.YjP().optional(),minimum:e.aig().optional(),maximum:e.aig().optional(),default:e.aig().optional()}),bp=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),enum:e.YOg(e.YjP()),default:e.YjP().optional()}),bq=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),oneOf:e.YOg(e.Ikc({const:e.YjP(),title:e.YjP()})),default:e.YjP().optional()}),br=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),enum:e.YOg(e.YjP()),enumNames:e.YOg(e.YjP()).optional(),default:e.YjP().optional()}),bs=e.KCZ([bp,bq]),bt=e.Ikc({type:e.euz("array"),title:e.YjP().optional(),description:e.YjP().optional(),minItems:e.aig().optional(),maxItems:e.aig().optional(),items:e.Ikc({type:e.euz("string"),enum:e.YOg(e.YjP())}),default:e.YOg(e.YjP()).optional()}),bu=e.Ikc({type:e.euz("array"),title:e.YjP().optional(),description:e.YjP().optional(),minItems:e.aig().optional(),maxItems:e.aig().optional(),items:e.Ikc({anyOf:e.YOg(e.Ikc({const:e.YjP(),title:e.YjP()}))}),default:e.YOg(e.YjP()).optional()}),bv=e.KCZ([bt,bu]),bw=e.KCZ([br,bs,bv]),bx=e.KCZ([bw,bm,bn,bo]),by=q.extend({mode:e.euz("form").optional(),message:e.YjP(),requestedSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),bx),required:e.YOg(e.YjP()).optional()})}),bz=q.extend({mode:e.euz("url"),message:e.YjP(),elicitationId:e.YjP(),url:e.YjP().url()}),bA=e.KCZ([by,bz]),bB=s.extend({method:e.euz("elicitation/create"),params:bA}),bC=t.extend({elicitationId:e.YjP()}),bD=u.extend({method:e.euz("notifications/elicitation/complete"),params:bC}),bE=v.extend({action:e.k5n(["accept","decline","cancel"]),content:e.vkY(a=>null===a?void 0:a,e.g1P(e.YjP(),e.KCZ([e.YjP(),e.aig(),e.zMY(),e.YOg(e.YjP())])).optional())}),bF=e.Ikc({type:e.euz("ref/resource"),uri:e.YjP()}),bG=e.Ikc({type:e.euz("ref/prompt"),name:e.YjP()}),bH=p.extend({ref:e.KCZ([bG,bF]),argument:e.Ikc({name:e.YjP(),value:e.YjP()}),context:e.Ikc({arguments:e.g1P(e.YjP(),e.YjP()).optional()}).optional()}),bI=s.extend({method:e.euz("completion/complete"),params:bH});function bJ(a){if("ref/prompt"!==a.params.ref.type)throw TypeError(`Expected CompleteRequestPrompt, but got ${a.params.ref.type}`)}function bK(a){if("ref/resource"!==a.params.ref.type)throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${a.params.ref.type}`)}let bL=v.extend({completion:e._H3({values:e.YOg(e.YjP()).max(100),total:e.lqM(e.aig().int()),hasMore:e.lqM(e.zMY())})}),bM=e.Ikc({uri:e.YjP().startsWith("file://"),name:e.YjP().optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bN=s.extend({method:e.euz("roots/list"),params:p.optional()}),bO=v.extend({roots:e.YOg(bM)}),bP=u.extend({method:e.euz("notifications/roots/list_changed"),params:t.optional()});e.KCZ([Y,T,bI,a8,aO,aL,ax,az,aC,aF,aG,a4,a0,ai,ak,al,an]),e.KCZ([I,_,X,bP,ah]),e.KCZ([G,bk,bl,bE,bO,aj,am,af]),e.KCZ([Y,bj,bB,bN,ai,ak,al,an]),e.KCZ([I,_,ba,aI,aE,a5,aY,ah,bD]),e.KCZ([G,W,bL,aX,aM,ay,aA,aD,a2,a1,aj,am,af]);class bQ extends Error{constructor(a,b,c){super(`MCP error ${a}: ${b}`),this.code=a,this.data=c,this.name="McpError"}static fromError(a,b,c){return a===d.UrlElicitationRequired&&c&&c.elicitations?new bR(c.elicitations,b):new bQ(a,b,c)}}class bR extends bQ{constructor(a,b=`URL elicitation${a.length>1?"s":""} required`){super(d.UrlElicitationRequired,b,{elicitations:a})}get elicitations(){return this.data?.elicitations??[]}}},33283:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(23235);b.default={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(a){let{gen:b,schema:c,it:e}=a;if((0,d.alwaysValidSchema)(e,c))return void a.fail();let f=b.name("valid");a.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},f),a.failResult(f,()=>a.reset(),()=>a.error())},error:{message:"must NOT be valid"}}},33873:a=>{a.exports=require("path")},34481:(a,b)=>{function c(a){let b,c=a.length,d=0,e=0;for(;e<c;)d++,(b=a.charCodeAt(e++))>=55296&&b<=56319&&e<c&&(64512&(b=a.charCodeAt(e)))==56320&&e++;return d}Object.defineProperty(b,"__esModule",{value:!0}),b.default=c,c.code='require("ajv/dist/runtime/ucs2length").default'},34631:a=>{a.exports=require("tls")},35684:(a,b,c)=>{var d;Object.defineProperty(b,"__esModule",{value:!0}),b.reportTypeError=b.checkDataTypes=b.checkDataType=b.coerceAndCheckDataType=b.getJSONTypes=b.getSchemaTypes=b.DataType=void 0;let e=c(30144),f=c(18423),g=c(66984),h=c(74489),i=c(23235);function j(a){let b=Array.isArray(a)?a:a?[a]:[];if(b.every(e.isJSONType))return b;throw Error("type must be JSONType or JSONType[]: "+b.join(","))}!function(a){a[a.Correct=0]="Correct",a[a.Wrong=1]="Wrong"}(d||(b.DataType=d={})),b.getSchemaTypes=function(a){let b=j(a.type);if(b.includes("null")){if(!1===a.nullable)throw Error("type: null contradicts nullable: false")}else{if(!b.length&&void 0!==a.nullable)throw Error('"nullable" cannot be used without "type"');!0===a.nullable&&b.push("null")}return b},b.getJSONTypes=j,b.coerceAndCheckDataType=function(a,b){var c,e;let{gen:g,data:i,opts:j}=a,l=(c=b,(e=j.coerceTypes)?c.filter(a=>k.has(a)||"array"===e&&"array"===a):[]),n=b.length>0&&!(0===l.length&&1===b.length&&(0,f.schemaHasRulesForType)(a,b[0]));if(n){let c=m(b,i,j.strictNumbers,d.Wrong);g.if(c,()=>{l.length?function(a,b,c){let{gen:d,data:e,opts:f}=a,g=d.let("dataType",(0,h._)`typeof ${e}`),i=d.let("coerced",(0,h._)`undefined`);for(let a of("array"===f.coerceTypes&&d.if((0,h._)`${g} == 'object' && Array.isArray(${e}) && ${e}.length == 1`,()=>d.assign(e,(0,h._)`${e}[0]`).assign(g,(0,h._)`typeof ${e}`).if(m(b,e,f.strictNumbers),()=>d.assign(i,e))),d.if((0,h._)`${i} !== undefined`),c))(k.has(a)||"array"===a&&"array"===f.coerceTypes)&&function(a){switch(a){case"string":d.elseIf((0,h._)`${g} == "number" || ${g} == "boolean"`).assign(i,(0,h._)`"" + ${e}`).elseIf((0,h._)`${e} === null`).assign(i,(0,h._)`""`);return;case"number":d.elseIf((0,h._)`${g} == "boolean" || ${e} === null
18
+ Work style: rigorous, efficient, quality-focused`},j=a.persona;!j&&a.roles.length>0&&(j=i[a.roles[0]]||null);let k={checkinTime:new Date().toISOString(),agent:{uuid:a.uuid,name:a.name,roles:a.roles,type:a.type,persona:j,systemPrompt:a.systemPrompt,owner:a.owner?{uuid:a.owner.uuid,name:a.owner.name,email:a.owner.email}:null},assignments:{experiments:e.map(a=>({uuid:a.uuid,title:a.title,status:a.status,projectUuid:a.researchProject.uuid,projectName:a.researchProject.name})),researchQuestions:c.filter(a=>["assigned","in_progress"].includes(a.status)),experimentRuns:d.filter(a=>["assigned","in_progress"].includes(a.status))},pending:{researchQuestionsCount:c.length,experimentRunsCount:d.length},notifications:{unreadCount:h},projects:f.map(a=>({uuid:a.uuid,name:a.name,description:a.description,relatedWorksCount:a._count.relatedWorks,deepResearchExists:!!a.deepResearchDocUuid,researchQuestions:a.researchQuestions.map(a=>({uuid:a.uuid,title:a.title,status:a.status})),experimentCounts:g[a.uuid]||{}}))};return{content:[{type:"text",text:JSON.stringify(k,null,2)}]}}),a.registerTool("synapse_get_available_research_questions",{description:"Get Research Questions available to claim in a research project (status=open)",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID")})},async({researchProjectUuid:a})=>{if(!await f.j5(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let{researchQuestions:c}=await m.m(b.companyUuid,a,!0,!1);return{content:[{type:"text",text:JSON.stringify({researchQuestions:c},null,2)}]}}),a.registerTool("synapse_get_research_question",{description:"Get detailed information for a single Research Question",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g.ok(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Research Question not found"}],isError:!0}}),a.registerTool("synapse_get_comments",{description:"Get the list of comments for a Research Question/Experiment/Experiment Design/Experiment Run/Document",inputSchema:e.Ikc({targetType:e.k5n(["research_question","experiment","experiment_design","experiment_run","document"]).describe("Target type"),targetUuid:e.YjP().describe("Target UUID"),page:e.aig().optional().default(1).describe("Page number"),pageSize:e.aig().optional().default(20).describe("Items per page")})},async({targetType:a,targetUuid:c,page:d=1,pageSize:e=20})=>{let{comments:f,total:g}=await l.fg({companyUuid:b.companyUuid,targetType:a,targetUuid:c,skip:(d-1)*e,take:e});return{content:[{type:"text",text:JSON.stringify({comments:f,total:g,page:d,pageSize:e},null,2)}]}}),a.registerTool("synapse_get_notifications",{description:"Get the list of notifications for the current Agent. By default, fetching unread notifications automatically marks them as read. Set autoMarkRead=false to keep them unread.",inputSchema:e.Ikc({status:e.k5n(["unread","read","all"]).default("unread").optional().describe("Filter by status"),limit:e.aig().default(20).optional().describe("Items per page"),offset:e.aig().default(0).optional().describe("Offset"),autoMarkRead:e.zMY().default(!0).optional().describe("Automatically mark fetched unread notifications as read (default: true)")})},async a=>{let c=a.status??"unread",d=await n.p_({companyUuid:b.companyUuid,recipientType:b.type,recipientUuid:b.actorUuid,readFilter:"unread"===c?"unread":"read"===c?"read":"all",skip:a.offset??0,take:a.limit??20});if((a.autoMarkRead??!0)&&"unread"===c&&d.notifications?.length>0){let a=d.notifications.filter(a=>!a.readAt).map(a=>a.uuid);a.length>0&&await Promise.all(a.map(a=>n.Ip(a,b.companyUuid,b.type,b.actorUuid).catch(()=>{})))}return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_mark_notification_read",{description:"Mark notification(s) as read (single or all)",inputSchema:e.Ikc({notificationUuid:e.YjP().optional().describe("Single notification UUID"),all:e.zMY().default(!1).optional().describe("Whether to mark all as read")})},async a=>a.all?(await n.NL(b.companyUuid,b.type,b.actorUuid),{content:[{type:"text",text:JSON.stringify({success:!0},null,2)}]}):a.notificationUuid?(await n.Ip(a.notificationUuid,b.companyUuid,b.type,b.actorUuid),{content:[{type:"text",text:JSON.stringify({success:!0},null,2)}]}):{content:[{type:"text",text:JSON.stringify({error:"notificationUuid or all=true required"})}],isError:!0}),a.registerTool("synapse_get_project_groups",{description:"List all project groups for the current company. Returns groups with project counts.",inputSchema:e.Ikc({})},async()=>{let a=await o.a1(b.companyUuid);return{content:[{type:"text",text:JSON.stringify(a,null,2)}]}}),a.registerTool("synapse_get_project_group",{description:"Get a single project group by UUID with its projects list.",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID")})},async({groupUuid:a})=>{let c=await o.xv(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_get_group_dashboard",{description:"Get aggregated dashboard stats for a project group (project count, experiment runs, completion rate, research questions, experiment designs, activity stream).",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID")})},async({groupUuid:a})=>{let c=await o.Im(b.companyUuid,a);return c?{content:[{type:"text",text:JSON.stringify(c,null,2)}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_search_mentionables",{description:"Search for users and agents that can be @mentioned by the current caller. Users only see agents they own; agents see company users plus same-owner agents. Returns name, type, and UUID.",inputSchema:e.Ikc({query:e.YjP().describe("Name or keyword to search"),limit:e.aig().optional().default(10).describe("Max results to return (default 10)")})},async({query:a,limit:c})=>{let d=await p._L({companyUuid:b.companyUuid,query:a,actorType:b.type,actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,limit:c});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_upload_document_image",{description:"Upload a figure/image into a document's local image store and get back a Synapse-hosted URL for embedding in Markdown (e.g. ![alt](/api/documents/:uuid/images/...)). Provide either documentUuid for an existing document or experimentUuid to create/reuse that experiment's result document before uploading. Use this for any figure you render in an experiment report or document — never embed third-party image-host links (catbox, litterbox, imgur, etc.), because they expire and are not reliably reachable from end users' browsers.",inputSchema:e.Ikc({documentUuid:e.YjP().optional().describe("Existing Document UUID the image belongs to. Mutually exclusive with experimentUuid."),experimentUuid:e.YjP().optional().describe("Experiment UUID. Creates or reuses the dedicated experiment result document before uploading. Mutually exclusive with documentUuid."),filename:e.YjP().describe("Original file name, used for extension and sanitized server-side (e.g. 'cross-benchmark-summary.png')"),mimeType:e.k5n(["image/png","image/jpeg","image/gif","image/webp","image/svg+xml"]).describe("Image MIME type"),base64Content:e.YjP().describe("Base64-encoded image bytes (no data: prefix)")})},async({documentUuid:a,experimentUuid:c,filename:d,mimeType:e,base64Content:f})=>{let g;if(a&&c||!a&&!c)return{content:[{type:"text",text:"Provide exactly one of documentUuid or experimentUuid"}],isError:!0};let k=a;if(k){if(!await h.Cs(b.companyUuid,k))return{content:[{type:"text",text:"Document not found"}],isError:!0}}else if(c)try{k=(await i.Si({companyUuid:b.companyUuid,actorType:b.type,actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,experimentUuid:c})).uuid}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to prepare experiment report document"}],isError:!0}}if(!j.mD.has(e))return{content:[{type:"text",text:`Unsupported mimeType: ${e}`}],isError:!0};if(!k)return{content:[{type:"text",text:"Document not found"}],isError:!0};try{g=Buffer.from(f,"base64")}catch{return{content:[{type:"text",text:"base64Content is not valid base64"}],isError:!0}}try{let a=await (0,j.Q6)({companyUuid:b.companyUuid,documentUuid:k,originalName:d,mimeType:e,data:g});return{content:[{type:"text",text:JSON.stringify({...a,documentUuid:k},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to upload image"}],isError:!0}}})}[f,g,h,i,k,l,m,n,o,p,q]=s.then?(await s)():s,d()}catch(a){d(a)}})},31421:a=>{a.exports=require("node:child_process")},31657:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(15746),e=c(41033),f=c(23235),g=c(71296);b.default={keyword:"properties",type:"object",schemaType:"object",code(a){let{gen:b,schema:c,parentSchema:h,data:i,it:j}=a;"all"===j.opts.removeAdditional&&void 0===h.additionalProperties&&g.default.code(new d.KeywordCxt(j,g.default,"additionalProperties"));let k=(0,e.allSchemaProperties)(c);for(let a of k)j.definedProperties.add(a);j.opts.unevaluated&&k.length&&!0!==j.props&&(j.props=f.mergeEvaluated.props(b,(0,f.toHash)(k),j.props));let l=k.filter(a=>!(0,f.alwaysValidSchema)(j,c[a]));if(0===l.length)return;let m=b.name("valid");for(let d of l){var n;(n=d,j.opts.useDefaults&&!j.compositeRule&&void 0!==c[n].default)?o(d):(b.if((0,e.propertyInData)(b,i,d,j.opts.ownProperties)),o(d),j.allErrors||b.else().var(m,!0),b.endIf()),a.it.definedProperties.add(d),a.ok(m)}function o(b){a.subschema({keyword:"properties",schemaProp:b,dataProp:b},m)}}}},32739:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxItems"===a?"more":"fewer"} than ${b} items`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a,f="maxItems"===b?d.operators.GT:d.operators.LT;a.fail$data((0,d._)`${c}.length ${f} ${e}`)}}},33006:(a,b,c)=>{c.d(b,{FT:()=>a4,TF:()=>a2,gd:()=>an,gH:()=>ao,Sq:()=>I,iK:()=>bI,K1:()=>bk,TI:()=>bl,Mg:()=>af,PC:()=>g,n_:()=>bE,wR:()=>G,O4:()=>d,$p:()=>aO,oQ:()=>ak,Ql:()=>ai,Sc:()=>aj,rk:()=>T,ZC:()=>X,OR:()=>F,aE:()=>f,Qq:()=>aL,s:()=>az,OI:()=>ax,Cs:()=>bO,zR:()=>al,a5:()=>am,gW:()=>a0,FP:()=>a6,Nh:()=>bQ,tC:()=>Y,_r:()=>_,EV:()=>i,R6:()=>aC,Iu:()=>h,b_:()=>a8,ki:()=>ah,uv:()=>bJ,X6:()=>bK,eK:()=>U,LW:()=>E,lg:()=>A,vo:()=>y,ig:()=>C,bZ:()=>r});var d,e=c(77258);let f="2025-11-25",g="2025-03-26",h=[f,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],i="io.modelcontextprotocol/related-task",j=e.IeY(a=>null!==a&&("object"==typeof a||"function"==typeof a)),k=e.KCZ([e.YjP(),e.aig().int()]),l=e.YjP();e._H3({ttl:e.KCZ([e.aig(),e.chJ()]).optional(),pollInterval:e.aig().optional()});let m=e.Ikc({ttl:e.aig().optional()}),n=e.Ikc({taskId:e.YjP()}),o=e._H3({progressToken:k.optional(),[i]:n.optional()}),p=e.Ikc({_meta:o.optional()}),q=p.extend({task:m.optional()}),r=a=>q.safeParse(a).success,s=e.Ikc({method:e.YjP(),params:p.loose().optional()}),t=e.Ikc({_meta:o.optional()}),u=e.Ikc({method:e.YjP(),params:t.loose().optional()}),v=e._H3({_meta:o.optional()}),w=e.KCZ([e.YjP(),e.aig().int()]),x=e.Ikc({jsonrpc:e.euz("2.0"),id:w,...s.shape}).strict(),y=a=>x.safeParse(a).success,z=e.Ikc({jsonrpc:e.euz("2.0"),...u.shape}).strict(),A=a=>z.safeParse(a).success,B=e.Ikc({jsonrpc:e.euz("2.0"),id:w,result:v}).strict(),C=a=>B.safeParse(a).success;!function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError",a[a.UrlElicitationRequired=-32042]="UrlElicitationRequired"}(d||(d={}));let D=e.Ikc({jsonrpc:e.euz("2.0"),id:w.optional(),error:e.Ikc({code:e.aig().int(),message:e.YjP(),data:e.L5J().optional()})}).strict(),E=a=>D.safeParse(a).success,F=e.KCZ([x,z,B,D]);e.KCZ([B,D]);let G=v.strict(),H=t.extend({requestId:w.optional(),reason:e.YjP().optional()}),I=u.extend({method:e.euz("notifications/cancelled"),params:H}),J=e.Ikc({src:e.YjP(),mimeType:e.YjP().optional(),sizes:e.YOg(e.YjP()).optional(),theme:e.k5n(["light","dark"]).optional()}),K=e.Ikc({icons:e.YOg(J).optional()}),L=e.Ikc({name:e.YjP(),title:e.YjP().optional()}),M=L.extend({...L.shape,...K.shape,version:e.YjP(),websiteUrl:e.YjP().optional(),description:e.YjP().optional()}),N=e.E$q(e.Ikc({applyDefaults:e.zMY().optional()}),e.g1P(e.YjP(),e.L5J())),O=e.vkY(a=>a&&"object"==typeof a&&!Array.isArray(a)&&0===Object.keys(a).length?{form:{}}:a,e.E$q(e.Ikc({form:N.optional(),url:j.optional()}),e.g1P(e.YjP(),e.L5J()).optional())),P=e._H3({list:j.optional(),cancel:j.optional(),requests:e._H3({sampling:e._H3({createMessage:j.optional()}).optional(),elicitation:e._H3({create:j.optional()}).optional()}).optional()}),Q=e._H3({list:j.optional(),cancel:j.optional(),requests:e._H3({tools:e._H3({call:j.optional()}).optional()}).optional()}),R=e.Ikc({experimental:e.g1P(e.YjP(),j).optional(),sampling:e.Ikc({context:j.optional(),tools:j.optional()}).optional(),elicitation:O.optional(),roots:e.Ikc({listChanged:e.zMY().optional()}).optional(),tasks:P.optional()}),S=p.extend({protocolVersion:e.YjP(),capabilities:R,clientInfo:M}),T=s.extend({method:e.euz("initialize"),params:S}),U=a=>T.safeParse(a).success,V=e.Ikc({experimental:e.g1P(e.YjP(),j).optional(),logging:j.optional(),completions:j.optional(),prompts:e.Ikc({listChanged:e.zMY().optional()}).optional(),resources:e.Ikc({subscribe:e.zMY().optional(),listChanged:e.zMY().optional()}).optional(),tools:e.Ikc({listChanged:e.zMY().optional()}).optional(),tasks:Q.optional()}),W=v.extend({protocolVersion:e.YjP(),capabilities:V,serverInfo:M,instructions:e.YjP().optional()}),X=u.extend({method:e.euz("notifications/initialized"),params:t.optional()}),Y=s.extend({method:e.euz("ping"),params:p.optional()}),Z=e.Ikc({progress:e.aig(),total:e.lqM(e.aig()),message:e.lqM(e.YjP())}),$=e.Ikc({...t.shape,...Z.shape,progressToken:k}),_=u.extend({method:e.euz("notifications/progress"),params:$}),aa=p.extend({cursor:l.optional()}),ab=s.extend({params:aa.optional()}),ac=v.extend({nextCursor:l.optional()}),ad=e.k5n(["working","input_required","completed","failed","cancelled"]),ae=e.Ikc({taskId:e.YjP(),status:ad,ttl:e.KCZ([e.aig(),e.chJ()]),createdAt:e.YjP(),lastUpdatedAt:e.YjP(),pollInterval:e.lqM(e.aig()),statusMessage:e.lqM(e.YjP())}),af=v.extend({task:ae}),ag=t.merge(ae),ah=u.extend({method:e.euz("notifications/tasks/status"),params:ag}),ai=s.extend({method:e.euz("tasks/get"),params:p.extend({taskId:e.YjP()})}),aj=v.merge(ae),ak=s.extend({method:e.euz("tasks/result"),params:p.extend({taskId:e.YjP()})});v.loose();let al=ab.extend({method:e.euz("tasks/list")}),am=ac.extend({tasks:e.YOg(ae)}),an=s.extend({method:e.euz("tasks/cancel"),params:p.extend({taskId:e.YjP()})}),ao=v.merge(ae),ap=e.Ikc({uri:e.YjP(),mimeType:e.lqM(e.YjP()),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aq=ap.extend({text:e.YjP()}),ar=e.YjP().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),as=ap.extend({blob:ar}),at=e.k5n(["user","assistant"]),au=e.Ikc({audience:e.YOg(at).optional(),priority:e.aig().min(0).max(1).optional(),lastModified:e.KH5.datetime({offset:!0}).optional()}),av=e.Ikc({...L.shape,...K.shape,uri:e.YjP(),description:e.lqM(e.YjP()),mimeType:e.lqM(e.YjP()),annotations:au.optional(),_meta:e.lqM(e._H3({}))}),aw=e.Ikc({...L.shape,...K.shape,uriTemplate:e.YjP(),description:e.lqM(e.YjP()),mimeType:e.lqM(e.YjP()),annotations:au.optional(),_meta:e.lqM(e._H3({}))}),ax=ab.extend({method:e.euz("resources/list")}),ay=ac.extend({resources:e.YOg(av)}),az=ab.extend({method:e.euz("resources/templates/list")}),aA=ac.extend({resourceTemplates:e.YOg(aw)}),aB=p.extend({uri:e.YjP()}),aC=s.extend({method:e.euz("resources/read"),params:aB}),aD=v.extend({contents:e.YOg(e.KCZ([aq,as]))}),aE=u.extend({method:e.euz("notifications/resources/list_changed"),params:t.optional()}),aF=s.extend({method:e.euz("resources/subscribe"),params:aB}),aG=s.extend({method:e.euz("resources/unsubscribe"),params:aB}),aH=t.extend({uri:e.YjP()}),aI=u.extend({method:e.euz("notifications/resources/updated"),params:aH}),aJ=e.Ikc({name:e.YjP(),description:e.lqM(e.YjP()),required:e.lqM(e.zMY())}),aK=e.Ikc({...L.shape,...K.shape,description:e.lqM(e.YjP()),arguments:e.lqM(e.YOg(aJ)),_meta:e.lqM(e._H3({}))}),aL=ab.extend({method:e.euz("prompts/list")}),aM=ac.extend({prompts:e.YOg(aK)}),aN=p.extend({name:e.YjP(),arguments:e.g1P(e.YjP(),e.YjP()).optional()}),aO=s.extend({method:e.euz("prompts/get"),params:aN}),aP=e.Ikc({type:e.euz("text"),text:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aQ=e.Ikc({type:e.euz("image"),data:ar,mimeType:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aR=e.Ikc({type:e.euz("audio"),data:ar,mimeType:e.YjP(),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aS=e.Ikc({type:e.euz("tool_use"),name:e.YjP(),id:e.YjP(),input:e.g1P(e.YjP(),e.L5J()),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aT=e.Ikc({type:e.euz("resource"),resource:e.KCZ([aq,as]),annotations:au.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),aU=av.extend({type:e.euz("resource_link")}),aV=e.KCZ([aP,aQ,aR,aU,aT]),aW=e.Ikc({role:at,content:aV}),aX=v.extend({description:e.YjP().optional(),messages:e.YOg(aW)}),aY=u.extend({method:e.euz("notifications/prompts/list_changed"),params:t.optional()}),aZ=e.Ikc({title:e.YjP().optional(),readOnlyHint:e.zMY().optional(),destructiveHint:e.zMY().optional(),idempotentHint:e.zMY().optional(),openWorldHint:e.zMY().optional()}),a$=e.Ikc({taskSupport:e.k5n(["required","optional","forbidden"]).optional()}),a_=e.Ikc({...L.shape,...K.shape,description:e.YjP().optional(),inputSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),j).optional(),required:e.YOg(e.YjP()).optional()}).catchall(e.L5J()),outputSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),j).optional(),required:e.YOg(e.YjP()).optional()}).catchall(e.L5J()).optional(),annotations:aZ.optional(),execution:a$.optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),a0=ab.extend({method:e.euz("tools/list")}),a1=ac.extend({tools:e.YOg(a_)}),a2=v.extend({content:e.YOg(aV).default([]),structuredContent:e.g1P(e.YjP(),e.L5J()).optional(),isError:e.zMY().optional()});a2.or(v.extend({toolResult:e.L5J()}));let a3=q.extend({name:e.YjP(),arguments:e.g1P(e.YjP(),e.L5J()).optional()}),a4=s.extend({method:e.euz("tools/call"),params:a3}),a5=u.extend({method:e.euz("notifications/tools/list_changed"),params:t.optional()});e.Ikc({autoRefresh:e.zMY().default(!0),debounceMs:e.aig().int().nonnegative().default(300)});let a6=e.k5n(["debug","info","notice","warning","error","critical","alert","emergency"]),a7=p.extend({level:a6}),a8=s.extend({method:e.euz("logging/setLevel"),params:a7}),a9=t.extend({level:a6,logger:e.YjP().optional(),data:e.L5J()}),ba=u.extend({method:e.euz("notifications/message"),params:a9}),bb=e.Ikc({name:e.YjP().optional()}),bc=e.Ikc({hints:e.YOg(bb).optional(),costPriority:e.aig().min(0).max(1).optional(),speedPriority:e.aig().min(0).max(1).optional(),intelligencePriority:e.aig().min(0).max(1).optional()}),bd=e.Ikc({mode:e.k5n(["auto","required","none"]).optional()}),be=e.Ikc({type:e.euz("tool_result"),toolUseId:e.YjP().describe("The unique identifier for the corresponding tool call."),content:e.YOg(aV).default([]),structuredContent:e.Ikc({}).loose().optional(),isError:e.zMY().optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bf=e.gMt("type",[aP,aQ,aR]),bg=e.gMt("type",[aP,aQ,aR,aS,be]),bh=e.Ikc({role:at,content:e.KCZ([bg,e.YOg(bg)]),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bi=q.extend({messages:e.YOg(bh),modelPreferences:bc.optional(),systemPrompt:e.YjP().optional(),includeContext:e.k5n(["none","thisServer","allServers"]).optional(),temperature:e.aig().optional(),maxTokens:e.aig().int(),stopSequences:e.YOg(e.YjP()).optional(),metadata:j.optional(),tools:e.YOg(a_).optional(),toolChoice:bd.optional()}),bj=s.extend({method:e.euz("sampling/createMessage"),params:bi}),bk=v.extend({model:e.YjP(),stopReason:e.lqM(e.k5n(["endTurn","stopSequence","maxTokens"]).or(e.YjP())),role:at,content:bf}),bl=v.extend({model:e.YjP(),stopReason:e.lqM(e.k5n(["endTurn","stopSequence","maxTokens","toolUse"]).or(e.YjP())),role:at,content:e.KCZ([bg,e.YOg(bg)])}),bm=e.Ikc({type:e.euz("boolean"),title:e.YjP().optional(),description:e.YjP().optional(),default:e.zMY().optional()}),bn=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),minLength:e.aig().optional(),maxLength:e.aig().optional(),format:e.k5n(["email","uri","date","date-time"]).optional(),default:e.YjP().optional()}),bo=e.Ikc({type:e.k5n(["number","integer"]),title:e.YjP().optional(),description:e.YjP().optional(),minimum:e.aig().optional(),maximum:e.aig().optional(),default:e.aig().optional()}),bp=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),enum:e.YOg(e.YjP()),default:e.YjP().optional()}),bq=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),oneOf:e.YOg(e.Ikc({const:e.YjP(),title:e.YjP()})),default:e.YjP().optional()}),br=e.Ikc({type:e.euz("string"),title:e.YjP().optional(),description:e.YjP().optional(),enum:e.YOg(e.YjP()),enumNames:e.YOg(e.YjP()).optional(),default:e.YjP().optional()}),bs=e.KCZ([bp,bq]),bt=e.Ikc({type:e.euz("array"),title:e.YjP().optional(),description:e.YjP().optional(),minItems:e.aig().optional(),maxItems:e.aig().optional(),items:e.Ikc({type:e.euz("string"),enum:e.YOg(e.YjP())}),default:e.YOg(e.YjP()).optional()}),bu=e.Ikc({type:e.euz("array"),title:e.YjP().optional(),description:e.YjP().optional(),minItems:e.aig().optional(),maxItems:e.aig().optional(),items:e.Ikc({anyOf:e.YOg(e.Ikc({const:e.YjP(),title:e.YjP()}))}),default:e.YOg(e.YjP()).optional()}),bv=e.KCZ([bt,bu]),bw=e.KCZ([br,bs,bv]),bx=e.KCZ([bw,bm,bn,bo]),by=q.extend({mode:e.euz("form").optional(),message:e.YjP(),requestedSchema:e.Ikc({type:e.euz("object"),properties:e.g1P(e.YjP(),bx),required:e.YOg(e.YjP()).optional()})}),bz=q.extend({mode:e.euz("url"),message:e.YjP(),elicitationId:e.YjP(),url:e.YjP().url()}),bA=e.KCZ([by,bz]),bB=s.extend({method:e.euz("elicitation/create"),params:bA}),bC=t.extend({elicitationId:e.YjP()}),bD=u.extend({method:e.euz("notifications/elicitation/complete"),params:bC}),bE=v.extend({action:e.k5n(["accept","decline","cancel"]),content:e.vkY(a=>null===a?void 0:a,e.g1P(e.YjP(),e.KCZ([e.YjP(),e.aig(),e.zMY(),e.YOg(e.YjP())])).optional())}),bF=e.Ikc({type:e.euz("ref/resource"),uri:e.YjP()}),bG=e.Ikc({type:e.euz("ref/prompt"),name:e.YjP()}),bH=p.extend({ref:e.KCZ([bG,bF]),argument:e.Ikc({name:e.YjP(),value:e.YjP()}),context:e.Ikc({arguments:e.g1P(e.YjP(),e.YjP()).optional()}).optional()}),bI=s.extend({method:e.euz("completion/complete"),params:bH});function bJ(a){if("ref/prompt"!==a.params.ref.type)throw TypeError(`Expected CompleteRequestPrompt, but got ${a.params.ref.type}`)}function bK(a){if("ref/resource"!==a.params.ref.type)throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${a.params.ref.type}`)}let bL=v.extend({completion:e._H3({values:e.YOg(e.YjP()).max(100),total:e.lqM(e.aig().int()),hasMore:e.lqM(e.zMY())})}),bM=e.Ikc({uri:e.YjP().startsWith("file://"),name:e.YjP().optional(),_meta:e.g1P(e.YjP(),e.L5J()).optional()}),bN=s.extend({method:e.euz("roots/list"),params:p.optional()}),bO=v.extend({roots:e.YOg(bM)}),bP=u.extend({method:e.euz("notifications/roots/list_changed"),params:t.optional()});e.KCZ([Y,T,bI,a8,aO,aL,ax,az,aC,aF,aG,a4,a0,ai,ak,al,an]),e.KCZ([I,_,X,bP,ah]),e.KCZ([G,bk,bl,bE,bO,aj,am,af]),e.KCZ([Y,bj,bB,bN,ai,ak,al,an]),e.KCZ([I,_,ba,aI,aE,a5,aY,ah,bD]),e.KCZ([G,W,bL,aX,aM,ay,aA,aD,a2,a1,aj,am,af]);class bQ extends Error{constructor(a,b,c){super(`MCP error ${a}: ${b}`),this.code=a,this.data=c,this.name="McpError"}static fromError(a,b,c){return a===d.UrlElicitationRequired&&c&&c.elicitations?new bR(c.elicitations,b):new bQ(a,b,c)}}class bR extends bQ{constructor(a,b=`URL elicitation${a.length>1?"s":""} required`){super(d.UrlElicitationRequired,b,{elicitations:a})}get elicitations(){return this.data?.elicitations??[]}}},33283:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(23235);b.default={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(a){let{gen:b,schema:c,it:e}=a;if((0,d.alwaysValidSchema)(e,c))return void a.fail();let f=b.name("valid");a.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},f),a.failResult(f,()=>a.reset(),()=>a.error())},error:{message:"must NOT be valid"}}},33873:a=>{a.exports=require("path")},34481:(a,b)=>{function c(a){let b,c=a.length,d=0,e=0;for(;e<c;)d++,(b=a.charCodeAt(e++))>=55296&&b<=56319&&e<c&&(64512&(b=a.charCodeAt(e)))==56320&&e++;return d}Object.defineProperty(b,"__esModule",{value:!0}),b.default=c,c.code='require("ajv/dist/runtime/ucs2length").default'},34631:a=>{a.exports=require("tls")},35684:(a,b,c)=>{var d;Object.defineProperty(b,"__esModule",{value:!0}),b.reportTypeError=b.checkDataTypes=b.checkDataType=b.coerceAndCheckDataType=b.getJSONTypes=b.getSchemaTypes=b.DataType=void 0;let e=c(30144),f=c(18423),g=c(66984),h=c(74489),i=c(23235);function j(a){let b=Array.isArray(a)?a:a?[a]:[];if(b.every(e.isJSONType))return b;throw Error("type must be JSONType or JSONType[]: "+b.join(","))}!function(a){a[a.Correct=0]="Correct",a[a.Wrong=1]="Wrong"}(d||(b.DataType=d={})),b.getSchemaTypes=function(a){let b=j(a.type);if(b.includes("null")){if(!1===a.nullable)throw Error("type: null contradicts nullable: false")}else{if(!b.length&&void 0!==a.nullable)throw Error('"nullable" cannot be used without "type"');!0===a.nullable&&b.push("null")}return b},b.getJSONTypes=j,b.coerceAndCheckDataType=function(a,b){var c,e;let{gen:g,data:i,opts:j}=a,l=(c=b,(e=j.coerceTypes)?c.filter(a=>k.has(a)||"array"===e&&"array"===a):[]),n=b.length>0&&!(0===l.length&&1===b.length&&(0,f.schemaHasRulesForType)(a,b[0]));if(n){let c=m(b,i,j.strictNumbers,d.Wrong);g.if(c,()=>{l.length?function(a,b,c){let{gen:d,data:e,opts:f}=a,g=d.let("dataType",(0,h._)`typeof ${e}`),i=d.let("coerced",(0,h._)`undefined`);for(let a of("array"===f.coerceTypes&&d.if((0,h._)`${g} == 'object' && Array.isArray(${e}) && ${e}.length == 1`,()=>d.assign(e,(0,h._)`${e}[0]`).assign(g,(0,h._)`typeof ${e}`).if(m(b,e,f.strictNumbers),()=>d.assign(i,e))),d.if((0,h._)`${i} !== undefined`),c))(k.has(a)||"array"===a&&"array"===f.coerceTypes)&&function(a){switch(a){case"string":d.elseIf((0,h._)`${g} == "number" || ${g} == "boolean"`).assign(i,(0,h._)`"" + ${e}`).elseIf((0,h._)`${e} === null`).assign(i,(0,h._)`""`);return;case"number":d.elseIf((0,h._)`${g} == "boolean" || ${e} === null
19
19
  || (${g} == "string" && ${e} && ${e} == +${e})`).assign(i,(0,h._)`+${e}`);return;case"integer":d.elseIf((0,h._)`${g} === "boolean" || ${e} === null
20
20
  || (${g} === "string" && ${e} && ${e} == +${e} && !(${e} % 1))`).assign(i,(0,h._)`+${e}`);return;case"boolean":d.elseIf((0,h._)`${e} === "false" || ${e} === 0 || ${e} === null`).assign(i,!1).elseIf((0,h._)`${e} === "true" || ${e} === 1`).assign(i,!0);return;case"null":d.elseIf((0,h._)`${e} === "" || ${e} === 0 || ${e} === false`),d.assign(i,null);return;case"array":d.elseIf((0,h._)`${g} === "string" || ${g} === "number"
21
21
  || ${g} === "boolean" || ${e} === null`).assign(i,(0,h._)`[${e}]`)}}(a);d.else(),o(a),d.endIf(),d.if((0,h._)`${i} !== undefined`,()=>{d.assign(e,i),function({gen:a,parentData:b,parentDataProperty:c},d){a.if((0,h._)`${b} !== undefined`,()=>a.assign((0,h._)`${b}[${c}]`,d))}(a,i)})}(a,b,l):o(a)})}return n};let k=new Set(["string","number","integer","boolean","null"]);function l(a,b,c,e=d.Correct){let f,g=e===d.Correct?h.operators.EQ:h.operators.NEQ;switch(a){case"null":return(0,h._)`${b} ${g} null`;case"array":f=(0,h._)`Array.isArray(${b})`;break;case"object":f=(0,h._)`${b} && typeof ${b} == "object" && !Array.isArray(${b})`;break;case"integer":f=i((0,h._)`!(${b} % 1) && !isNaN(${b})`);break;case"number":f=i();break;default:return(0,h._)`typeof ${b} ${g} ${a}`}return e===d.Correct?f:(0,h.not)(f);function i(a=h.nil){return(0,h.and)((0,h._)`typeof ${b} == "number"`,a,c?(0,h._)`isFinite(${b})`:h.nil)}}function m(a,b,c,d){let e;if(1===a.length)return l(a[0],b,c,d);let f=(0,i.toHash)(a);if(f.array&&f.object){let a=(0,h._)`typeof ${b} != "object"`;e=f.null?a:(0,h._)`!${b} || ${a}`,delete f.null,delete f.array,delete f.object}else e=h.nil;for(let a in f.number&&delete f.integer,f)e=(0,h.and)(e,l(a,b,c,d));return e}b.checkDataType=l,b.checkDataTypes=m;let n={message:({schema:a})=>`must be ${a}`,params:({schema:a,schemaValue:b})=>"string"==typeof a?(0,h._)`{type: ${a}}`:(0,h._)`{type: ${b}}`};function o(a){let b=function(a){let{gen:b,data:c,schema:d}=a,e=(0,i.schemaRefOrVal)(a,d,"type");return{gen:b,keyword:"type",data:c,schema:d.type,schemaCode:e,schemaValue:e,parentSchema:d,params:{},it:a}}(a);(0,g.reportError)(b,n)}b.reportTypeError=o},37085:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.contentVocabulary=b.metadataVocabulary=void 0,b.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],b.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]},38404:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{W:()=>n});var e=c(77258),f=c(57335),g=c(52618),h=c(8777),i=c(37943),j=c(85034),k=c(911),l=c(96718),m=a([f,g,h,i,j,l]);[f,g,h,i,j,l]=m.then?(await m)():m;let o={auto_search:{activeField:"autoSearchActiveAgentUuid",notificationAction:"auto_search_completed"},deep_research:{activeField:"deepResearchActiveAgentUuid",notificationAction:"deep_research_completed"},synthesis:{activeField:"synthesisActiveAgentUuid",notificationAction:"synthesis_refresh_completed"}},p={auto_search:"Auto-search for related papers has completed.",deep_research:"Deep research literature review has completed.",synthesis:"Project synthesis has been updated by agent."};function n(a,b){a.registerTool("synapse_search_papers",{description:"Search for academic papers. Uses DeepXiv hybrid search (BM25 + vector) over arXiv, with arXiv API as fallback. Returns titles, abstracts, authors, and URLs.",inputSchema:e.Ikc({query:e.YjP().describe("Search query, e.g. 'speech recognition Chinese accent'"),limit:e.aig().int().min(1).max(20).default(10)})},async({query:a,limit:b})=>{try{let{searchPapers:d}=await c.e(4273).then(c.bind(c,64273)),e=await d(a,b);return{content:[{type:"text",text:JSON.stringify({papers:e},null,2)}]}}catch(a){return{content:[{type:"text",text:`Paper search failed: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_read_paper_brief",{description:"Get a brief summary of an arXiv paper: TLDR, keywords, citation count, GitHub URL. ~500 tokens.",inputSchema:e.Ikc({arxivId:e.YjP().describe("arXiv paper ID, e.g. '2301.07041'")})},async({arxivId:a})=>{try{let{readPaperBrief:b}=await c.e(4273).then(c.bind(c,64273)),d=await b(a);if(!d)return{content:[{type:"text",text:`Paper not found: ${a}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_read_paper_head",{description:"Get paper structure with section names, per-section TLDRs, and token counts. Use to plan which sections to read. ~1-2k tokens.",inputSchema:e.Ikc({arxivId:e.YjP().describe("arXiv paper ID, e.g. '2301.07041'")})},async({arxivId:a})=>{try{let{readPaperHead:b}=await c.e(4273).then(c.bind(c,64273)),d=await b(a);if(!d)return{content:[{type:"text",text:`Paper not found: ${a}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_read_paper_section",{description:"Read the full text of a specific section from an arXiv paper. Use synapse_read_paper_head first to discover section names. ~1-5k tokens.",inputSchema:e.Ikc({arxivId:e.YjP().describe("arXiv paper ID, e.g. '2301.07041'"),sectionName:e.YjP().describe("Exact section name from the paper head")})},async({arxivId:a,sectionName:b})=>{try{let{readPaperSection:d}=await c.e(4273).then(c.bind(c,64273)),e=await d(a,b);if(!e)return{content:[{type:"text",text:`Section not found: "${b}" in paper ${a}`}],isError:!0};return{content:[{type:"text",text:e.content}]}}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_read_paper_full",{description:"Get the complete paper as raw Markdown. ~10-50k tokens, CAUTION: High token cost. Prefer synapse_read_paper_section for targeted reading.",inputSchema:e.Ikc({arxivId:e.YjP().describe("arXiv paper ID, e.g. '2301.07041'")})},async({arxivId:a})=>{try{let{readPaperFull:b}=await c.e(4273).then(c.bind(c,64273)),d=await b(a);if(!d)return{content:[{type:"text",text:`Paper not found: ${a}`}],isError:!0};return{content:[{type:"text",text:d}]}}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_add_related_work",{description:"Add a paper to a research project's Related Works collection. Returns isNew=true if newly added, isNew=false if already exists (duplicate by URL or arXiv ID).",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),url:e.YjP(),authors:e.YjP().optional(),abstract:e.YjP().optional(),arxivId:e.YjP().optional(),year:e.aig().int().optional().describe("Publication year"),source:e.k5n(["arxiv","deepxiv","semantic_scholar","openalex"]).default("deepxiv")})},async({researchProjectUuid:a,title:c,url:d,authors:e,abstract:h,arxivId:j,year:k,source:l})=>{let m=await (0,f.Xj)({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,url:d,authors:e,abstract:h,arxivId:j,source:l,addedBy:"auto",addedByAgentUuid:b.actorUuid,publishedYear:k});if(m.isNew)try{let[c,d,e]=await Promise.all([g.prisma.relatedWork.count({where:{companyUuid:b.companyUuid,researchProjectUuid:a}}),g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{name:!0}}),g.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}})]);e?.ownerUuid&&d&&await i.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:e.ownerUuid,entityType:"related_work",entityUuid:m.uuid,entityTitle:m.title,projectName:d.name,action:"related_work_added",message:`New paper collected: "${m.title}" (${c} total)`,actorType:"agent",actorUuid:b.actorUuid,actorName:e.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({relatedWork:m})}]}}),a.registerTool("synapse_get_related_works",{description:"Get all related works (papers) collected for a research project.",inputSchema:e.Ikc({researchProjectUuid:e.YjP()})},async({researchProjectUuid:a})=>{let c=await (0,f.KD)(b.companyUuid,a);return{content:[{type:"text",text:JSON.stringify({relatedWorks:c},null,2)}]}}),a.registerTool("synapse_get_deep_research_report",{description:"Get the deep research literature review document for a project. Returns null if none exists yet.",inputSchema:e.Ikc({researchProjectUuid:e.YjP()})},async({researchProjectUuid:a})=>{let c=await g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{deepResearchDocUuid:!0}});if(!c?.deepResearchDocUuid)return{content:[{type:"text",text:JSON.stringify({document:null})}]};let d=await h.YE(b.companyUuid,c.deepResearchDocUuid);return{content:[{type:"text",text:JSON.stringify({document:d},null,2)}]}}),a.registerTool("synapse_save_deep_research_report",{description:"Create or update the deep research literature review for a project. If a report already exists, updates it and increments the version (v1 → v2 → v3...). If none exists, creates a new one.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP().describe("Report title"),content:e.YjP().describe("Full report content (Markdown)")})},async({researchProjectUuid:a,title:c,content:d})=>{let e,f=await g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,deepResearchDocUuid:!0}});if(!f)return{content:[{type:"text",text:"Research Project not found"}],isError:!0};f.deepResearchDocUuid?e=await h.lU(f.deepResearchDocUuid,{title:c,content:d,incrementVersion:!0}):(e=await h.ui({companyUuid:b.companyUuid,researchProjectUuid:a,type:"deep_research",title:c,content:d,experimentDesignUuid:null,createdByUuid:b.actorUuid}),await (0,j.Wr)(f.uuid,{deepResearchDocUuid:e.uuid}));try{let d=await g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{name:!0}}),f=await g.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});f?.ownerUuid&&d&&await i.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:f.ownerUuid,entityType:"research_project",entityUuid:a,entityTitle:d.name,projectName:d.name,action:"deep_research_completed",message:`Deep research literature review "${c}" (v${e.version}) is ready.`,actorType:"agent",actorUuid:b.actorUuid,actorName:f.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({document:{uuid:e.uuid,title:e.title,version:e.version}},null,2)}]}}),a.registerTool("synapse_save_project_synthesis",{description:"Create or update the project-level rolling synthesis document with agent-written analysis, then clear the active synthesis task.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP().optional(),content:e.YjP().describe("Full Markdown synthesis content to save.")})},async({researchProjectUuid:a,title:c,content:d})=>{try{let e=await (0,l.cd)({companyUuid:b.companyUuid,researchProjectUuid:a,actorUuid:b.actorUuid,title:c??null,content:d}),f=await g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{name:!0,synthesisActiveAgentUuid:!0,synthesisStartedAt:!0}}),h=f?.synthesisActiveAgentUuid??null,j=!!(h||f?.synthesisStartedAt);if(j&&await g.prisma.researchProject.update({where:{uuid:a},data:{synthesisActiveAgentUuid:null,synthesisStartedAt:null}}),k.B.emitChange({companyUuid:b.companyUuid,researchProjectUuid:a,entityType:"research_project",entityUuid:a,action:"updated"}),h&&f)try{let c=await g.prisma.agent.findUnique({where:{uuid:h},select:{ownerUuid:!0,name:!0}});c?.ownerUuid&&await i.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:c.ownerUuid,entityType:"research_project",entityUuid:a,entityTitle:f.name,projectName:f.name,action:"synthesis_refresh_completed",message:p.synthesis,actorType:"agent",actorUuid:h,actorName:c.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({document:e,cleared:j},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to save synthesis"}],isError:!0}}}),a.registerTool("synapse_complete_task",{description:"Signal that an agent task (auto_search, deep_research, or synthesis) has finished. Clears the active indicator on the project and notifies the owner.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),taskType:e.k5n(["auto_search","deep_research","synthesis"])})},async({researchProjectUuid:a,taskType:c})=>{let d=o[c],e=await g.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,name:!0,autoSearchActiveAgentUuid:!0,deepResearchActiveAgentUuid:!0,synthesisActiveAgentUuid:!0}});if(!e)return{content:[{type:"text",text:"Research Project not found"}],isError:!0};let f="auto_search"===c?e.autoSearchActiveAgentUuid:"deep_research"===c?e.deepResearchActiveAgentUuid:e.synthesisActiveAgentUuid;if(!f)return{content:[{type:"text",text:JSON.stringify({cleared:!1,reason:"no active task"})}]};await g.prisma.researchProject.update({where:{uuid:a},data:"synthesis"===c?{[d.activeField]:null,synthesisStartedAt:null}:{[d.activeField]:null}}),k.B.emitChange({companyUuid:b.companyUuid,researchProjectUuid:a,entityType:"research_project",entityUuid:a,action:"updated"});try{let h=await g.prisma.agent.findUnique({where:{uuid:f},select:{ownerUuid:!0,name:!0}});h?.ownerUuid&&await i.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:h.ownerUuid,entityType:"research_project",entityUuid:a,entityTitle:e.name,projectName:e.name,action:d.notificationAction,message:p[c],actorType:"agent",actorUuid:f,actorName:h.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({cleared:!0})}]}})}d()}catch(a){d(a)}})},40001:(a,b,c)=>{var d;Object.defineProperty(b,"__esModule",{value:!0}),b.ValueScope=b.ValueScopeName=b.Scope=b.varKinds=b.UsedValueState=void 0;let e=c(86684);class f extends Error{constructor(a){super(`CodeGen: "code" for ${a} not defined`),this.value=a.value}}!function(a){a[a.Started=0]="Started",a[a.Completed=1]="Completed"}(d||(b.UsedValueState=d={})),b.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class g{constructor({prefixes:a,parent:b}={}){this._names={},this._prefixes=a,this._parent=b}toName(a){return a instanceof e.Name?a:this.name(a)}name(a){return new e.Name(this._newName(a))}_newName(a){let b=this._names[a]||this._nameGroup(a);return`${a}${b.index++}`}_nameGroup(a){var b,c;if((null==(c=null==(b=this._parent)?void 0:b._prefixes)?void 0:c.has(a))||this._prefixes&&!this._prefixes.has(a))throw Error(`CodeGen: prefix "${a}" is not allowed in this scope`);return this._names[a]={prefix:a,index:0}}}b.Scope=g;class h extends e.Name{constructor(a,b){super(b),this.prefix=a}setValue(a,{property:b,itemIndex:c}){this.value=a,this.scopePath=(0,e._)`.${new e.Name(b)}[${c}]`}}b.ValueScopeName=h;let i=(0,e._)`\n`;class j extends g{constructor(a){super(a),this._values={},this._scope=a.scope,this.opts={...a,_n:a.lines?i:e.nil}}get(){return this._scope}name(a){return new h(a,this._newName(a))}value(a,b){var c;if(void 0===b.ref)throw Error("CodeGen: ref must be passed in value");let d=this.toName(a),{prefix:e}=d,f=null!=(c=b.key)?c:b.ref,g=this._values[e];if(g){let a=g.get(f);if(a)return a}else g=this._values[e]=new Map;g.set(f,d);let h=this._scope[e]||(this._scope[e]=[]),i=h.length;return h[i]=b.ref,d.setValue(b,{property:e,itemIndex:i}),d}getValue(a,b){let c=this._values[a];if(c)return c.get(b)}scopeRefs(a,b=this._values){return this._reduceValues(b,b=>{if(void 0===b.scopePath)throw Error(`CodeGen: name "${b}" has no value`);return(0,e._)`${a}${b.scopePath}`})}scopeCode(a=this._values,b,c){return this._reduceValues(a,a=>{if(void 0===a.value)throw Error(`CodeGen: name "${a}" has no value`);return a.value.code},b,c)}_reduceValues(a,c,g={},h){let i=e.nil;for(let j in a){let k=a[j];if(!k)continue;let l=g[j]=g[j]||new Map;k.forEach(a=>{if(l.has(a))return;l.set(a,d.Started);let g=c(a);if(g){let c=this.opts.es5?b.varKinds.var:b.varKinds.const;i=(0,e._)`${i}${c} ${a} = ${g};${this.opts._n}`}else if(g=null==h?void 0:h(a))i=(0,e._)`${i}${g}${this.opts._n}`;else throw new f(a);l.set(a,d.Completed)})}return i}}b.ValueScope=j},41016:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(91114),e=c(70511),f=c(29563),g=c(52310),h=c(92782),i=c(58219),j=c(32739),k=c(84221),l=c(70959),m=c(71339);b.default=[d.default,e.default,f.default,g.default,h.default,i.default,j.default,k.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},l.default,m.default]},41026:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.CodeGen=b.Name=b.nil=b.stringify=b.str=b._=b.KeywordCxt=void 0;var d=c(15746);Object.defineProperty(b,"KeywordCxt",{enumerable:!0,get:function(){return d.KeywordCxt}});var e=c(74489);Object.defineProperty(b,"_",{enumerable:!0,get:function(){return e._}}),Object.defineProperty(b,"str",{enumerable:!0,get:function(){return e.str}}),Object.defineProperty(b,"stringify",{enumerable:!0,get:function(){return e.stringify}}),Object.defineProperty(b,"nil",{enumerable:!0,get:function(){return e.nil}}),Object.defineProperty(b,"Name",{enumerable:!0,get:function(){return e.Name}}),Object.defineProperty(b,"CodeGen",{enumerable:!0,get:function(){return e.CodeGen}});let f=c(87294),g=c(29799),h=c(30144),i=c(50435),j=c(74489),k=c(1171),l=c(35684),m=c(23235),n=c(25915),o=c(77548),p=(a,b)=>new RegExp(a,b);p.code="new RegExp";let q=["removeAdditional","useDefaults","coerceTypes"],r=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),s={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},t={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'};class u{constructor(a={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,a=this.opts={...a,...function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,q,r,s,t,u,v,w,x,y,z,A,B;let C=a.strict,D=null==(b=a.code)?void 0:b.optimize,E=!0===D||void 0===D?1:D||0,F=null!=(d=null==(c=a.code)?void 0:c.regExp)?d:p,G=null!=(e=a.uriResolver)?e:o.default;return{strictSchema:null==(g=null!=(f=a.strictSchema)?f:C)||g,strictNumbers:null==(i=null!=(h=a.strictNumbers)?h:C)||i,strictTypes:null!=(k=null!=(j=a.strictTypes)?j:C)?k:"log",strictTuples:null!=(m=null!=(l=a.strictTuples)?l:C)?m:"log",strictRequired:null!=(q=null!=(n=a.strictRequired)?n:C)&&q,code:a.code?{...a.code,optimize:E,regExp:F}:{optimize:E,regExp:F},loopRequired:null!=(r=a.loopRequired)?r:200,loopEnum:null!=(s=a.loopEnum)?s:200,meta:null==(t=a.meta)||t,messages:null==(u=a.messages)||u,inlineRefs:null==(v=a.inlineRefs)||v,schemaId:null!=(w=a.schemaId)?w:"$id",addUsedSchema:null==(x=a.addUsedSchema)||x,validateSchema:null==(y=a.validateSchema)||y,validateFormats:null==(z=a.validateFormats)||z,unicodeRegExp:null==(A=a.unicodeRegExp)||A,int32range:null==(B=a.int32range)||B,uriResolver:G}}(a)};let{es5:b,lines:c}=this.opts.code;this.scope=new j.ValueScope({scope:{},prefixes:r,es5:b,lines:c}),this.logger=function(a){if(!1===a)return B;if(void 0===a)return console;if(a.log&&a.warn&&a.error)return a;throw Error("logger must implement log, warn and error methods")}(a.logger);let d=a.validateFormats;a.validateFormats=!1,this.RULES=(0,h.getRules)(),v.call(this,s,a,"NOT SUPPORTED"),v.call(this,t,a,"DEPRECATED","warn"),this._metaOpts=A.call(this),a.formats&&y.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),a.keywords&&z.call(this,a.keywords),"object"==typeof a.meta&&this.addMetaSchema(a.meta),x.call(this),a.validateFormats=d}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:a,meta:b,schemaId:c}=this.opts,d=n;"id"===c&&((d={...n}).id=d.$id,delete d.$id),b&&a&&this.addMetaSchema(d,d[c],!1)}defaultMeta(){let{meta:a,schemaId:b}=this.opts;return this.opts.defaultMeta="object"==typeof a?a[b]||a:void 0}validate(a,b){let c;if("string"==typeof a){if(!(c=this.getSchema(a)))throw Error(`no schema with key or ref "${a}"`)}else c=this.compile(a);let d=c(b);return"$async"in c||(this.errors=c.errors),d}compile(a,b){let c=this._addSchema(a,b);return c.validate||this._compileSchemaEnv(c)}compileAsync(a,b){if("function"!=typeof this.opts.loadSchema)throw Error("options.loadSchema should be a function");let{loadSchema:c}=this.opts;return d.call(this,a,b);async function d(a,b){await e.call(this,a.$schema);let c=this._addSchema(a,b);return c.validate||f.call(this,c)}async function e(a){a&&!this.getSchema(a)&&await d.call(this,{$ref:a},!0)}async function f(a){try{return this._compileSchemaEnv(a)}catch(b){if(!(b instanceof g.default))throw b;return h.call(this,b),await i.call(this,b.missingSchema),f.call(this,a)}}function h({missingSchema:a,missingRef:b}){if(this.refs[a])throw Error(`AnySchema ${a} is loaded but ${b} cannot be resolved`)}async function i(a){let c=await j.call(this,a);this.refs[a]||await e.call(this,c.$schema),this.refs[a]||this.addSchema(c,a,b)}async function j(a){let b=this._loading[a];if(b)return b;try{return await (this._loading[a]=c(a))}finally{delete this._loading[a]}}}addSchema(a,b,c,d=this.opts.validateSchema){let e;if(Array.isArray(a)){for(let b of a)this.addSchema(b,void 0,c,d);return this}if("object"==typeof a){let{schemaId:b}=this.opts;if(void 0!==(e=a[b])&&"string"!=typeof e)throw Error(`schema ${b} must be string`)}return b=(0,k.normalizeId)(b||e),this._checkUnique(b),this.schemas[b]=this._addSchema(a,c,b,d,!0),this}addMetaSchema(a,b,c=this.opts.validateSchema){return this.addSchema(a,b,!0,c),this}validateSchema(a,b){let c;if("boolean"==typeof a)return!0;if(void 0!==(c=a.$schema)&&"string"!=typeof c)throw Error("$schema must be a string");if(!(c=c||this.opts.defaultMeta||this.defaultMeta()))return this.logger.warn("meta-schema not available"),this.errors=null,!0;let d=this.validate(c,a);if(!d&&b){let a="schema is invalid: "+this.errorsText();if("log"===this.opts.validateSchema)this.logger.error(a);else throw Error(a)}return d}getSchema(a){let b;for(;"string"==typeof(b=w.call(this,a));)a=b;if(void 0===b){let{schemaId:c}=this.opts,d=new i.SchemaEnv({schema:{},schemaId:c});if(!(b=i.resolveSchema.call(this,d,a)))return;this.refs[a]=b}return b.validate||this._compileSchemaEnv(b)}removeSchema(a){if(a instanceof RegExp)return this._removeAllSchemas(this.schemas,a),this._removeAllSchemas(this.refs,a),this;switch(typeof a){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let b=w.call(this,a);return"object"==typeof b&&this._cache.delete(b.schema),delete this.schemas[a],delete this.refs[a],this}case"object":{this._cache.delete(a);let b=a[this.opts.schemaId];return b&&(b=(0,k.normalizeId)(b),delete this.schemas[b],delete this.refs[b]),this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(a){for(let b of a)this.addKeyword(b);return this}addKeyword(a,b){let c;if("string"==typeof a)c=a,"object"==typeof b&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),b.keyword=c);else if("object"==typeof a&&void 0===b){if(Array.isArray(c=(b=a).keyword)&&!c.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(D.call(this,c,b),!b)return(0,m.eachItem)(c,a=>E.call(this,a)),this;G.call(this,b);let d={...b,type:(0,l.getJSONTypes)(b.type),schemaType:(0,l.getJSONTypes)(b.schemaType)};return(0,m.eachItem)(c,0===d.type.length?a=>E.call(this,a,d):a=>d.type.forEach(b=>E.call(this,a,d,b))),this}getKeyword(a){let b=this.RULES.all[a];return"object"==typeof b?b.definition:!!b}removeKeyword(a){let{RULES:b}=this;for(let c of(delete b.keywords[a],delete b.all[a],b.rules)){let b=c.rules.findIndex(b=>b.keyword===a);b>=0&&c.rules.splice(b,1)}return this}addFormat(a,b){return"string"==typeof b&&(b=new RegExp(b)),this.formats[a]=b,this}errorsText(a=this.errors,{separator:b=", ",dataVar:c="data"}={}){return a&&0!==a.length?a.map(a=>`${c}${a.instancePath} ${a.message}`).reduce((a,c)=>a+b+c):"No errors"}$dataMetaSchema(a,b){let c=this.RULES.all;for(let d of(a=JSON.parse(JSON.stringify(a)),b)){let b=d.split("/").slice(1),e=a;for(let a of b)e=e[a];for(let a in c){let b=c[a];if("object"!=typeof b)continue;let{$data:d}=b.definition,f=e[a];d&&f&&(e[a]=I(f))}}return a}_removeAllSchemas(a,b){for(let c in a){let d=a[c];(!b||b.test(c))&&("string"==typeof d?delete a[c]:d&&!d.meta&&(this._cache.delete(d.schema),delete a[c]))}}_addSchema(a,b,c,d=this.opts.validateSchema,e=this.opts.addUsedSchema){let f,{schemaId:g}=this.opts;if("object"==typeof a)f=a[g];else if(this.opts.jtd)throw Error("schema must be object");else if("boolean"!=typeof a)throw Error("schema must be object or boolean");let h=this._cache.get(a);if(void 0!==h)return h;c=(0,k.normalizeId)(f||c);let j=k.getSchemaRefs.call(this,a,c);return h=new i.SchemaEnv({schema:a,schemaId:g,meta:b,baseId:c,localRefs:j}),this._cache.set(h.schema,h),e&&!c.startsWith("#")&&(c&&this._checkUnique(c),this.refs[c]=h),d&&this.validateSchema(a,!0),h}_checkUnique(a){if(this.schemas[a]||this.refs[a])throw Error(`schema with key or id "${a}" already exists`)}_compileSchemaEnv(a){if(a.meta?this._compileMetaSchema(a):i.compileSchema.call(this,a),!a.validate)throw Error("ajv implementation error");return a.validate}_compileMetaSchema(a){let b=this.opts;this.opts=this._metaOpts;try{i.compileSchema.call(this,a)}finally{this.opts=b}}}function v(a,b,c,d="error"){for(let e in a)e in b&&this.logger[d](`${c}: option ${e}. ${a[e]}`)}function w(a){return a=(0,k.normalizeId)(a),this.schemas[a]||this.refs[a]}function x(){let a=this.opts.schemas;if(a)if(Array.isArray(a))this.addSchema(a);else for(let b in a)this.addSchema(a[b],b)}function y(){for(let a in this.opts.formats){let b=this.opts.formats[a];b&&this.addFormat(a,b)}}function z(a){if(Array.isArray(a))return void this.addVocabulary(a);for(let b in this.logger.warn("keywords option as map is deprecated, pass array"),a){let c=a[b];c.keyword||(c.keyword=b),this.addKeyword(c)}}function A(){let a={...this.opts};for(let b of q)delete a[b];return a}u.ValidationError=f.default,u.MissingRefError=g.default,b.default=u;let B={log(){},warn(){},error(){}},C=/^[a-z_$][a-z0-9_$:-]*$/i;function D(a,b){let{RULES:c}=this;if((0,m.eachItem)(a,a=>{if(c.keywords[a])throw Error(`Keyword ${a} is already defined`);if(!C.test(a))throw Error(`Keyword ${a} has invalid name`)}),b&&b.$data&&!("code"in b||"validate"in b))throw Error('$data keyword must have "code" or "validate" function')}function E(a,b,c){var d;let e=null==b?void 0:b.post;if(c&&e)throw Error('keyword with "post" flag cannot have "type"');let{RULES:f}=this,g=e?f.post:f.rules.find(({type:a})=>a===c);if(g||(g={type:c,rules:[]},f.rules.push(g)),f.keywords[a]=!0,!b)return;let h={keyword:a,definition:{...b,type:(0,l.getJSONTypes)(b.type),schemaType:(0,l.getJSONTypes)(b.schemaType)}};b.before?F.call(this,g,h,b.before):g.rules.push(h),f.all[a]=h,null==(d=b.implements)||d.forEach(a=>this.addKeyword(a))}function F(a,b,c){let d=a.rules.findIndex(a=>a.keyword===c);d>=0?a.rules.splice(d,0,b):(a.rules.push(b),this.logger.warn(`rule ${c} is not defined`))}function G(a){let{metaSchema:b}=a;void 0!==b&&(a.$data&&this.opts.$data&&(b=I(b)),a.validateSchema=this.compile(b,!0))}let H={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function I(a){return{anyOf:[a,H]}}},41033:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateUnion=b.validateArray=b.usePattern=b.callValidateCode=b.schemaProperties=b.allSchemaProperties=b.noPropertyInData=b.propertyInData=b.isOwnProperty=b.hasPropFunc=b.reportMissingProp=b.checkMissingProp=b.checkReportMissingProp=void 0;let d=c(74489),e=c(23235),f=c(31079),g=c(23235);function h(a){return a.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,d._)`Object.prototype.hasOwnProperty`})}function i(a,b,c){return(0,d._)`${h(a)}.call(${b}, ${c})`}function j(a,b,c,e){let f=(0,d._)`${b}${(0,d.getProperty)(c)} === undefined`;return e?(0,d.or)(f,(0,d.not)(i(a,b,c))):f}function k(a){return a?Object.keys(a).filter(a=>"__proto__"!==a):[]}b.checkReportMissingProp=function(a,b){let{gen:c,data:e,it:f}=a;c.if(j(c,e,b,f.opts.ownProperties),()=>{a.setParams({missingProperty:(0,d._)`${b}`},!0),a.error()})},b.checkMissingProp=function({gen:a,data:b,it:{opts:c}},e,f){return(0,d.or)(...e.map(e=>(0,d.and)(j(a,b,e,c.ownProperties),(0,d._)`${f} = ${e}`)))},b.reportMissingProp=function(a,b){a.setParams({missingProperty:b},!0),a.error()},b.hasPropFunc=h,b.isOwnProperty=i,b.propertyInData=function(a,b,c,e){let f=(0,d._)`${b}${(0,d.getProperty)(c)} !== undefined`;return e?(0,d._)`${f} && ${i(a,b,c)}`:f},b.noPropertyInData=j,b.allSchemaProperties=k,b.schemaProperties=function(a,b){return k(b).filter(c=>!(0,e.alwaysValidSchema)(a,b[c]))},b.callValidateCode=function({schemaCode:a,data:b,it:{gen:c,topSchemaRef:e,schemaPath:g,errorPath:h},it:i},j,k,l){let m=l?(0,d._)`${a}, ${b}, ${e}${g}`:b,n=[[f.default.instancePath,(0,d.strConcat)(f.default.instancePath,h)],[f.default.parentData,i.parentData],[f.default.parentDataProperty,i.parentDataProperty],[f.default.rootData,f.default.rootData]];i.opts.dynamicRef&&n.push([f.default.dynamicAnchors,f.default.dynamicAnchors]);let o=(0,d._)`${m}, ${c.object(...n)}`;return k!==d.nil?(0,d._)`${j}.call(${k}, ${o})`:(0,d._)`${j}(${o})`};let l=(0,d._)`new RegExp`;b.usePattern=function({gen:a,it:{opts:b}},c){let e=b.unicodeRegExp?"u":"",{regExp:f}=b.code,h=f(c,e);return a.scopeValue("pattern",{key:h.toString(),ref:h,code:(0,d._)`${"new RegExp"===f.code?l:(0,g.useFunc)(a,f)}(${c}, ${e})`})},b.validateArray=function(a){let{gen:b,data:c,keyword:f,it:g}=a,h=b.name("valid");if(g.allErrors){let a=b.let("valid",!0);return i(()=>b.assign(a,!1)),a}return b.var(h,!0),i(()=>b.break()),h;function i(g){let i=b.const("len",(0,d._)`${c}.length`);b.forRange("i",0,i,c=>{a.subschema({keyword:f,dataProp:c,dataPropType:e.Type.Num},h),b.if((0,d.not)(h),g)})}},b.validateUnion=function(a){let{gen:b,schema:c,keyword:f,it:g}=a;if(!Array.isArray(c))throw Error("ajv implementation error");if(c.some(a=>(0,e.alwaysValidSchema)(g,a))&&!g.opts.unevaluated)return;let h=b.let("valid",!1),i=b.name("_valid");b.block(()=>c.forEach((c,e)=>{let g=a.subschema({keyword:f,schemaProp:e,compositeRule:!0},i);b.assign(h,(0,d._)`${h} || ${i}`),a.mergeValidEvaluated(g,i)||b.if((0,d.not)(h))})),a.result(h,()=>a.reset(),()=>a.error(!0))}},41204:a=>{a.exports=require("string_decoder")},41500:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.formatLimitDefinition=void 0;let d=c(13370),e=c(74489),f=e.operators,g={formatMaximum:{okStr:"<=",ok:f.LTE,fail:f.GT},formatMinimum:{okStr:">=",ok:f.GTE,fail:f.LT},formatExclusiveMaximum:{okStr:"<",ok:f.LT,fail:f.GTE},formatExclusiveMinimum:{okStr:">",ok:f.GT,fail:f.LTE}};b.formatLimitDefinition={keyword:Object.keys(g),type:"string",schemaType:"string",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,e.str)`should be ${g[a].okStr} ${b}`,params:({keyword:a,schemaCode:b})=>(0,e._)`{comparison: ${g[a].okStr}, limit: ${b}}`},code(a){let{gen:b,data:c,schemaCode:f,keyword:h,it:i}=a,{opts:j,self:k}=i;if(!j.validateFormats)return;let l=new d.KeywordCxt(i,k.RULES.all.format.definition,"format");function m(a){return(0,e._)`${a}.compare(${c}, ${f}) ${g[h].fail} 0`}l.$data?function(){let c=b.scopeValue("formats",{ref:k.formats,code:j.code.formats}),d=b.const("fmt",(0,e._)`${c}[${l.schemaCode}]`);a.fail$data((0,e.or)((0,e._)`typeof ${d} != "object"`,(0,e._)`${d} instanceof RegExp`,(0,e._)`typeof ${d}.compare != "function"`,m(d)))}():function(){let c=l.schema,d=k.formats[c];if(!d||!0===d)return;if("object"!=typeof d||d instanceof RegExp||"function"!=typeof d.compare)throw Error(`"${h}": format "${c}" does not define "compare" function`);let f=b.scopeValue("formats",{key:c,ref:d,code:j.code.formats?(0,e._)`${j.code.formats}${(0,e.getProperty)(c)}`:void 0});a.fail$data(m(f))}()},dependencies:["format"]},b.default=a=>(a.addKeyword(b.formatLimitDefinition),a)},41733:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.default={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:c(41033).validateUnion,error:{message:"must match a schema in anyOf"}}},44865:a=>{a.exports=import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.wasm-base64.mjs")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46313:(a,b,c)=>{c.d(b,{a:()=>e});var d=c(33006);class e{constructor(a={}){this._started=!1,this._hasHandledRequest=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this.sessionIdGenerator=a.sessionIdGenerator,this._enableJsonResponse=a.enableJsonResponse??!1,this._eventStore=a.eventStore,this._onsessioninitialized=a.onsessioninitialized,this._onsessionclosed=a.onsessionclosed,this._allowedHosts=a.allowedHosts,this._allowedOrigins=a.allowedOrigins,this._enableDnsRebindingProtection=a.enableDnsRebindingProtection??!1,this._retryInterval=a.retryInterval}async start(){if(this._started)throw Error("Transport already started");this._started=!0}createJsonErrorResponse(a,b,c,d){let e={code:b,message:c};return d?.data!==void 0&&(e.data=d.data),new Response(JSON.stringify({jsonrpc:"2.0",error:e,id:null}),{status:a,headers:{"Content-Type":"application/json",...d?.headers}})}validateRequestHeaders(a){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let b=a.headers.get("host");if(!b||!this._allowedHosts.includes(b)){let a=`Invalid Host header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let b=a.headers.get("origin");if(b&&!this._allowedOrigins.includes(b)){let a=`Invalid Origin header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}}}async handleRequest(a,b){if(!this.sessionIdGenerator&&this._hasHandledRequest)throw Error("Stateless transport cannot be reused across requests. Create a new transport per request.");this._hasHandledRequest=!0;let c=this.validateRequestHeaders(a);if(c)return c;switch(a.method){case"POST":return this.handlePostRequest(a,b);case"GET":return this.handleGetRequest(a);case"DELETE":return this.handleDeleteRequest(a);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(a,b,c,d){if(!this._eventStore||d<"2025-11-25")return;let e=await this._eventStore.storeEvent(c,{}),f=`id: ${e}
@@ -29,7 +29,87 @@ data:
29
29
  `;return d&&(e+=`id: ${d}
30
30
  `),e+=`data: ${JSON.stringify(c)}
31
31
 
32
- `,a.enqueue(b.encode(e)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(a,b){try{let c,e,f,g=a.headers.get("accept");if(!g?.includes("application/json")||!g.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let h=a.headers.get("content-type");if(!h||!h.includes("application/json"))return this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let i={headers:Object.fromEntries(a.headers.entries())};if(b?.parsedBody!==void 0)c=b.parsedBody;else try{c=await a.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}try{e=Array.isArray(c)?c.map(a=>d.OR.parse(a)):[d.OR.parse(c)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let j=e.some(d.eK);if(j){if(this._initialized&&void 0!==this.sessionId)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(e.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!j){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);if(c)return c}if(!e.some(d.vo)){for(let a of e)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i});return new Response(null,{status:202})}let k=crypto.randomUUID(),l=e.find(a=>(0,d.eK)(a)),m=l?l.params.protocolVersion:a.headers.get("mcp-protocol-version")??d.PC;if(this._enableJsonResponse)return new Promise(a=>{for(let b of(this._streamMapping.set(k,{resolveJson:a,cleanup:()=>{this._streamMapping.delete(k)}}),e))(0,d.vo)(b)&&this._requestToStreamMapping.set(b.id,k);for(let a of e)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i})});let n=new TextEncoder,o=new ReadableStream({start:a=>{f=a},cancel:()=>{this._streamMapping.delete(k)}}),p={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};for(let a of(void 0!==this.sessionId&&(p["mcp-session-id"]=this.sessionId),e))(0,d.vo)(a)&&(this._streamMapping.set(k,{controller:f,encoder:n,cleanup:()=>{this._streamMapping.delete(k);try{f.close()}catch{}}}),this._requestToStreamMapping.set(a.id,k));for(let a of(await this.writePrimingEvent(f,n,k,m),e)){let c,e;(0,d.vo)(a)&&this._eventStore&&m>="2025-11-25"&&(c=()=>{this.closeSSEStream(a.id)},e=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i,closeSSEStream:c,closeStandaloneSSEStream:e})}return new Response(o,{status:200,headers:p})}catch(a){return this.onerror?.(a),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(a)})}}async handleDeleteRequest(a){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);return c||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(a){if(void 0===this.sessionIdGenerator)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let b=a.headers.get("mcp-session-id");return b?b!==this.sessionId?this.createJsonErrorResponse(404,-32001,"Session not found"):void 0:this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required")}validateProtocolVersion(a){let b=a.headers.get("mcp-protocol-version");if(null!==b&&!d.Iu.includes(b))return this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${b} (supported versions: ${d.Iu.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup:a})=>{a()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(a){let b=this._requestToStreamMapping.get(a);if(!b)return;let c=this._streamMapping.get(b);c&&c.cleanup()}closeStandaloneSSEStream(){let a=this._streamMapping.get(this._standaloneSseStreamId);a&&a.cleanup()}async send(a,b){let c=b?.relatedRequestId;if(((0,d.ig)(a)||(0,d.LW)(a))&&(c=a.id),void 0===c){let b;if((0,d.ig)(a)||(0,d.LW)(a))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");this._eventStore&&(b=await this._eventStore.storeEvent(this._standaloneSseStreamId,a));let c=this._streamMapping.get(this._standaloneSseStreamId);if(void 0===c)return;c.controller&&c.encoder&&this.writeSSEEvent(c.controller,c.encoder,a,b);return}let e=this._requestToStreamMapping.get(c);if(!e)throw Error(`No connection established for request ID: ${String(c)}`);let f=this._streamMapping.get(e);if(!this._enableJsonResponse&&f?.controller&&f?.encoder){let b;this._eventStore&&(b=await this._eventStore.storeEvent(e,a)),this.writeSSEEvent(f.controller,f.encoder,a,b)}if((0,d.ig)(a)||(0,d.LW)(a)){this._requestResponseMap.set(c,a);let b=Array.from(this._requestToStreamMapping.entries()).filter(([a,b])=>b===e).map(([a])=>a);if(b.every(a=>this._requestResponseMap.has(a))){if(!f)throw Error(`No connection established for request ID: ${String(c)}`);if(this._enableJsonResponse&&f.resolveJson){let a={"Content-Type":"application/json"};void 0!==this.sessionId&&(a["mcp-session-id"]=this.sessionId);let c=b.map(a=>this._requestResponseMap.get(a));1===c.length?f.resolveJson(new Response(JSON.stringify(c[0]),{status:200,headers:a})):f.resolveJson(new Response(JSON.stringify(c),{status:200,headers:a}))}else f.cleanup();for(let a of b)this._requestResponseMap.delete(a),this._requestToStreamMapping.delete(a)}}}}},48161:a=>{a.exports=require("node:os")},50435:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.resolveSchema=b.getCompilingSchema=b.resolveRef=b.compileSchema=b.SchemaEnv=void 0;let d=c(74489),e=c(87294),f=c(31079),g=c(1171),h=c(23235),i=c(15746);class j{constructor(a){var b;let c;this.refs={},this.dynamicAnchors={},"object"==typeof a.schema&&(c=a.schema),this.schema=a.schema,this.schemaId=a.schemaId,this.root=a.root||this,this.baseId=null!=(b=a.baseId)?b:(0,g.normalizeId)(null==c?void 0:c[a.schemaId||"$id"]),this.schemaPath=a.schemaPath,this.localRefs=a.localRefs,this.meta=a.meta,this.$async=null==c?void 0:c.$async,this.refs={}}}function k(a){let b,c,h=m.call(this,a);if(h)return h;let j=(0,g.getFullPath)(this.opts.uriResolver,a.root.baseId),{es5:k,lines:l}=this.opts.code,{ownProperties:n}=this.opts,o=new d.CodeGen(this.scope,{es5:k,lines:l,ownProperties:n});a.$async&&(b=o.scopeValue("Error",{ref:e.default,code:(0,d._)`require("ajv/dist/runtime/validation_error").default`}));let p=o.scopeName("validate");a.validateName=p;let q={gen:o,allErrors:this.opts.allErrors,data:f.default.data,parentData:f.default.parentData,parentDataProperty:f.default.parentDataProperty,dataNames:[f.default.data],dataPathArr:[d.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:o.scopeValue("schema",!0===this.opts.code.source?{ref:a.schema,code:(0,d.stringify)(a.schema)}:{ref:a.schema}),validateName:p,ValidationError:b,schema:a.schema,schemaEnv:a,rootId:j,baseId:a.baseId||j,schemaPath:d.nil,errSchemaPath:a.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,d._)`""`,opts:this.opts,self:this};try{this._compilations.add(a),(0,i.validateFunctionCode)(q),o.optimize(this.opts.code.optimize);let b=o.toString();c=`${o.scopeRefs(f.default.scope)}return ${b}`,this.opts.code.process&&(c=this.opts.code.process(c,a));let e=Function(`${f.default.self}`,`${f.default.scope}`,c)(this,this.scope.get());if(this.scope.value(p,{ref:e}),e.errors=null,e.schema=a.schema,e.schemaEnv=a,a.$async&&(e.$async=!0),!0===this.opts.code.source&&(e.source={validateName:p,validateCode:b,scopeValues:o._values}),this.opts.unevaluated){let{props:a,items:b}=q;e.evaluated={props:a instanceof d.Name?void 0:a,items:b instanceof d.Name?void 0:b,dynamicProps:a instanceof d.Name,dynamicItems:b instanceof d.Name},e.source&&(e.source.evaluated=(0,d.stringify)(e.evaluated))}return a.validate=e,a}catch(b){throw delete a.validate,delete a.validateName,c&&this.logger.error("Error compiling schema, function code:",c),b}finally{this._compilations.delete(a)}}function l(a){return(0,g.inlineRef)(a.schema,this.opts.inlineRefs)?a.schema:a.validate?a:k.call(this,a)}function m(a){for(let d of this._compilations){var b,c;if(b=d,c=a,b.schema===c.schema&&b.root===c.root&&b.baseId===c.baseId)return d}}function n(a,b){let c;for(;"string"==typeof(c=this.refs[b]);)b=c;return c||this.schemas[b]||o.call(this,a,b)}function o(a,b){let c=this.opts.uriResolver.parse(b),d=(0,g._getFullPath)(this.opts.uriResolver,c),e=(0,g.getFullPath)(this.opts.uriResolver,a.baseId,void 0);if(Object.keys(a.schema).length>0&&d===e)return q.call(this,c,a);let f=(0,g.normalizeId)(d),h=this.refs[f]||this.schemas[f];if("string"==typeof h){let b=o.call(this,a,h);if("object"!=typeof(null==b?void 0:b.schema))return;return q.call(this,c,b)}if("object"==typeof(null==h?void 0:h.schema)){if(h.validate||k.call(this,h),f===(0,g.normalizeId)(b)){let{schema:b}=h,{schemaId:c}=this.opts,d=b[c];return d&&(e=(0,g.resolveUrl)(this.opts.uriResolver,e,d)),new j({schema:b,schemaId:c,root:a,baseId:e})}return q.call(this,c,h)}}b.SchemaEnv=j,b.compileSchema=k,b.resolveRef=function(a,b,c){var d;c=(0,g.resolveUrl)(this.opts.uriResolver,b,c);let e=a.refs[c];if(e)return e;let f=n.call(this,a,c);if(void 0===f){let e=null==(d=a.localRefs)?void 0:d[c],{schemaId:g}=this.opts;e&&(f=new j({schema:e,schemaId:g,root:a,baseId:b}))}if(void 0!==f)return a.refs[c]=l.call(this,f)},b.getCompilingSchema=m,b.resolveSchema=o;let p=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function q(a,{baseId:b,schema:c,root:d}){var e;let f;if((null==(e=a.fragment)?void 0:e[0])!=="/")return;for(let d of a.fragment.slice(1).split("/")){if("boolean"==typeof c)return;let a=c[(0,h.unescapeFragment)(d)];if(void 0===a)return;let e="object"==typeof(c=a)&&c[this.opts.schemaId];!p.has(d)&&e&&(b=(0,g.resolveUrl)(this.opts.uriResolver,b,e))}if("boolean"!=typeof c&&c.$ref&&!(0,h.schemaHasRulesButRef)(c,this.RULES)){let a=(0,g.resolveUrl)(this.opts.uriResolver,b,c.$ref);f=o.call(this,d,a)}let{schemaId:i}=this.opts;if((f=f||new j({schema:c,schemaId:i,root:d,baseId:b})).schema!==f.root.schema)return f}},51455:a=>{a.exports=require("node:fs/promises")},52310:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489);b.default={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:a})=>(0,e.str)`must match pattern "${a}"`,params:({schemaCode:a})=>(0,e._)`{pattern: ${a}}`},code(a){let{data:b,$data:c,schema:f,schemaCode:g,it:h}=a,i=h.opts.unicodeRegExp?"u":"",j=c?(0,e._)`(new RegExp(${g}, ${i}))`:(0,d.usePattern)(a,f);a.fail$data((0,e._)`!${j}.test(${b})`)}}},52597:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>m,OPTIONS:()=>n,POST:()=>l});var e=c(70936),f=c(46313),g=c(62936),h=c(63478),i=c(85034),j=c(65582),k=a([g,h,i]);[g,h,i]=k.then?(await k)():k;let o=j.vF.child({module:"mcp"}),p=new Map;async function l(a){try{let b,c,d=a.headers.get("authorization"),j=(0,h.Tr)(d);if(!j)return e.NextResponse.json({error:"Missing or invalid API key"},{status:401});let k=await (0,h.ek)(j);if(!k.valid||!k.agent)return e.NextResponse.json({error:k.error||"Invalid API key"},{status:401});let l=a.headers.get("x-synapse-project-group"),m=a.headers.get("x-synapse-project");l?b=await (0,i.T0)(k.agent.companyUuid,l):m&&(b=m.split(",").map(a=>a.trim()).filter(Boolean));let n={type:"agent",companyUuid:k.agent.companyUuid,actorUuid:k.agent.uuid,roles:k.agent.roles,ownerUuid:k.agent.ownerUuid??void 0,agentName:k.agent.name,researchProjectUuids:b},o=a.headers.get("mcp-session-id");if(o&&p.has(o)){c=p.get(o).transport;let a=p.get(o);a&&(a.lastActivity=Date.now())}else{if(o&&!p.has(o))return e.NextResponse.json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Please reinitialize."},id:null},{status:404});let a=crypto.randomUUID();c=new f.a({sessionIdGenerator:()=>a});let b=(0,g.c)(n);await b.connect(c),p.set(a,{transport:c,lastActivity:Date.now()})}return await c.handleRequest(a)}catch(a){return o.error({err:a},"MCP endpoint error"),e.NextResponse.json({error:"Internal server error"},{status:500})}}async function m(a){try{let b=a.headers.get("mcp-session-id");if(!b)return e.NextResponse.json({error:"Missing session ID"},{status:400});let c=p.get(b);return c&&(await c.transport.close(),p.delete(b)),new Response(null,{status:204})}catch(a){return o.error({err:a},"MCP session close error"),e.NextResponse.json({error:"Internal server error"},{status:500})}}async function n(){return new Response(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, mcp-session-id, mcp-protocol-version"}})}setInterval(function(){let a=Date.now();for(let[b,c]of p.entries())a-c.lastActivity>18e5&&(o.debug({sessionId:b},"cleaning up expired session"),c.transport.close().catch(a=>o.error({err:a},"session close error during cleanup")),p.delete(b))},3e5),d()}catch(a){d(a)}})},53053:a=>{a.exports=require("node:diagnostics_channel")},53235:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{H$:()=>i,Im:()=>p,XO:()=>o,Yz:()=>m,a1:()=>n,ed:()=>k,ie:()=>j,xv:()=>l});var e=c(52618),f=c(911),g=c(91997),h=a([e,g]);async function i(a){let b=await e.prisma.projectGroup.create({data:{companyUuid:a.companyUuid,name:a.name,description:a.description??""}});return{uuid:b.uuid,name:b.name,description:b.description,projectCount:0,createdAt:b.createdAt.toISOString(),updatedAt:b.updatedAt.toISOString()}}async function j(a){if(!await e.prisma.projectGroup.findFirst({where:{uuid:a.groupUuid,companyUuid:a.companyUuid}}))return null;let b=await e.prisma.projectGroup.update({where:{uuid:a.groupUuid},data:{...void 0!==a.name&&{name:a.name},...void 0!==a.description&&{description:a.description}}}),c=await e.prisma.researchProject.count({where:{groupUuid:a.groupUuid,companyUuid:a.companyUuid}});return{uuid:b.uuid,name:b.name,description:b.description,projectCount:c,createdAt:b.createdAt.toISOString(),updatedAt:b.updatedAt.toISOString()}}async function k(a,b){return!!await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}})&&(await e.prisma.researchProject.updateMany({where:{groupUuid:b,companyUuid:a},data:{groupUuid:null}}),await e.prisma.projectGroup.delete({where:{uuid:b}}),!0)}async function l(a,b){let c=await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}});if(!c)return null;let d=await e.prisma.researchProject.findMany({where:{groupUuid:b,companyUuid:a},select:{uuid:!0,name:!0,description:!0},orderBy:{updatedAt:"desc"}});return{uuid:c.uuid,name:c.name,description:c.description,projectCount:d.length,projects:d,createdAt:c.createdAt.toISOString(),updatedAt:c.updatedAt.toISOString()}}async function m(a,b){return e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0}})}async function n(a){let b=await e.prisma.projectGroup.findMany({where:{companyUuid:a},orderBy:{createdAt:"asc"}}),c=b.map(a=>a.uuid),d=c.length>0?await e.prisma.researchProject.groupBy({by:["groupUuid"],where:{companyUuid:a,groupUuid:{in:c}},_count:{_all:!0}}):[],f=new Map(d.map(a=>[a.groupUuid,a._count._all])),g=b.map(a=>({uuid:a.uuid,name:a.name,description:a.description,projectCount:f.get(a.uuid)??0,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()})),h=await e.prisma.researchProject.count({where:{companyUuid:a,groupUuid:null}});return{groups:g,total:b.length,ungroupedCount:h}}async function o(a,b,c){if(!await e.prisma.researchProject.findFirst({where:{uuid:b,companyUuid:a}})||c&&!await e.prisma.projectGroup.findFirst({where:{uuid:c,companyUuid:a}}))return null;let d=await e.prisma.researchProject.update({where:{uuid:b},data:{groupUuid:c}});return f.B.emitChange({companyUuid:a,researchProjectUuid:b,entityType:"research_project",entityUuid:b,action:"updated"}),{uuid:d.uuid,name:d.name,groupUuid:d.groupUuid}}async function p(a,b){let c=await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}});if(!c)return null;let d=await e.prisma.researchProject.findMany({where:{groupUuid:b,companyUuid:a},select:{uuid:!0,name:!0}}),f=d.map(a=>a.uuid);if(0===f.length)return{group:{uuid:c.uuid,name:c.name,description:c.description},stats:{projectCount:0,totalExperimentRuns:0,completedExperimentRuns:0,completionRate:0,openResearchQuestions:0,activeExperimentDesigns:0,totalTasks:0,completedTasks:0,openIdeas:0,activeProposals:0},projects:[],recentActivity:[]};let h=await (0,g.c8)(a,f),i=d.map(a=>{let b=h.get(a.uuid),c=b?.experimentRuns.total??0,d=b?.experimentRuns.completed??0;return{uuid:a.uuid,name:a.name,experimentRunCount:c,taskCount:c,completionRate:c>0?Math.round(d/c*100):0}}),j=Array.from(h.values()).reduce((a,b)=>(a.totalExperimentRuns+=b.experimentRuns.total,a.completedExperimentRuns+=b.experimentRuns.completed,a.openResearchQuestions+=b.researchQuestions.open+b.researchQuestions.elaborating,a.activeExperimentDesigns+=b.experimentDesigns.active,a),{totalExperimentRuns:0,completedExperimentRuns:0,openResearchQuestions:0,activeExperimentDesigns:0}),k=await e.prisma.activity.findMany({where:{researchProjectUuid:{in:f},companyUuid:a},orderBy:{createdAt:"desc"},take:20}),l=new Map(d.map(a=>[a.uuid,a.name]));return{group:{uuid:c.uuid,name:c.name,description:c.description},stats:{projectCount:d.length,totalExperimentRuns:j.totalExperimentRuns,completedExperimentRuns:j.completedExperimentRuns,completionRate:j.totalExperimentRuns>0?Math.round(j.completedExperimentRuns/j.totalExperimentRuns*100):0,openResearchQuestions:j.openResearchQuestions,activeExperimentDesigns:j.activeExperimentDesigns,totalTasks:j.totalExperimentRuns,completedTasks:j.completedExperimentRuns,openIdeas:j.openResearchQuestions,activeProposals:j.activeExperimentDesigns},projects:i,recentActivity:k.map(a=>({uuid:a.uuid,researchProjectUuid:a.researchProjectUuid,projectUuid:a.researchProjectUuid,projectName:l.get(a.researchProjectUuid)??"Unknown",targetType:a.targetType,targetUuid:a.targetUuid,action:a.action,value:a.value,actorType:a.actorType,actorUuid:a.actorUuid,createdAt:a.createdAt.toISOString()}))}}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},55511:a=>{a.exports=require("crypto")},57335:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{CY:()=>k,KD:()=>i,SP:()=>l,Xj:()=>j});var e=c(52618),f=c(911),g=a([e]);function h(a){return{uuid:a.uuid,title:a.title,authors:a.authors,abstract:a.abstract,url:a.url,arxivId:a.arxivId,source:a.source,addedBy:a.addedBy,addedByAgentUuid:a.addedByAgentUuid,publishedYear:a.publishedYear,createdAt:a.createdAt.toISOString()}}async function i(a,b){return(await e.prisma.relatedWork.findMany({where:{companyUuid:a,researchProjectUuid:b},orderBy:{createdAt:"desc"}})).map(h)}async function j(a){let b=[{url:a.url}];a.arxivId&&b.push({arxivId:a.arxivId});let c=await e.prisma.relatedWork.findFirst({where:{companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,OR:b},select:{uuid:!0}});if(c){let a=await e.prisma.relatedWork.findFirst({where:{uuid:c.uuid}});return{...h(a),isNew:!1}}let d=await e.prisma.relatedWork.create({data:{companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,title:a.title,authors:a.authors??null,abstract:a.abstract??null,url:a.url,arxivId:a.arxivId??null,source:a.source,addedBy:a.addedBy,addedByAgentUuid:a.addedByAgentUuid??null,publishedYear:a.publishedYear??null}});return f.B.emitChange({companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,entityType:"related_work",entityUuid:d.uuid,action:"created"}),{...h(d),isNew:!0}}async function k(a,b){await e.prisma.relatedWork.deleteMany({where:{uuid:b,companyUuid:a}})}async function l(a){let b=a.match(/arxiv\.org\/(?:abs|pdf|html)\/([0-9]+\.[0-9]+)/);if(!b)return null;let d=b[1];try{let a=await fetch(`https://api.semanticscholar.org/graph/v1/paper/ArXiv:${d}?fields=title,abstract,authors`,{signal:AbortSignal.timeout(1e4)});if(a.ok){let b=await a.json();if(b.title)return{title:b.title,authors:(b.authors??[]).map(a=>a.name).join(", "),abstract:b.abstract??"",arxivId:d}}}catch{}try{let{execFile:a}=await Promise.resolve().then(c.t.bind(c,31421,23)),{promisify:b}=await Promise.resolve().then(c.t.bind(c,57975,23)),e=b(a),{stdout:f}=await e("curl",["-sL","--max-time","15",`https://export.arxiv.org/api/query?id_list=${d}`],{timeout:2e4,maxBuffer:1048576}),g=f.split("<entry>");if(g.length<2)return null;let h=g[1],i=h.match(/<title>([\s\S]*?)<\/title>/),j=h.match(/<summary>([\s\S]*?)<\/summary>/),k=[...h.matchAll(/<name>(.*?)<\/name>/g)],l=i?.[1]?.replace(/\s+/g," ").trim()??"",m=j?.[1]?.replace(/\s+/g," ").trim()??"",n=k.map(a=>a[1]).join(", ");if(!l)return null;return{title:l,authors:n,abstract:m,arxivId:d}}catch{return null}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},57975:a=>{a.exports=require("node:util")},58030:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(41033),g=c(74909);b.default={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:a}})=>(0,d.str)`must NOT have more than ${a} items`,params:({params:{len:a}})=>(0,d._)`{limit: ${a}}`},code(a){let{schema:b,parentSchema:c,it:d}=a,{prefixItems:h}=c;d.items=!0,(0,e.alwaysValidSchema)(d,b)||(h?(0,g.validateAdditionalItems)(a,h):a.ok((0,f.validateArray)(a)))}}},58219:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489),f=c(23235);b.default={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:a}})=>(0,e.str)`must have required property '${a}'`,params:({params:{missingProperty:a}})=>(0,e._)`{missingProperty: ${a}}`},code(a){let{gen:b,schema:c,schemaCode:g,data:h,$data:i,it:j}=a,{opts:k}=j;if(!i&&0===c.length)return;let l=c.length>=k.loopRequired;if(j.allErrors?function(){if(l||i)a.block$data(e.nil,m);else for(let b of c)(0,d.checkReportMissingProp)(a,b)}():function(){let f=b.let("missing");if(l||i){let c=b.let("valid",!0);a.block$data(c,()=>{var i,j;return i=f,j=c,void(a.setParams({missingProperty:i}),b.forOf(i,g,()=>{b.assign(j,(0,d.propertyInData)(b,h,i,k.ownProperties)),b.if((0,e.not)(j),()=>{a.error(),b.break()})},e.nil))}),a.ok(c)}else b.if((0,d.checkMissingProp)(a,c,f)),(0,d.reportMissingProp)(a,f),b.else()}(),k.strictRequired){let b=a.parentSchema.properties,{definedProperties:d}=a.it;for(let a of c)if((null==b?void 0:b[a])===void 0&&!d.has(a)){let b=j.schemaEnv.baseId+j.errSchemaPath,c=`required property "${a}" is not defined at "${b}" (strictRequired)`;(0,f.checkStrictMode)(j,c,j.opts.strictRequired)}}function m(){b.forOf("prop",g,c=>{a.setParams({missingProperty:c}),b.if((0,d.noPropertyInData)(b,h,c,k.ownProperties),()=>a.error())})}}}},58362:a=>{a.exports=function a(b,c){if(b===c)return!0;if(b&&c&&"object"==typeof b&&"object"==typeof c){if(b.constructor!==c.constructor)return!1;if(Array.isArray(b)){if((d=b.length)!=c.length)return!1;for(e=d;0!=e--;)if(!a(b[e],c[e]))return!1;return!0}if(b.constructor===RegExp)return b.source===c.source&&b.flags===c.flags;if(b.valueOf!==Object.prototype.valueOf)return b.valueOf()===c.valueOf();if(b.toString!==Object.prototype.toString)return b.toString()===c.toString();if((d=(f=Object.keys(b)).length)!==Object.keys(c).length)return!1;for(e=d;0!=e--;)if(!Object.prototype.hasOwnProperty.call(c,f[e]))return!1;for(e=d;0!=e--;){var d,e,f,g=f[e];if(!a(b[g],c[g]))return!1}return!0}return b!=b&&c!=c}},61437:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateKeywordUsage=b.validSchemaType=b.funcKeywordCode=b.macroKeywordCode=void 0;let d=c(74489),e=c(31079),f=c(41033),g=c(66984);function h(a){let{gen:b,data:c,it:e}=a;b.if(e.parentData,()=>b.assign(c,(0,d._)`${e.parentData}[${e.parentDataProperty}]`))}function i(a,b,c){if(void 0===c)throw Error(`keyword "${b}" failed to compile`);return a.scopeValue("keyword","function"==typeof c?{ref:c}:{ref:c,code:(0,d.stringify)(c)})}b.macroKeywordCode=function(a,b){let{gen:c,keyword:e,schema:f,parentSchema:g,it:h}=a,j=b.macro.call(h.self,f,g,h),k=i(c,e,j);!1!==h.opts.validateSchema&&h.self.validateSchema(j,!0);let l=c.name("valid");a.subschema({schema:j,schemaPath:d.nil,errSchemaPath:`${h.errSchemaPath}/${e}`,topSchemaRef:k,compositeRule:!0},l),a.pass(l,()=>a.error(!0))},b.funcKeywordCode=function(a,b){var c;let{gen:j,keyword:k,schema:l,parentSchema:m,$data:n,it:o}=a;!function({schemaEnv:a},b){if(b.async&&!a.$async)throw Error("async keyword in sync schema")}(o,b);let p=i(j,k,!n&&b.compile?b.compile.call(o.self,l,m,o):b.validate),q=j.let("valid");function r(c=b.async?(0,d._)`await `:d.nil){let g=o.opts.passContext?e.default.this:e.default.self,h=!("compile"in b&&!n||!1===b.schema);j.assign(q,(0,d._)`${c}${(0,f.callValidateCode)(a,p,g,h)}`,b.modifying)}function s(a){var c;j.if((0,d.not)(null!=(c=b.valid)?c:q),a)}a.block$data(q,function(){if(!1===b.errors)r(),b.modifying&&h(a),s(()=>a.error());else{let c=b.async?function(){let a=j.let("ruleErrs",null);return j.try(()=>r((0,d._)`await `),b=>j.assign(q,!1).if((0,d._)`${b} instanceof ${o.ValidationError}`,()=>j.assign(a,(0,d._)`${b}.errors`),()=>j.throw(b))),a}():function(){let a=(0,d._)`${p}.errors`;return j.assign(a,null),r(d.nil),a}();b.modifying&&h(a),s(()=>(function(a,b){let{gen:c}=a;c.if((0,d._)`Array.isArray(${b})`,()=>{c.assign(e.default.vErrors,(0,d._)`${e.default.vErrors} === null ? ${b} : ${e.default.vErrors}.concat(${b})`).assign(e.default.errors,(0,d._)`${e.default.vErrors}.length`),(0,g.extendErrors)(a)},()=>a.error())})(a,c))}}),a.ok(null!=(c=b.valid)?c:q)},b.validSchemaType=function(a,b,c=!1){return!b.length||b.some(b=>"array"===b?Array.isArray(a):"object"===b?a&&"object"==typeof a&&!Array.isArray(a):typeof a==b||c&&void 0===a)},b.validateKeywordUsage=function({schema:a,opts:b,self:c,errSchemaPath:d},e,f){if(Array.isArray(e.keyword)?!e.keyword.includes(f):e.keyword!==f)throw Error("ajv implementation error");let g=e.dependencies;if(null==g?void 0:g.some(b=>!Object.prototype.hasOwnProperty.call(a,b)))throw Error(`parent schema must have dependencies of ${f}: ${g.join(",")}`);if(e.validateSchema&&!e.validateSchema(a[f])){let a=`keyword "${f}" value is invalid at path "${d}": `+c.errorsText(e.validateSchema.errors);if("log"===b.validateSchema)c.logger.error(a);else throw Error(a)}}},62936:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{c:()=>n});var e=c(28708),f=c(31270),g=c(16083),h=c(73994),i=c(38404),j=c(92093),k=c(71084),l=c(70858),m=a([f,g,h,i,j,k,l]);function n(a){let b=new e._({name:"synapse",version:"1.0.0"}),c=a.roles||[],d=(...a)=>c.some(b=>a.includes(b));return(0,l.ji)(b,a),(0,f.q)(b,a),(0,g.r)(b,a),d("pre_research")&&(0,i.W)(b,a),d("research","report","research_lead","research_lead_agent")&&(0,j.W)(b,a),d("experiment","researcher","researcher_agent")&&(0,h.w)(b,a),d("admin","pi","pi_agent")&&(0,k.C)(b,a),b}[f,g,h,i,j,k,l]=m.then?(await m)():m,d()}catch(a){d(a)}})},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63089:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>m,m:()=>n});var e=c(52618),f=c(75700),g=c(76872),h=a([e,f,g]);async function i(a){let b=await (0,g.Z_)(a.assigneeType,a.assigneeUuid);return{uuid:a.uuid,title:a.title,content:a.content,status:a.status,assignee:b,assignedAt:a.assignedAt?.toISOString()??null,project:a.researchProject,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function j(a){let b=await (0,g.Z_)(a.assigneeType,a.assigneeUuid);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,assignee:b,assignedAt:a.assignedAt?.toISOString()??null,project:a.researchProject,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function k(a){let b=await (0,g.LS)(a.createdByUuid);return{uuid:a.uuid,title:a.title,content:a.content,status:a.status,createdBy:b,createdAt:a.createdAt.toISOString()}}async function l(a){let b=await (0,g.LS)(a.createdByUuid);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,createdBy:b,createdAt:a.createdAt.toISOString()}}async function m(a,b){let c=function(a){let b=[];return(0,f.yh)(a)?(b.push({assigneeType:"agent",assigneeUuid:a.actorUuid}),a.ownerUuid&&b.push({assigneeType:"user",assigneeUuid:a.ownerUuid})):b.push({assigneeType:"user",assigneeUuid:a.actorUuid}),b}(a),[d,g]=await Promise.all([e.prisma.researchQuestion.findMany({where:{companyUuid:a.companyUuid,...b&&b.length>0&&{researchProjectUuid:{in:b}},OR:c,status:{notIn:["completed","closed"]}},select:{uuid:!0,title:!0,content:!0,status:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,researchProject:{select:{uuid:!0,name:!0}},createdAt:!0,updatedAt:!0},orderBy:{assignedAt:"desc"}}),e.prisma.experimentRun.findMany({where:{companyUuid:a.companyUuid,...b&&b.length>0&&{researchProjectUuid:{in:b}},OR:c,status:{notIn:["done","closed"]}},select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,researchProject:{select:{uuid:!0,name:!0}},createdAt:!0,updatedAt:!0},orderBy:[{priority:"desc"},{assignedAt:"desc"}]})]),[h,k]=await Promise.all([Promise.all(d.map(i)),Promise.all(g.map(j))]);return{researchQuestions:h,experimentRuns:k}}async function n(a,b,c,d,f){let g={researchProjectUuid:b,companyUuid:a,status:"open"},h={...g,...f&&f.length>0&&{experimentDesignUuid:{in:f}}},[i,j]=await Promise.all([c?e.prisma.researchQuestion.findMany({where:g,select:{uuid:!0,title:!0,content:!0,status:!0,createdByUuid:!0,createdAt:!0},orderBy:{createdAt:"desc"},take:50}):[],d?e.prisma.experimentRun.findMany({where:h,select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,createdByUuid:!0,createdAt:!0},orderBy:[{priority:"desc"},{createdAt:"desc"}],take:50}):[]]),[m,n]=await Promise.all([Promise.all(i.map(k)),Promise.all(j.map(l))]);return{researchQuestions:m,experimentRuns:n}}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},63861:(a,b,c)=>{function d(a){return{name:a.name,description:a.description,inputSchema:a.inputSchema,execute:b=>a.execute(b)}}function e(a){return a}function f(a,b){b.forEach(b=>{a.registerTool(b.name,{description:b.description,inputSchema:b.inputSchema},b.execute)})}function g(a,b){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}function h(a,b){return g(JSON.stringify(a,null,2),b)}c.d(b,{D8:()=>f,Ht:()=>e,V4:()=>d,XP:()=>h,xv:()=>g})},64939:a=>{a.exports=import("pg")},66984:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.extendErrors=b.resetErrorsCount=b.reportExtraError=b.reportError=b.keyword$DataError=b.keywordError=void 0;let d=c(74489),e=c(23235),f=c(31079);function g(a,b){let c=a.const("err",b);a.if((0,d._)`${f.default.vErrors} === null`,()=>a.assign(f.default.vErrors,(0,d._)`[${c}]`),(0,d._)`${f.default.vErrors}.push(${c})`),a.code((0,d._)`${f.default.errors}++`)}function h(a,b){let{gen:c,validateName:e,schemaEnv:f}=a;f.$async?c.throw((0,d._)`new ${a.ValidationError}(${b})`):(c.assign((0,d._)`${e}.errors`,b),c.return(!1))}b.keywordError={message:({keyword:a})=>(0,d.str)`must pass "${a}" keyword validation`},b.keyword$DataError={message:({keyword:a,schemaType:b})=>b?(0,d.str)`"${a}" keyword must be ${b} ($data)`:(0,d.str)`"${a}" keyword is invalid ($data)`},b.reportError=function(a,c=b.keywordError,e,f){let{it:i}=a,{gen:k,compositeRule:l,allErrors:m}=i,n=j(a,c,e);(null!=f?f:l||m)?g(k,n):h(i,(0,d._)`[${n}]`)},b.reportExtraError=function(a,c=b.keywordError,d){let{it:e}=a,{gen:i,compositeRule:k,allErrors:l}=e;g(i,j(a,c,d)),k||l||h(e,f.default.vErrors)},b.resetErrorsCount=function(a,b){a.assign(f.default.errors,b),a.if((0,d._)`${f.default.vErrors} !== null`,()=>a.if(b,()=>a.assign((0,d._)`${f.default.vErrors}.length`,b),()=>a.assign(f.default.vErrors,null)))},b.extendErrors=function({gen:a,keyword:b,schemaValue:c,data:e,errsCount:g,it:h}){if(void 0===g)throw Error("ajv implementation error");let i=a.name("err");a.forRange("i",g,f.default.errors,g=>{a.const(i,(0,d._)`${f.default.vErrors}[${g}]`),a.if((0,d._)`${i}.instancePath === undefined`,()=>a.assign((0,d._)`${i}.instancePath`,(0,d.strConcat)(f.default.instancePath,h.errorPath))),a.assign((0,d._)`${i}.schemaPath`,(0,d.str)`${h.errSchemaPath}/${b}`),h.opts.verbose&&(a.assign((0,d._)`${i}.schema`,c),a.assign((0,d._)`${i}.data`,e))})};let i={keyword:new d.Name("keyword"),schemaPath:new d.Name("schemaPath"),params:new d.Name("params"),propertyName:new d.Name("propertyName"),message:new d.Name("message"),schema:new d.Name("schema"),parentSchema:new d.Name("parentSchema")};function j(a,b,c){let{createErrors:g}=a.it;return!1===g?(0,d._)`{}`:function(a,b,c={}){let{gen:g,it:h}=a,j=[function({errorPath:a},{instancePath:b}){let c=b?(0,d.str)`${a}${(0,e.getErrorPath)(b,e.Type.Str)}`:a;return[f.default.instancePath,(0,d.strConcat)(f.default.instancePath,c)]}(h,c),function({keyword:a,it:{errSchemaPath:b}},{schemaPath:c,parentSchema:f}){let g=f?b:(0,d.str)`${b}/${a}`;return c&&(g=(0,d.str)`${g}${(0,e.getErrorPath)(c,e.Type.Str)}`),[i.schemaPath,g]}(a,c)];return function(a,{params:b,message:c},e){let{keyword:g,data:h,schemaValue:j,it:k}=a,{opts:l,propertyName:m,topSchemaRef:n,schemaPath:o}=k;e.push([i.keyword,g],[i.params,"function"==typeof b?b(a):b||(0,d._)`{}`]),l.messages&&e.push([i.message,"function"==typeof c?c(a):c]),l.verbose&&e.push([i.schema,j],[i.parentSchema,(0,d._)`${n}${o}`],[f.default.data,h]),m&&e.push([i.propertyName,m])}(a,b,j),g.object(...j)}(a,b,c)}},70511:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:a})=>(0,d.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,d._)`{multipleOf: ${a}}`},code(a){let{gen:b,data:c,schemaCode:e,it:f}=a,g=f.opts.multipleOfPrecision,h=b.let("res"),i=g?(0,d._)`Math.abs(Math.round(${h}) - ${h}) > 1e-${g}`:(0,d._)`${h} !== parseInt(${h})`;a.fail$data((0,d._)`(${e} === 0 || (${h} = ${c}/${e}, ${i}))`)}}},70858:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ji:()=>k});var e=c(911),f=c(52618),g=c(65582),h=a([f]);f=(h.then?(await h)():h)[0];let l=g.vF.child({module:"mcp"}),m={experimentUuid:"experiment",researchQuestionUuid:"research_question",documentUuid:"document"},n={experiment:"experiment",research_question:"research_question",document:"document"},o=["synapse_get_","synapse_list_","synapse_search"];async function i(a,b,c){let d=`${a}:${b}`,e=c.get(d);if(e)return e;try{let e=null;switch(a){case"experiment":{let a=await f.prisma.experiment.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null;break}case"research_question":{let a=await f.prisma.researchQuestion.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null;break}case"document":{let a=await f.prisma.document.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null}}return e&&c.set(d,e),e}catch(a){return l.warn({err:a},"failed to resolve projectUuid"),null}}async function j(a,b,c,d){try{let f=a.researchProjectUuid;if(f||(f=await i(a.entityType,a.entityUuid,d)??void 0),f){let d={type:"presence",companyUuid:c.companyUuid,researchProjectUuid:f,entityType:a.entityType,entityUuid:a.entityUuid,agentUuid:c.actorUuid,agentName:c.agentName,action:o.some(a=>b.startsWith(a))?"view":"mutate",timestamp:Date.now()};e.B.emitPresence(d)}}catch(a){l.warn({err:a},"failed to emit presence event")}}function k(a,b){let c=new Map,d=a.registerTool.bind(a);a.registerTool=function(a,e,f){let g=async(d,e)=>{let g=function(a){for(let[b,c]of Object.entries(m))if("string"==typeof a[b])return{entityType:c,entityUuid:a[b],researchProjectUuid:"string"==typeof a.researchProjectUuid?a.researchProjectUuid:void 0};if("string"==typeof a.targetUuid&&"string"==typeof a.targetType){let b=n[a.targetType];if(b)return{entityType:b,entityUuid:a.targetUuid,researchProjectUuid:"string"==typeof a.researchProjectUuid?a.researchProjectUuid:void 0}}return null}(d);return g&&j(g,a,b,c),f(d,e)};return d(a,e,g)}}d()}catch(a){d(a)}})},70959:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(91442);b.default={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:a})=>(0,d._)`{allowedValue: ${a}}`},code(a){let{gen:b,data:c,$data:g,schemaCode:h,schema:i}=a;g||i&&"object"==typeof i?a.fail$data((0,d._)`!${(0,e.useFunc)(b,f.default)}(${c}, ${h})`):a.fail((0,d._)`${i} !== ${c}`)}}},71084:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C:()=>n});var e=c(77258),f=c(85034),g=c(90136),h=c(8777),i=c(88437),j=c(53235),k=c(25191),l=c(48499),m=a([f,g,h,i,j,k,l]);function n(a,b){a.registerTool("synapse_create_research_project",{description:"Create a new research project (PI exclusive, acts on behalf of humans). To assign to a project group, first call synapse_get_project_groups to list available groups, then pass projectGroupUuid (or the alias groupUuid).",inputSchema:e.Ikc({name:e.YjP().describe("Research Project name"),description:e.YjP().optional().describe("Research Project description"),projectGroupUuid:e.YjP().optional().describe("Optional project group UUID to assign this project to. Use synapse_get_project_groups to list available groups."),groupUuid:e.YjP().optional().describe("Alias for projectGroupUuid (deprecated). If both are provided, projectGroupUuid wins.")})},async({name:a,description:c,projectGroupUuid:d,groupUuid:e})=>{let g=await f.l({companyUuid:b.companyUuid,name:a,description:c||null,groupUuid:d??e??null});return{content:[{type:"text",text:JSON.stringify({uuid:g.uuid,name:g.name,groupUuid:g.groupUuid})}]}}),a.registerTool("synapse_review_research_question",{description:"Review a research idea and either accept it into the execution pipeline or reject it back out of scope.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP(),decision:e.k5n(["accepted","rejected"]),reviewNote:e.YjP().optional()})},async({researchQuestionUuid:a,decision:c,reviewNote:d})=>{let e=await g._W(b.companyUuid,a);if(!e)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};let f=await g.e0(b.companyUuid,a,c,b.actorUuid,d||null);return await i.E1({companyUuid:b.companyUuid,researchProjectUuid:e.researchProjectUuid,targetType:"research_question",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"accepted"===c?"approved":"rejected",value:d?{reviewNote:d}:void 0}),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_review_experiment",{description:"Atomically approve or reject a pending_review experiment (state transition + activity + notifications + reject-comment). Restricted to admin / pi / pi_agent roles. When a Claude Code agent acts on a user's verbal approve, reviewNote MUST quote the user's exact words, e.g. 'User verbally approved in terminal: \"OK 上吧\"'. On verbal reject, reviewNote MUST summarize the user's revision request in second-person Chinese with key quoted phrases — synapse_review_experiment will write that as the comment automatically; do NOT also call synapse_add_comment. In CC full-auto mode the reviewNote MUST follow the template: 'Full-auto session authorized by <ownerName> at <ISO time>. Self-review pass: <key points>.' (or 'Self-review skipped: <reason>.' if the sub-agent failed).",inputSchema:e.Ikc({experimentUuid:e.YjP(),decision:e.k5n(["approved","rejected"]),reviewNote:e.YjP().optional(),assignedAgentUuid:e.YjP().nullable().optional().describe("Optional agent UUID to assign while reviewing. Pass null to clear assignment.")})},async({experimentUuid:a,decision:c,reviewNote:d,assignedAgentUuid:e})=>{let f=await l.AG({companyUuid:b.companyUuid,experimentUuid:a,approved:"approved"===c,reviewNote:d||null,...void 0!==e?{assignedAgentUuid:e}:{},actorUuid:b.actorUuid,actorType:"agent"});return{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_delete_research_question",{description:"Delete a Research Question (PI exclusive, can delete any Research Question)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>await g._W(b.companyUuid,a)?(await g.ph(a),{content:[{type:"text",text:`Research Question ${a} deleted`}]}):{content:[{type:"text",text:"Research Question not found"}],isError:!0}),a.registerTool("synapse_delete_document",{description:"Delete a Document (PI exclusive, can delete any Document)",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID")})},async({documentUuid:a})=>await h.YE(b.companyUuid,a)?(await h.Nn(a),{content:[{type:"text",text:`Document ${a} deleted`}]}):{content:[{type:"text",text:"Document not found"}],isError:!0}),a.registerTool("synapse_close_research_question",{description:"Close a Research Question (any status -> closed, PI exclusive)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if("closed"===c.status)return{content:[{type:"text",text:"Research Question is already in closed status"}],isError:!0};let d=await g.pg(a,b.companyUuid,{status:"closed"});return await i.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"closed"}),{content:[{type:"text",text:JSON.stringify({uuid:d.uuid,status:d.status})}]}}),a.registerTool("synapse_create_project_group",{description:"Create a new project group (PI exclusive)",inputSchema:e.Ikc({name:e.YjP().describe("Project group name"),description:e.YjP().optional().describe("Project group description")})},async({name:a,description:c})=>{let d=await j.H$({companyUuid:b.companyUuid,name:a,description:c||null});return{content:[{type:"text",text:JSON.stringify({...d,projects:[]},null,2)}]}}),a.registerTool("synapse_update_project_group",{description:"Update a project group (PI exclusive)",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID"),name:e.YjP().optional().describe("New group name"),description:e.YjP().optional().describe("New group description")})},async({groupUuid:a,name:c,description:d})=>{let e=await j.ie({companyUuid:b.companyUuid,groupUuid:a,name:c,description:d});if(!e)return{content:[{type:"text",text:"Project group not found"}],isError:!0};let f=await j.xv(b.companyUuid,a)??{...e,projects:[]};return{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_delete_project_group",{description:"Delete a project group (PI exclusive). By default refuses if the group contains projects. Pass force=true to cascade-delete all child projects.",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID"),force:e.zMY().optional().describe("If true, cascade-delete all child projects instead of refusing.")})},async({groupUuid:a,force:c})=>{let d=await j.xv(b.companyUuid,a);if(!d)return{content:[{type:"text",text:"Project group not found"}],isError:!0};if(d.projectCount>0&&!c)return{content:[{type:"text",text:`Cannot delete project group with ${d.projectCount} project(s). Pass force=true to cascade-delete child projects, or move them first with synapse_move_research_project_to_group.`}],isError:!0};if(d.projectCount>0&&c)for(let a of d.projects)await f._8(a.uuid);return await j.ed(b.companyUuid,a)?{content:[{type:"text",text:d.projectCount>0&&c?`Project group ${a} and ${d.projectCount} child project(s) deleted`:`Project group ${a} deleted`}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_move_research_project_to_group",{description:"Move a research project to a different group or ungroup it (PI exclusive). Set groupUuid to null to ungroup.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),groupUuid:e.YjP().nullable().describe("Target Project Group UUID (null to ungroup)")})},async({researchProjectUuid:a,groupUuid:c})=>{let d=await j.XO(b.companyUuid,a,c);return d?{content:[{type:"text",text:JSON.stringify(d,null,2)}]}:{content:[{type:"text",text:"Research Project or project group not found"}],isError:!0}}),a.registerTool("synapse_set_active_baseline",{description:"Set the active baseline for a research project (deactivates all others)",inputSchema:e.Ikc({baselineUuid:e.YjP()})},async a=>{let c=await k.Or(b.companyUuid,a.baselineUuid);return{content:[{type:"text",text:JSON.stringify(c,null,2)}]}})}[f,g,h,i,j,k,l]=m.then?(await m)():m,d()}catch(a){d(a)}})},71296:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489),f=c(31079),g=c(23235);b.default={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:a})=>(0,e._)`{additionalProperty: ${a.additionalProperty}}`},code(a){let{gen:b,schema:c,parentSchema:h,data:i,errsCount:j,it:k}=a;if(!j)throw Error("ajv implementation error");let{allErrors:l,opts:m}=k;if(k.props=!0,"all"!==m.removeAdditional&&(0,g.alwaysValidSchema)(k,c))return;let n=(0,d.allSchemaProperties)(h.properties),o=(0,d.allSchemaProperties)(h.patternProperties);function p(a){b.code((0,e._)`delete ${i}[${a}]`)}function q(d){if("all"===m.removeAdditional||m.removeAdditional&&!1===c)return void p(d);if(!1===c){a.setParams({additionalProperty:d}),a.error(),l||b.break();return}if("object"==typeof c&&!(0,g.alwaysValidSchema)(k,c)){let c=b.name("valid");"failing"===m.removeAdditional?(r(d,c,!1),b.if((0,e.not)(c),()=>{a.reset(),p(d)})):(r(d,c),l||b.if((0,e.not)(c),()=>b.break()))}}function r(b,c,d){let e={keyword:"additionalProperties",dataProp:b,dataPropType:g.Type.Str};!1===d&&Object.assign(e,{compositeRule:!0,createErrors:!1,allErrors:!1}),a.subschema(e,c)}b.forIn("key",i,c=>{n.length||o.length?b.if(function(c){let f;if(n.length>8){let a=(0,g.schemaRefOrVal)(k,h.properties,"properties");f=(0,d.isOwnProperty)(b,a,c)}else f=n.length?(0,e.or)(...n.map(a=>(0,e._)`${c} === ${a}`)):e.nil;return o.length&&(f=(0,e.or)(f,...o.map(b=>(0,e._)`${(0,d.usePattern)(a,b)}.test(${c})`))),(0,e.not)(f)}(c),()=>q(c)):q(c)}),a.ok((0,e._)`${j} === ${f.default.errors}`)}}},71339:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(91442);b.default={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:a})=>(0,d._)`{allowedValues: ${a}}`},code(a){let b,c,{gen:g,data:h,$data:i,schema:j,schemaCode:k,it:l}=a;if(!i&&0===j.length)throw Error("enum must have non-empty array");let m=j.length>=l.opts.loopEnum,n=()=>null!=b?b:b=(0,e.useFunc)(g,f.default);if(m||i)c=g.let("valid"),a.block$data(c,function(){g.assign(c,!1),g.forOf("v",k,a=>g.if((0,d._)`${n()}(${h}, ${a})`,()=>g.assign(c,!0).break()))});else{if(!Array.isArray(j))throw Error("ajv implementation error");let a=g.const("vSchema",k);c=(0,d.or)(...j.map((b,c)=>(function(a,b){let c=j[b];return"object"==typeof c&&null!==c?(0,d._)`${n()}(${h}, ${a}[${b}])`:(0,d._)`${h} === ${c}`})(a,c)))}a.pass(c)}}},71360:(a,b)=>{var c;Object.defineProperty(b,"__esModule",{value:!0}),b.DiscrError=void 0,function(a){a.Tag="tag",a.Mapping="mapping"}(c||(b.DiscrError=c={}))},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73566:a=>{a.exports=require("worker_threads")},73652:a=>{let b=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),c=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function d(a){let b="",c=0,d=0;for(d=0;d<a.length;d++)if(48!==(c=a[d].charCodeAt(0))){if(!(c>=48&&c<=57||c>=65&&c<=70||c>=97&&c<=102))return"";b+=a[d];break}for(d+=1;d<a.length;d++){if(!((c=a[d].charCodeAt(0))>=48&&c<=57||c>=65&&c<=70||c>=97&&c<=102))return"";b+=a[d]}return b}function e(a){return a.length=0,!0}function f(a,b,c){if(a.length){let e=d(a);if(""===e)return c.error=!0,!1;b.push(e),a.length=0}return!0}function g(a){if(2>function(a,b){let c=0;for(let b=0;b<a.length;b++)":"===a[b]&&c++;return c}(a,":"))return{host:a,isIPV6:!1};let b=function(a){let b=0,c={error:!1,address:"",zone:""},g=[],h=[],i=!1,j=!1,k=f;for(let d=0;d<a.length;d++){let f=a[d];if("["!==f&&"]"!==f)if(":"===f){if(!0===i&&(j=!0),!k(h,g,c))break;if(++b>7){c.error=!0;break}d>0&&":"===a[d-1]&&(i=!0),g.push(":");continue}else if("%"===f){if(!k(h,g,c))break;k=e}else{h.push(f);continue}}return h.length&&(k===e?c.zone=h.join(""):j?g.push(h.join("")):g.push(d(h))),c.address=g.join(""),c}(a);if(b.error)return{host:a,isIPV6:!1};{let a=b.address,c=b.address;return b.zone&&(a+="%"+b.zone,c+="%25"+b.zone),{host:a,isIPV6:!0,escapedHost:c}}}a.exports={nonSimpleDomain:RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u),recomposeAuthority:function(a){let b=[];if(void 0!==a.userinfo&&(b.push(a.userinfo),b.push("@")),void 0!==a.host){let d=unescape(a.host);if(!c(d)){let b=g(d);d=!0===b.isIPV6?`[${b.escapedHost}]`:a.host}b.push(d)}return("number"==typeof a.port||"string"==typeof a.port)&&(b.push(":"),b.push(String(a.port))),b.length?b.join(""):void 0},normalizeComponentEncoding:function(a,b){let c=!0!==b?escape:unescape;return void 0!==a.scheme&&(a.scheme=c(a.scheme)),void 0!==a.userinfo&&(a.userinfo=c(a.userinfo)),void 0!==a.host&&(a.host=c(a.host)),void 0!==a.path&&(a.path=c(a.path)),void 0!==a.query&&(a.query=c(a.query)),void 0!==a.fragment&&(a.fragment=c(a.fragment)),a},removeDotSegments:function(a){let b=a,c=[],d=-1,e=0;for(;e=b.length;){if(1===e)if("."===b)break;else if("/"===b){c.push("/");break}else{c.push(b);break}if(2===e){if("."===b[0]){if("."===b[1])break;else if("/"===b[1]){b=b.slice(2);continue}}else if("/"===b[0]&&("."===b[1]||"/"===b[1])){c.push("/");break}}else if(3===e&&"/.."===b){0!==c.length&&c.pop(),c.push("/");break}if("."===b[0]){if("."===b[1]){if("/"===b[2]){b=b.slice(3);continue}}else if("/"===b[1]){b=b.slice(2);continue}}else if("/"===b[0]&&"."===b[1]){if("/"===b[2]){b=b.slice(2);continue}else if("."===b[2]&&"/"===b[3]){b=b.slice(3),0!==c.length&&c.pop();continue}}if(-1===(d=b.indexOf("/",1))){c.push(b);break}c.push(b.slice(0,d)),b=b.slice(d)}return c.join("")},isIPv4:c,isUUID:b,normalizeIPv6:g,stringArrayToHexStripped:d}},73994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>q});var e=c(77258),f=c(52618),g=c(88437),h=c(33073),i=c(48499),j=c(46499),k=c(87797),l=c(77064),m=c(37943),n=a([f,g,h,i,j,k,l,m]);function o(a){return{ssh:a.sshHost||a.sshUser||a.sshPort?{host:a.sshHost,user:a.sshUser,port:a.sshPort??22,keyName:a.sshKeyName??null,managedKeyAvailable:a.managedKeyAvailable??!1,accessBundleTool:"synapse_get_node_access_bundle"}:null,ssmTarget:a.ssmTarget}}function p(a,b){return!a||"agent"===a.type&&a.uuid===b.actorUuid||"user"===a.type&&a.uuid===b.ownerUuid}function q(a,b){a.registerTool("synapse_list_compute_nodes",{description:"List compute pools, nodes, SSH/SSM access details, and the status of every GPU.",inputSchema:e.Ikc({onlyAvailable:e.zMY().default(!1),researchProjectUuid:e.YjP().optional()})},async({onlyAvailable:a,researchProjectUuid:c})=>{let d=await h.XH(b.companyUuid);if(c){let a=await f.prisma.researchProject.findFirst({where:{uuid:c,companyUuid:b.companyUuid},select:{computePoolUuid:!0}});a?.computePoolUuid&&(d=d.filter(b=>b.uuid===a.computePoolUuid))}let e=d.map(b=>({uuid:b.uuid,name:b.name,description:b.description,nodes:b.nodes.map(b=>({uuid:b.uuid,label:b.label,lifecycle:b.lifecycle,ec2InstanceId:b.ec2InstanceId,instanceType:b.instanceType,region:b.region,inventoryPending:b.inventoryPending,access:o(b),lastReportedAt:b.lastReportedAt,gpus:b.gpus.filter(b=>!a||"available"===b.computedStatus).map(a=>({uuid:a.uuid,slotIndex:a.slotIndex,model:a.model,memoryGb:a.memoryGb,status:a.activeReservation?`occupied:${a.activeReservation.itemTitle}`:a.computedStatus,utilizationPercent:a.utilizationPercent,memoryUsedGb:a.memoryUsedGb,temperatureC:a.temperatureC,activeReservation:a.activeReservation,lastReportedAt:a.lastReportedAt}))}))})),g=e.flatMap(a=>a.nodes.map(b=>({...b,pool:{uuid:a.uuid,name:a.name}})));return{content:[{type:"text",text:JSON.stringify({pools:e,nodes:g},null,2)}]}}),a.registerTool("synapse_get_node_access_bundle",{description:"Return a managed SSH access bundle for a node assigned to your current experiment. Use this instead of any server-local key path.",inputSchema:e.Ikc({experimentUuid:e.YjP(),nodeUuid:e.YjP()})},async({experimentUuid:a,nodeUuid:c})=>{let d=await h.DB({companyUuid:b.companyUuid,experimentUuid:a,nodeUuid:c,agentUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_get_assigned_experiments",{description:"List experiments currently assigned to you, sorted by priority and assignment order.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().optional(),statuses:e.YOg(e.k5n(["draft","pending_review","pending_start","in_progress","completed"])).optional()})},async({researchProjectUuid:a,statuses:c})=>{let d=await i.XA({companyUuid:b.companyUuid,assigneeType:"agent",assigneeUuid:b.actorUuid,researchProjectUuid:a,statuses:c});for(let a of d)"sent"===a.liveStatus&&await i.tp(a.uuid,"ack");return{content:[{type:"text",text:JSON.stringify({experiments:d},null,2)}]}}),a.registerTool("synapse_get_experiment",{description:"Get full details for a single experiment, including inherited parent-question context and a projectExperimentContext summary that tells callers whether this is the very first experiment on the project.",inputSchema:e.Ikc({experimentUuid:e.YjP()})},async({experimentUuid:a})=>{let c=await i._m(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};let[d,e]=await Promise.all([f.prisma.experiment.count({where:{companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,status:"completed",NOT:{uuid:c.uuid}}}),f.prisma.experiment.count({where:{companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,NOT:{uuid:c.uuid}}})]);return{content:[{type:"text",text:JSON.stringify({experiment:c,projectExperimentContext:{isFirstExperiment:0===e,priorCompletedCount:d,priorAnyCount:e}},null,2)}]}}),a.registerTool("synapse_start_experiment",{description:"Move an assigned experiment from pending_start to in_progress. Pass gpuUuids only when start_experiment should also reserve them; if you already called synapse_reserve_gpus, start without gpuUuids.",inputSchema:e.Ikc({experimentUuid:e.YjP(),gpuUuids:e.YOg(e.YjP()).default([]),workingNotes:e.YjP().optional()})},async({experimentUuid:a,gpuUuids:c,workingNotes:d})=>{let e=await i._m(b.companyUuid,a);if(!e)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!p(e.assignee,b))return{content:[{type:"text",text:"Experiment is assigned to another actor"}],isError:!0};if("pending_start"!==e.status&&"in_progress"!==e.status)return{content:[{type:"text",text:`Experiment must be pending_start or in_progress, current status: ${e.status}`}],isError:!0};if(d?.trim()){let c=await i._m(b.companyUuid,a),e=c?.description??"";await i.t3(b.companyUuid,a,{description:e+(e?"\n\n---\n\n":"")+d.trim()},{actorType:"agent",actorUuid:b.actorUuid})}await i.tp(a,"checking_resources");let f="in_progress"===e.status?await i._m(b.companyUuid,a):await i.sd({companyUuid:b.companyUuid,experimentUuid:a,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid});c.length>0&&await h.cx({companyUuid:b.companyUuid,experimentUuid:a,gpuUuids:c}),await i.tp(a,"running");let g=(await h.XH(b.companyUuid)).flatMap(a=>a.nodes).filter(a=>a.gpus.some(a=>c.includes(a.uuid))).map(a=>({uuid:a.uuid,label:a.label,access:o(a),gpus:a.gpus.filter(a=>c.includes(a.uuid))}));return{content:[{type:"text",text:JSON.stringify({experiment:f,nodes:g},null,2)}]}}),a.registerTool("synapse_sync_node_inventory",{description:"After logging into a machine, sync its instance metadata and GPU inventory back into Synapse.",inputSchema:e.Ikc({nodeUuid:e.YjP(),ec2InstanceId:e.YjP().optional(),instanceType:e.YjP().optional(),region:e.YjP().optional(),gpus:e.YOg(e.Ikc({slotIndex:e.aig().int().min(0),model:e.YjP(),memoryGb:e.aig().int().positive().optional()}))})},async({nodeUuid:a,ec2InstanceId:c,instanceType:d,region:e,gpus:f})=>{let g=await h.ut({companyUuid:b.companyUuid,nodeUuid:a,ec2InstanceId:c,instanceType:d,region:e,gpus:f});return{content:[{type:"text",text:JSON.stringify({uuid:g.uuid,ec2InstanceId:g.ec2InstanceId,instanceType:g.instanceType,region:g.region,gpus:g.gpus.map(a=>({uuid:a.uuid,slotIndex:a.slotIndex,model:a.model,memoryGb:a.memoryGb}))},null,2)}]}}),a.registerTool("synapse_reserve_gpus",{description:"Reserve one or more GPUs for an experiment. Reserved GPUs show as 'busy' and cannot be reserved by other experiments. GPUs are automatically released when the experiment is completed via synapse_submit_experiment_results.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID"),gpuUuids:e.YOg(e.YjP()).min(1).describe("List of GPU UUIDs to reserve")})},async({experimentUuid:a,gpuUuids:c})=>{try{let d=await h.cx({companyUuid:b.companyUuid,experimentUuid:a,gpuUuids:c});return{content:[{type:"text",text:JSON.stringify({success:!0,...d})}]}}catch(a){return{content:[{type:"text",text:`GPU reservation failed: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_report_gpu_status",{description:"Report the latest GPU lifecycle or telemetry after running a workload.",inputSchema:e.Ikc({nodeUuid:e.YjP(),gpus:e.YOg(e.Ikc({gpuUuid:e.YjP(),lifecycle:e.k5n(["available","offline","maintenance","unhealthy"]).optional(),utilizationPercent:e.aig().int().min(0).max(100).optional(),memoryUsedGb:e.aig().min(0).optional(),temperatureC:e.aig().int().min(0).optional(),notes:e.YjP().optional()}))})},async({nodeUuid:a,gpus:b})=>(await h.SU({nodeUuid:a,gpus:b}),{content:[{type:"text",text:JSON.stringify({success:!0,nodeUuid:a,updatedGpuCount:b.length},null,2)}]})),a.registerTool("synapse_submit_experiment_results",{description:"Submit experiment outcomes. Supports both legacy experiment runs and the new unified Experiment workflow.",inputSchema:e.Ikc({runUuid:e.YjP().optional(),experimentUuid:e.YjP().optional(),outcome:e.YjP().optional(),experimentResults:e.L5J().optional(),sessionUuid:e.YjP().optional(),experimentBranch:e.YjP().optional().describe("Git branch name where experiment code was pushed"),commitSha:e.YjP().optional().describe("Git commit SHA of the final experiment code")})},async({runUuid:a,experimentUuid:c,outcome:d,experimentResults:e,sessionUuid:k,experimentBranch:n,commitSha:o})=>{if(c){let a=await i._m(b.companyUuid,c);if(!a)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!p(a.assignee,b))return{content:[{type:"text",text:"Only the assigned agent can submit results"}],isError:!0};await h.LD(b.companyUuid,c);let g=await i.zX({companyUuid:b.companyUuid,experimentUuid:c,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,outcome:d,results:e,experimentBranch:n,commitSha:o});await i.tp(c,null,null);let j=await f.prisma.experiment.findMany({where:{companyUuid:b.companyUuid,liveStatus:"queuing",assigneeUuid:{not:null},assigneeType:{not:null}},select:{uuid:!0,title:!0,assigneeType:!0,assigneeUuid:!0,assignedByUuid:!0,researchProjectUuid:!0,researchProject:{select:{name:!0}},priority:!0,assignedAt:!0},orderBy:[{assignedAt:"asc"}]}),k={immediate:0,high:1,medium:2,low:3};for(let a of(j.sort((a,b)=>(k[a.priority]??3)-(k[b.priority]??3)),j))a.assigneeUuid&&a.assigneeType&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a.researchProjectUuid,recipientType:a.assigneeType,recipientUuid:a.assigneeUuid,entityType:"experiment",entityUuid:a.uuid,entityTitle:a.title,projectName:a.researchProject.name,action:"task_assigned",message:`GPUs released. Retrying: ${a.title}`,actorType:"agent",actorUuid:b.actorUuid,actorName:"Synapse"});return{content:[{type:"text",text:JSON.stringify({experiment:g,released:!0},null,2)}]}}if(!a)return{content:[{type:"text",text:"Either experimentUuid or runUuid is required"}],isError:!0};let q=await j.fo(b.companyUuid,a);if(!q)return{content:[{type:"text",text:"Experiment Run not found"}],isError:!0};if(q.assigneeUuid!==b.actorUuid)return{content:[{type:"text",text:"Only the assigned agent can submit results"}],isError:!0};let r=await j.ry(b.companyUuid,a,{outcome:d,experimentResults:e},{actorType:"agent",actorUuid:b.actorUuid});return await g.E1({companyUuid:b.companyUuid,researchProjectUuid:q.researchProjectUuid,targetType:"experiment_run",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"submitted",value:{outcome:d??null},sessionUuid:k}),k&&await l.uE(b.companyUuid,k,a),{content:[{type:"text",text:JSON.stringify({run:r,released:!0},null,2)}]}}),a.registerTool("synapse_save_experiment_report",{description:"Create or update the dedicated experiment result document for a completed experiment.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID"),title:e.YjP().optional().describe("Optional report title"),content:e.YjP().describe("Full experiment report content (Markdown)")})},async({experimentUuid:a,title:c,content:d})=>{try{let e=await i.Ej({companyUuid:b.companyUuid,actorType:b.type,actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,experimentUuid:a,title:c??null,content:d});return{content:[{type:"text",text:JSON.stringify({document:e},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to save experiment report"}],isError:!0}}}),a.registerTool("synapse_report_experiment_progress",{description:"Report a progress update for an in-progress experiment. The message appears on the experiment card in real-time and is logged in the progress timeline.",inputSchema:e.Ikc({experimentUuid:e.YjP(),message:e.YjP().describe("Short status message, e.g. 'Training epoch 3/10, loss=0.42'"),phase:e.YjP().optional().describe("Optional phase label, e.g. 'data_download', 'training', 'evaluation'"),liveStatus:e.k5n(["queuing","checking_resources","running"]).optional().describe("Live status badge shown on the experiment card. Default: 'running'. Use 'queuing' when waiting for GPU resources.")})},async({experimentUuid:a,message:c,phase:d,liveStatus:e})=>{if("queuing"===e)return await i.tp(a,"queuing",c),{content:[{type:"text",text:JSON.stringify({success:!0,statusOnly:!0})}]};let g=await (0,k.e)({companyUuid:b.companyUuid,experimentUuid:a,message:c,phase:d,liveStatus:e,actorUuid:b.actorUuid});try{let d=await f.prisma.experiment.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,title:!0,createdByUuid:!0,researchProjectUuid:!0,researchProject:{select:{name:!0}}}});d&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:d.researchProjectUuid,recipientType:"user",recipientUuid:d.createdByUuid,entityType:"experiment",entityUuid:d.uuid,entityTitle:d.title,projectName:d.researchProject.name,action:"experiment_progress",message:c,actorType:b.type,actorUuid:b.actorUuid,actorName:"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({success:!0,logUuid:g.uuid})}]}}),a.registerTool("synapse_get_project_full_context",{description:"Get full research context for a project: brief, datasets, evaluation methods, all research questions, experiments with UUIDs and outcome summaries, related-work paper titles, document references, and compute availability. Use for autonomous research analysis.",inputSchema:e.Ikc({researchProjectUuid:e.YjP()})},async({researchProjectUuid:a})=>{let c=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,name:!0,description:!0,goal:!0,datasets:!0,evaluationMethods:!0,researchQuestions:{select:{uuid:!0,title:!0,content:!0,status:!0,reviewStatus:!0},orderBy:{createdAt:"asc"}},experiments:{select:{uuid:!0,title:!0,status:!0,priority:!0,outcome:!0,completedAt:!0,description:!0,results:!0},orderBy:{createdAt:"asc"}},relatedWorks:{select:{title:!0},orderBy:{createdAt:"desc"}},documents:{select:{uuid:!0,title:!0,type:!0,updatedAt:!0},orderBy:{updatedAt:"desc"}},_count:{select:{relatedWorks:!0}}}});if(!c)return{content:[{type:"text",text:"Project not found"}],isError:!0};let d=c.experiments.map(a=>({id:a.uuid,uuid:a.uuid,title:a.title,status:a.status,priority:a.priority,outcome:a.outcome,completedAt:a.completedAt,description:a.description?a.description.length>120?a.description.slice(0,120)+"...":a.description:null,resultSummary:a.results?String(a.results).length>150?String(a.results).slice(0,150)+"...":String(a.results):null})),e=c.relatedWorks.map(a=>a.title),g=c.documents.map(a=>({id:a.uuid,uuid:a.uuid,title:a.title,type:a.type,updatedAt:a.updatedAt})),i=await f.prisma.document.findFirst({where:{researchProjectUuid:a,companyUuid:b.companyUuid,type:"experiment_results_log"},select:{uuid:!0,title:!0,content:!0,updatedAt:!0}}),j=null;try{let c=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{computePoolUuid:!0}}),d=await h.XH(b.companyUuid);c?.computePoolUuid&&(d=d.filter(a=>a.uuid===c.computePoolUuid));let e=d.flatMap(a=>a.nodes.flatMap(a=>a.gpus)),g=e.filter(a=>"available"===a.computedStatus&&!a.activeReservation),i=[...new Set(e.map(a=>a.model).filter(Boolean))];j={totalGpus:e.length,availableGpus:g.length,occupiedGpus:e.length-g.length,gpuModels:i}}catch{}let k=d.filter(a=>"in_progress"===a.status).length,l=d.filter(a=>"pending_start"===a.status).length;return{content:[{type:"text",text:JSON.stringify({project:{...c,experiments:d,relatedWorks:e,relatedWorksCount:c._count.relatedWorks,documents:g},resultsLog:i?{uuid:i.uuid,content:i.content,updatedAt:i.updatedAt}:null,relatedWorks:e,documents:g,computeAvailability:j,experimentQueue:{inProgress:k,pendingStart:l},_hint:"Experiment id and uuid fields are the same public UUID; pass either value as experimentUuid to synapse_get_experiment for full details. Document id and uuid fields are the same public UUID; pass either value as documentUuid to synapse_get_document for full content. Use synapse_get_related_works when paper metadata beyond titles is needed. When proposing experiments, consider available compute resources — propose at most as many experiments as there are available GPUs, minus already queued/running experiments. Each experiment card must represent ONE independent run: split sweeps, ablations, repeated trials, and baseline-vs-variant comparisons into separate cards. Multi-phase cards are only acceptable when the phases are strictly sequential stages of a single run — never pack parallel or comparative runs together."},null,2)}]}}),a.registerTool("synapse_create_experiment",{description:"Create a new experiment outside the autonomous loop. Defaults to draft so the calling agent can run a self-review sub-agent against the new experiment, revise the plan if needed, then advance to pending_review with synapse_update_experiment_status. User-directed terminal flows on Claude Code follow this same draft → self-review → pending_review path before asking the user to approve.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),description:e.YjP(),researchQuestionUuid:e.YjP().optional(),priority:e.k5n(["low","medium","high","immediate"]).default("medium"),status:e.k5n(["draft","pending_review"]).default("draft")})},async({researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e,priority:g,status:h})=>{let j=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,name:!0}});if(!j)return{content:[{type:"text",text:"Research project not found"}],isError:!0};if(e&&!await f.prisma.researchQuestion.findFirst({where:{uuid:e,companyUuid:b.companyUuid,researchProjectUuid:a},select:{uuid:!0}}))return{content:[{type:"text",text:"Research question not found in this project"}],isError:!0};let k=await i.Cl({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e||null,priority:g,status:h,createdByUuid:b.actorUuid,createdByType:"agent"});try{let d=await f.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});d?.ownerUuid&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:d.ownerUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:j.name,action:"experiment_created",message:"draft"===h?`Agent created draft experiment "${c}".`:`Agent created experiment "${c}" for review.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d.name??"Agent"})}catch{}let l="draft"===h?"Experiment created in draft. Continue refining it or move it to pending_review when ready.":"Experiment created in pending_review. Human review is required before execution.";return{content:[{type:"text",text:JSON.stringify({experiment:k,note:l},null,2)}]}}),a.registerTool("synapse_propose_experiment",{description:"Autonomous-loop only: propose one independent experiment run after reviewing project context, synthesis, and compute. Before calling this tool, the autonomous-loop main agent MUST spawn a sub-agent to self-review the proposal text (motivation, hypothesis, method, success criteria, compute fit). Self-review never persists to the database. Human Review mode creates 'pending_review'; Full Auto mode creates 'pending_start' and assigns it to you. For user-directed or terminal-created experiments outside autonomous loop, use synapse_create_experiment instead.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),description:e.YjP(),researchQuestionUuid:e.YjP().optional(),priority:e.k5n(["low","medium","high","immediate"]).default("medium")})},async({researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e,priority:g})=>{let h=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid,autonomousLoopEnabled:!0,autonomousLoopAgentUuid:b.actorUuid},select:{uuid:!0,name:!0,autonomousLoopEnabled:!0,autonomousLoopAgentUuid:!0,autonomousLoopMode:!0}});if(!h)return{content:[{type:"text",text:"synapse_propose_experiment is only available to the project's assigned autonomous-loop agent. For user-directed or terminal-created experiments, use synapse_create_experiment."}],isError:!0};if(e&&!await f.prisma.researchQuestion.findFirst({where:{uuid:e,companyUuid:b.companyUuid,researchProjectUuid:a},select:{uuid:!0}}))return{content:[{type:"text",text:"Research question not found in this project"}],isError:!0};let j="full_auto"===h.autonomousLoopMode,k=await i.Cl({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e||null,priority:g,createdByUuid:b.actorUuid,createdByType:"agent",status:j?"pending_start":"pending_review",...j?{status:"pending_start",assigneeUuid:b.actorUuid,assigneeType:"agent",assignedByUuid:b.actorUuid,assignedAt:new Date}:{}});try{let d=await f.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});d?.ownerUuid&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:d.ownerUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:h.name,action:"experiment_auto_proposed",message:j?`Agent auto-proposed experiment "${c}" for immediate execution.`:`Agent proposed experiment "${c}" for review.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d.name??"Agent"}),j&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"agent",recipientUuid:b.actorUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:h.name,action:"task_assigned",message:`Experiment "${c}" auto-assigned for immediate execution.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d?.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({experiment:k,note:j?"Experiment created in pending_start (Full Auto mode). Ready for immediate execution.":"Experiment created in pending_review. Human review required before execution."},null,2)}]}}),a.registerTool("synapse_update_experiment_status",{description:"Update an assigned experiment's workflow status during planning or revision. Use this to move an experiment into draft while revising, then send it back to pending_review or pending_start. For execution, keep using synapse_start_experiment and synapse_submit_experiment_results.",inputSchema:e.Ikc({experimentUuid:e.YjP(),status:e.k5n(["draft","pending_review","pending_start"]),liveStatus:e.k5n(["sent","ack","writing","checking_resources","queuing","running"]).nullable().optional().describe("Optional live badge override. Draft defaults to running; pending_review/pending_start default to cleared. Use 'writing' while drafting a plan."),liveMessage:e.YjP().nullable().optional().describe("Optional short status text shown on the experiment card.")})},async({experimentUuid:a,status:c,liveStatus:d,liveMessage:e})=>{let f=await i._m(b.companyUuid,a);if(!f)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!p(f.assignee,b))return{content:[{type:"text",text:"Experiment is assigned to another actor"}],isError:!0};let g=await i.C6({companyUuid:b.companyUuid,experimentUuid:a,status:c,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,liveStatus:d,liveMessage:e});return{content:[{type:"text",text:JSON.stringify({experiment:g},null,2)}]}}),a.registerTool("synapse_update_experiment_plan",{description:"Update an experiment's plan/details. Use this when asked to flesh out an experiment plan from a brief description. You can update title, description/plan, research question link, and priority. Either `description` or `plan` is accepted; if both are provided, `description` wins.",inputSchema:e.Ikc({experimentUuid:e.YjP(),title:e.YjP().optional(),description:e.YjP().optional().describe("Detailed experiment plan/methodology"),plan:e.YjP().optional().describe("Alias for description."),researchQuestionUuid:e.YjP().optional().describe("Link to a research question"),priority:e.k5n(["low","medium","high","immediate"]).optional()})},async({experimentUuid:a,title:c,description:d,plan:e,researchQuestionUuid:f,priority:g})=>{if(!await i._m(b.companyUuid,a))return{content:[{type:"text",text:"Experiment not found"}],isError:!0};let h=d??e,j={};if(void 0!==c&&(j.title=c),void 0!==h&&(j.description=h),void 0!==f&&(j.researchQuestionUuid=f||null),void 0!==g&&(j.priority=g),0===Object.keys(j).length)return{content:[{type:"text",text:"No fields to update (provide at least one of title, description/plan, researchQuestionUuid, priority)"}],isError:!0};let k=await i.t3(b.companyUuid,a,j,{actorType:"agent",actorUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify({experiment:k},null,2)}]}}),a.registerTool("synapse_get_repo_access",{description:"Get GitHub repository credentials for a research project. Returns repoUrl, username, token, and the experiment's base branch. Token is for cloning/pushing.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),experimentUuid:e.YjP().optional().describe("If provided, returns the experiment's baseBranch")})},async({researchProjectUuid:a,experimentUuid:c})=>{let d=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{repoUrl:!0,githubUsername:!0,githubToken:!0}});if(!d?.repoUrl||!d?.githubToken)return{content:[{type:"text",text:JSON.stringify({configured:!1})}]};let e=null;if(c){let a=await f.prisma.experiment.findFirst({where:{uuid:c,companyUuid:b.companyUuid},select:{baseBranch:!0}});e=a?.baseBranch??null}return{content:[{type:"text",text:JSON.stringify({configured:!0,repoUrl:d.repoUrl,githubUsername:d.githubUsername,githubToken:d.githubToken,baseBranch:e})}]}})}[f,g,h,i,j,k,l,m]=n.then?(await n)():n,d()}catch(a){d(a)}})},74489:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.or=b.and=b.not=b.CodeGen=b.operators=b.varKinds=b.ValueScopeName=b.ValueScope=b.Scope=b.Name=b.regexpCode=b.stringify=b.getProperty=b.nil=b.strConcat=b.str=b._=void 0;let d=c(86684),e=c(40001);var f=c(86684);Object.defineProperty(b,"_",{enumerable:!0,get:function(){return f._}}),Object.defineProperty(b,"str",{enumerable:!0,get:function(){return f.str}}),Object.defineProperty(b,"strConcat",{enumerable:!0,get:function(){return f.strConcat}}),Object.defineProperty(b,"nil",{enumerable:!0,get:function(){return f.nil}}),Object.defineProperty(b,"getProperty",{enumerable:!0,get:function(){return f.getProperty}}),Object.defineProperty(b,"stringify",{enumerable:!0,get:function(){return f.stringify}}),Object.defineProperty(b,"regexpCode",{enumerable:!0,get:function(){return f.regexpCode}}),Object.defineProperty(b,"Name",{enumerable:!0,get:function(){return f.Name}});var g=c(40001);Object.defineProperty(b,"Scope",{enumerable:!0,get:function(){return g.Scope}}),Object.defineProperty(b,"ValueScope",{enumerable:!0,get:function(){return g.ValueScope}}),Object.defineProperty(b,"ValueScopeName",{enumerable:!0,get:function(){return g.ValueScopeName}}),Object.defineProperty(b,"varKinds",{enumerable:!0,get:function(){return g.varKinds}}),b.operators={GT:new d._Code(">"),GTE:new d._Code(">="),LT:new d._Code("<"),LTE:new d._Code("<="),EQ:new d._Code("==="),NEQ:new d._Code("!=="),NOT:new d._Code("!"),OR:new d._Code("||"),AND:new d._Code("&&"),ADD:new d._Code("+")};class h{optimizeNodes(){return this}optimizeNames(a,b){return this}}class i extends h{constructor(a,b,c){super(),this.varKind=a,this.name=b,this.rhs=c}render({es5:a,_n:b}){let c=a?e.varKinds.var:this.varKind,d=void 0===this.rhs?"":` = ${this.rhs}`;return`${c} ${this.name}${d};`+b}optimizeNames(a,b){if(a[this.name.str])return this.rhs&&(this.rhs=G(this.rhs,a,b)),this}get names(){return this.rhs instanceof d._CodeOrName?this.rhs.names:{}}}class j extends h{constructor(a,b,c){super(),this.lhs=a,this.rhs=b,this.sideEffects=c}render({_n:a}){return`${this.lhs} = ${this.rhs};`+a}optimizeNames(a,b){if(!(this.lhs instanceof d.Name)||a[this.lhs.str]||this.sideEffects)return this.rhs=G(this.rhs,a,b),this}get names(){return F(this.lhs instanceof d.Name?{}:{...this.lhs.names},this.rhs)}}class k extends j{constructor(a,b,c,d){super(a,c,d),this.op=b}render({_n:a}){return`${this.lhs} ${this.op}= ${this.rhs};`+a}}class l extends h{constructor(a){super(),this.label=a,this.names={}}render({_n:a}){return`${this.label}:`+a}}class m extends h{constructor(a){super(),this.label=a,this.names={}}render({_n:a}){let b=this.label?` ${this.label}`:"";return`break${b};`+a}}class n extends h{constructor(a){super(),this.error=a}render({_n:a}){return`throw ${this.error};`+a}get names(){return this.error.names}}class o extends h{constructor(a){super(),this.code=a}render({_n:a}){return`${this.code};`+a}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(a,b){return this.code=G(this.code,a,b),this}get names(){return this.code instanceof d._CodeOrName?this.code.names:{}}}class p extends h{constructor(a=[]){super(),this.nodes=a}render(a){return this.nodes.reduce((b,c)=>b+c.render(a),"")}optimizeNodes(){let{nodes:a}=this,b=a.length;for(;b--;){let c=a[b].optimizeNodes();Array.isArray(c)?a.splice(b,1,...c):c?a[b]=c:a.splice(b,1)}return a.length>0?this:void 0}optimizeNames(a,b){let{nodes:c}=this,d=c.length;for(;d--;){let e=c[d];e.optimizeNames(a,b)||(function(a,b){for(let c in b)a[c]=(a[c]||0)-(b[c]||0)}(a,e.names),c.splice(d,1))}return c.length>0?this:void 0}get names(){return this.nodes.reduce((a,b)=>E(a,b.names),{})}}class q extends p{render(a){return"{"+a._n+super.render(a)+"}"+a._n}}class r extends p{}class s extends q{}s.kind="else";class t extends q{constructor(a,b){super(b),this.condition=a}render(a){let b=`if(${this.condition})`+super.render(a);return this.else&&(b+="else "+this.else.render(a)),b}optimizeNodes(){super.optimizeNodes();let a=this.condition;if(!0===a)return this.nodes;let b=this.else;if(b){let a=b.optimizeNodes();b=this.else=Array.isArray(a)?new s(a):a}return b?!1===a?b instanceof t?b:b.nodes:this.nodes.length?this:new t(H(a),b instanceof t?[b]:b.nodes):!1!==a&&this.nodes.length?this:void 0}optimizeNames(a,b){var c;if(this.else=null==(c=this.else)?void 0:c.optimizeNames(a,b),super.optimizeNames(a,b)||this.else)return this.condition=G(this.condition,a,b),this}get names(){let a=super.names;return F(a,this.condition),this.else&&E(a,this.else.names),a}}t.kind="if";class u extends q{}u.kind="for";class v extends u{constructor(a){super(),this.iteration=a}render(a){return`for(${this.iteration})`+super.render(a)}optimizeNames(a,b){if(super.optimizeNames(a,b))return this.iteration=G(this.iteration,a,b),this}get names(){return E(super.names,this.iteration.names)}}class w extends u{constructor(a,b,c,d){super(),this.varKind=a,this.name=b,this.from=c,this.to=d}render(a){let b=a.es5?e.varKinds.var:this.varKind,{name:c,from:d,to:f}=this;return`for(${b} ${c}=${d}; ${c}<${f}; ${c}++)`+super.render(a)}get names(){let a=F(super.names,this.from);return F(a,this.to)}}class x extends u{constructor(a,b,c,d){super(),this.loop=a,this.varKind=b,this.name=c,this.iterable=d}render(a){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(a)}optimizeNames(a,b){if(super.optimizeNames(a,b))return this.iterable=G(this.iterable,a,b),this}get names(){return E(super.names,this.iterable.names)}}class y extends q{constructor(a,b,c){super(),this.name=a,this.args=b,this.async=c}render(a){let b=this.async?"async ":"";return`${b}function ${this.name}(${this.args})`+super.render(a)}}y.kind="func";class z extends p{render(a){return"return "+super.render(a)}}z.kind="return";class A extends q{render(a){let b="try"+super.render(a);return this.catch&&(b+=this.catch.render(a)),this.finally&&(b+=this.finally.render(a)),b}optimizeNodes(){var a,b;return super.optimizeNodes(),null==(a=this.catch)||a.optimizeNodes(),null==(b=this.finally)||b.optimizeNodes(),this}optimizeNames(a,b){var c,d;return super.optimizeNames(a,b),null==(c=this.catch)||c.optimizeNames(a,b),null==(d=this.finally)||d.optimizeNames(a,b),this}get names(){let a=super.names;return this.catch&&E(a,this.catch.names),this.finally&&E(a,this.finally.names),a}}class B extends q{constructor(a){super(),this.error=a}render(a){return`catch(${this.error})`+super.render(a)}}B.kind="catch";class C extends q{render(a){return"finally"+super.render(a)}}C.kind="finally";class D{constructor(a,b={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...b,_n:b.lines?"\n":""},this._extScope=a,this._scope=new e.Scope({parent:a}),this._nodes=[new r]}toString(){return this._root.render(this.opts)}name(a){return this._scope.name(a)}scopeName(a){return this._extScope.name(a)}scopeValue(a,b){let c=this._extScope.value(a,b);return(this._values[c.prefix]||(this._values[c.prefix]=new Set)).add(c),c}getScopeValue(a,b){return this._extScope.getValue(a,b)}scopeRefs(a){return this._extScope.scopeRefs(a,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(a,b,c,d){let e=this._scope.toName(b);return void 0!==c&&d&&(this._constants[e.str]=c),this._leafNode(new i(a,e,c)),e}const(a,b,c){return this._def(e.varKinds.const,a,b,c)}let(a,b,c){return this._def(e.varKinds.let,a,b,c)}var(a,b,c){return this._def(e.varKinds.var,a,b,c)}assign(a,b,c){return this._leafNode(new j(a,b,c))}add(a,c){return this._leafNode(new k(a,b.operators.ADD,c))}code(a){return"function"==typeof a?a():a!==d.nil&&this._leafNode(new o(a)),this}object(...a){let b=["{"];for(let[c,e]of a)b.length>1&&b.push(","),b.push(c),(c!==e||this.opts.es5)&&(b.push(":"),(0,d.addCodeArg)(b,e));return b.push("}"),new d._Code(b)}if(a,b,c){if(this._blockNode(new t(a)),b&&c)this.code(b).else().code(c).endIf();else if(b)this.code(b).endIf();else if(c)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(a){return this._elseNode(new t(a))}else(){return this._elseNode(new s)}endIf(){return this._endBlockNode(t,s)}_for(a,b){return this._blockNode(a),b&&this.code(b).endFor(),this}for(a,b){return this._for(new v(a),b)}forRange(a,b,c,d,f=this.opts.es5?e.varKinds.var:e.varKinds.let){let g=this._scope.toName(a);return this._for(new w(f,g,b,c),()=>d(g))}forOf(a,b,c,f=e.varKinds.const){let g=this._scope.toName(a);if(this.opts.es5){let a=b instanceof d.Name?b:this.var("_arr",b);return this.forRange("_i",0,(0,d._)`${a}.length`,b=>{this.var(g,(0,d._)`${a}[${b}]`),c(g)})}return this._for(new x("of",f,g,b),()=>c(g))}forIn(a,b,c,f=this.opts.es5?e.varKinds.var:e.varKinds.const){if(this.opts.ownProperties)return this.forOf(a,(0,d._)`Object.keys(${b})`,c);let g=this._scope.toName(a);return this._for(new x("in",f,g,b),()=>c(g))}endFor(){return this._endBlockNode(u)}label(a){return this._leafNode(new l(a))}break(a){return this._leafNode(new m(a))}return(a){let b=new z;if(this._blockNode(b),this.code(a),1!==b.nodes.length)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(z)}try(a,b,c){if(!b&&!c)throw Error('CodeGen: "try" without "catch" and "finally"');let d=new A;if(this._blockNode(d),this.code(a),b){let a=this.name("e");this._currNode=d.catch=new B(a),b(a)}return c&&(this._currNode=d.finally=new C,this.code(c)),this._endBlockNode(B,C)}throw(a){return this._leafNode(new n(a))}block(a,b){return this._blockStarts.push(this._nodes.length),a&&this.code(a).endBlock(b),this}endBlock(a){let b=this._blockStarts.pop();if(void 0===b)throw Error("CodeGen: not in self-balancing block");let c=this._nodes.length-b;if(c<0||void 0!==a&&c!==a)throw Error(`CodeGen: wrong number of nodes: ${c} vs ${a} expected`);return this._nodes.length=b,this}func(a,b=d.nil,c,e){return this._blockNode(new y(a,b,c)),e&&this.code(e).endFunc(),this}endFunc(){return this._endBlockNode(y)}optimize(a=1){for(;a-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(a){return this._currNode.nodes.push(a),this}_blockNode(a){this._currNode.nodes.push(a),this._nodes.push(a)}_endBlockNode(a,b){let c=this._currNode;if(c instanceof a||b&&c instanceof b)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${b?`${a.kind}/${b.kind}`:a.kind}"`)}_elseNode(a){let b=this._currNode;if(!(b instanceof t))throw Error('CodeGen: "else" without "if"');return this._currNode=b.else=a,this}get _root(){return this._nodes[0]}get _currNode(){let a=this._nodes;return a[a.length-1]}set _currNode(a){let b=this._nodes;b[b.length-1]=a}}function E(a,b){for(let c in b)a[c]=(a[c]||0)+(b[c]||0);return a}function F(a,b){return b instanceof d._CodeOrName?E(a,b.names):a}function G(a,b,c){var e;if(a instanceof d.Name)return f(a);if(!((e=a)instanceof d._Code&&e._items.some(a=>a instanceof d.Name&&1===b[a.str]&&void 0!==c[a.str])))return a;return new d._Code(a._items.reduce((a,b)=>(b instanceof d.Name&&(b=f(b)),b instanceof d._Code?a.push(...b._items):a.push(b),a),[]));function f(a){let d=c[a.str];return void 0===d||1!==b[a.str]?a:(delete b[a.str],d)}}function H(a){return"boolean"==typeof a||"number"==typeof a||null===a?!a:(0,d._)`!${L(a)}`}b.CodeGen=D,b.not=H;let I=K(b.operators.AND);b.and=function(...a){return a.reduce(I)};let J=K(b.operators.OR);function K(a){return(b,c)=>b===d.nil?c:c===d.nil?b:(0,d._)`${L(b)} ${a} ${L(c)}`}function L(a){return a instanceof d.Name?a:(0,d._)`(${a})`}b.or=function(...a){return a.reduce(J)}},74909:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateAdditionalItems=void 0;let d=c(74489),e=c(23235);function f(a,b){let{gen:c,schema:f,data:g,keyword:h,it:i}=a;i.items=!0;let j=c.const("len",(0,d._)`${g}.length`);if(!1===f)a.setParams({len:b.length}),a.pass((0,d._)`${j} <= ${b.length}`);else if("object"==typeof f&&!(0,e.alwaysValidSchema)(i,f)){let f=c.var("valid",(0,d._)`${j} <= ${b.length}`);c.if((0,d.not)(f),()=>{var g;return g=f,void c.forRange("i",b.length,j,b=>{a.subschema({keyword:h,dataProp:b,dataPropType:e.Type.Num},g),i.allErrors||c.if((0,d.not)(g),()=>c.break())})}),a.ok(f)}}b.validateAdditionalItems=f,b.default={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:a}})=>(0,d.str)`must NOT have more than ${a} items`,params:({params:{len:a}})=>(0,d._)`{limit: ${a}}`},code(a){let{parentSchema:b,it:c}=a,{items:d}=b;if(!Array.isArray(d))return void(0,e.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');f(a,d)}}},75811:a=>{a.exports=import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs")},75925:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:a})=>(0,d.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,d._)`{format: ${a}}`},code(a,b){let{gen:c,data:e,$data:f,schema:g,schemaCode:h,it:i}=a,{opts:j,errSchemaPath:k,schemaEnv:l,self:m}=i;j.validateFormats&&(f?function(){let f=c.scopeValue("formats",{ref:m.formats,code:j.code.formats}),g=c.const("fDef",(0,d._)`${f}[${h}]`),i=c.let("fType"),k=c.let("format");c.if((0,d._)`typeof ${g} == "object" && !(${g} instanceof RegExp)`,()=>c.assign(i,(0,d._)`${g}.type || "string"`).assign(k,(0,d._)`${g}.validate`),()=>c.assign(i,(0,d._)`"string"`).assign(k,g)),a.fail$data((0,d.or)(!1===j.strictSchema?d.nil:(0,d._)`${h} && !${k}`,function(){let a=l.$async?(0,d._)`(${g}.async ? await ${k}(${e}) : ${k}(${e}))`:(0,d._)`${k}(${e})`,c=(0,d._)`(typeof ${k} == "function" ? ${a} : ${k}.test(${e}))`;return(0,d._)`${k} && ${k} !== true && ${i} === ${b} && !${c}`}()))}():function(){let f=m.formats[g];if(!f){if(!1===j.strictSchema)return m.logger.warn(h());throw Error(h());function h(){return`unknown format "${g}" ignored in schema at path "${k}"`}}if(!0===f)return;let[i,n,o]=function(a){let b=a instanceof RegExp?(0,d.regexpCode)(a):j.code.formats?(0,d._)`${j.code.formats}${(0,d.getProperty)(g)}`:void 0,e=c.scopeValue("formats",{key:g,ref:a,code:b});return"object"!=typeof a||a instanceof RegExp?["string",a,e]:[a.type||"string",a.validate,(0,d._)`${e}.validate`]}(f);i===b&&a.pass(function(){if("object"==typeof f&&!(f instanceof RegExp)&&f.async){if(!l.$async)throw Error("async format in sync schema");return(0,d._)`await ${o}(${e})`}return"function"==typeof n?(0,d._)`${o}(${e})`:(0,d._)`${o}.test(${e})`}())}())}}},76760:a=>{a.exports=require("node:path")},77064:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ht:()=>k,Vu:()=>m,Xo:()=>l,Zi:()=>p,aQ:()=>q,jw:()=>j,kk:()=>o,uE:()=>n});var e=c(52618),f=c(911),g=c(46499),h=a([e,g]);function i(a){return{uuid:a.uuid,agentUuid:a.agentUuid,name:a.name,description:a.description,status:a.status,lastActiveAt:a.lastActiveAt.toISOString(),expiresAt:a.expiresAt?.toISOString()??null,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString(),checkins:(a.runCheckins||[]).map(a=>({runUuid:a.runUuid,checkinAt:a.checkinAt.toISOString(),checkoutAt:a.checkoutAt?.toISOString()??null}))}}async function j(a){let b=await e.prisma.agentSession.create({data:{companyUuid:a.companyUuid,agentUuid:a.agentUuid,name:a.name,description:a.description??null,status:"active",expiresAt:a.expiresAt??null}});return f.B.emitChange({companyUuid:a.companyUuid,researchProjectUuid:"",entityType:"agent_session",entityUuid:b.uuid,action:"created",actorUuid:a.agentUuid}),i(b)}async function k(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});return c?i(c):null}async function l(a,b,c){return(await e.prisma.agentSession.findMany({where:{companyUuid:a,agentUuid:b,...c&&{status:c}},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}},orderBy:{createdAt:"desc"}})).map(i)}async function m(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");let d=await e.prisma.sessionRunCheckin.findMany({where:{sessionUuid:b,checkoutAt:null},select:{run:{select:{uuid:!0,researchProjectUuid:!0}}}});await e.prisma.sessionRunCheckin.updateMany({where:{sessionUuid:b,checkoutAt:null},data:{checkoutAt:new Date}});let g=await e.prisma.agentSession.update({where:{uuid:b},data:{status:"closed"},include:{runCheckins:{select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});for(let a of d)f.B.emitChange({companyUuid:c.companyUuid,researchProjectUuid:a.run.researchProjectUuid,entityType:"experiment_run",entityUuid:a.run.uuid,action:"updated"});return i(g)}async function n(a,b,c){if(!await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}}))throw Error("Session not found");let d=await e.prisma.experimentRun.findFirst({where:{uuid:c,companyUuid:a},select:{researchProjectUuid:!0}});await e.prisma.sessionRunCheckin.updateMany({where:{sessionUuid:b,runUuid:c,checkoutAt:null},data:{checkoutAt:new Date}}),d&&f.B.emitChange({companyUuid:a,researchProjectUuid:d.researchProjectUuid,entityType:"experiment_run",entityUuid:c,action:"updated"})}async function o(a,b){return(await e.prisma.sessionRunCheckin.findMany({where:{runUuid:b,checkoutAt:null,session:{companyUuid:a,status:{in:["active","inactive"]}}},include:{session:{select:{uuid:!0,name:!0,agentUuid:!0,agent:{select:{name:!0}}}}}})).map(a=>({sessionUuid:a.session.uuid,sessionName:a.session.name,agentUuid:a.session.agentUuid,agentName:a.session.agent.name,checkinAt:a.checkinAt.toISOString()}))}async function p(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");await e.prisma.agentSession.update({where:{uuid:b},data:{lastActiveAt:new Date,..."inactive"===c.status&&{status:"active"}}})}async function q(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");if("closed"!==c.status)throw Error("Only closed sessions can be reopened");let d=await e.prisma.agentSession.update({where:{uuid:b},data:{status:"active",lastActiveAt:new Date},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});return i(d)}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},77201:(a,b,c)=>{let{normalizeIPv6:d,removeDotSegments:e,recomposeAuthority:f,normalizeComponentEncoding:g,isIPv4:h,nonSimpleDomain:i}=c(73652),{SCHEMES:j,getSchemeHandler:k}=c(2633);function l(a,b,c,d){let f={};return d||(a=o(m(a,c),c),b=o(m(b,c),c)),!(c=c||{}).tolerant&&b.scheme?(f.scheme=b.scheme,f.userinfo=b.userinfo,f.host=b.host,f.port=b.port,f.path=e(b.path||""),f.query=b.query):(void 0!==b.userinfo||void 0!==b.host||void 0!==b.port?(f.userinfo=b.userinfo,f.host=b.host,f.port=b.port,f.path=e(b.path||""),f.query=b.query):(b.path?("/"===b.path[0]?f.path=e(b.path):(void 0===a.userinfo&&void 0===a.host&&void 0===a.port||a.path?a.path?f.path=a.path.slice(0,a.path.lastIndexOf("/")+1)+b.path:f.path=b.path:f.path="/"+b.path,f.path=e(f.path)),f.query=b.query):(f.path=a.path,void 0!==b.query?f.query=b.query:f.query=a.query),f.userinfo=a.userinfo,f.host=a.host,f.port=a.port),f.scheme=a.scheme),f.fragment=b.fragment,f}function m(a,b){let c={host:a.host,scheme:a.scheme,userinfo:a.userinfo,port:a.port,path:a.path,query:a.query,nid:a.nid,nss:a.nss,uuid:a.uuid,fragment:a.fragment,reference:a.reference,resourceName:a.resourceName,secure:a.secure,error:""},d=Object.assign({},b),g=[],h=k(d.scheme||c.scheme);h&&h.serialize&&h.serialize(c,d),void 0!==c.path&&(d.skipEscape?c.path=unescape(c.path):(c.path=escape(c.path),void 0!==c.scheme&&(c.path=c.path.split("%3A").join(":")))),"suffix"!==d.reference&&c.scheme&&g.push(c.scheme,":");let i=f(c);if(void 0!==i&&("suffix"!==d.reference&&g.push("//"),g.push(i),c.path&&"/"!==c.path[0]&&g.push("/")),void 0!==c.path){let a=c.path;d.absolutePath||h&&h.absolutePath||(a=e(a)),void 0===i&&"/"===a[0]&&"/"===a[1]&&(a="/%2F"+a.slice(2)),g.push(a)}return void 0!==c.query&&g.push("?",c.query),void 0!==c.fragment&&g.push("#",c.fragment),g.join("")}let n=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function o(a,b){let c=Object.assign({},b),e={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},f=!1;"suffix"===c.reference&&(a=c.scheme?c.scheme+":"+a:"//"+a);let g=a.match(n);if(g){if(e.scheme=g[1],e.userinfo=g[3],e.host=g[4],e.port=parseInt(g[5],10),e.path=g[6]||"",e.query=g[7],e.fragment=g[8],isNaN(e.port)&&(e.port=g[5]),e.host)if(!1===h(e.host)){let a=d(e.host);e.host=a.host.toLowerCase(),f=a.isIPV6}else f=!0;void 0!==e.scheme||void 0!==e.userinfo||void 0!==e.host||void 0!==e.port||void 0!==e.query||e.path?void 0===e.scheme?e.reference="relative":void 0===e.fragment?e.reference="absolute":e.reference="uri":e.reference="same-document",c.reference&&"suffix"!==c.reference&&c.reference!==e.reference&&(e.error=e.error||"URI is not a "+c.reference+" reference.");let b=k(c.scheme||e.scheme);if(!c.unicodeSupport&&(!b||!b.unicodeSupport)&&e.host&&(c.domainHost||b&&b.domainHost)&&!1===f&&i(e.host))try{e.host=URL.domainToASCII(e.host.toLowerCase())}catch(a){e.error=e.error||"Host's domain name can not be converted to ASCII: "+a}(!b||b&&!b.skipNormalize)&&(-1!==a.indexOf("%")&&(void 0!==e.scheme&&(e.scheme=unescape(e.scheme)),void 0!==e.host&&(e.host=unescape(e.host))),e.path&&(e.path=escape(unescape(e.path))),e.fragment&&(e.fragment=encodeURI(decodeURIComponent(e.fragment)))),b&&b.parse&&b.parse(e,c)}else e.error=e.error||"URI can not be parsed.";return e}let p={SCHEMES:j,normalize:function(a,b){return"string"==typeof a?a=m(o(a,b),b):"object"==typeof a&&(a=o(m(a,b),b)),a},resolve:function(a,b,c){let d=c?Object.assign({scheme:"null"},c):{scheme:"null"},e=l(o(a,d),o(b,d),d,!0);return d.skipEscape=!0,m(e,d)},resolveComponent:l,equal:function(a,b,c){return"string"==typeof a?a=m(g(o(a=unescape(a),c),!0),{...c,skipEscape:!0}):"object"==typeof a&&(a=m(g(a,!0),{...c,skipEscape:!0})),"string"==typeof b?b=m(g(o(b=unescape(b),c),!0),{...c,skipEscape:!0}):"object"==typeof b&&(b=m(g(b,!0),{...c,skipEscape:!0})),a.toLowerCase()===b.toLowerCase()},serialize:m,parse:o};a.exports=p,a.exports.default=p,a.exports.fastUri=p},77548:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(77201);d.code='require("ajv/dist/runtime/uri").default',b.default=d},77598:a=>{a.exports=require("node:crypto")},78226:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(80142);b.default={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:a=>(0,d.validateTuple)(a,"items")}},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},80142:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateTuple=void 0;let d=c(74489),e=c(23235),f=c(41033);function g(a,b,c=a.schema){let{gen:f,parentSchema:h,data:i,keyword:j,it:k}=a;(function(a){let{opts:d,errSchemaPath:f}=k,g=c.length,h=g===a.minItems&&(g===a.maxItems||!1===a[b]);if(d.strictTuples&&!h){let a=`"${j}" is ${g}-tuple, but minItems or maxItems/${b} are not specified or different at path "${f}"`;(0,e.checkStrictMode)(k,a,d.strictTuples)}})(h),k.opts.unevaluated&&c.length&&!0!==k.items&&(k.items=e.mergeEvaluated.items(f,c.length,k.items));let l=f.name("valid"),m=f.const("len",(0,d._)`${i}.length`);c.forEach((b,c)=>{(0,e.alwaysValidSchema)(k,b)||(f.if((0,d._)`${m} > ${c}`,()=>a.subschema({keyword:j,schemaProp:c,dataProp:c},l)),a.ok(l))})}b.validateTuple=g,b.default={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(a){let{schema:b,it:c}=a;if(Array.isArray(b))return g(a,"additionalItems",b);c.items=!0,(0,e.alwaysValidSchema)(c,b)||a.ok((0,f.validateArray)(a))}}},83997:a=>{a.exports=require("tty")},84221:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(35684),e=c(74489),f=c(23235),g=c(91442);b.default={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:a,j:b}})=>(0,e.str)`must NOT have duplicate items (items ## ${b} and ${a} are identical)`,params:({params:{i:a,j:b}})=>(0,e._)`{i: ${a}, j: ${b}}`},code(a){let{gen:b,data:c,$data:h,schema:i,parentSchema:j,schemaCode:k,it:l}=a;if(!h&&!i)return;let m=b.let("valid"),n=j.items?(0,d.getSchemaTypes)(j.items):[];a.block$data(m,function(){let h=b.let("i",(0,e._)`${c}.length`),i=b.let("j");a.setParams({i:h,j:i}),b.assign(m,!0),b.if((0,e._)`${h} > 1`,()=>(n.length>0&&!n.some(a=>"object"===a||"array"===a)?function(f,g){let h=b.name("item"),i=(0,d.checkDataTypes)(n,h,l.opts.strictNumbers,d.DataType.Wrong),j=b.const("indices",(0,e._)`{}`);b.for((0,e._)`;${f}--;`,()=>{b.let(h,(0,e._)`${c}[${f}]`),b.if(i,(0,e._)`continue`),n.length>1&&b.if((0,e._)`typeof ${h} == "string"`,(0,e._)`${h} += "_"`),b.if((0,e._)`typeof ${j}[${h}] == "number"`,()=>{b.assign(g,(0,e._)`${j}[${h}]`),a.error(),b.assign(m,!1).break()}).code((0,e._)`${j}[${h}] = ${f}`)})}:function(d,h){let i=(0,f.useFunc)(b,g.default),j=b.name("outer");b.label(j).for((0,e._)`;${d}--;`,()=>b.for((0,e._)`${h} = ${d}; ${h}--;`,()=>b.if((0,e._)`${i}(${c}[${d}], ${c}[${h}])`,()=>{a.error(),b.assign(m,!1).break(j)})))})(h,i))},(0,e._)`${k} === false`),a.ok(m)}}},84297:a=>{a.exports=require("async_hooks")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86684:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.regexpCode=b.getEsmExportName=b.getProperty=b.safeStringify=b.stringify=b.strConcat=b.addCodeArg=b.str=b._=b.nil=b._Code=b.Name=b.IDENTIFIER=b._CodeOrName=void 0;class c{}b._CodeOrName=c,b.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class d extends c{constructor(a){if(super(),!b.IDENTIFIER.test(a))throw Error("CodeGen: name must be a valid identifier");this.str=a}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}b.Name=d;class e extends c{constructor(a){super(),this._items="string"==typeof a?[a]:a}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let a=this._items[0];return""===a||'""'===a}get str(){var a;return null!=(a=this._str)?a:this._str=this._items.reduce((a,b)=>`${a}${b}`,"")}get names(){var a;return null!=(a=this._names)?a:this._names=this._items.reduce((a,b)=>(b instanceof d&&(a[b.str]=(a[b.str]||0)+1),a),{})}}function f(a,...b){let c=[a[0]],d=0;for(;d<b.length;)i(c,b[d]),c.push(a[++d]);return new e(c)}b._Code=e,b.nil=new e(""),b._=f;let g=new e("+");function h(a,...b){let c=[j(a[0])],f=0;for(;f<b.length;)c.push(g),i(c,b[f]),c.push(g,j(a[++f]));return function(a){let b=1;for(;b<a.length-1;){if(a[b]===g){var c,e;let f=(c=a[b-1],'""'===(e=a[b+1])?c:'""'===c?e:"string"==typeof c?e instanceof d||'"'!==c[c.length-1]?void 0:"string"!=typeof e?`${c.slice(0,-1)}${e}"`:'"'===e[0]?c.slice(0,-1)+e.slice(1):void 0:"string"!=typeof e||'"'!==e[0]||c instanceof d?void 0:`"${c}${e.slice(1)}`);if(void 0!==f){a.splice(b-1,3,f);continue}a[b++]="+"}b++}}(c),new e(c)}function i(a,b){var c;b instanceof e?a.push(...b._items):b instanceof d?a.push(b):a.push("number"==typeof(c=b)||"boolean"==typeof c||null===c?c:j(Array.isArray(c)?c.join(","):c))}function j(a){return JSON.stringify(a).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}b.str=h,b.addCodeArg=i,b.strConcat=function(a,b){return b.emptyStr()?a:a.emptyStr()?b:h`${a}${b}`},b.stringify=function(a){return new e(j(a))},b.safeStringify=j,b.getProperty=function(a){return"string"==typeof a&&b.IDENTIFIER.test(a)?new e(`.${a}`):f`[${a}]`},b.getEsmExportName=function(a){if("string"==typeof a&&b.IDENTIFIER.test(a))return new e(`${a}`);throw Error(`CodeGen: invalid export name: ${a}, use explicit $id name mapping`)},b.regexpCode=function(a){return new e(a.toString())}},87294:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0});class c extends Error{constructor(a){super("validation failed"),this.errors=a,this.ajv=this.validation=!0}}b.default=c},87797:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{e:()=>h,r:()=>i});var e=c(52618),f=c(911),g=a([e]);async function h(a){let b=new Date,[c,d]=await e.prisma.$transaction([e.prisma.experimentProgressLog.create({data:{companyUuid:a.companyUuid,experimentUuid:a.experimentUuid,message:a.message,phase:a.phase??null,actorUuid:a.actorUuid,createdAt:b}}),e.prisma.experiment.update({where:{uuid:a.experimentUuid},data:{...void 0!==a.liveStatus?{liveStatus:a.liveStatus}:{},liveMessage:a.message,liveUpdatedAt:b},select:{researchProjectUuid:!0,companyUuid:!0}})]);return f.B.emitChange({companyUuid:d.companyUuid,researchProjectUuid:d.researchProjectUuid,entityType:"experiment",entityUuid:a.experimentUuid,action:"updated",actorUuid:a.actorUuid}),c}async function i(a,b){return e.prisma.experimentProgressLog.findMany({where:{companyUuid:a,experimentUuid:b},orderBy:{createdAt:"desc"},take:100,select:{uuid:!0,message:!0,phase:!0,actorUuid:!0,createdAt:!0}})}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},90617:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235);b.default={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:a,max:b}})=>void 0===b?(0,d.str)`must contain at least ${a} valid item(s)`:(0,d.str)`must contain at least ${a} and no more than ${b} valid item(s)`,params:({params:{min:a,max:b}})=>void 0===b?(0,d._)`{minContains: ${a}}`:(0,d._)`{minContains: ${a}, maxContains: ${b}}`},code(a){let b,c,{gen:f,schema:g,parentSchema:h,data:i,it:j}=a,{minContains:k,maxContains:l}=h;j.opts.next?(b=void 0===k?1:k,c=l):b=1;let m=f.const("len",(0,d._)`${i}.length`);if(a.setParams({min:b,max:c}),void 0===c&&0===b)return void(0,e.checkStrictMode)(j,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==c&&b>c){(0,e.checkStrictMode)(j,'"minContains" > "maxContains" is always invalid'),a.fail();return}if((0,e.alwaysValidSchema)(j,g)){let e=(0,d._)`${m} >= ${b}`;void 0!==c&&(e=(0,d._)`${e} && ${m} <= ${c}`),a.pass(e);return}j.items=!0;let n=f.name("valid");function o(){let a=f.name("_valid"),e=f.let("count",0);p(a,()=>f.if(a,()=>{var a;return a=e,void(f.code((0,d._)`${a}++`),void 0===c?f.if((0,d._)`${a} >= ${b}`,()=>f.assign(n,!0).break()):(f.if((0,d._)`${a} > ${c}`,()=>f.assign(n,!1).break()),1===b?f.assign(n,!0):f.if((0,d._)`${a} >= ${b}`,()=>f.assign(n,!0))))}))}function p(b,c){f.forRange("i",0,m,d=>{a.subschema({keyword:"contains",dataProp:d,dataPropType:e.Type.Num,compositeRule:!0},b),c()})}void 0===c&&1===b?p(n,()=>f.if(n,()=>f.break())):0===b?(f.let(n,!0),void 0!==c&&f.if((0,d._)`${i}.length > 0`,o)):(f.let(n,!1),o()),a.result(n,()=>a.reset())}}},91114:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=d.operators,f={maximum:{okStr:"<=",ok:e.LTE,fail:e.GT},minimum:{okStr:">=",ok:e.GTE,fail:e.LT},exclusiveMaximum:{okStr:"<",ok:e.LT,fail:e.GTE},exclusiveMinimum:{okStr:">",ok:e.GT,fail:e.LTE}};b.default={keyword:Object.keys(f),type:"number",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must be ${f[a].okStr} ${b}`,params:({keyword:a,schemaCode:b})=>(0,d._)`{comparison: ${f[a].okStr}, limit: ${b}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a;a.fail$data((0,d._)`${c} ${f[b].fail} ${e} || isNaN(${c})`)}}},91442:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(58362);d.code='require("ajv/dist/runtime/equal").default',b.default=d},91645:a=>{a.exports=require("net")},91875:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235);b.default={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:a})=>(0,d._)`{passingSchemas: ${a.passing}}`},code(a){let{gen:b,schema:c,parentSchema:f,it:g}=a;if(!Array.isArray(c))throw Error("ajv implementation error");if(g.opts.discriminator&&f.discriminator)return;let h=b.let("valid",!1),i=b.let("passing",null),j=b.name("_valid");a.setParams({passing:i}),b.block(function(){c.forEach((c,f)=>{let k;(0,e.alwaysValidSchema)(g,c)?b.var(j,!0):k=a.subschema({keyword:"oneOf",schemaProp:f,compositeRule:!0},j),f>0&&b.if((0,d._)`${j} && ${h}`).assign(h,!1).assign(i,(0,d._)`[${i}, ${f}]`).else(),b.if(j,()=>{b.assign(h,!0),b.assign(i,f),k&&a.mergeEvaluated(k,d.Name)})})}),a.result(h,()=>a.reset(),()=>a.error(!0))}}},92093:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{W:()=>o});var e=c(77258),f=c(85034),g=c(90136),h=c(78112),i=c(8777),j=c(88437),k=c(25191),l=c(48873),m=c(63861),n=a([f,g,h,i,j,k]);function o(a,b){a.registerTool("synapse_claim_research_question",{description:"Claim a Research Question (open -> elaborating). Claiming automatically transitions the Research Question to 'elaborating' status.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};try{let a=await g.Ae({researchQuestionUuid:c.uuid,companyUuid:b.companyUuid,assigneeType:"agent",assigneeUuid:b.actorUuid});return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:c.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"assigned",value:{assigneeType:"agent",assigneeUuid:b.actorUuid}}),{content:[{type:"text",text:JSON.stringify({uuid:a.uuid,status:a.status},null,2)}]}}catch(a){if(a instanceof l.Yy)return{content:[{type:"text",text:"Can only claim Research Questions with open status"}],isError:!0};throw a}}),a.registerTool("synapse_release_research_question",{description:"Release a claimed Research Question (assigned -> open)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if(!("agent"===c.assigneeType&&c.assigneeUuid===b.actorUuid||"user"===c.assigneeType&&b.ownerUuid&&c.assigneeUuid===b.ownerUuid))return{content:[{type:"text",text:"Only the assignee can release a claimed Research Question"}],isError:!0};try{let a=await g.Rd(c.uuid);return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:c.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"released"}),{content:[{type:"text",text:JSON.stringify({uuid:a.uuid,status:a.status},null,2)}]}}catch(a){if(a instanceof l.nm)return{content:[{type:"text",text:"Can only release Research Questions with assigned status"}],isError:!0};throw a}}),a.registerTool("synapse_update_research_question_status",{description:"Update Research Question status (only assignee can operate). Valid statuses match the platform vocabulary: open, in_progress, to_verify, done, closed. Legacy values elaborating, proposal_created, completed, pending_review are also accepted and mapped.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID"),status:e.k5n(["open","in_progress","to_verify","done","closed","elaborating","proposal_created","completed","pending_review"]).describe("New status")})},async({researchQuestionUuid:a,status:c})=>{let d=await g._W(b.companyUuid,a);if(!d)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if(!("agent"===d.assigneeType&&d.assigneeUuid===b.actorUuid||"user"===d.assigneeType&&b.ownerUuid&&d.assigneeUuid===b.ownerUuid))return{content:[{type:"text",text:"Only the assignee can update the status"}],isError:!0};let e="in_progress"===c?"elaborating":"pending_review"===c||"to_verify"===c?"proposal_created":"done"===c?"completed":c;if(!g.$V(d.status,e))return{content:[{type:"text",text:`Invalid status transition: ${d.status} -> ${e}`}],isError:!0};let f=await g.pg(d.uuid,b.companyUuid,{status:e});return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:d.researchProjectUuid,targetType:"research_question",targetUuid:d.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"status_changed",value:{status:e}}),{content:[{type:"text",text:JSON.stringify({uuid:f.uuid,status:f.status},null,2)}]}}),a.registerTool("synapse_create_document",{description:"Create a document (PRD, tech design, ADR, spec, guide, etc.)",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),type:e.k5n(["experiment_result","literature_review","analysis","methodology","rdr","results_report","other"]).describe("Document type"),title:e.YjP().describe("Document title"),content:e.YjP().optional().describe("Document content (Markdown)"),experimentDesignUuid:e.YjP().optional().describe("Associated Experiment Design UUID (optional)")})},async({researchProjectUuid:a,type:c,title:d,content:e,experimentDesignUuid:g})=>{if(!await (0,f.vP)(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};if(g&&!await h.Qr(b.companyUuid,g))return{content:[{type:"text",text:"Experiment Design not found"}],isError:!0};let j=await i.ui({companyUuid:b.companyUuid,researchProjectUuid:a,type:c,title:d,content:e||null,experimentDesignUuid:g||null,createdByUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify({uuid:j.uuid,title:j.title,type:j.type},null,2)}]}}),a.registerTool("synapse_update_document",{description:"Update document content (increments version number)",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID"),title:e.YjP().optional().describe("New title"),content:e.YjP().optional().describe("New content (Markdown)")})},async({documentUuid:a,title:c,content:d})=>{if(!await i.YE(b.companyUuid,a))return{content:[{type:"text",text:"Document not found"}],isError:!0};let e=await i.lU(a,{title:c,content:d,incrementVersion:!0});return{content:[{type:"text",text:JSON.stringify({uuid:e.uuid,version:e.version},null,2)}]}}),a.registerTool("synapse_add_document_draft",{description:"Add a document draft to a pending Experiment Design container",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),type:e.YjP().describe("Document type (prd, tech_design, adr, spec, guide)"),title:e.YjP().describe("Document title"),content:e.YjP().describe("Document content (Markdown)")})},async({experimentDesignUuid:a,type:c,title:d,content:e})=>{try{let f=await h.M9(a,b.companyUuid,{type:c,title:d,content:e}),g=f.documentDrafts,i=g?.[g.length-1];return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:f.uuid,action:"document_draft_added",draftUuid:i?.uuid,draftTitle:i?.title},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to add document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}}),a.registerTool("synapse_update_document_draft",{description:"Update a document draft in an Experiment Design",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),draftUuid:e.YjP().describe("Document draft UUID"),type:e.YjP().optional().describe("Document type"),title:e.YjP().optional().describe("Document title"),content:e.YjP().optional().describe("Document content (Markdown)")})},async({experimentDesignUuid:a,draftUuid:c,type:d,title:e,content:f})=>{try{let g={};void 0!==d&&(g.type=d),void 0!==e&&(g.title=e),void 0!==f&&(g.content=f);let i=await h.gT(a,b.companyUuid,c,g);return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:i.uuid,draftUuid:c,action:"document_draft_updated"},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to update document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}}),a.registerTool("synapse_remove_document_draft",{description:"Remove a document draft from an Experiment Design",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),draftUuid:e.YjP().describe("Document draft UUID")})},async({experimentDesignUuid:a,draftUuid:c})=>{try{let d=await h.nW(a,b.companyUuid,c);return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:d.uuid,draftUuid:c,action:"document_draft_removed"},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to remove document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}});let c=(0,m.Ht)([(0,m.V4)({name:"synapse_move_research_question",description:"Move a Research Question to a different research project within the same company. Also moves linked draft/pending Experiment Designs.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID"),targetResearchProjectUuid:e.YjP().describe("Target Research Project UUID")}),async execute({researchQuestionUuid:a,targetResearchProjectUuid:c}){try{let d=await g.Be(b.companyUuid,a,c,b.actorUuid,b.type);return(0,m.XP)({uuid:d.uuid,project:d.project})}catch(a){return(0,m.xv)(`Failed to move Research Question: ${a instanceof Error?a.message:"Unknown error"}`,!0)}}}),(0,m.V4)({name:"synapse_create_research_question",description:"Create a Research Question (submits requirements on behalf of humans). Pass parentUuid to create a child question under an existing question.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),title:e.YjP().describe("Research Question title"),content:e.YjP().optional().describe("Research Question detailed description"),parentUuid:e.YjP().optional().describe("Optional parent Research Question UUID to create this as a child question.")}),async execute({researchProjectUuid:a,title:c,content:d,parentUuid:e}){if(!await (0,f.vP)(b.companyUuid,a))return(0,m.xv)("Research Project not found",!0);try{let f=await g.q0({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,content:d||null,parentQuestionUuid:e??null,createdByUuid:b.actorUuid});return(0,m.XP)({uuid:f.uuid,title:f.title,parentQuestionUuid:f.parentQuestionUuid})}catch(a){return(0,m.xv)(`Failed to create research question: ${a instanceof Error?a.message:"Unknown error"}`,!0)}}}),(0,m.V4)({name:"synapse_generate_project_ideas",description:"Create one or more agent-generated research ideas from a project brief so they enter the human review board.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),ideas:e.YOg(e.Ikc({title:e.YjP().describe("Research idea title"),content:e.YjP().optional().describe("Supporting rationale, approach, or ablation details")})).min(1).max(12)}),async execute({researchProjectUuid:a,ideas:c}){if(!await (0,f.j5)(b.companyUuid,a))return(0,m.xv)("Research Project not found",!0);let d=await Promise.all(c.map(c=>g.q0({companyUuid:b.companyUuid,researchProjectUuid:a,title:c.title,content:c.content||null,createdByUuid:b.actorUuid,sourceType:"agent",sourceLabel:`Generated by ${b.agentName||"agent"} from project brief`,generatedByAgentUuid:b.actorUuid})));return(0,m.XP)({researchProjectUuid:a,createdCount:d.length,ideas:d.map(a=>({uuid:a.uuid,title:a.title,reviewStatus:a.reviewStatus,sourceType:a.sourceType}))})}}),(0,m.V4)({name:"synapse_create_baseline",description:"Register a baseline result for comparison in a research project. Metrics accept numbers, strings (e.g. dataset tags), or nested records (e.g. { value, unit }) since baseline metrics are stored as JSON.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),name:e.YjP(),metrics:e.g1P(e.YjP(),e.KCZ([e.aig(),e.YjP(),e.g1P(e.YjP(),e.bzn())])),experimentUuid:e.YjP().optional()}),async execute(a){let c=await k.wu(b.companyUuid,{researchProjectUuid:a.researchProjectUuid,name:a.name,metrics:a.metrics,experimentUuid:a.experimentUuid});return(0,m.XP)(c)}}),(0,m.V4)({name:"synapse_list_baselines",description:"List all baselines for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP()}),async execute({researchProjectUuid:a}){let c=await k.$W(b.companyUuid,a);return(0,m.XP)({baselines:c})}}),(0,m.V4)({name:"synapse_compare_results",description:"Compare experiment results against the active baseline. Accepts either a flat per-experiment metric (Record<experimentUuid, number>) or per-metric results (Record<experimentUuid, Record<metricName, number>>).",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),experimentResults:e.g1P(e.YjP(),e.KCZ([e.aig(),e.g1P(e.YjP(),e.aig())]))}),async execute({researchProjectUuid:a,experimentResults:c}){let d=await k.aJ(b.companyUuid,a);if(!d)return(0,m.XP)({error:"No active baseline found"});let e=d.metrics??{},f={};for(let[a,b]of Object.entries(e))"number"==typeof b?f[a]=b:b&&"object"==typeof b&&"number"==typeof b.value&&(f[a]=b.value);let g={};for(let[a,b]of Object.entries(c)){let c="number"==typeof b?{default:b}:b,d={};for(let[a,b]of Object.entries(c)){let c;if("default"===a){let b=Object.keys(f);1===b.length?c=f[b[0]]:a in f&&(c=f[a])}else a in f&&(c=f[a]);void 0!==c&&(d[a]={baseline:c,experiment:b,delta:b-c,improved:b>c})}g[a]=d}return(0,m.XP)({baseline:d.name,comparisons:g})}}),(0,m.V4)({name:"synapse_create_rdr",description:"Create a Research Decision Record documenting why a particular approach was chosen",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),content:e.YjP()}),async execute({researchProjectUuid:a,title:c,content:d}){let e=await i.ui({researchProjectUuid:a,type:"rdr",title:c,content:d,createdByUuid:b.actorUuid,companyUuid:b.companyUuid});return(0,m.XP)(e)}})]);(0,m.D8)(a,c)}[f,g,h,i,j,k]=n.then?(await n)():n,d()}catch(a){d(a)}})},92782:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxProperties"===a?"more":"fewer"} than ${b} properties`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a,f="maxProperties"===b?d.operators.GT:d.operators.LT;a.fail$data((0,d._)`Object.keys(${c}).length ${f} ${e}`)}}},93629:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateSchemaDeps=b.validatePropertyDeps=b.error=void 0;let d=c(74489),e=c(23235),f=c(41033);b.error={message:({params:{property:a,depsCount:b,deps:c}})=>(0,d.str)`must have ${1===b?"property":"properties"} ${c} when property ${a} is present`,params:({params:{property:a,depsCount:b,deps:c,missingProperty:e}})=>(0,d._)`{property: ${a},
32
+ `,a.enqueue(b.encode(e)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(a,b){try{let c,e,f,g=a.headers.get("accept");if(!g?.includes("application/json")||!g.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let h=a.headers.get("content-type");if(!h||!h.includes("application/json"))return this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let i={headers:Object.fromEntries(a.headers.entries())};if(b?.parsedBody!==void 0)c=b.parsedBody;else try{c=await a.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}try{e=Array.isArray(c)?c.map(a=>d.OR.parse(a)):[d.OR.parse(c)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let j=e.some(d.eK);if(j){if(this._initialized&&void 0!==this.sessionId)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(e.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!j){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);if(c)return c}if(!e.some(d.vo)){for(let a of e)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i});return new Response(null,{status:202})}let k=crypto.randomUUID(),l=e.find(a=>(0,d.eK)(a)),m=l?l.params.protocolVersion:a.headers.get("mcp-protocol-version")??d.PC;if(this._enableJsonResponse)return new Promise(a=>{for(let b of(this._streamMapping.set(k,{resolveJson:a,cleanup:()=>{this._streamMapping.delete(k)}}),e))(0,d.vo)(b)&&this._requestToStreamMapping.set(b.id,k);for(let a of e)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i})});let n=new TextEncoder,o=new ReadableStream({start:a=>{f=a},cancel:()=>{this._streamMapping.delete(k)}}),p={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};for(let a of(void 0!==this.sessionId&&(p["mcp-session-id"]=this.sessionId),e))(0,d.vo)(a)&&(this._streamMapping.set(k,{controller:f,encoder:n,cleanup:()=>{this._streamMapping.delete(k);try{f.close()}catch{}}}),this._requestToStreamMapping.set(a.id,k));for(let a of(await this.writePrimingEvent(f,n,k,m),e)){let c,e;(0,d.vo)(a)&&this._eventStore&&m>="2025-11-25"&&(c=()=>{this.closeSSEStream(a.id)},e=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:i,closeSSEStream:c,closeStandaloneSSEStream:e})}return new Response(o,{status:200,headers:p})}catch(a){return this.onerror?.(a),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(a)})}}async handleDeleteRequest(a){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);return c||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(a){if(void 0===this.sessionIdGenerator)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let b=a.headers.get("mcp-session-id");return b?b!==this.sessionId?this.createJsonErrorResponse(404,-32001,"Session not found"):void 0:this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required")}validateProtocolVersion(a){let b=a.headers.get("mcp-protocol-version");if(null!==b&&!d.Iu.includes(b))return this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${b} (supported versions: ${d.Iu.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup:a})=>{a()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(a){let b=this._requestToStreamMapping.get(a);if(!b)return;let c=this._streamMapping.get(b);c&&c.cleanup()}closeStandaloneSSEStream(){let a=this._streamMapping.get(this._standaloneSseStreamId);a&&a.cleanup()}async send(a,b){let c=b?.relatedRequestId;if(((0,d.ig)(a)||(0,d.LW)(a))&&(c=a.id),void 0===c){let b;if((0,d.ig)(a)||(0,d.LW)(a))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");this._eventStore&&(b=await this._eventStore.storeEvent(this._standaloneSseStreamId,a));let c=this._streamMapping.get(this._standaloneSseStreamId);if(void 0===c)return;c.controller&&c.encoder&&this.writeSSEEvent(c.controller,c.encoder,a,b);return}let e=this._requestToStreamMapping.get(c);if(!e)throw Error(`No connection established for request ID: ${String(c)}`);let f=this._streamMapping.get(e);if(!this._enableJsonResponse&&f?.controller&&f?.encoder){let b;this._eventStore&&(b=await this._eventStore.storeEvent(e,a)),this.writeSSEEvent(f.controller,f.encoder,a,b)}if((0,d.ig)(a)||(0,d.LW)(a)){this._requestResponseMap.set(c,a);let b=Array.from(this._requestToStreamMapping.entries()).filter(([a,b])=>b===e).map(([a])=>a);if(b.every(a=>this._requestResponseMap.has(a))){if(!f)throw Error(`No connection established for request ID: ${String(c)}`);if(this._enableJsonResponse&&f.resolveJson){let a={"Content-Type":"application/json"};void 0!==this.sessionId&&(a["mcp-session-id"]=this.sessionId);let c=b.map(a=>this._requestResponseMap.get(a));1===c.length?f.resolveJson(new Response(JSON.stringify(c[0]),{status:200,headers:a})):f.resolveJson(new Response(JSON.stringify(c),{status:200,headers:a}))}else f.cleanup();for(let a of b)this._requestResponseMap.delete(a),this._requestToStreamMapping.delete(a)}}}}},48161:a=>{a.exports=require("node:os")},50435:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.resolveSchema=b.getCompilingSchema=b.resolveRef=b.compileSchema=b.SchemaEnv=void 0;let d=c(74489),e=c(87294),f=c(31079),g=c(1171),h=c(23235),i=c(15746);class j{constructor(a){var b;let c;this.refs={},this.dynamicAnchors={},"object"==typeof a.schema&&(c=a.schema),this.schema=a.schema,this.schemaId=a.schemaId,this.root=a.root||this,this.baseId=null!=(b=a.baseId)?b:(0,g.normalizeId)(null==c?void 0:c[a.schemaId||"$id"]),this.schemaPath=a.schemaPath,this.localRefs=a.localRefs,this.meta=a.meta,this.$async=null==c?void 0:c.$async,this.refs={}}}function k(a){let b,c,h=m.call(this,a);if(h)return h;let j=(0,g.getFullPath)(this.opts.uriResolver,a.root.baseId),{es5:k,lines:l}=this.opts.code,{ownProperties:n}=this.opts,o=new d.CodeGen(this.scope,{es5:k,lines:l,ownProperties:n});a.$async&&(b=o.scopeValue("Error",{ref:e.default,code:(0,d._)`require("ajv/dist/runtime/validation_error").default`}));let p=o.scopeName("validate");a.validateName=p;let q={gen:o,allErrors:this.opts.allErrors,data:f.default.data,parentData:f.default.parentData,parentDataProperty:f.default.parentDataProperty,dataNames:[f.default.data],dataPathArr:[d.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:o.scopeValue("schema",!0===this.opts.code.source?{ref:a.schema,code:(0,d.stringify)(a.schema)}:{ref:a.schema}),validateName:p,ValidationError:b,schema:a.schema,schemaEnv:a,rootId:j,baseId:a.baseId||j,schemaPath:d.nil,errSchemaPath:a.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,d._)`""`,opts:this.opts,self:this};try{this._compilations.add(a),(0,i.validateFunctionCode)(q),o.optimize(this.opts.code.optimize);let b=o.toString();c=`${o.scopeRefs(f.default.scope)}return ${b}`,this.opts.code.process&&(c=this.opts.code.process(c,a));let e=Function(`${f.default.self}`,`${f.default.scope}`,c)(this,this.scope.get());if(this.scope.value(p,{ref:e}),e.errors=null,e.schema=a.schema,e.schemaEnv=a,a.$async&&(e.$async=!0),!0===this.opts.code.source&&(e.source={validateName:p,validateCode:b,scopeValues:o._values}),this.opts.unevaluated){let{props:a,items:b}=q;e.evaluated={props:a instanceof d.Name?void 0:a,items:b instanceof d.Name?void 0:b,dynamicProps:a instanceof d.Name,dynamicItems:b instanceof d.Name},e.source&&(e.source.evaluated=(0,d.stringify)(e.evaluated))}return a.validate=e,a}catch(b){throw delete a.validate,delete a.validateName,c&&this.logger.error("Error compiling schema, function code:",c),b}finally{this._compilations.delete(a)}}function l(a){return(0,g.inlineRef)(a.schema,this.opts.inlineRefs)?a.schema:a.validate?a:k.call(this,a)}function m(a){for(let d of this._compilations){var b,c;if(b=d,c=a,b.schema===c.schema&&b.root===c.root&&b.baseId===c.baseId)return d}}function n(a,b){let c;for(;"string"==typeof(c=this.refs[b]);)b=c;return c||this.schemas[b]||o.call(this,a,b)}function o(a,b){let c=this.opts.uriResolver.parse(b),d=(0,g._getFullPath)(this.opts.uriResolver,c),e=(0,g.getFullPath)(this.opts.uriResolver,a.baseId,void 0);if(Object.keys(a.schema).length>0&&d===e)return q.call(this,c,a);let f=(0,g.normalizeId)(d),h=this.refs[f]||this.schemas[f];if("string"==typeof h){let b=o.call(this,a,h);if("object"!=typeof(null==b?void 0:b.schema))return;return q.call(this,c,b)}if("object"==typeof(null==h?void 0:h.schema)){if(h.validate||k.call(this,h),f===(0,g.normalizeId)(b)){let{schema:b}=h,{schemaId:c}=this.opts,d=b[c];return d&&(e=(0,g.resolveUrl)(this.opts.uriResolver,e,d)),new j({schema:b,schemaId:c,root:a,baseId:e})}return q.call(this,c,h)}}b.SchemaEnv=j,b.compileSchema=k,b.resolveRef=function(a,b,c){var d;c=(0,g.resolveUrl)(this.opts.uriResolver,b,c);let e=a.refs[c];if(e)return e;let f=n.call(this,a,c);if(void 0===f){let e=null==(d=a.localRefs)?void 0:d[c],{schemaId:g}=this.opts;e&&(f=new j({schema:e,schemaId:g,root:a,baseId:b}))}if(void 0!==f)return a.refs[c]=l.call(this,f)},b.getCompilingSchema=m,b.resolveSchema=o;let p=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function q(a,{baseId:b,schema:c,root:d}){var e;let f;if((null==(e=a.fragment)?void 0:e[0])!=="/")return;for(let d of a.fragment.slice(1).split("/")){if("boolean"==typeof c)return;let a=c[(0,h.unescapeFragment)(d)];if(void 0===a)return;let e="object"==typeof(c=a)&&c[this.opts.schemaId];!p.has(d)&&e&&(b=(0,g.resolveUrl)(this.opts.uriResolver,b,e))}if("boolean"!=typeof c&&c.$ref&&!(0,h.schemaHasRulesButRef)(c,this.RULES)){let a=(0,g.resolveUrl)(this.opts.uriResolver,b,c.$ref);f=o.call(this,d,a)}let{schemaId:i}=this.opts;if((f=f||new j({schema:c,schemaId:i,root:d,baseId:b})).schema!==f.root.schema)return f}},51455:a=>{a.exports=require("node:fs/promises")},52310:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489);b.default={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:a})=>(0,e.str)`must match pattern "${a}"`,params:({schemaCode:a})=>(0,e._)`{pattern: ${a}}`},code(a){let{data:b,$data:c,schema:f,schemaCode:g,it:h}=a,i=h.opts.unicodeRegExp?"u":"",j=c?(0,e._)`(new RegExp(${g}, ${i}))`:(0,d.usePattern)(a,f);a.fail$data((0,e._)`!${j}.test(${b})`)}}},52597:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>m,OPTIONS:()=>n,POST:()=>l});var e=c(70936),f=c(46313),g=c(62936),h=c(63478),i=c(85034),j=c(65582),k=a([g,h,i]);[g,h,i]=k.then?(await k)():k;let o=j.vF.child({module:"mcp"}),p=new Map;async function l(a){try{let b,c,d=a.headers.get("authorization"),j=(0,h.Tr)(d);if(!j)return e.NextResponse.json({error:"Missing or invalid API key"},{status:401});let k=await (0,h.ek)(j);if(!k.valid||!k.agent)return e.NextResponse.json({error:k.error||"Invalid API key"},{status:401});let l=a.headers.get("x-synapse-project-group"),m=a.headers.get("x-synapse-project");l?b=await (0,i.T0)(k.agent.companyUuid,l):m&&(b=m.split(",").map(a=>a.trim()).filter(Boolean));let n={type:"agent",companyUuid:k.agent.companyUuid,actorUuid:k.agent.uuid,roles:k.agent.roles,ownerUuid:k.agent.ownerUuid??void 0,agentName:k.agent.name,researchProjectUuids:b},o=a.headers.get("mcp-session-id");if(o&&p.has(o)){c=p.get(o).transport;let a=p.get(o);a&&(a.lastActivity=Date.now())}else{if(o&&!p.has(o))return e.NextResponse.json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Please reinitialize."},id:null},{status:404});let a=crypto.randomUUID();c=new f.a({sessionIdGenerator:()=>a});let b=(0,g.c)(n);await b.connect(c),p.set(a,{transport:c,lastActivity:Date.now()})}return await c.handleRequest(a)}catch(a){return o.error({err:a},"MCP endpoint error"),e.NextResponse.json({error:"Internal server error"},{status:500})}}async function m(a){try{let b=a.headers.get("mcp-session-id");if(!b)return e.NextResponse.json({error:"Missing session ID"},{status:400});let c=p.get(b);return c&&(await c.transport.close(),p.delete(b)),new Response(null,{status:204})}catch(a){return o.error({err:a},"MCP session close error"),e.NextResponse.json({error:"Internal server error"},{status:500})}}async function n(){return new Response(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, mcp-session-id, mcp-protocol-version"}})}setInterval(function(){let a=Date.now();for(let[b,c]of p.entries())a-c.lastActivity>18e5&&(o.debug({sessionId:b},"cleaning up expired session"),c.transport.close().catch(a=>o.error({err:a},"session close error during cleanup")),p.delete(b))},3e5),d()}catch(a){d(a)}})},53053:a=>{a.exports=require("node:diagnostics_channel")},53235:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{H$:()=>i,Im:()=>p,XO:()=>o,Yz:()=>m,a1:()=>n,ed:()=>k,ie:()=>j,xv:()=>l});var e=c(52618),f=c(911),g=c(91997),h=a([e,g]);async function i(a){let b=await e.prisma.projectGroup.create({data:{companyUuid:a.companyUuid,name:a.name,description:a.description??""}});return{uuid:b.uuid,name:b.name,description:b.description,projectCount:0,createdAt:b.createdAt.toISOString(),updatedAt:b.updatedAt.toISOString()}}async function j(a){if(!await e.prisma.projectGroup.findFirst({where:{uuid:a.groupUuid,companyUuid:a.companyUuid}}))return null;let b=await e.prisma.projectGroup.update({where:{uuid:a.groupUuid},data:{...void 0!==a.name&&{name:a.name},...void 0!==a.description&&{description:a.description}}}),c=await e.prisma.researchProject.count({where:{groupUuid:a.groupUuid,companyUuid:a.companyUuid}});return{uuid:b.uuid,name:b.name,description:b.description,projectCount:c,createdAt:b.createdAt.toISOString(),updatedAt:b.updatedAt.toISOString()}}async function k(a,b){return!!await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}})&&(await e.prisma.researchProject.updateMany({where:{groupUuid:b,companyUuid:a},data:{groupUuid:null}}),await e.prisma.projectGroup.delete({where:{uuid:b}}),!0)}async function l(a,b){let c=await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}});if(!c)return null;let d=await e.prisma.researchProject.findMany({where:{groupUuid:b,companyUuid:a},select:{uuid:!0,name:!0,description:!0},orderBy:{updatedAt:"desc"}});return{uuid:c.uuid,name:c.name,description:c.description,projectCount:d.length,projects:d,createdAt:c.createdAt.toISOString(),updatedAt:c.updatedAt.toISOString()}}async function m(a,b){return e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0}})}async function n(a){let b=await e.prisma.projectGroup.findMany({where:{companyUuid:a},orderBy:{createdAt:"asc"}}),c=b.map(a=>a.uuid),d=c.length>0?await e.prisma.researchProject.groupBy({by:["groupUuid"],where:{companyUuid:a,groupUuid:{in:c}},_count:{_all:!0}}):[],f=new Map(d.map(a=>[a.groupUuid,a._count._all])),g=b.map(a=>({uuid:a.uuid,name:a.name,description:a.description,projectCount:f.get(a.uuid)??0,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()})),h=await e.prisma.researchProject.count({where:{companyUuid:a,groupUuid:null}});return{groups:g,total:b.length,ungroupedCount:h}}async function o(a,b,c){if(!await e.prisma.researchProject.findFirst({where:{uuid:b,companyUuid:a}})||c&&!await e.prisma.projectGroup.findFirst({where:{uuid:c,companyUuid:a}}))return null;let d=await e.prisma.researchProject.update({where:{uuid:b},data:{groupUuid:c}});return f.B.emitChange({companyUuid:a,researchProjectUuid:b,entityType:"research_project",entityUuid:b,action:"updated"}),{uuid:d.uuid,name:d.name,groupUuid:d.groupUuid}}async function p(a,b){let c=await e.prisma.projectGroup.findFirst({where:{uuid:b,companyUuid:a}});if(!c)return null;let d=await e.prisma.researchProject.findMany({where:{groupUuid:b,companyUuid:a},select:{uuid:!0,name:!0}}),f=d.map(a=>a.uuid);if(0===f.length)return{group:{uuid:c.uuid,name:c.name,description:c.description},stats:{projectCount:0,totalExperimentRuns:0,completedExperimentRuns:0,completionRate:0,openResearchQuestions:0,activeExperimentDesigns:0,totalTasks:0,completedTasks:0,openIdeas:0,activeProposals:0},projects:[],recentActivity:[]};let h=await (0,g.c8)(a,f),i=d.map(a=>{let b=h.get(a.uuid),c=b?.experimentRuns.total??0,d=b?.experimentRuns.completed??0;return{uuid:a.uuid,name:a.name,experimentRunCount:c,taskCount:c,completionRate:c>0?Math.round(d/c*100):0}}),j=Array.from(h.values()).reduce((a,b)=>(a.totalExperimentRuns+=b.experimentRuns.total,a.completedExperimentRuns+=b.experimentRuns.completed,a.openResearchQuestions+=b.researchQuestions.open+b.researchQuestions.elaborating,a.activeExperimentDesigns+=b.experimentDesigns.active,a),{totalExperimentRuns:0,completedExperimentRuns:0,openResearchQuestions:0,activeExperimentDesigns:0}),k=await e.prisma.activity.findMany({where:{researchProjectUuid:{in:f},companyUuid:a},orderBy:{createdAt:"desc"},take:20}),l=new Map(d.map(a=>[a.uuid,a.name]));return{group:{uuid:c.uuid,name:c.name,description:c.description},stats:{projectCount:d.length,totalExperimentRuns:j.totalExperimentRuns,completedExperimentRuns:j.completedExperimentRuns,completionRate:j.totalExperimentRuns>0?Math.round(j.completedExperimentRuns/j.totalExperimentRuns*100):0,openResearchQuestions:j.openResearchQuestions,activeExperimentDesigns:j.activeExperimentDesigns,totalTasks:j.totalExperimentRuns,completedTasks:j.completedExperimentRuns,openIdeas:j.openResearchQuestions,activeProposals:j.activeExperimentDesigns},projects:i,recentActivity:k.map(a=>({uuid:a.uuid,researchProjectUuid:a.researchProjectUuid,projectUuid:a.researchProjectUuid,projectName:l.get(a.researchProjectUuid)??"Unknown",targetType:a.targetType,targetUuid:a.targetUuid,action:a.action,value:a.value,actorType:a.actorType,actorUuid:a.actorUuid,createdAt:a.createdAt.toISOString()}))}}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},55511:a=>{a.exports=require("crypto")},57335:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{CY:()=>k,KD:()=>i,SP:()=>l,Xj:()=>j});var e=c(52618),f=c(911),g=a([e]);function h(a){return{uuid:a.uuid,title:a.title,authors:a.authors,abstract:a.abstract,url:a.url,arxivId:a.arxivId,source:a.source,addedBy:a.addedBy,addedByAgentUuid:a.addedByAgentUuid,publishedYear:a.publishedYear,createdAt:a.createdAt.toISOString()}}async function i(a,b){return(await e.prisma.relatedWork.findMany({where:{companyUuid:a,researchProjectUuid:b},orderBy:{createdAt:"desc"}})).map(h)}async function j(a){let b=[{url:a.url}];a.arxivId&&b.push({arxivId:a.arxivId});let c=await e.prisma.relatedWork.findFirst({where:{companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,OR:b},select:{uuid:!0}});if(c){let a=await e.prisma.relatedWork.findFirst({where:{uuid:c.uuid}});return{...h(a),isNew:!1}}let d=await e.prisma.relatedWork.create({data:{companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,title:a.title,authors:a.authors??null,abstract:a.abstract??null,url:a.url,arxivId:a.arxivId??null,source:a.source,addedBy:a.addedBy,addedByAgentUuid:a.addedByAgentUuid??null,publishedYear:a.publishedYear??null}});return f.B.emitChange({companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,entityType:"related_work",entityUuid:d.uuid,action:"created"}),{...h(d),isNew:!0}}async function k(a,b){await e.prisma.relatedWork.deleteMany({where:{uuid:b,companyUuid:a}})}async function l(a){let b=a.match(/arxiv\.org\/(?:abs|pdf|html)\/([0-9]+\.[0-9]+)/);if(!b)return null;let d=b[1];try{let a=await fetch(`https://api.semanticscholar.org/graph/v1/paper/ArXiv:${d}?fields=title,abstract,authors`,{signal:AbortSignal.timeout(1e4)});if(a.ok){let b=await a.json();if(b.title)return{title:b.title,authors:(b.authors??[]).map(a=>a.name).join(", "),abstract:b.abstract??"",arxivId:d}}}catch{}try{let{execFile:a}=await Promise.resolve().then(c.t.bind(c,31421,23)),{promisify:b}=await Promise.resolve().then(c.t.bind(c,57975,23)),e=b(a),{stdout:f}=await e("curl",["-sL","--max-time","15",`https://export.arxiv.org/api/query?id_list=${d}`],{timeout:2e4,maxBuffer:1048576}),g=f.split("<entry>");if(g.length<2)return null;let h=g[1],i=h.match(/<title>([\s\S]*?)<\/title>/),j=h.match(/<summary>([\s\S]*?)<\/summary>/),k=[...h.matchAll(/<name>(.*?)<\/name>/g)],l=i?.[1]?.replace(/\s+/g," ").trim()??"",m=j?.[1]?.replace(/\s+/g," ").trim()??"",n=k.map(a=>a[1]).join(", ");if(!l)return null;return{title:l,authors:n,abstract:m,arxivId:d}}catch{return null}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},57975:a=>{a.exports=require("node:util")},58030:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(41033),g=c(74909);b.default={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:a}})=>(0,d.str)`must NOT have more than ${a} items`,params:({params:{len:a}})=>(0,d._)`{limit: ${a}}`},code(a){let{schema:b,parentSchema:c,it:d}=a,{prefixItems:h}=c;d.items=!0,(0,e.alwaysValidSchema)(d,b)||(h?(0,g.validateAdditionalItems)(a,h):a.ok((0,f.validateArray)(a)))}}},58219:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489),f=c(23235);b.default={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:a}})=>(0,e.str)`must have required property '${a}'`,params:({params:{missingProperty:a}})=>(0,e._)`{missingProperty: ${a}}`},code(a){let{gen:b,schema:c,schemaCode:g,data:h,$data:i,it:j}=a,{opts:k}=j;if(!i&&0===c.length)return;let l=c.length>=k.loopRequired;if(j.allErrors?function(){if(l||i)a.block$data(e.nil,m);else for(let b of c)(0,d.checkReportMissingProp)(a,b)}():function(){let f=b.let("missing");if(l||i){let c=b.let("valid",!0);a.block$data(c,()=>{var i,j;return i=f,j=c,void(a.setParams({missingProperty:i}),b.forOf(i,g,()=>{b.assign(j,(0,d.propertyInData)(b,h,i,k.ownProperties)),b.if((0,e.not)(j),()=>{a.error(),b.break()})},e.nil))}),a.ok(c)}else b.if((0,d.checkMissingProp)(a,c,f)),(0,d.reportMissingProp)(a,f),b.else()}(),k.strictRequired){let b=a.parentSchema.properties,{definedProperties:d}=a.it;for(let a of c)if((null==b?void 0:b[a])===void 0&&!d.has(a)){let b=j.schemaEnv.baseId+j.errSchemaPath,c=`required property "${a}" is not defined at "${b}" (strictRequired)`;(0,f.checkStrictMode)(j,c,j.opts.strictRequired)}}function m(){b.forOf("prop",g,c=>{a.setParams({missingProperty:c}),b.if((0,d.noPropertyInData)(b,h,c,k.ownProperties),()=>a.error())})}}}},58362:a=>{a.exports=function a(b,c){if(b===c)return!0;if(b&&c&&"object"==typeof b&&"object"==typeof c){if(b.constructor!==c.constructor)return!1;if(Array.isArray(b)){if((d=b.length)!=c.length)return!1;for(e=d;0!=e--;)if(!a(b[e],c[e]))return!1;return!0}if(b.constructor===RegExp)return b.source===c.source&&b.flags===c.flags;if(b.valueOf!==Object.prototype.valueOf)return b.valueOf()===c.valueOf();if(b.toString!==Object.prototype.toString)return b.toString()===c.toString();if((d=(f=Object.keys(b)).length)!==Object.keys(c).length)return!1;for(e=d;0!=e--;)if(!Object.prototype.hasOwnProperty.call(c,f[e]))return!1;for(e=d;0!=e--;){var d,e,f,g=f[e];if(!a(b[g],c[g]))return!1}return!0}return b!=b&&c!=c}},61437:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateKeywordUsage=b.validSchemaType=b.funcKeywordCode=b.macroKeywordCode=void 0;let d=c(74489),e=c(31079),f=c(41033),g=c(66984);function h(a){let{gen:b,data:c,it:e}=a;b.if(e.parentData,()=>b.assign(c,(0,d._)`${e.parentData}[${e.parentDataProperty}]`))}function i(a,b,c){if(void 0===c)throw Error(`keyword "${b}" failed to compile`);return a.scopeValue("keyword","function"==typeof c?{ref:c}:{ref:c,code:(0,d.stringify)(c)})}b.macroKeywordCode=function(a,b){let{gen:c,keyword:e,schema:f,parentSchema:g,it:h}=a,j=b.macro.call(h.self,f,g,h),k=i(c,e,j);!1!==h.opts.validateSchema&&h.self.validateSchema(j,!0);let l=c.name("valid");a.subschema({schema:j,schemaPath:d.nil,errSchemaPath:`${h.errSchemaPath}/${e}`,topSchemaRef:k,compositeRule:!0},l),a.pass(l,()=>a.error(!0))},b.funcKeywordCode=function(a,b){var c;let{gen:j,keyword:k,schema:l,parentSchema:m,$data:n,it:o}=a;!function({schemaEnv:a},b){if(b.async&&!a.$async)throw Error("async keyword in sync schema")}(o,b);let p=i(j,k,!n&&b.compile?b.compile.call(o.self,l,m,o):b.validate),q=j.let("valid");function r(c=b.async?(0,d._)`await `:d.nil){let g=o.opts.passContext?e.default.this:e.default.self,h=!("compile"in b&&!n||!1===b.schema);j.assign(q,(0,d._)`${c}${(0,f.callValidateCode)(a,p,g,h)}`,b.modifying)}function s(a){var c;j.if((0,d.not)(null!=(c=b.valid)?c:q),a)}a.block$data(q,function(){if(!1===b.errors)r(),b.modifying&&h(a),s(()=>a.error());else{let c=b.async?function(){let a=j.let("ruleErrs",null);return j.try(()=>r((0,d._)`await `),b=>j.assign(q,!1).if((0,d._)`${b} instanceof ${o.ValidationError}`,()=>j.assign(a,(0,d._)`${b}.errors`),()=>j.throw(b))),a}():function(){let a=(0,d._)`${p}.errors`;return j.assign(a,null),r(d.nil),a}();b.modifying&&h(a),s(()=>(function(a,b){let{gen:c}=a;c.if((0,d._)`Array.isArray(${b})`,()=>{c.assign(e.default.vErrors,(0,d._)`${e.default.vErrors} === null ? ${b} : ${e.default.vErrors}.concat(${b})`).assign(e.default.errors,(0,d._)`${e.default.vErrors}.length`),(0,g.extendErrors)(a)},()=>a.error())})(a,c))}}),a.ok(null!=(c=b.valid)?c:q)},b.validSchemaType=function(a,b,c=!1){return!b.length||b.some(b=>"array"===b?Array.isArray(a):"object"===b?a&&"object"==typeof a&&!Array.isArray(a):typeof a==b||c&&void 0===a)},b.validateKeywordUsage=function({schema:a,opts:b,self:c,errSchemaPath:d},e,f){if(Array.isArray(e.keyword)?!e.keyword.includes(f):e.keyword!==f)throw Error("ajv implementation error");let g=e.dependencies;if(null==g?void 0:g.some(b=>!Object.prototype.hasOwnProperty.call(a,b)))throw Error(`parent schema must have dependencies of ${f}: ${g.join(",")}`);if(e.validateSchema&&!e.validateSchema(a[f])){let a=`keyword "${f}" value is invalid at path "${d}": `+c.errorsText(e.validateSchema.errors);if("log"===b.validateSchema)c.logger.error(a);else throw Error(a)}}},62936:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{c:()=>n});var e=c(28708),f=c(31270),g=c(16083),h=c(73994),i=c(38404),j=c(92093),k=c(71084),l=c(70858),m=a([f,g,h,i,j,k,l]);function n(a){let b=new e._({name:"synapse",version:"1.0.0"}),c=a.roles||[],d=(...a)=>c.some(b=>a.includes(b));return(0,l.ji)(b,a),(0,f.q)(b,a),(0,g.r)(b,a),d("pre_research")&&(0,i.W)(b,a),d("research","report","research_lead","research_lead_agent")&&(0,j.W)(b,a),d("experiment","researcher","researcher_agent")&&(0,h.w)(b,a),d("admin","pi","pi_agent")&&(0,k.C)(b,a),b}[f,g,h,i,j,k,l]=m.then?(await m)():m,d()}catch(a){d(a)}})},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63089:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>m,m:()=>n});var e=c(52618),f=c(75700),g=c(76872),h=a([e,f,g]);async function i(a){let b=await (0,g.Z_)(a.assigneeType,a.assigneeUuid);return{uuid:a.uuid,title:a.title,content:a.content,status:a.status,assignee:b,assignedAt:a.assignedAt?.toISOString()??null,project:a.researchProject,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function j(a){let b=await (0,g.Z_)(a.assigneeType,a.assigneeUuid);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,assignee:b,assignedAt:a.assignedAt?.toISOString()??null,project:a.researchProject,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function k(a){let b=await (0,g.LS)(a.createdByUuid);return{uuid:a.uuid,title:a.title,content:a.content,status:a.status,createdBy:b,createdAt:a.createdAt.toISOString()}}async function l(a){let b=await (0,g.LS)(a.createdByUuid);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,createdBy:b,createdAt:a.createdAt.toISOString()}}async function m(a,b){let c=function(a){let b=[];return(0,f.yh)(a)?(b.push({assigneeType:"agent",assigneeUuid:a.actorUuid}),a.ownerUuid&&b.push({assigneeType:"user",assigneeUuid:a.ownerUuid})):b.push({assigneeType:"user",assigneeUuid:a.actorUuid}),b}(a),[d,g]=await Promise.all([e.prisma.researchQuestion.findMany({where:{companyUuid:a.companyUuid,...b&&b.length>0&&{researchProjectUuid:{in:b}},OR:c,status:{notIn:["completed","closed"]}},select:{uuid:!0,title:!0,content:!0,status:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,researchProject:{select:{uuid:!0,name:!0}},createdAt:!0,updatedAt:!0},orderBy:{assignedAt:"desc"}}),e.prisma.experimentRun.findMany({where:{companyUuid:a.companyUuid,...b&&b.length>0&&{researchProjectUuid:{in:b}},OR:c,status:{notIn:["done","closed"]}},select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,researchProject:{select:{uuid:!0,name:!0}},createdAt:!0,updatedAt:!0},orderBy:[{priority:"desc"},{assignedAt:"desc"}]})]),[h,k]=await Promise.all([Promise.all(d.map(i)),Promise.all(g.map(j))]);return{researchQuestions:h,experimentRuns:k}}async function n(a,b,c,d,f){let g={researchProjectUuid:b,companyUuid:a,status:"open"},h={...g,...f&&f.length>0&&{experimentDesignUuid:{in:f}}},[i,j]=await Promise.all([c?e.prisma.researchQuestion.findMany({where:g,select:{uuid:!0,title:!0,content:!0,status:!0,createdByUuid:!0,createdAt:!0},orderBy:{createdAt:"desc"},take:50}):[],d?e.prisma.experimentRun.findMany({where:h,select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,createdByUuid:!0,createdAt:!0},orderBy:[{priority:"desc"},{createdAt:"desc"}],take:50}):[]]),[m,n]=await Promise.all([Promise.all(i.map(k)),Promise.all(j.map(l))]);return{researchQuestions:m,experimentRuns:n}}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},63861:(a,b,c)=>{function d(a){return{name:a.name,description:a.description,inputSchema:a.inputSchema,execute:b=>a.execute(b)}}function e(a){return a}function f(a,b){b.forEach(b=>{a.registerTool(b.name,{description:b.description,inputSchema:b.inputSchema},b.execute)})}function g(a,b){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}function h(a,b){return g(JSON.stringify(a,null,2),b)}c.d(b,{D8:()=>f,Ht:()=>e,V4:()=>d,XP:()=>h,xv:()=>g})},64939:a=>{a.exports=import("pg")},66984:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.extendErrors=b.resetErrorsCount=b.reportExtraError=b.reportError=b.keyword$DataError=b.keywordError=void 0;let d=c(74489),e=c(23235),f=c(31079);function g(a,b){let c=a.const("err",b);a.if((0,d._)`${f.default.vErrors} === null`,()=>a.assign(f.default.vErrors,(0,d._)`[${c}]`),(0,d._)`${f.default.vErrors}.push(${c})`),a.code((0,d._)`${f.default.errors}++`)}function h(a,b){let{gen:c,validateName:e,schemaEnv:f}=a;f.$async?c.throw((0,d._)`new ${a.ValidationError}(${b})`):(c.assign((0,d._)`${e}.errors`,b),c.return(!1))}b.keywordError={message:({keyword:a})=>(0,d.str)`must pass "${a}" keyword validation`},b.keyword$DataError={message:({keyword:a,schemaType:b})=>b?(0,d.str)`"${a}" keyword must be ${b} ($data)`:(0,d.str)`"${a}" keyword is invalid ($data)`},b.reportError=function(a,c=b.keywordError,e,f){let{it:i}=a,{gen:k,compositeRule:l,allErrors:m}=i,n=j(a,c,e);(null!=f?f:l||m)?g(k,n):h(i,(0,d._)`[${n}]`)},b.reportExtraError=function(a,c=b.keywordError,d){let{it:e}=a,{gen:i,compositeRule:k,allErrors:l}=e;g(i,j(a,c,d)),k||l||h(e,f.default.vErrors)},b.resetErrorsCount=function(a,b){a.assign(f.default.errors,b),a.if((0,d._)`${f.default.vErrors} !== null`,()=>a.if(b,()=>a.assign((0,d._)`${f.default.vErrors}.length`,b),()=>a.assign(f.default.vErrors,null)))},b.extendErrors=function({gen:a,keyword:b,schemaValue:c,data:e,errsCount:g,it:h}){if(void 0===g)throw Error("ajv implementation error");let i=a.name("err");a.forRange("i",g,f.default.errors,g=>{a.const(i,(0,d._)`${f.default.vErrors}[${g}]`),a.if((0,d._)`${i}.instancePath === undefined`,()=>a.assign((0,d._)`${i}.instancePath`,(0,d.strConcat)(f.default.instancePath,h.errorPath))),a.assign((0,d._)`${i}.schemaPath`,(0,d.str)`${h.errSchemaPath}/${b}`),h.opts.verbose&&(a.assign((0,d._)`${i}.schema`,c),a.assign((0,d._)`${i}.data`,e))})};let i={keyword:new d.Name("keyword"),schemaPath:new d.Name("schemaPath"),params:new d.Name("params"),propertyName:new d.Name("propertyName"),message:new d.Name("message"),schema:new d.Name("schema"),parentSchema:new d.Name("parentSchema")};function j(a,b,c){let{createErrors:g}=a.it;return!1===g?(0,d._)`{}`:function(a,b,c={}){let{gen:g,it:h}=a,j=[function({errorPath:a},{instancePath:b}){let c=b?(0,d.str)`${a}${(0,e.getErrorPath)(b,e.Type.Str)}`:a;return[f.default.instancePath,(0,d.strConcat)(f.default.instancePath,c)]}(h,c),function({keyword:a,it:{errSchemaPath:b}},{schemaPath:c,parentSchema:f}){let g=f?b:(0,d.str)`${b}/${a}`;return c&&(g=(0,d.str)`${g}${(0,e.getErrorPath)(c,e.Type.Str)}`),[i.schemaPath,g]}(a,c)];return function(a,{params:b,message:c},e){let{keyword:g,data:h,schemaValue:j,it:k}=a,{opts:l,propertyName:m,topSchemaRef:n,schemaPath:o}=k;e.push([i.keyword,g],[i.params,"function"==typeof b?b(a):b||(0,d._)`{}`]),l.messages&&e.push([i.message,"function"==typeof c?c(a):c]),l.verbose&&e.push([i.schema,j],[i.parentSchema,(0,d._)`${n}${o}`],[f.default.data,h]),m&&e.push([i.propertyName,m])}(a,b,j),g.object(...j)}(a,b,c)}},70511:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:a})=>(0,d.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,d._)`{multipleOf: ${a}}`},code(a){let{gen:b,data:c,schemaCode:e,it:f}=a,g=f.opts.multipleOfPrecision,h=b.let("res"),i=g?(0,d._)`Math.abs(Math.round(${h}) - ${h}) > 1e-${g}`:(0,d._)`${h} !== parseInt(${h})`;a.fail$data((0,d._)`(${e} === 0 || (${h} = ${c}/${e}, ${i}))`)}}},70858:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ji:()=>k});var e=c(911),f=c(52618),g=c(65582),h=a([f]);f=(h.then?(await h)():h)[0];let l=g.vF.child({module:"mcp"}),m={experimentUuid:"experiment",researchQuestionUuid:"research_question",documentUuid:"document"},n={experiment:"experiment",research_question:"research_question",document:"document"},o=["synapse_get_","synapse_list_","synapse_search"];async function i(a,b,c){let d=`${a}:${b}`,e=c.get(d);if(e)return e;try{let e=null;switch(a){case"experiment":{let a=await f.prisma.experiment.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null;break}case"research_question":{let a=await f.prisma.researchQuestion.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null;break}case"document":{let a=await f.prisma.document.findFirst({where:{uuid:b},select:{researchProject:{select:{uuid:!0}}}});e=a?.researchProject?.uuid??null}}return e&&c.set(d,e),e}catch(a){return l.warn({err:a},"failed to resolve projectUuid"),null}}async function j(a,b,c,d){try{let f=a.researchProjectUuid;if(f||(f=await i(a.entityType,a.entityUuid,d)??void 0),f){let d={type:"presence",companyUuid:c.companyUuid,researchProjectUuid:f,entityType:a.entityType,entityUuid:a.entityUuid,agentUuid:c.actorUuid,agentName:c.agentName,action:o.some(a=>b.startsWith(a))?"view":"mutate",timestamp:Date.now()};e.B.emitPresence(d)}}catch(a){l.warn({err:a},"failed to emit presence event")}}function k(a,b){let c=new Map,d=a.registerTool.bind(a);a.registerTool=function(a,e,f){let g=async(d,e)=>{let g=function(a){for(let[b,c]of Object.entries(m))if("string"==typeof a[b])return{entityType:c,entityUuid:a[b],researchProjectUuid:"string"==typeof a.researchProjectUuid?a.researchProjectUuid:void 0};if("string"==typeof a.targetUuid&&"string"==typeof a.targetType){let b=n[a.targetType];if(b)return{entityType:b,entityUuid:a.targetUuid,researchProjectUuid:"string"==typeof a.researchProjectUuid?a.researchProjectUuid:void 0}}return null}(d);return g&&j(g,a,b,c),f(d,e)};return d(a,e,g)}}d()}catch(a){d(a)}})},70959:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(91442);b.default={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:a})=>(0,d._)`{allowedValue: ${a}}`},code(a){let{gen:b,data:c,$data:g,schemaCode:h,schema:i}=a;g||i&&"object"==typeof i?a.fail$data((0,d._)`!${(0,e.useFunc)(b,f.default)}(${c}, ${h})`):a.fail((0,d._)`${i} !== ${c}`)}}},71084:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C:()=>n});var e=c(77258),f=c(85034),g=c(90136),h=c(8777),i=c(88437),j=c(53235),k=c(25191),l=c(48499),m=a([f,g,h,i,j,k,l]);function n(a,b){a.registerTool("synapse_create_research_project",{description:"Create a new research project (PI exclusive, acts on behalf of humans). To assign to a project group, first call synapse_get_project_groups to list available groups, then pass projectGroupUuid (or the alias groupUuid).",inputSchema:e.Ikc({name:e.YjP().describe("Research Project name"),description:e.YjP().optional().describe("Research Project description"),projectGroupUuid:e.YjP().optional().describe("Optional project group UUID to assign this project to. Use synapse_get_project_groups to list available groups."),groupUuid:e.YjP().optional().describe("Alias for projectGroupUuid (deprecated). If both are provided, projectGroupUuid wins.")})},async({name:a,description:c,projectGroupUuid:d,groupUuid:e})=>{let g=await f.l({companyUuid:b.companyUuid,name:a,description:c||null,groupUuid:d??e??null});return{content:[{type:"text",text:JSON.stringify({uuid:g.uuid,name:g.name,groupUuid:g.groupUuid})}]}}),a.registerTool("synapse_review_research_question",{description:"Review a research idea and either accept it into the execution pipeline or reject it back out of scope.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP(),decision:e.k5n(["accepted","rejected"]),reviewNote:e.YjP().optional()})},async({researchQuestionUuid:a,decision:c,reviewNote:d})=>{let e=await g._W(b.companyUuid,a);if(!e)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};let f=await g.e0(b.companyUuid,a,c,b.actorUuid,d||null);return await i.E1({companyUuid:b.companyUuid,researchProjectUuid:e.researchProjectUuid,targetType:"research_question",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"accepted"===c?"approved":"rejected",value:d?{reviewNote:d}:void 0}),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_review_experiment",{description:"Atomically approve or reject a pending_review experiment (state transition + activity + notifications + reject-comment). Restricted to admin / pi / pi_agent roles. When a Claude Code agent acts on a user's verbal approve, reviewNote MUST quote the user's exact words, e.g. 'User verbally approved in terminal: \"OK 上吧\"'. On verbal reject, reviewNote MUST summarize the user's revision request in second-person Chinese with key quoted phrases — synapse_review_experiment will write that as the comment automatically; do NOT also call synapse_add_comment. In CC full-auto mode the reviewNote MUST follow the template: 'Full-auto session authorized by <ownerName> at <ISO time>. Self-review pass: <key points>.' (or 'Self-review skipped: <reason>.' if the sub-agent failed).",inputSchema:e.Ikc({experimentUuid:e.YjP(),decision:e.k5n(["approved","rejected"]),reviewNote:e.YjP().optional(),assignedAgentUuid:e.YjP().nullable().optional().describe("Optional agent UUID to assign while reviewing. Pass null to clear assignment.")})},async({experimentUuid:a,decision:c,reviewNote:d,assignedAgentUuid:e})=>{let f=await l.AG({companyUuid:b.companyUuid,experimentUuid:a,approved:"approved"===c,reviewNote:d||null,...void 0!==e?{assignedAgentUuid:e}:{},actorUuid:b.actorUuid,actorType:"agent"});return{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_delete_research_question",{description:"Delete a Research Question (PI exclusive, can delete any Research Question)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>await g._W(b.companyUuid,a)?(await g.ph(a),{content:[{type:"text",text:`Research Question ${a} deleted`}]}):{content:[{type:"text",text:"Research Question not found"}],isError:!0}),a.registerTool("synapse_delete_document",{description:"Delete a Document (PI exclusive, can delete any Document)",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID")})},async({documentUuid:a})=>await h.YE(b.companyUuid,a)?(await h.Nn(a),{content:[{type:"text",text:`Document ${a} deleted`}]}):{content:[{type:"text",text:"Document not found"}],isError:!0}),a.registerTool("synapse_close_research_question",{description:"Close a Research Question (any status -> closed, PI exclusive)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if("closed"===c.status)return{content:[{type:"text",text:"Research Question is already in closed status"}],isError:!0};let d=await g.pg(a,b.companyUuid,{status:"closed"});return await i.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"closed"}),{content:[{type:"text",text:JSON.stringify({uuid:d.uuid,status:d.status})}]}}),a.registerTool("synapse_create_project_group",{description:"Create a new project group (PI exclusive)",inputSchema:e.Ikc({name:e.YjP().describe("Project group name"),description:e.YjP().optional().describe("Project group description")})},async({name:a,description:c})=>{let d=await j.H$({companyUuid:b.companyUuid,name:a,description:c||null});return{content:[{type:"text",text:JSON.stringify({...d,projects:[]},null,2)}]}}),a.registerTool("synapse_update_project_group",{description:"Update a project group (PI exclusive)",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID"),name:e.YjP().optional().describe("New group name"),description:e.YjP().optional().describe("New group description")})},async({groupUuid:a,name:c,description:d})=>{let e=await j.ie({companyUuid:b.companyUuid,groupUuid:a,name:c,description:d});if(!e)return{content:[{type:"text",text:"Project group not found"}],isError:!0};let f=await j.xv(b.companyUuid,a)??{...e,projects:[]};return{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}),a.registerTool("synapse_delete_project_group",{description:"Delete a project group (PI exclusive). By default refuses if the group contains projects. Pass force=true to cascade-delete all child projects.",inputSchema:e.Ikc({groupUuid:e.YjP().describe("Project Group UUID"),force:e.zMY().optional().describe("If true, cascade-delete all child projects instead of refusing.")})},async({groupUuid:a,force:c})=>{let d=await j.xv(b.companyUuid,a);if(!d)return{content:[{type:"text",text:"Project group not found"}],isError:!0};if(d.projectCount>0&&!c)return{content:[{type:"text",text:`Cannot delete project group with ${d.projectCount} project(s). Pass force=true to cascade-delete child projects, or move them first with synapse_move_research_project_to_group.`}],isError:!0};if(d.projectCount>0&&c)for(let a of d.projects)await f._8(a.uuid);return await j.ed(b.companyUuid,a)?{content:[{type:"text",text:d.projectCount>0&&c?`Project group ${a} and ${d.projectCount} child project(s) deleted`:`Project group ${a} deleted`}]}:{content:[{type:"text",text:"Project group not found"}],isError:!0}}),a.registerTool("synapse_move_research_project_to_group",{description:"Move a research project to a different group or ungroup it (PI exclusive). Set groupUuid to null to ungroup.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),groupUuid:e.YjP().nullable().describe("Target Project Group UUID (null to ungroup)")})},async({researchProjectUuid:a,groupUuid:c})=>{let d=await j.XO(b.companyUuid,a,c);return d?{content:[{type:"text",text:JSON.stringify(d,null,2)}]}:{content:[{type:"text",text:"Research Project or project group not found"}],isError:!0}}),a.registerTool("synapse_set_active_baseline",{description:"Set the active baseline for a research project (deactivates all others)",inputSchema:e.Ikc({baselineUuid:e.YjP()})},async a=>{let c=await k.Or(b.companyUuid,a.baselineUuid);return{content:[{type:"text",text:JSON.stringify(c,null,2)}]}})}[f,g,h,i,j,k,l]=m.then?(await m)():m,d()}catch(a){d(a)}})},71296:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(41033),e=c(74489),f=c(31079),g=c(23235);b.default={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:a})=>(0,e._)`{additionalProperty: ${a.additionalProperty}}`},code(a){let{gen:b,schema:c,parentSchema:h,data:i,errsCount:j,it:k}=a;if(!j)throw Error("ajv implementation error");let{allErrors:l,opts:m}=k;if(k.props=!0,"all"!==m.removeAdditional&&(0,g.alwaysValidSchema)(k,c))return;let n=(0,d.allSchemaProperties)(h.properties),o=(0,d.allSchemaProperties)(h.patternProperties);function p(a){b.code((0,e._)`delete ${i}[${a}]`)}function q(d){if("all"===m.removeAdditional||m.removeAdditional&&!1===c)return void p(d);if(!1===c){a.setParams({additionalProperty:d}),a.error(),l||b.break();return}if("object"==typeof c&&!(0,g.alwaysValidSchema)(k,c)){let c=b.name("valid");"failing"===m.removeAdditional?(r(d,c,!1),b.if((0,e.not)(c),()=>{a.reset(),p(d)})):(r(d,c),l||b.if((0,e.not)(c),()=>b.break()))}}function r(b,c,d){let e={keyword:"additionalProperties",dataProp:b,dataPropType:g.Type.Str};!1===d&&Object.assign(e,{compositeRule:!0,createErrors:!1,allErrors:!1}),a.subschema(e,c)}b.forIn("key",i,c=>{n.length||o.length?b.if(function(c){let f;if(n.length>8){let a=(0,g.schemaRefOrVal)(k,h.properties,"properties");f=(0,d.isOwnProperty)(b,a,c)}else f=n.length?(0,e.or)(...n.map(a=>(0,e._)`${c} === ${a}`)):e.nil;return o.length&&(f=(0,e.or)(f,...o.map(b=>(0,e._)`${(0,d.usePattern)(a,b)}.test(${c})`))),(0,e.not)(f)}(c),()=>q(c)):q(c)}),a.ok((0,e._)`${j} === ${f.default.errors}`)}}},71339:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235),f=c(91442);b.default={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:a})=>(0,d._)`{allowedValues: ${a}}`},code(a){let b,c,{gen:g,data:h,$data:i,schema:j,schemaCode:k,it:l}=a;if(!i&&0===j.length)throw Error("enum must have non-empty array");let m=j.length>=l.opts.loopEnum,n=()=>null!=b?b:b=(0,e.useFunc)(g,f.default);if(m||i)c=g.let("valid"),a.block$data(c,function(){g.assign(c,!1),g.forOf("v",k,a=>g.if((0,d._)`${n()}(${h}, ${a})`,()=>g.assign(c,!0).break()))});else{if(!Array.isArray(j))throw Error("ajv implementation error");let a=g.const("vSchema",k);c=(0,d.or)(...j.map((b,c)=>(function(a,b){let c=j[b];return"object"==typeof c&&null!==c?(0,d._)`${n()}(${h}, ${a}[${b}])`:(0,d._)`${h} === ${c}`})(a,c)))}a.pass(c)}}},71360:(a,b)=>{var c;Object.defineProperty(b,"__esModule",{value:!0}),b.DiscrError=void 0,function(a){a.Tag="tag",a.Mapping="mapping"}(c||(b.DiscrError=c={}))},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73566:a=>{a.exports=require("worker_threads")},73652:a=>{let b=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),c=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function d(a){let b="",c=0,d=0;for(d=0;d<a.length;d++)if(48!==(c=a[d].charCodeAt(0))){if(!(c>=48&&c<=57||c>=65&&c<=70||c>=97&&c<=102))return"";b+=a[d];break}for(d+=1;d<a.length;d++){if(!((c=a[d].charCodeAt(0))>=48&&c<=57||c>=65&&c<=70||c>=97&&c<=102))return"";b+=a[d]}return b}function e(a){return a.length=0,!0}function f(a,b,c){if(a.length){let e=d(a);if(""===e)return c.error=!0,!1;b.push(e),a.length=0}return!0}function g(a){if(2>function(a,b){let c=0;for(let b=0;b<a.length;b++)":"===a[b]&&c++;return c}(a,":"))return{host:a,isIPV6:!1};let b=function(a){let b=0,c={error:!1,address:"",zone:""},g=[],h=[],i=!1,j=!1,k=f;for(let d=0;d<a.length;d++){let f=a[d];if("["!==f&&"]"!==f)if(":"===f){if(!0===i&&(j=!0),!k(h,g,c))break;if(++b>7){c.error=!0;break}d>0&&":"===a[d-1]&&(i=!0),g.push(":");continue}else if("%"===f){if(!k(h,g,c))break;k=e}else{h.push(f);continue}}return h.length&&(k===e?c.zone=h.join(""):j?g.push(h.join("")):g.push(d(h))),c.address=g.join(""),c}(a);if(b.error)return{host:a,isIPV6:!1};{let a=b.address,c=b.address;return b.zone&&(a+="%"+b.zone,c+="%25"+b.zone),{host:a,isIPV6:!0,escapedHost:c}}}a.exports={nonSimpleDomain:RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u),recomposeAuthority:function(a){let b=[];if(void 0!==a.userinfo&&(b.push(a.userinfo),b.push("@")),void 0!==a.host){let d=unescape(a.host);if(!c(d)){let b=g(d);d=!0===b.isIPV6?`[${b.escapedHost}]`:a.host}b.push(d)}return("number"==typeof a.port||"string"==typeof a.port)&&(b.push(":"),b.push(String(a.port))),b.length?b.join(""):void 0},normalizeComponentEncoding:function(a,b){let c=!0!==b?escape:unescape;return void 0!==a.scheme&&(a.scheme=c(a.scheme)),void 0!==a.userinfo&&(a.userinfo=c(a.userinfo)),void 0!==a.host&&(a.host=c(a.host)),void 0!==a.path&&(a.path=c(a.path)),void 0!==a.query&&(a.query=c(a.query)),void 0!==a.fragment&&(a.fragment=c(a.fragment)),a},removeDotSegments:function(a){let b=a,c=[],d=-1,e=0;for(;e=b.length;){if(1===e)if("."===b)break;else if("/"===b){c.push("/");break}else{c.push(b);break}if(2===e){if("."===b[0]){if("."===b[1])break;else if("/"===b[1]){b=b.slice(2);continue}}else if("/"===b[0]&&("."===b[1]||"/"===b[1])){c.push("/");break}}else if(3===e&&"/.."===b){0!==c.length&&c.pop(),c.push("/");break}if("."===b[0]){if("."===b[1]){if("/"===b[2]){b=b.slice(3);continue}}else if("/"===b[1]){b=b.slice(2);continue}}else if("/"===b[0]&&"."===b[1]){if("/"===b[2]){b=b.slice(2);continue}else if("."===b[2]&&"/"===b[3]){b=b.slice(3),0!==c.length&&c.pop();continue}}if(-1===(d=b.indexOf("/",1))){c.push(b);break}c.push(b.slice(0,d)),b=b.slice(d)}return c.join("")},isIPv4:c,isUUID:b,normalizeIPv6:g,stringArrayToHexStripped:d}},73994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>r});var e=c(77258),f=c(52618),g=c(88437),h=c(33073),i=c(48499),j=c(46499),k=c(87797),l=c(77064),m=c(37943),n=c(82374),o=a([f,g,h,i,j,k,l,m,n]);function p(a){return{ssh:a.sshHost||a.sshUser||a.sshPort?{host:a.sshHost,user:a.sshUser,port:a.sshPort??22,keyName:a.sshKeyName??null,managedKeyAvailable:a.managedKeyAvailable??!1,accessBundleTool:"synapse_get_node_access_bundle"}:null,ssmTarget:a.ssmTarget}}function q(a,b){return!a||"agent"===a.type&&a.uuid===b.actorUuid||"user"===a.type&&a.uuid===b.ownerUuid}function r(a,b){a.registerTool("synapse_list_compute_nodes",{description:"List compute pools, nodes, SSH/SSM access details, and the status of every GPU.",inputSchema:e.Ikc({onlyAvailable:e.zMY().default(!1),researchProjectUuid:e.YjP().optional()})},async({onlyAvailable:a,researchProjectUuid:c})=>{let d=await h.XH(b.companyUuid);if(c){let a=await f.prisma.researchProject.findFirst({where:{uuid:c,companyUuid:b.companyUuid},select:{computePoolUuid:!0}});a?.computePoolUuid&&(d=d.filter(b=>b.uuid===a.computePoolUuid))}let e=d.map(b=>({uuid:b.uuid,name:b.name,description:b.description,nodes:b.nodes.map(b=>({uuid:b.uuid,label:b.label,lifecycle:b.lifecycle,ec2InstanceId:b.ec2InstanceId,instanceType:b.instanceType,region:b.region,inventoryPending:b.inventoryPending,access:p(b),lastReportedAt:b.lastReportedAt,gpus:b.gpus.filter(b=>!a||"available"===b.computedStatus).map(a=>({uuid:a.uuid,slotIndex:a.slotIndex,model:a.model,memoryGb:a.memoryGb,status:a.activeReservation?`occupied:${a.activeReservation.itemTitle}`:a.computedStatus,utilizationPercent:a.utilizationPercent,memoryUsedGb:a.memoryUsedGb,temperatureC:a.temperatureC,activeReservation:a.activeReservation,lastReportedAt:a.lastReportedAt}))}))})),g=e.flatMap(a=>a.nodes.map(b=>({...b,pool:{uuid:a.uuid,name:a.name}})));return{content:[{type:"text",text:JSON.stringify({pools:e,nodes:g},null,2)}]}}),a.registerTool("synapse_get_node_access_bundle",{description:"Return a managed SSH access bundle for a node assigned to your current experiment. Use this instead of any server-local key path.",inputSchema:e.Ikc({experimentUuid:e.YjP(),nodeUuid:e.YjP()})},async({experimentUuid:a,nodeUuid:c})=>{let d=await h.DB({companyUuid:b.companyUuid,experimentUuid:a,nodeUuid:c,agentUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}),a.registerTool("synapse_get_assigned_experiments",{description:"List experiments currently assigned to you, sorted by priority and assignment order.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().optional(),statuses:e.YOg(e.k5n(["draft","pending_review","pending_start","in_progress","completed"])).optional()})},async({researchProjectUuid:a,statuses:c})=>{let d=await i.XA({companyUuid:b.companyUuid,assigneeType:"agent",assigneeUuid:b.actorUuid,researchProjectUuid:a,statuses:c});for(let a of d)"sent"===a.liveStatus&&await i.tp(a.uuid,"ack");return{content:[{type:"text",text:JSON.stringify({experiments:d},null,2)}]}}),a.registerTool("synapse_get_experiment",{description:"Get full details for a single experiment, including inherited parent-question context and a projectExperimentContext summary that tells callers whether this is the very first experiment on the project.",inputSchema:e.Ikc({experimentUuid:e.YjP()})},async({experimentUuid:a})=>{let c=await i._m(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};let[d,e]=await Promise.all([f.prisma.experiment.count({where:{companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,status:"completed",NOT:{uuid:c.uuid}}}),f.prisma.experiment.count({where:{companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,NOT:{uuid:c.uuid}}})]);return{content:[{type:"text",text:JSON.stringify({experiment:c,projectExperimentContext:{isFirstExperiment:0===e,priorCompletedCount:d,priorAnyCount:e}},null,2)}]}}),a.registerTool("synapse_start_experiment",{description:"Move an assigned experiment from pending_start to in_progress. Pass gpuUuids only when start_experiment should also reserve them; if you already called synapse_reserve_gpus, start without gpuUuids.",inputSchema:e.Ikc({experimentUuid:e.YjP(),gpuUuids:e.YOg(e.YjP()).default([]),workingNotes:e.YjP().optional()})},async({experimentUuid:a,gpuUuids:c,workingNotes:d})=>{let e=await i._m(b.companyUuid,a);if(!e)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!q(e.assignee,b))return{content:[{type:"text",text:"Experiment is assigned to another actor"}],isError:!0};if("pending_start"!==e.status&&"in_progress"!==e.status)return{content:[{type:"text",text:`Experiment must be pending_start or in_progress, current status: ${e.status}`}],isError:!0};if(d?.trim()){let c=await i._m(b.companyUuid,a),e=c?.description??"";await i.t3(b.companyUuid,a,{description:e+(e?"\n\n---\n\n":"")+d.trim()},{actorType:"agent",actorUuid:b.actorUuid})}await i.tp(a,"checking_resources");let f="in_progress"===e.status?await i._m(b.companyUuid,a):await i.sd({companyUuid:b.companyUuid,experimentUuid:a,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid});c.length>0&&await h.cx({companyUuid:b.companyUuid,experimentUuid:a,gpuUuids:c}),await i.tp(a,"running");let g=(await h.XH(b.companyUuid)).flatMap(a=>a.nodes).filter(a=>a.gpus.some(a=>c.includes(a.uuid))).map(a=>({uuid:a.uuid,label:a.label,access:p(a),gpus:a.gpus.filter(a=>c.includes(a.uuid))}));return{content:[{type:"text",text:JSON.stringify({experiment:f,nodes:g},null,2)}]}}),a.registerTool("synapse_sync_node_inventory",{description:"After logging into a machine, sync its instance metadata and GPU inventory back into Synapse.",inputSchema:e.Ikc({nodeUuid:e.YjP(),ec2InstanceId:e.YjP().optional(),instanceType:e.YjP().optional(),region:e.YjP().optional(),gpus:e.YOg(e.Ikc({slotIndex:e.aig().int().min(0),model:e.YjP(),memoryGb:e.aig().int().positive().optional()}))})},async({nodeUuid:a,ec2InstanceId:c,instanceType:d,region:e,gpus:f})=>{let g=await h.ut({companyUuid:b.companyUuid,nodeUuid:a,ec2InstanceId:c,instanceType:d,region:e,gpus:f});return{content:[{type:"text",text:JSON.stringify({uuid:g.uuid,ec2InstanceId:g.ec2InstanceId,instanceType:g.instanceType,region:g.region,gpus:g.gpus.map(a=>({uuid:a.uuid,slotIndex:a.slotIndex,model:a.model,memoryGb:a.memoryGb}))},null,2)}]}}),a.registerTool("synapse_reserve_gpus",{description:"Reserve one or more GPUs for an experiment. Reserved GPUs show as 'busy' and cannot be reserved by other experiments. GPUs are automatically released when the experiment is completed via synapse_submit_experiment_results.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID"),gpuUuids:e.YOg(e.YjP()).min(1).describe("List of GPU UUIDs to reserve")})},async({experimentUuid:a,gpuUuids:c})=>{try{let d=await h.cx({companyUuid:b.companyUuid,experimentUuid:a,gpuUuids:c});return{content:[{type:"text",text:JSON.stringify({success:!0,...d})}]}}catch(a){return{content:[{type:"text",text:`GPU reservation failed: ${a instanceof Error?a.message:String(a)}`}],isError:!0}}}),a.registerTool("synapse_report_gpu_status",{description:"Report the latest GPU lifecycle or telemetry after running a workload.",inputSchema:e.Ikc({nodeUuid:e.YjP(),gpus:e.YOg(e.Ikc({gpuUuid:e.YjP(),lifecycle:e.k5n(["available","offline","maintenance","unhealthy"]).optional(),utilizationPercent:e.aig().int().min(0).max(100).optional(),memoryUsedGb:e.aig().min(0).optional(),temperatureC:e.aig().int().min(0).optional(),notes:e.YjP().optional()}))})},async({nodeUuid:a,gpus:b})=>(await h.SU({nodeUuid:a,gpus:b}),{content:[{type:"text",text:JSON.stringify({success:!0,nodeUuid:a,updatedGpuCount:b.length},null,2)}]})),a.registerTool("synapse_submit_experiment_results",{description:"Submit experiment outcomes. Supports both legacy experiment runs and the new unified Experiment workflow.",inputSchema:e.Ikc({runUuid:e.YjP().optional(),experimentUuid:e.YjP().optional(),outcome:e.YjP().optional(),experimentResults:e.L5J().optional(),sessionUuid:e.YjP().optional(),experimentBranch:e.YjP().optional().describe("Git branch name where experiment code was pushed"),commitSha:e.YjP().optional().describe("Git commit SHA of the final experiment code")})},async({runUuid:a,experimentUuid:c,outcome:d,experimentResults:e,sessionUuid:k,experimentBranch:n,commitSha:o})=>{if(c){let a=await i._m(b.companyUuid,c);if(!a)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!q(a.assignee,b))return{content:[{type:"text",text:"Only the assigned agent can submit results"}],isError:!0};await h.LD(b.companyUuid,c);let g=await i.zX({companyUuid:b.companyUuid,experimentUuid:c,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,outcome:d,results:e,experimentBranch:n,commitSha:o});await i.tp(c,null,null);let j=await f.prisma.experiment.findMany({where:{companyUuid:b.companyUuid,liveStatus:"queuing",assigneeUuid:{not:null},assigneeType:{not:null}},select:{uuid:!0,title:!0,assigneeType:!0,assigneeUuid:!0,assignedByUuid:!0,researchProjectUuid:!0,researchProject:{select:{name:!0}},priority:!0,assignedAt:!0},orderBy:[{assignedAt:"asc"}]}),k={immediate:0,high:1,medium:2,low:3};for(let a of(j.sort((a,b)=>(k[a.priority]??3)-(k[b.priority]??3)),j))a.assigneeUuid&&a.assigneeType&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a.researchProjectUuid,recipientType:a.assigneeType,recipientUuid:a.assigneeUuid,entityType:"experiment",entityUuid:a.uuid,entityTitle:a.title,projectName:a.researchProject.name,action:"task_assigned",message:`GPUs released. Retrying: ${a.title}`,actorType:"agent",actorUuid:b.actorUuid,actorName:"Synapse"});return{content:[{type:"text",text:JSON.stringify({experiment:g,released:!0},null,2)}]}}if(!a)return{content:[{type:"text",text:"Either experimentUuid or runUuid is required"}],isError:!0};let p=await j.fo(b.companyUuid,a);if(!p)return{content:[{type:"text",text:"Experiment Run not found"}],isError:!0};if(p.assigneeUuid!==b.actorUuid)return{content:[{type:"text",text:"Only the assigned agent can submit results"}],isError:!0};let r=await j.ry(b.companyUuid,a,{outcome:d,experimentResults:e},{actorType:"agent",actorUuid:b.actorUuid});return await g.E1({companyUuid:b.companyUuid,researchProjectUuid:p.researchProjectUuid,targetType:"experiment_run",targetUuid:a,actorType:"agent",actorUuid:b.actorUuid,action:"submitted",value:{outcome:d??null},sessionUuid:k}),k&&await l.uE(b.companyUuid,k,a),{content:[{type:"text",text:JSON.stringify({run:r,released:!0},null,2)}]}}),a.registerTool("synapse_save_experiment_report",{description:"Create or update the dedicated experiment result document for a completed experiment.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID"),title:e.YjP().optional().describe("Optional report title"),content:e.YjP().describe("Full experiment report content (Markdown)")})},async({experimentUuid:a,title:c,content:d})=>{try{let e=await i.Ej({companyUuid:b.companyUuid,actorType:b.type,actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,experimentUuid:a,title:c??null,content:d});return{content:[{type:"text",text:JSON.stringify({document:e},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to save experiment report"}],isError:!0}}}),a.registerTool("synapse_record_experiment_incident_lesson",{description:"Record a reusable execution incident lesson for an experiment. Use this when an experiment fails, or when an agent hits a recoverable issue during execution and fixes it. Pair live execution updates with synapse_report_experiment_progress; this tool stores the reusable lesson for future search. Do not include raw secrets, full environment variables, private keys, or unredacted logs.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID"),title:e.YjP().describe("Short lesson title, e.g. 'CUDA OOM during reward model training'"),failureType:e.k5n(["code_bug","data_issue","compute_issue","auth_issue","environment","methodology","agent_error","other"]).describe("Incident category"),status:e.k5n(["resolved_in_run","unresolved","caused_failure"]).describe("Whether the incident was fixed during the run, remains unresolved, or caused final experiment failure"),severity:e.k5n(["low","medium","high"]).default("medium"),phase:e.YjP().optional().describe("Execution phase, e.g. data_prep, training, evaluation, compute, reporting"),symptom:e.YjP().describe("What went wrong, in concise factual terms"),rootCause:e.YjP().optional().describe("Best known root cause, if identified"),resolution:e.YjP().optional().describe("How the agent fixed or worked around it"),prevention:e.YjP().optional().describe("What future agents should do to avoid this issue"),evidenceSummary:e.YjP().optional().describe("Short redacted evidence summary; do not paste raw logs containing secrets"),experimentOutcomeImpact:e.k5n(["none","changed_config","invalidated_partial_results","increased_cost","caused_failure"]).optional().describe("How this incident affected the experiment outcome or reproducibility"),tags:e.YOg(e.YjP()).optional().describe("Searchable tags such as cuda, oom, ssh, dataset-schema")})},async a=>{try{let c=await n.bN({companyUuid:b.companyUuid,experimentUuid:a.experimentUuid,title:a.title,failureType:a.failureType,status:a.status,severity:a.severity,phase:a.phase??null,symptom:a.symptom,rootCause:a.rootCause??null,resolution:a.resolution??null,prevention:a.prevention??null,evidenceSummary:a.evidenceSummary??null,experimentOutcomeImpact:a.experimentOutcomeImpact??null,tags:a.tags,createdByUuid:b.actorUuid,createdByType:b.type});return{content:[{type:"text",text:JSON.stringify({lesson:c},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to record incident lesson"}],isError:!0}}}),a.registerTool("synapse_search_incident_lessons",{description:"Search reusable execution incident lessons for a research project before or during experiment work. Keyword/BM25 search uses Postgres full-text search with structured filters; semantic/hybrid modes are reserved for future embedding support.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),query:e.YjP().optional().describe("Keyword query, e.g. 'cuda oom batch size'"),failureType:e.k5n(["code_bug","data_issue","compute_issue","auth_issue","environment","methodology","agent_error","other"]).optional(),phase:e.YjP().optional(),status:e.k5n(["resolved_in_run","unresolved","caused_failure"]).optional(),severity:e.k5n(["low","medium","high"]).optional(),tags:e.YOg(e.YjP()).optional(),limit:e.aig().int().min(1).max(50).default(20),mode:e.k5n(["keyword","bm25","semantic","hybrid"]).default("keyword")})},async a=>{try{let c=await n.i_({companyUuid:b.companyUuid,researchProjectUuid:a.researchProjectUuid,query:a.query??null,failureType:a.failureType??null,phase:a.phase??null,status:a.status??null,severity:a.severity??null,tags:a.tags,limit:a.limit,mode:a.mode});return{content:[{type:"text",text:JSON.stringify(c,null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to search incident lessons"}],isError:!0}}}),a.registerTool("synapse_get_experiment_incident_lessons",{description:"List execution incident lessons recorded for a single experiment.",inputSchema:e.Ikc({experimentUuid:e.YjP().describe("Experiment UUID")})},async({experimentUuid:a})=>{try{let c=await n.hv({companyUuid:b.companyUuid,experimentUuid:a});return{content:[{type:"text",text:JSON.stringify({lessons:c},null,2)}]}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:"Failed to get incident lessons"}],isError:!0}}}),a.registerTool("synapse_report_experiment_progress",{description:"Report a progress update for an in-progress experiment. The message appears on the experiment card in real-time and is logged in the progress timeline.",inputSchema:e.Ikc({experimentUuid:e.YjP(),message:e.YjP().describe("Short status message, e.g. 'Training epoch 3/10, loss=0.42'"),phase:e.YjP().optional().describe("Optional phase label, e.g. 'data_download', 'training', 'evaluation'"),liveStatus:e.k5n(["queuing","checking_resources","running"]).optional().describe("Live status badge shown on the experiment card. Default: 'running'. Use 'queuing' when waiting for GPU resources.")})},async({experimentUuid:a,message:c,phase:d,liveStatus:e})=>{if("queuing"===e)return await i.tp(a,"queuing",c),{content:[{type:"text",text:JSON.stringify({success:!0,statusOnly:!0})}]};let g=await (0,k.e)({companyUuid:b.companyUuid,experimentUuid:a,message:c,phase:d,liveStatus:e,actorUuid:b.actorUuid});try{let d=await f.prisma.experiment.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,title:!0,createdByUuid:!0,researchProjectUuid:!0,researchProject:{select:{name:!0}}}});d&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:d.researchProjectUuid,recipientType:"user",recipientUuid:d.createdByUuid,entityType:"experiment",entityUuid:d.uuid,entityTitle:d.title,projectName:d.researchProject.name,action:"experiment_progress",message:c,actorType:b.type,actorUuid:b.actorUuid,actorName:"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({success:!0,logUuid:g.uuid})}]}}),a.registerTool("synapse_get_project_full_context",{description:"Get full research context for a project: brief, datasets, evaluation methods, all research questions, experiments with UUIDs and outcome summaries, related-work paper titles, document references, and compute availability. Use for autonomous research analysis.",inputSchema:e.Ikc({researchProjectUuid:e.YjP()})},async({researchProjectUuid:a})=>{let c=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,name:!0,description:!0,goal:!0,datasets:!0,evaluationMethods:!0,researchQuestions:{select:{uuid:!0,title:!0,content:!0,status:!0,reviewStatus:!0},orderBy:{createdAt:"asc"}},experiments:{select:{uuid:!0,title:!0,status:!0,priority:!0,outcome:!0,completedAt:!0,description:!0,results:!0},orderBy:{createdAt:"asc"}},relatedWorks:{select:{title:!0},orderBy:{createdAt:"desc"}},documents:{select:{uuid:!0,title:!0,type:!0,updatedAt:!0},orderBy:{updatedAt:"desc"}},_count:{select:{relatedWorks:!0}}}});if(!c)return{content:[{type:"text",text:"Project not found"}],isError:!0};let d=c.experiments.map(a=>({id:a.uuid,uuid:a.uuid,title:a.title,status:a.status,priority:a.priority,outcome:a.outcome,completedAt:a.completedAt,description:a.description?a.description.length>120?a.description.slice(0,120)+"...":a.description:null,resultSummary:a.results?String(a.results).length>150?String(a.results).slice(0,150)+"...":String(a.results):null})),e=c.relatedWorks.map(a=>a.title),g=c.documents.map(a=>({id:a.uuid,uuid:a.uuid,title:a.title,type:a.type,updatedAt:a.updatedAt})),i=await f.prisma.document.findFirst({where:{researchProjectUuid:a,companyUuid:b.companyUuid,type:"experiment_results_log"},select:{uuid:!0,title:!0,content:!0,updatedAt:!0}}),j=[];try{j=(await n.i_({companyUuid:b.companyUuid,researchProjectUuid:a,limit:6})).lessons.map(a=>({uuid:a.uuid,experimentUuid:a.experimentUuid,experimentTitle:a.experimentTitle,title:a.title,status:a.status,severity:a.severity,failureType:a.failureType,phase:a.phase,symptom:a.symptom,resolution:a.resolution,prevention:a.prevention,tags:a.tags}))}catch{}let k=null;try{let c=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{computePoolUuid:!0}}),d=await h.XH(b.companyUuid);c?.computePoolUuid&&(d=d.filter(a=>a.uuid===c.computePoolUuid));let e=d.flatMap(a=>a.nodes.flatMap(a=>a.gpus)),g=e.filter(a=>"available"===a.computedStatus&&!a.activeReservation),i=[...new Set(e.map(a=>a.model).filter(Boolean))];k={totalGpus:e.length,availableGpus:g.length,occupiedGpus:e.length-g.length,gpuModels:i}}catch{}let l=d.filter(a=>"in_progress"===a.status).length,m=d.filter(a=>"pending_start"===a.status).length;return{content:[{type:"text",text:JSON.stringify({project:{...c,experiments:d,relatedWorks:e,relatedWorksCount:c._count.relatedWorks,documents:g},resultsLog:i?{uuid:i.uuid,content:i.content,updatedAt:i.updatedAt}:null,recentIncidentLessons:j,relatedWorks:e,documents:g,computeAvailability:k,experimentQueue:{inProgress:l,pendingStart:m},_hint:"Experiment id and uuid fields are the same public UUID; pass either value as experimentUuid to synapse_get_experiment for full details. Document id and uuid fields are the same public UUID; pass either value as documentUuid to synapse_get_document for full content. Use synapse_get_related_works when paper metadata beyond titles is needed. Before starting or proposing experiments, inspect recentIncidentLessons and call synapse_search_incident_lessons for relevant execution lessons. When an experiment fails or a recoverable issue changes config, cost, partial results, or reproducibility, call synapse_record_experiment_incident_lesson. When proposing experiments, consider available compute resources — propose at most as many experiments as there are available GPUs, minus already queued/running experiments. Each experiment card must represent ONE independent run: split sweeps, ablations, repeated trials, and baseline-vs-variant comparisons into separate cards. Multi-phase cards are only acceptable when the phases are strictly sequential stages of a single run — never pack parallel or comparative runs together."},null,2)}]}}),a.registerTool("synapse_create_experiment",{description:"Create a new experiment outside the autonomous loop. Defaults to draft so the calling agent can run a self-review sub-agent against the new experiment, revise the plan if needed, then advance to pending_review with synapse_update_experiment_status. User-directed terminal flows on Claude Code follow this same draft → self-review → pending_review path before asking the user to approve.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),description:e.YjP(),researchQuestionUuid:e.YjP().optional(),priority:e.k5n(["low","medium","high","immediate"]).default("medium"),status:e.k5n(["draft","pending_review"]).default("draft")})},async({researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e,priority:g,status:h})=>{let j=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{uuid:!0,name:!0}});if(!j)return{content:[{type:"text",text:"Research project not found"}],isError:!0};if(e&&!await f.prisma.researchQuestion.findFirst({where:{uuid:e,companyUuid:b.companyUuid,researchProjectUuid:a},select:{uuid:!0}}))return{content:[{type:"text",text:"Research question not found in this project"}],isError:!0};let k=await i.Cl({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e||null,priority:g,status:h,createdByUuid:b.actorUuid,createdByType:"agent"});try{let d=await f.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});d?.ownerUuid&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:d.ownerUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:j.name,action:"experiment_created",message:"draft"===h?`Agent created draft experiment "${c}".`:`Agent created experiment "${c}" for review.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d.name??"Agent"})}catch{}let l="draft"===h?"Experiment created in draft. Continue refining it or move it to pending_review when ready.":"Experiment created in pending_review. Human review is required before execution.";return{content:[{type:"text",text:JSON.stringify({experiment:k,note:l},null,2)}]}}),a.registerTool("synapse_propose_experiment",{description:"Autonomous-loop only: propose one independent experiment run after reviewing project context, synthesis, and compute. Before calling this tool, the autonomous-loop main agent MUST spawn a sub-agent to self-review the proposal text (motivation, hypothesis, method, success criteria, compute fit). Self-review never persists to the database. Human Review mode creates 'pending_review'; Full Auto mode creates 'pending_start' and assigns it to you. For user-directed or terminal-created experiments outside autonomous loop, use synapse_create_experiment instead.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),description:e.YjP(),researchQuestionUuid:e.YjP().optional(),priority:e.k5n(["low","medium","high","immediate"]).default("medium")})},async({researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e,priority:g})=>{let h=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid,autonomousLoopEnabled:!0,autonomousLoopAgentUuid:b.actorUuid},select:{uuid:!0,name:!0,autonomousLoopEnabled:!0,autonomousLoopAgentUuid:!0,autonomousLoopMode:!0}});if(!h)return{content:[{type:"text",text:"synapse_propose_experiment is only available to the project's assigned autonomous-loop agent. For user-directed or terminal-created experiments, use synapse_create_experiment."}],isError:!0};if(e&&!await f.prisma.researchQuestion.findFirst({where:{uuid:e,companyUuid:b.companyUuid,researchProjectUuid:a},select:{uuid:!0}}))return{content:[{type:"text",text:"Research question not found in this project"}],isError:!0};let j="full_auto"===h.autonomousLoopMode,k=await i.Cl({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,description:d,researchQuestionUuid:e||null,priority:g,createdByUuid:b.actorUuid,createdByType:"agent",status:j?"pending_start":"pending_review",...j?{status:"pending_start",assigneeUuid:b.actorUuid,assigneeType:"agent",assignedByUuid:b.actorUuid,assignedAt:new Date}:{}});try{let d=await f.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});d?.ownerUuid&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:d.ownerUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:h.name,action:"experiment_auto_proposed",message:j?`Agent auto-proposed experiment "${c}" for immediate execution.`:`Agent proposed experiment "${c}" for review.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d.name??"Agent"}),j&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"agent",recipientUuid:b.actorUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:h.name,action:"task_assigned",message:`Experiment "${c}" auto-assigned for immediate execution.`,actorType:"agent",actorUuid:b.actorUuid,actorName:d?.name??"Agent"})}catch{}return{content:[{type:"text",text:JSON.stringify({experiment:k,note:j?"Experiment created in pending_start (Full Auto mode). Ready for immediate execution.":"Experiment created in pending_review. Human review required before execution."},null,2)}]}}),a.registerTool("synapse_update_experiment_status",{description:"Update an assigned experiment's workflow status during planning or revision. Use this to move an experiment into draft while revising, then send it back to pending_review or pending_start. For execution, keep using synapse_start_experiment and synapse_submit_experiment_results.",inputSchema:e.Ikc({experimentUuid:e.YjP(),status:e.k5n(["draft","pending_review","pending_start"]),liveStatus:e.k5n(["sent","ack","writing","checking_resources","queuing","running"]).nullable().optional().describe("Optional live badge override. Draft defaults to running; pending_review/pending_start default to cleared. Use 'writing' while drafting a plan."),liveMessage:e.YjP().nullable().optional().describe("Optional short status text shown on the experiment card.")})},async({experimentUuid:a,status:c,liveStatus:d,liveMessage:e})=>{let f=await i._m(b.companyUuid,a);if(!f)return{content:[{type:"text",text:"Experiment not found"}],isError:!0};if(!q(f.assignee,b))return{content:[{type:"text",text:"Experiment is assigned to another actor"}],isError:!0};let g=await i.C6({companyUuid:b.companyUuid,experimentUuid:a,status:c,actorType:"agent",actorUuid:b.actorUuid,ownerUuid:b.ownerUuid,liveStatus:d,liveMessage:e});return{content:[{type:"text",text:JSON.stringify({experiment:g},null,2)}]}}),a.registerTool("synapse_update_experiment_plan",{description:"Update an experiment's plan/details. Use this when asked to flesh out an experiment plan from a brief description. You can update title, description/plan, research question link, and priority. Either `description` or `plan` is accepted; if both are provided, `description` wins.",inputSchema:e.Ikc({experimentUuid:e.YjP(),title:e.YjP().optional(),description:e.YjP().optional().describe("Detailed experiment plan/methodology"),plan:e.YjP().optional().describe("Alias for description."),researchQuestionUuid:e.YjP().optional().describe("Link to a research question"),priority:e.k5n(["low","medium","high","immediate"]).optional()})},async({experimentUuid:a,title:c,description:d,plan:e,researchQuestionUuid:f,priority:g})=>{if(!await i._m(b.companyUuid,a))return{content:[{type:"text",text:"Experiment not found"}],isError:!0};let h=d??e,j={};if(void 0!==c&&(j.title=c),void 0!==h&&(j.description=h),void 0!==f&&(j.researchQuestionUuid=f||null),void 0!==g&&(j.priority=g),0===Object.keys(j).length)return{content:[{type:"text",text:"No fields to update (provide at least one of title, description/plan, researchQuestionUuid, priority)"}],isError:!0};let k=await i.t3(b.companyUuid,a,j,{actorType:"agent",actorUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify({experiment:k},null,2)}]}}),a.registerTool("synapse_get_repo_access",{description:"Get GitHub repository credentials for a research project. Returns repoUrl, username, token, and the experiment's base branch. Token is for cloning/pushing.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),experimentUuid:e.YjP().optional().describe("If provided, returns the experiment's baseBranch")})},async({researchProjectUuid:a,experimentUuid:c})=>{let d=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{repoUrl:!0,githubUsername:!0,githubToken:!0}});if(!d?.repoUrl||!d?.githubToken)return{content:[{type:"text",text:JSON.stringify({configured:!1})}]};let e=null;if(c){let a=await f.prisma.experiment.findFirst({where:{uuid:c,companyUuid:b.companyUuid},select:{baseBranch:!0}});e=a?.baseBranch??null}return{content:[{type:"text",text:JSON.stringify({configured:!0,repoUrl:d.repoUrl,githubUsername:d.githubUsername,githubToken:d.githubToken,baseBranch:e})}]}})}[f,g,h,i,j,k,l,m,n]=o.then?(await o)():o,d()}catch(a){d(a)}})},74489:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.or=b.and=b.not=b.CodeGen=b.operators=b.varKinds=b.ValueScopeName=b.ValueScope=b.Scope=b.Name=b.regexpCode=b.stringify=b.getProperty=b.nil=b.strConcat=b.str=b._=void 0;let d=c(86684),e=c(40001);var f=c(86684);Object.defineProperty(b,"_",{enumerable:!0,get:function(){return f._}}),Object.defineProperty(b,"str",{enumerable:!0,get:function(){return f.str}}),Object.defineProperty(b,"strConcat",{enumerable:!0,get:function(){return f.strConcat}}),Object.defineProperty(b,"nil",{enumerable:!0,get:function(){return f.nil}}),Object.defineProperty(b,"getProperty",{enumerable:!0,get:function(){return f.getProperty}}),Object.defineProperty(b,"stringify",{enumerable:!0,get:function(){return f.stringify}}),Object.defineProperty(b,"regexpCode",{enumerable:!0,get:function(){return f.regexpCode}}),Object.defineProperty(b,"Name",{enumerable:!0,get:function(){return f.Name}});var g=c(40001);Object.defineProperty(b,"Scope",{enumerable:!0,get:function(){return g.Scope}}),Object.defineProperty(b,"ValueScope",{enumerable:!0,get:function(){return g.ValueScope}}),Object.defineProperty(b,"ValueScopeName",{enumerable:!0,get:function(){return g.ValueScopeName}}),Object.defineProperty(b,"varKinds",{enumerable:!0,get:function(){return g.varKinds}}),b.operators={GT:new d._Code(">"),GTE:new d._Code(">="),LT:new d._Code("<"),LTE:new d._Code("<="),EQ:new d._Code("==="),NEQ:new d._Code("!=="),NOT:new d._Code("!"),OR:new d._Code("||"),AND:new d._Code("&&"),ADD:new d._Code("+")};class h{optimizeNodes(){return this}optimizeNames(a,b){return this}}class i extends h{constructor(a,b,c){super(),this.varKind=a,this.name=b,this.rhs=c}render({es5:a,_n:b}){let c=a?e.varKinds.var:this.varKind,d=void 0===this.rhs?"":` = ${this.rhs}`;return`${c} ${this.name}${d};`+b}optimizeNames(a,b){if(a[this.name.str])return this.rhs&&(this.rhs=G(this.rhs,a,b)),this}get names(){return this.rhs instanceof d._CodeOrName?this.rhs.names:{}}}class j extends h{constructor(a,b,c){super(),this.lhs=a,this.rhs=b,this.sideEffects=c}render({_n:a}){return`${this.lhs} = ${this.rhs};`+a}optimizeNames(a,b){if(!(this.lhs instanceof d.Name)||a[this.lhs.str]||this.sideEffects)return this.rhs=G(this.rhs,a,b),this}get names(){return F(this.lhs instanceof d.Name?{}:{...this.lhs.names},this.rhs)}}class k extends j{constructor(a,b,c,d){super(a,c,d),this.op=b}render({_n:a}){return`${this.lhs} ${this.op}= ${this.rhs};`+a}}class l extends h{constructor(a){super(),this.label=a,this.names={}}render({_n:a}){return`${this.label}:`+a}}class m extends h{constructor(a){super(),this.label=a,this.names={}}render({_n:a}){let b=this.label?` ${this.label}`:"";return`break${b};`+a}}class n extends h{constructor(a){super(),this.error=a}render({_n:a}){return`throw ${this.error};`+a}get names(){return this.error.names}}class o extends h{constructor(a){super(),this.code=a}render({_n:a}){return`${this.code};`+a}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(a,b){return this.code=G(this.code,a,b),this}get names(){return this.code instanceof d._CodeOrName?this.code.names:{}}}class p extends h{constructor(a=[]){super(),this.nodes=a}render(a){return this.nodes.reduce((b,c)=>b+c.render(a),"")}optimizeNodes(){let{nodes:a}=this,b=a.length;for(;b--;){let c=a[b].optimizeNodes();Array.isArray(c)?a.splice(b,1,...c):c?a[b]=c:a.splice(b,1)}return a.length>0?this:void 0}optimizeNames(a,b){let{nodes:c}=this,d=c.length;for(;d--;){let e=c[d];e.optimizeNames(a,b)||(function(a,b){for(let c in b)a[c]=(a[c]||0)-(b[c]||0)}(a,e.names),c.splice(d,1))}return c.length>0?this:void 0}get names(){return this.nodes.reduce((a,b)=>E(a,b.names),{})}}class q extends p{render(a){return"{"+a._n+super.render(a)+"}"+a._n}}class r extends p{}class s extends q{}s.kind="else";class t extends q{constructor(a,b){super(b),this.condition=a}render(a){let b=`if(${this.condition})`+super.render(a);return this.else&&(b+="else "+this.else.render(a)),b}optimizeNodes(){super.optimizeNodes();let a=this.condition;if(!0===a)return this.nodes;let b=this.else;if(b){let a=b.optimizeNodes();b=this.else=Array.isArray(a)?new s(a):a}return b?!1===a?b instanceof t?b:b.nodes:this.nodes.length?this:new t(H(a),b instanceof t?[b]:b.nodes):!1!==a&&this.nodes.length?this:void 0}optimizeNames(a,b){var c;if(this.else=null==(c=this.else)?void 0:c.optimizeNames(a,b),super.optimizeNames(a,b)||this.else)return this.condition=G(this.condition,a,b),this}get names(){let a=super.names;return F(a,this.condition),this.else&&E(a,this.else.names),a}}t.kind="if";class u extends q{}u.kind="for";class v extends u{constructor(a){super(),this.iteration=a}render(a){return`for(${this.iteration})`+super.render(a)}optimizeNames(a,b){if(super.optimizeNames(a,b))return this.iteration=G(this.iteration,a,b),this}get names(){return E(super.names,this.iteration.names)}}class w extends u{constructor(a,b,c,d){super(),this.varKind=a,this.name=b,this.from=c,this.to=d}render(a){let b=a.es5?e.varKinds.var:this.varKind,{name:c,from:d,to:f}=this;return`for(${b} ${c}=${d}; ${c}<${f}; ${c}++)`+super.render(a)}get names(){let a=F(super.names,this.from);return F(a,this.to)}}class x extends u{constructor(a,b,c,d){super(),this.loop=a,this.varKind=b,this.name=c,this.iterable=d}render(a){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(a)}optimizeNames(a,b){if(super.optimizeNames(a,b))return this.iterable=G(this.iterable,a,b),this}get names(){return E(super.names,this.iterable.names)}}class y extends q{constructor(a,b,c){super(),this.name=a,this.args=b,this.async=c}render(a){let b=this.async?"async ":"";return`${b}function ${this.name}(${this.args})`+super.render(a)}}y.kind="func";class z extends p{render(a){return"return "+super.render(a)}}z.kind="return";class A extends q{render(a){let b="try"+super.render(a);return this.catch&&(b+=this.catch.render(a)),this.finally&&(b+=this.finally.render(a)),b}optimizeNodes(){var a,b;return super.optimizeNodes(),null==(a=this.catch)||a.optimizeNodes(),null==(b=this.finally)||b.optimizeNodes(),this}optimizeNames(a,b){var c,d;return super.optimizeNames(a,b),null==(c=this.catch)||c.optimizeNames(a,b),null==(d=this.finally)||d.optimizeNames(a,b),this}get names(){let a=super.names;return this.catch&&E(a,this.catch.names),this.finally&&E(a,this.finally.names),a}}class B extends q{constructor(a){super(),this.error=a}render(a){return`catch(${this.error})`+super.render(a)}}B.kind="catch";class C extends q{render(a){return"finally"+super.render(a)}}C.kind="finally";class D{constructor(a,b={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...b,_n:b.lines?"\n":""},this._extScope=a,this._scope=new e.Scope({parent:a}),this._nodes=[new r]}toString(){return this._root.render(this.opts)}name(a){return this._scope.name(a)}scopeName(a){return this._extScope.name(a)}scopeValue(a,b){let c=this._extScope.value(a,b);return(this._values[c.prefix]||(this._values[c.prefix]=new Set)).add(c),c}getScopeValue(a,b){return this._extScope.getValue(a,b)}scopeRefs(a){return this._extScope.scopeRefs(a,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(a,b,c,d){let e=this._scope.toName(b);return void 0!==c&&d&&(this._constants[e.str]=c),this._leafNode(new i(a,e,c)),e}const(a,b,c){return this._def(e.varKinds.const,a,b,c)}let(a,b,c){return this._def(e.varKinds.let,a,b,c)}var(a,b,c){return this._def(e.varKinds.var,a,b,c)}assign(a,b,c){return this._leafNode(new j(a,b,c))}add(a,c){return this._leafNode(new k(a,b.operators.ADD,c))}code(a){return"function"==typeof a?a():a!==d.nil&&this._leafNode(new o(a)),this}object(...a){let b=["{"];for(let[c,e]of a)b.length>1&&b.push(","),b.push(c),(c!==e||this.opts.es5)&&(b.push(":"),(0,d.addCodeArg)(b,e));return b.push("}"),new d._Code(b)}if(a,b,c){if(this._blockNode(new t(a)),b&&c)this.code(b).else().code(c).endIf();else if(b)this.code(b).endIf();else if(c)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(a){return this._elseNode(new t(a))}else(){return this._elseNode(new s)}endIf(){return this._endBlockNode(t,s)}_for(a,b){return this._blockNode(a),b&&this.code(b).endFor(),this}for(a,b){return this._for(new v(a),b)}forRange(a,b,c,d,f=this.opts.es5?e.varKinds.var:e.varKinds.let){let g=this._scope.toName(a);return this._for(new w(f,g,b,c),()=>d(g))}forOf(a,b,c,f=e.varKinds.const){let g=this._scope.toName(a);if(this.opts.es5){let a=b instanceof d.Name?b:this.var("_arr",b);return this.forRange("_i",0,(0,d._)`${a}.length`,b=>{this.var(g,(0,d._)`${a}[${b}]`),c(g)})}return this._for(new x("of",f,g,b),()=>c(g))}forIn(a,b,c,f=this.opts.es5?e.varKinds.var:e.varKinds.const){if(this.opts.ownProperties)return this.forOf(a,(0,d._)`Object.keys(${b})`,c);let g=this._scope.toName(a);return this._for(new x("in",f,g,b),()=>c(g))}endFor(){return this._endBlockNode(u)}label(a){return this._leafNode(new l(a))}break(a){return this._leafNode(new m(a))}return(a){let b=new z;if(this._blockNode(b),this.code(a),1!==b.nodes.length)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(z)}try(a,b,c){if(!b&&!c)throw Error('CodeGen: "try" without "catch" and "finally"');let d=new A;if(this._blockNode(d),this.code(a),b){let a=this.name("e");this._currNode=d.catch=new B(a),b(a)}return c&&(this._currNode=d.finally=new C,this.code(c)),this._endBlockNode(B,C)}throw(a){return this._leafNode(new n(a))}block(a,b){return this._blockStarts.push(this._nodes.length),a&&this.code(a).endBlock(b),this}endBlock(a){let b=this._blockStarts.pop();if(void 0===b)throw Error("CodeGen: not in self-balancing block");let c=this._nodes.length-b;if(c<0||void 0!==a&&c!==a)throw Error(`CodeGen: wrong number of nodes: ${c} vs ${a} expected`);return this._nodes.length=b,this}func(a,b=d.nil,c,e){return this._blockNode(new y(a,b,c)),e&&this.code(e).endFunc(),this}endFunc(){return this._endBlockNode(y)}optimize(a=1){for(;a-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(a){return this._currNode.nodes.push(a),this}_blockNode(a){this._currNode.nodes.push(a),this._nodes.push(a)}_endBlockNode(a,b){let c=this._currNode;if(c instanceof a||b&&c instanceof b)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${b?`${a.kind}/${b.kind}`:a.kind}"`)}_elseNode(a){let b=this._currNode;if(!(b instanceof t))throw Error('CodeGen: "else" without "if"');return this._currNode=b.else=a,this}get _root(){return this._nodes[0]}get _currNode(){let a=this._nodes;return a[a.length-1]}set _currNode(a){let b=this._nodes;b[b.length-1]=a}}function E(a,b){for(let c in b)a[c]=(a[c]||0)+(b[c]||0);return a}function F(a,b){return b instanceof d._CodeOrName?E(a,b.names):a}function G(a,b,c){var e;if(a instanceof d.Name)return f(a);if(!((e=a)instanceof d._Code&&e._items.some(a=>a instanceof d.Name&&1===b[a.str]&&void 0!==c[a.str])))return a;return new d._Code(a._items.reduce((a,b)=>(b instanceof d.Name&&(b=f(b)),b instanceof d._Code?a.push(...b._items):a.push(b),a),[]));function f(a){let d=c[a.str];return void 0===d||1!==b[a.str]?a:(delete b[a.str],d)}}function H(a){return"boolean"==typeof a||"number"==typeof a||null===a?!a:(0,d._)`!${L(a)}`}b.CodeGen=D,b.not=H;let I=K(b.operators.AND);b.and=function(...a){return a.reduce(I)};let J=K(b.operators.OR);function K(a){return(b,c)=>b===d.nil?c:c===d.nil?b:(0,d._)`${L(b)} ${a} ${L(c)}`}function L(a){return a instanceof d.Name?a:(0,d._)`(${a})`}b.or=function(...a){return a.reduce(J)}},74909:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateAdditionalItems=void 0;let d=c(74489),e=c(23235);function f(a,b){let{gen:c,schema:f,data:g,keyword:h,it:i}=a;i.items=!0;let j=c.const("len",(0,d._)`${g}.length`);if(!1===f)a.setParams({len:b.length}),a.pass((0,d._)`${j} <= ${b.length}`);else if("object"==typeof f&&!(0,e.alwaysValidSchema)(i,f)){let f=c.var("valid",(0,d._)`${j} <= ${b.length}`);c.if((0,d.not)(f),()=>{var g;return g=f,void c.forRange("i",b.length,j,b=>{a.subschema({keyword:h,dataProp:b,dataPropType:e.Type.Num},g),i.allErrors||c.if((0,d.not)(g),()=>c.break())})}),a.ok(f)}}b.validateAdditionalItems=f,b.default={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:a}})=>(0,d.str)`must NOT have more than ${a} items`,params:({params:{len:a}})=>(0,d._)`{limit: ${a}}`},code(a){let{parentSchema:b,it:c}=a,{items:d}=b;if(!Array.isArray(d))return void(0,e.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');f(a,d)}}},75811:a=>{a.exports=import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs")},75925:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:a})=>(0,d.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,d._)`{format: ${a}}`},code(a,b){let{gen:c,data:e,$data:f,schema:g,schemaCode:h,it:i}=a,{opts:j,errSchemaPath:k,schemaEnv:l,self:m}=i;j.validateFormats&&(f?function(){let f=c.scopeValue("formats",{ref:m.formats,code:j.code.formats}),g=c.const("fDef",(0,d._)`${f}[${h}]`),i=c.let("fType"),k=c.let("format");c.if((0,d._)`typeof ${g} == "object" && !(${g} instanceof RegExp)`,()=>c.assign(i,(0,d._)`${g}.type || "string"`).assign(k,(0,d._)`${g}.validate`),()=>c.assign(i,(0,d._)`"string"`).assign(k,g)),a.fail$data((0,d.or)(!1===j.strictSchema?d.nil:(0,d._)`${h} && !${k}`,function(){let a=l.$async?(0,d._)`(${g}.async ? await ${k}(${e}) : ${k}(${e}))`:(0,d._)`${k}(${e})`,c=(0,d._)`(typeof ${k} == "function" ? ${a} : ${k}.test(${e}))`;return(0,d._)`${k} && ${k} !== true && ${i} === ${b} && !${c}`}()))}():function(){let f=m.formats[g];if(!f){if(!1===j.strictSchema)return m.logger.warn(h());throw Error(h());function h(){return`unknown format "${g}" ignored in schema at path "${k}"`}}if(!0===f)return;let[i,n,o]=function(a){let b=a instanceof RegExp?(0,d.regexpCode)(a):j.code.formats?(0,d._)`${j.code.formats}${(0,d.getProperty)(g)}`:void 0,e=c.scopeValue("formats",{key:g,ref:a,code:b});return"object"!=typeof a||a instanceof RegExp?["string",a,e]:[a.type||"string",a.validate,(0,d._)`${e}.validate`]}(f);i===b&&a.pass(function(){if("object"==typeof f&&!(f instanceof RegExp)&&f.async){if(!l.$async)throw Error("async format in sync schema");return(0,d._)`await ${o}(${e})`}return"function"==typeof n?(0,d._)`${o}(${e})`:(0,d._)`${o}.test(${e})`}())}())}}},76760:a=>{a.exports=require("node:path")},77064:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ht:()=>k,Vu:()=>m,Xo:()=>l,Zi:()=>p,aQ:()=>q,jw:()=>j,kk:()=>o,uE:()=>n});var e=c(52618),f=c(911),g=c(46499),h=a([e,g]);function i(a){return{uuid:a.uuid,agentUuid:a.agentUuid,name:a.name,description:a.description,status:a.status,lastActiveAt:a.lastActiveAt.toISOString(),expiresAt:a.expiresAt?.toISOString()??null,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString(),checkins:(a.runCheckins||[]).map(a=>({runUuid:a.runUuid,checkinAt:a.checkinAt.toISOString(),checkoutAt:a.checkoutAt?.toISOString()??null}))}}async function j(a){let b=await e.prisma.agentSession.create({data:{companyUuid:a.companyUuid,agentUuid:a.agentUuid,name:a.name,description:a.description??null,status:"active",expiresAt:a.expiresAt??null}});return f.B.emitChange({companyUuid:a.companyUuid,researchProjectUuid:"",entityType:"agent_session",entityUuid:b.uuid,action:"created",actorUuid:a.agentUuid}),i(b)}async function k(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});return c?i(c):null}async function l(a,b,c){return(await e.prisma.agentSession.findMany({where:{companyUuid:a,agentUuid:b,...c&&{status:c}},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}},orderBy:{createdAt:"desc"}})).map(i)}async function m(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");let d=await e.prisma.sessionRunCheckin.findMany({where:{sessionUuid:b,checkoutAt:null},select:{run:{select:{uuid:!0,researchProjectUuid:!0}}}});await e.prisma.sessionRunCheckin.updateMany({where:{sessionUuid:b,checkoutAt:null},data:{checkoutAt:new Date}});let g=await e.prisma.agentSession.update({where:{uuid:b},data:{status:"closed"},include:{runCheckins:{select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});for(let a of d)f.B.emitChange({companyUuid:c.companyUuid,researchProjectUuid:a.run.researchProjectUuid,entityType:"experiment_run",entityUuid:a.run.uuid,action:"updated"});return i(g)}async function n(a,b,c){if(!await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}}))throw Error("Session not found");let d=await e.prisma.experimentRun.findFirst({where:{uuid:c,companyUuid:a},select:{researchProjectUuid:!0}});await e.prisma.sessionRunCheckin.updateMany({where:{sessionUuid:b,runUuid:c,checkoutAt:null},data:{checkoutAt:new Date}}),d&&f.B.emitChange({companyUuid:a,researchProjectUuid:d.researchProjectUuid,entityType:"experiment_run",entityUuid:c,action:"updated"})}async function o(a,b){return(await e.prisma.sessionRunCheckin.findMany({where:{runUuid:b,checkoutAt:null,session:{companyUuid:a,status:{in:["active","inactive"]}}},include:{session:{select:{uuid:!0,name:!0,agentUuid:!0,agent:{select:{name:!0}}}}}})).map(a=>({sessionUuid:a.session.uuid,sessionName:a.session.name,agentUuid:a.session.agentUuid,agentName:a.session.agent.name,checkinAt:a.checkinAt.toISOString()}))}async function p(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");await e.prisma.agentSession.update({where:{uuid:b},data:{lastActiveAt:new Date,..."inactive"===c.status&&{status:"active"}}})}async function q(a,b){let c=await e.prisma.agentSession.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Session not found");if("closed"!==c.status)throw Error("Only closed sessions can be reopened");let d=await e.prisma.agentSession.update({where:{uuid:b},data:{status:"active",lastActiveAt:new Date},include:{runCheckins:{where:{checkoutAt:null},select:{runUuid:!0,checkinAt:!0,checkoutAt:!0}}}});return i(d)}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},77201:(a,b,c)=>{let{normalizeIPv6:d,removeDotSegments:e,recomposeAuthority:f,normalizeComponentEncoding:g,isIPv4:h,nonSimpleDomain:i}=c(73652),{SCHEMES:j,getSchemeHandler:k}=c(2633);function l(a,b,c,d){let f={};return d||(a=o(m(a,c),c),b=o(m(b,c),c)),!(c=c||{}).tolerant&&b.scheme?(f.scheme=b.scheme,f.userinfo=b.userinfo,f.host=b.host,f.port=b.port,f.path=e(b.path||""),f.query=b.query):(void 0!==b.userinfo||void 0!==b.host||void 0!==b.port?(f.userinfo=b.userinfo,f.host=b.host,f.port=b.port,f.path=e(b.path||""),f.query=b.query):(b.path?("/"===b.path[0]?f.path=e(b.path):(void 0===a.userinfo&&void 0===a.host&&void 0===a.port||a.path?a.path?f.path=a.path.slice(0,a.path.lastIndexOf("/")+1)+b.path:f.path=b.path:f.path="/"+b.path,f.path=e(f.path)),f.query=b.query):(f.path=a.path,void 0!==b.query?f.query=b.query:f.query=a.query),f.userinfo=a.userinfo,f.host=a.host,f.port=a.port),f.scheme=a.scheme),f.fragment=b.fragment,f}function m(a,b){let c={host:a.host,scheme:a.scheme,userinfo:a.userinfo,port:a.port,path:a.path,query:a.query,nid:a.nid,nss:a.nss,uuid:a.uuid,fragment:a.fragment,reference:a.reference,resourceName:a.resourceName,secure:a.secure,error:""},d=Object.assign({},b),g=[],h=k(d.scheme||c.scheme);h&&h.serialize&&h.serialize(c,d),void 0!==c.path&&(d.skipEscape?c.path=unescape(c.path):(c.path=escape(c.path),void 0!==c.scheme&&(c.path=c.path.split("%3A").join(":")))),"suffix"!==d.reference&&c.scheme&&g.push(c.scheme,":");let i=f(c);if(void 0!==i&&("suffix"!==d.reference&&g.push("//"),g.push(i),c.path&&"/"!==c.path[0]&&g.push("/")),void 0!==c.path){let a=c.path;d.absolutePath||h&&h.absolutePath||(a=e(a)),void 0===i&&"/"===a[0]&&"/"===a[1]&&(a="/%2F"+a.slice(2)),g.push(a)}return void 0!==c.query&&g.push("?",c.query),void 0!==c.fragment&&g.push("#",c.fragment),g.join("")}let n=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function o(a,b){let c=Object.assign({},b),e={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},f=!1;"suffix"===c.reference&&(a=c.scheme?c.scheme+":"+a:"//"+a);let g=a.match(n);if(g){if(e.scheme=g[1],e.userinfo=g[3],e.host=g[4],e.port=parseInt(g[5],10),e.path=g[6]||"",e.query=g[7],e.fragment=g[8],isNaN(e.port)&&(e.port=g[5]),e.host)if(!1===h(e.host)){let a=d(e.host);e.host=a.host.toLowerCase(),f=a.isIPV6}else f=!0;void 0!==e.scheme||void 0!==e.userinfo||void 0!==e.host||void 0!==e.port||void 0!==e.query||e.path?void 0===e.scheme?e.reference="relative":void 0===e.fragment?e.reference="absolute":e.reference="uri":e.reference="same-document",c.reference&&"suffix"!==c.reference&&c.reference!==e.reference&&(e.error=e.error||"URI is not a "+c.reference+" reference.");let b=k(c.scheme||e.scheme);if(!c.unicodeSupport&&(!b||!b.unicodeSupport)&&e.host&&(c.domainHost||b&&b.domainHost)&&!1===f&&i(e.host))try{e.host=URL.domainToASCII(e.host.toLowerCase())}catch(a){e.error=e.error||"Host's domain name can not be converted to ASCII: "+a}(!b||b&&!b.skipNormalize)&&(-1!==a.indexOf("%")&&(void 0!==e.scheme&&(e.scheme=unescape(e.scheme)),void 0!==e.host&&(e.host=unescape(e.host))),e.path&&(e.path=escape(unescape(e.path))),e.fragment&&(e.fragment=encodeURI(decodeURIComponent(e.fragment)))),b&&b.parse&&b.parse(e,c)}else e.error=e.error||"URI can not be parsed.";return e}let p={SCHEMES:j,normalize:function(a,b){return"string"==typeof a?a=m(o(a,b),b):"object"==typeof a&&(a=o(m(a,b),b)),a},resolve:function(a,b,c){let d=c?Object.assign({scheme:"null"},c):{scheme:"null"},e=l(o(a,d),o(b,d),d,!0);return d.skipEscape=!0,m(e,d)},resolveComponent:l,equal:function(a,b,c){return"string"==typeof a?a=m(g(o(a=unescape(a),c),!0),{...c,skipEscape:!0}):"object"==typeof a&&(a=m(g(a,!0),{...c,skipEscape:!0})),"string"==typeof b?b=m(g(o(b=unescape(b),c),!0),{...c,skipEscape:!0}):"object"==typeof b&&(b=m(g(b,!0),{...c,skipEscape:!0})),a.toLowerCase()===b.toLowerCase()},serialize:m,parse:o};a.exports=p,a.exports.default=p,a.exports.fastUri=p},77548:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(77201);d.code='require("ajv/dist/runtime/uri").default',b.default=d},77598:a=>{a.exports=require("node:crypto")},78226:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(80142);b.default={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:a=>(0,d.validateTuple)(a,"items")}},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},80142:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateTuple=void 0;let d=c(74489),e=c(23235),f=c(41033);function g(a,b,c=a.schema){let{gen:f,parentSchema:h,data:i,keyword:j,it:k}=a;(function(a){let{opts:d,errSchemaPath:f}=k,g=c.length,h=g===a.minItems&&(g===a.maxItems||!1===a[b]);if(d.strictTuples&&!h){let a=`"${j}" is ${g}-tuple, but minItems or maxItems/${b} are not specified or different at path "${f}"`;(0,e.checkStrictMode)(k,a,d.strictTuples)}})(h),k.opts.unevaluated&&c.length&&!0!==k.items&&(k.items=e.mergeEvaluated.items(f,c.length,k.items));let l=f.name("valid"),m=f.const("len",(0,d._)`${i}.length`);c.forEach((b,c)=>{(0,e.alwaysValidSchema)(k,b)||(f.if((0,d._)`${m} > ${c}`,()=>a.subschema({keyword:j,schemaProp:c,dataProp:c},l)),a.ok(l))})}b.validateTuple=g,b.default={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(a){let{schema:b,it:c}=a;if(Array.isArray(b))return g(a,"additionalItems",b);c.items=!0,(0,e.alwaysValidSchema)(c,b)||a.ok((0,f.validateArray)(a))}}},82374:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{bN:()=>n,hv:()=>p,i_:()=>o});var e=c(52618),f=c(911),g=a([e]);e=(g.then?(await g)():g)[0];let q="execution_incident_lessons";function h(a){return a?[...new Set(a.map(a=>a.trim()).filter(Boolean))].slice(0,20):[]}function i(a){return a instanceof Date?a.toISOString():new Date(a).toISOString()}function j(a){var b;return{uuid:a.uuid,researchProjectUuid:a.researchProjectUuid,experimentUuid:a.experimentUuid,experimentTitle:a.experiment?.title??a.experimentTitle??null,phase:a.phase??null,severity:a.severity,status:a.status,failureType:a.failureType,title:a.title,symptom:a.symptom,rootCause:a.rootCause??null,resolution:a.resolution??null,prevention:a.prevention??null,evidenceSummary:a.evidenceSummary??null,experimentOutcomeImpact:a.experimentOutcomeImpact??null,tags:(b=a.tags,Array.isArray(b)?b.filter(a=>"string"==typeof a):[]),createdByUuid:a.createdByUuid,createdByType:a.createdByType,createdAt:i(a.createdAt),updatedAt:i(a.updatedAt),...void 0!==a.rank?{rank:Number(a.rank)}:{}}}function k(a){return a&&a.trim()?a.trim():"-"}async function l(a,b){let c=await e.prisma.experiment.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0,title:!0,researchProjectUuid:!0,companyUuid:!0}});if(!c)throw Error("Experiment not found");return c}async function m(a,b){let[c,d,f]=await Promise.all([e.prisma.researchProject.findFirst({where:{uuid:b,companyUuid:a},select:{name:!0}}),e.prisma.experimentIncidentLesson.findMany({where:{companyUuid:a,researchProjectUuid:b},include:{experiment:{select:{uuid:!0,title:!0}}},orderBy:[{updatedAt:"desc"},{createdAt:"desc"}]}),e.prisma.document.findFirst({where:{companyUuid:a,researchProjectUuid:b,type:q},select:{uuid:!0}})]),g=c?.name??"Project",h=function(a,b){let c=b.map(a=>{let b=a.tags.length?a.tags.join(", "):"-";return`## ${a.title}
33
+
34
+ <!-- synapse:incident-lesson:${a.uuid} experiment:${a.experimentUuid} -->
35
+
36
+ - Experiment: ${k(a.experimentTitle)} (${a.experimentUuid})
37
+ - Status: ${a.status}
38
+ - Severity: ${a.severity}
39
+ - Phase: ${k(a.phase)}
40
+ - Type: ${a.failureType}
41
+ - Impact: ${k(a.experimentOutcomeImpact)}
42
+ - Symptom: ${k(a.symptom)}
43
+ - Root cause: ${k(a.rootCause)}
44
+ - Resolution: ${k(a.resolution)}
45
+ - Prevention: ${k(a.prevention)}
46
+ - Evidence: ${k(a.evidenceSummary)}
47
+ - Tags: ${b}`});return[`# ${a} - Execution Incident Lessons`,"","Recoverable incidents, unresolved execution issues, and failure lessons captured during experiment work.","",...c].join("\n")}(g,d.map(j));return f?(await e.prisma.document.update({where:{uuid:f.uuid},data:{content:h,title:`${g} - Execution Incident Lessons`,updatedAt:new Date}}),f.uuid):(await e.prisma.document.create({data:{companyUuid:a,researchProjectUuid:b,title:`${g} - Execution Incident Lessons`,type:q,content:h,createdByUuid:"system"},select:{uuid:!0}})).uuid}async function n(a){let b=await l(a.companyUuid,a.experimentUuid),c=h(a.tags),d=await e.prisma.experimentIncidentLesson.create({data:{companyUuid:a.companyUuid,researchProjectUuid:b.researchProjectUuid,experimentUuid:b.uuid,title:a.title,failureType:a.failureType,status:a.status,severity:a.severity??"medium",phase:a.phase??null,symptom:a.symptom,rootCause:a.rootCause??null,resolution:a.resolution??null,prevention:a.prevention??null,evidenceSummary:a.evidenceSummary??null,experimentOutcomeImpact:a.experimentOutcomeImpact??null,tags:c,createdByUuid:a.createdByUuid,createdByType:a.createdByType},include:{experiment:{select:{uuid:!0,title:!0}}}});return await m(a.companyUuid,b.researchProjectUuid),f.B.emitChange({companyUuid:a.companyUuid,researchProjectUuid:b.researchProjectUuid,entityType:"experiment",entityUuid:b.uuid,action:"updated",actorUuid:a.createdByUuid}),j(d)}async function o(a){let b=Math.min(Math.max(a.limit??20,1),50),c=h(a.tags),d=a.query?.trim()??"",f=a.mode??"keyword";if("keyword"!==f&&"bm25"!==f)throw Error("Semantic incident search is not configured yet");if(d){let g=await e.prisma.$queryRawUnsafe(`
48
+ SELECT
49
+ l."uuid",
50
+ l."companyUuid",
51
+ l."projectUuid" AS "researchProjectUuid",
52
+ l."experimentUuid",
53
+ l."phase",
54
+ l."severity",
55
+ l."status",
56
+ l."failureType",
57
+ l."title",
58
+ l."symptom",
59
+ l."rootCause",
60
+ l."resolution",
61
+ l."prevention",
62
+ l."evidenceSummary",
63
+ l."experimentOutcomeImpact",
64
+ l."tags",
65
+ l."createdByUuid",
66
+ l."createdByType",
67
+ l."createdAt",
68
+ l."updatedAt",
69
+ e."title" AS "experimentTitle",
70
+ ts_rank_cd(
71
+ to_tsvector(
72
+ 'simple',
73
+ coalesce(l."title", '') || ' ' ||
74
+ coalesce(l."symptom", '') || ' ' ||
75
+ coalesce(l."rootCause", '') || ' ' ||
76
+ coalesce(l."resolution", '') || ' ' ||
77
+ coalesce(l."prevention", '') || ' ' ||
78
+ coalesce(l."evidenceSummary", '') || ' ' ||
79
+ coalesce(l."failureType", '') || ' ' ||
80
+ coalesce(l."phase", '')
81
+ ),
82
+ websearch_to_tsquery('simple', $8)
83
+ ) AS "rank"
84
+ FROM "ExperimentIncidentLesson" l
85
+ LEFT JOIN "Experiment" e ON e."uuid" = l."experimentUuid"
86
+ WHERE l."companyUuid" = $1
87
+ AND l."projectUuid" = $2
88
+ AND ($3::text IS NULL OR l."failureType" = $3)
89
+ AND ($4::text IS NULL OR l."status" = $4)
90
+ AND ($5::text IS NULL OR l."phase" = $5)
91
+ AND ($6::text IS NULL OR l."severity" = $6)
92
+ AND (
93
+ $7::text[] IS NULL
94
+ OR EXISTS (
95
+ SELECT 1 FROM jsonb_array_elements_text(coalesce(l."tags", '[]'::jsonb)) tag
96
+ WHERE tag = ANY($7::text[])
97
+ )
98
+ )
99
+ AND to_tsvector(
100
+ 'simple',
101
+ coalesce(l."title", '') || ' ' ||
102
+ coalesce(l."symptom", '') || ' ' ||
103
+ coalesce(l."rootCause", '') || ' ' ||
104
+ coalesce(l."resolution", '') || ' ' ||
105
+ coalesce(l."prevention", '') || ' ' ||
106
+ coalesce(l."evidenceSummary", '') || ' ' ||
107
+ coalesce(l."failureType", '') || ' ' ||
108
+ coalesce(l."phase", '')
109
+ ) @@ websearch_to_tsquery('simple', $8)
110
+ ORDER BY "rank" DESC, l."updatedAt" DESC
111
+ LIMIT $9
112
+ `,a.companyUuid,a.researchProjectUuid,a.failureType??null,a.status??null,a.phase??null,a.severity??null,c.length?c:null,d,b);return{lessons:g.map(j),total:g.length,mode:f}}let g={companyUuid:a.companyUuid,researchProjectUuid:a.researchProjectUuid,...a.failureType?{failureType:a.failureType}:{},...a.status?{status:a.status}:{},...a.phase?{phase:a.phase}:{},...a.severity?{severity:a.severity}:{}};c.length&&(g.tags={array_contains:c});let[i,k]=await Promise.all([e.prisma.experimentIncidentLesson.findMany({where:g,include:{experiment:{select:{uuid:!0,title:!0}}},orderBy:[{severity:"desc"},{updatedAt:"desc"}],take:b}),e.prisma.experimentIncidentLesson.count({where:g})]);return{lessons:i.map(j),total:k,mode:f}}async function p(a){return await l(a.companyUuid,a.experimentUuid),(await e.prisma.experimentIncidentLesson.findMany({where:{companyUuid:a.companyUuid,experimentUuid:a.experimentUuid},include:{experiment:{select:{uuid:!0,title:!0}}},orderBy:[{updatedAt:"desc"},{createdAt:"desc"}]})).map(j)}d()}catch(a){d(a)}})},83997:a=>{a.exports=require("tty")},84221:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(35684),e=c(74489),f=c(23235),g=c(91442);b.default={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:a,j:b}})=>(0,e.str)`must NOT have duplicate items (items ## ${b} and ${a} are identical)`,params:({params:{i:a,j:b}})=>(0,e._)`{i: ${a}, j: ${b}}`},code(a){let{gen:b,data:c,$data:h,schema:i,parentSchema:j,schemaCode:k,it:l}=a;if(!h&&!i)return;let m=b.let("valid"),n=j.items?(0,d.getSchemaTypes)(j.items):[];a.block$data(m,function(){let h=b.let("i",(0,e._)`${c}.length`),i=b.let("j");a.setParams({i:h,j:i}),b.assign(m,!0),b.if((0,e._)`${h} > 1`,()=>(n.length>0&&!n.some(a=>"object"===a||"array"===a)?function(f,g){let h=b.name("item"),i=(0,d.checkDataTypes)(n,h,l.opts.strictNumbers,d.DataType.Wrong),j=b.const("indices",(0,e._)`{}`);b.for((0,e._)`;${f}--;`,()=>{b.let(h,(0,e._)`${c}[${f}]`),b.if(i,(0,e._)`continue`),n.length>1&&b.if((0,e._)`typeof ${h} == "string"`,(0,e._)`${h} += "_"`),b.if((0,e._)`typeof ${j}[${h}] == "number"`,()=>{b.assign(g,(0,e._)`${j}[${h}]`),a.error(),b.assign(m,!1).break()}).code((0,e._)`${j}[${h}] = ${f}`)})}:function(d,h){let i=(0,f.useFunc)(b,g.default),j=b.name("outer");b.label(j).for((0,e._)`;${d}--;`,()=>b.for((0,e._)`${h} = ${d}; ${h}--;`,()=>b.if((0,e._)`${i}(${c}[${d}], ${c}[${h}])`,()=>{a.error(),b.assign(m,!1).break(j)})))})(h,i))},(0,e._)`${k} === false`),a.ok(m)}}},84297:a=>{a.exports=require("async_hooks")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86684:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.regexpCode=b.getEsmExportName=b.getProperty=b.safeStringify=b.stringify=b.strConcat=b.addCodeArg=b.str=b._=b.nil=b._Code=b.Name=b.IDENTIFIER=b._CodeOrName=void 0;class c{}b._CodeOrName=c,b.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class d extends c{constructor(a){if(super(),!b.IDENTIFIER.test(a))throw Error("CodeGen: name must be a valid identifier");this.str=a}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}b.Name=d;class e extends c{constructor(a){super(),this._items="string"==typeof a?[a]:a}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let a=this._items[0];return""===a||'""'===a}get str(){var a;return null!=(a=this._str)?a:this._str=this._items.reduce((a,b)=>`${a}${b}`,"")}get names(){var a;return null!=(a=this._names)?a:this._names=this._items.reduce((a,b)=>(b instanceof d&&(a[b.str]=(a[b.str]||0)+1),a),{})}}function f(a,...b){let c=[a[0]],d=0;for(;d<b.length;)i(c,b[d]),c.push(a[++d]);return new e(c)}b._Code=e,b.nil=new e(""),b._=f;let g=new e("+");function h(a,...b){let c=[j(a[0])],f=0;for(;f<b.length;)c.push(g),i(c,b[f]),c.push(g,j(a[++f]));return function(a){let b=1;for(;b<a.length-1;){if(a[b]===g){var c,e;let f=(c=a[b-1],'""'===(e=a[b+1])?c:'""'===c?e:"string"==typeof c?e instanceof d||'"'!==c[c.length-1]?void 0:"string"!=typeof e?`${c.slice(0,-1)}${e}"`:'"'===e[0]?c.slice(0,-1)+e.slice(1):void 0:"string"!=typeof e||'"'!==e[0]||c instanceof d?void 0:`"${c}${e.slice(1)}`);if(void 0!==f){a.splice(b-1,3,f);continue}a[b++]="+"}b++}}(c),new e(c)}function i(a,b){var c;b instanceof e?a.push(...b._items):b instanceof d?a.push(b):a.push("number"==typeof(c=b)||"boolean"==typeof c||null===c?c:j(Array.isArray(c)?c.join(","):c))}function j(a){return JSON.stringify(a).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}b.str=h,b.addCodeArg=i,b.strConcat=function(a,b){return b.emptyStr()?a:a.emptyStr()?b:h`${a}${b}`},b.stringify=function(a){return new e(j(a))},b.safeStringify=j,b.getProperty=function(a){return"string"==typeof a&&b.IDENTIFIER.test(a)?new e(`.${a}`):f`[${a}]`},b.getEsmExportName=function(a){if("string"==typeof a&&b.IDENTIFIER.test(a))return new e(`${a}`);throw Error(`CodeGen: invalid export name: ${a}, use explicit $id name mapping`)},b.regexpCode=function(a){return new e(a.toString())}},87294:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0});class c extends Error{constructor(a){super("validation failed"),this.errors=a,this.ajv=this.validation=!0}}b.default=c},87797:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{e:()=>h,r:()=>i});var e=c(52618),f=c(911),g=a([e]);async function h(a){let b=new Date,[c,d]=await e.prisma.$transaction([e.prisma.experimentProgressLog.create({data:{companyUuid:a.companyUuid,experimentUuid:a.experimentUuid,message:a.message,phase:a.phase??null,actorUuid:a.actorUuid,createdAt:b}}),e.prisma.experiment.update({where:{uuid:a.experimentUuid},data:{...void 0!==a.liveStatus?{liveStatus:a.liveStatus}:{},liveMessage:a.message,liveUpdatedAt:b},select:{researchProjectUuid:!0,companyUuid:!0}})]);return f.B.emitChange({companyUuid:d.companyUuid,researchProjectUuid:d.researchProjectUuid,entityType:"experiment",entityUuid:a.experimentUuid,action:"updated",actorUuid:a.actorUuid}),c}async function i(a,b){return e.prisma.experimentProgressLog.findMany({where:{companyUuid:a,experimentUuid:b},orderBy:{createdAt:"desc"},take:100,select:{uuid:!0,message:!0,phase:!0,actorUuid:!0,createdAt:!0}})}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},90617:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235);b.default={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:a,max:b}})=>void 0===b?(0,d.str)`must contain at least ${a} valid item(s)`:(0,d.str)`must contain at least ${a} and no more than ${b} valid item(s)`,params:({params:{min:a,max:b}})=>void 0===b?(0,d._)`{minContains: ${a}}`:(0,d._)`{minContains: ${a}, maxContains: ${b}}`},code(a){let b,c,{gen:f,schema:g,parentSchema:h,data:i,it:j}=a,{minContains:k,maxContains:l}=h;j.opts.next?(b=void 0===k?1:k,c=l):b=1;let m=f.const("len",(0,d._)`${i}.length`);if(a.setParams({min:b,max:c}),void 0===c&&0===b)return void(0,e.checkStrictMode)(j,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==c&&b>c){(0,e.checkStrictMode)(j,'"minContains" > "maxContains" is always invalid'),a.fail();return}if((0,e.alwaysValidSchema)(j,g)){let e=(0,d._)`${m} >= ${b}`;void 0!==c&&(e=(0,d._)`${e} && ${m} <= ${c}`),a.pass(e);return}j.items=!0;let n=f.name("valid");function o(){let a=f.name("_valid"),e=f.let("count",0);p(a,()=>f.if(a,()=>{var a;return a=e,void(f.code((0,d._)`${a}++`),void 0===c?f.if((0,d._)`${a} >= ${b}`,()=>f.assign(n,!0).break()):(f.if((0,d._)`${a} > ${c}`,()=>f.assign(n,!1).break()),1===b?f.assign(n,!0):f.if((0,d._)`${a} >= ${b}`,()=>f.assign(n,!0))))}))}function p(b,c){f.forRange("i",0,m,d=>{a.subschema({keyword:"contains",dataProp:d,dataPropType:e.Type.Num,compositeRule:!0},b),c()})}void 0===c&&1===b?p(n,()=>f.if(n,()=>f.break())):0===b?(f.let(n,!0),void 0!==c&&f.if((0,d._)`${i}.length > 0`,o)):(f.let(n,!1),o()),a.result(n,()=>a.reset())}}},91114:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=d.operators,f={maximum:{okStr:"<=",ok:e.LTE,fail:e.GT},minimum:{okStr:">=",ok:e.GTE,fail:e.LT},exclusiveMaximum:{okStr:"<",ok:e.LT,fail:e.GTE},exclusiveMinimum:{okStr:">",ok:e.GT,fail:e.LTE}};b.default={keyword:Object.keys(f),type:"number",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must be ${f[a].okStr} ${b}`,params:({keyword:a,schemaCode:b})=>(0,d._)`{comparison: ${f[a].okStr}, limit: ${b}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a;a.fail$data((0,d._)`${c} ${f[b].fail} ${e} || isNaN(${c})`)}}},91442:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(58362);d.code='require("ajv/dist/runtime/equal").default',b.default=d},91645:a=>{a.exports=require("net")},91875:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489),e=c(23235);b.default={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:a})=>(0,d._)`{passingSchemas: ${a.passing}}`},code(a){let{gen:b,schema:c,parentSchema:f,it:g}=a;if(!Array.isArray(c))throw Error("ajv implementation error");if(g.opts.discriminator&&f.discriminator)return;let h=b.let("valid",!1),i=b.let("passing",null),j=b.name("_valid");a.setParams({passing:i}),b.block(function(){c.forEach((c,f)=>{let k;(0,e.alwaysValidSchema)(g,c)?b.var(j,!0):k=a.subschema({keyword:"oneOf",schemaProp:f,compositeRule:!0},j),f>0&&b.if((0,d._)`${j} && ${h}`).assign(h,!1).assign(i,(0,d._)`[${i}, ${f}]`).else(),b.if(j,()=>{b.assign(h,!0),b.assign(i,f),k&&a.mergeEvaluated(k,d.Name)})})}),a.result(h,()=>a.reset(),()=>a.error(!0))}}},92093:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{W:()=>o});var e=c(77258),f=c(85034),g=c(90136),h=c(78112),i=c(8777),j=c(88437),k=c(25191),l=c(48873),m=c(63861),n=a([f,g,h,i,j,k]);function o(a,b){a.registerTool("synapse_claim_research_question",{description:"Claim a Research Question (open -> elaborating). Claiming automatically transitions the Research Question to 'elaborating' status.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};try{let a=await g.Ae({researchQuestionUuid:c.uuid,companyUuid:b.companyUuid,assigneeType:"agent",assigneeUuid:b.actorUuid});return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:c.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"assigned",value:{assigneeType:"agent",assigneeUuid:b.actorUuid}}),{content:[{type:"text",text:JSON.stringify({uuid:a.uuid,status:a.status},null,2)}]}}catch(a){if(a instanceof l.Yy)return{content:[{type:"text",text:"Can only claim Research Questions with open status"}],isError:!0};throw a}}),a.registerTool("synapse_release_research_question",{description:"Release a claimed Research Question (assigned -> open)",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID")})},async({researchQuestionUuid:a})=>{let c=await g._W(b.companyUuid,a);if(!c)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if(!("agent"===c.assigneeType&&c.assigneeUuid===b.actorUuid||"user"===c.assigneeType&&b.ownerUuid&&c.assigneeUuid===b.ownerUuid))return{content:[{type:"text",text:"Only the assignee can release a claimed Research Question"}],isError:!0};try{let a=await g.Rd(c.uuid);return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:c.researchProjectUuid,targetType:"research_question",targetUuid:c.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"released"}),{content:[{type:"text",text:JSON.stringify({uuid:a.uuid,status:a.status},null,2)}]}}catch(a){if(a instanceof l.nm)return{content:[{type:"text",text:"Can only release Research Questions with assigned status"}],isError:!0};throw a}}),a.registerTool("synapse_update_research_question_status",{description:"Update Research Question status (only assignee can operate). Valid statuses match the platform vocabulary: open, in_progress, to_verify, done, closed. Legacy values elaborating, proposal_created, completed, pending_review are also accepted and mapped.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID"),status:e.k5n(["open","in_progress","to_verify","done","closed","elaborating","proposal_created","completed","pending_review"]).describe("New status")})},async({researchQuestionUuid:a,status:c})=>{let d=await g._W(b.companyUuid,a);if(!d)return{content:[{type:"text",text:"Research Question not found"}],isError:!0};if(!("agent"===d.assigneeType&&d.assigneeUuid===b.actorUuid||"user"===d.assigneeType&&b.ownerUuid&&d.assigneeUuid===b.ownerUuid))return{content:[{type:"text",text:"Only the assignee can update the status"}],isError:!0};let e="in_progress"===c?"elaborating":"pending_review"===c||"to_verify"===c?"proposal_created":"done"===c?"completed":c;if(!g.$V(d.status,e))return{content:[{type:"text",text:`Invalid status transition: ${d.status} -> ${e}`}],isError:!0};let f=await g.pg(d.uuid,b.companyUuid,{status:e});return await j.E1({companyUuid:b.companyUuid,researchProjectUuid:d.researchProjectUuid,targetType:"research_question",targetUuid:d.uuid,actorType:"agent",actorUuid:b.actorUuid,action:"status_changed",value:{status:e}}),{content:[{type:"text",text:JSON.stringify({uuid:f.uuid,status:f.status},null,2)}]}}),a.registerTool("synapse_create_document",{description:"Create a document (PRD, tech design, ADR, spec, guide, etc.)",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),type:e.k5n(["experiment_result","literature_review","analysis","methodology","rdr","results_report","other"]).describe("Document type"),title:e.YjP().describe("Document title"),content:e.YjP().optional().describe("Document content (Markdown)"),experimentDesignUuid:e.YjP().optional().describe("Associated Experiment Design UUID (optional)")})},async({researchProjectUuid:a,type:c,title:d,content:e,experimentDesignUuid:g})=>{if(!await (0,f.vP)(b.companyUuid,a))return{content:[{type:"text",text:"Research Project not found"}],isError:!0};if(g&&!await h.Qr(b.companyUuid,g))return{content:[{type:"text",text:"Experiment Design not found"}],isError:!0};let j=await i.ui({companyUuid:b.companyUuid,researchProjectUuid:a,type:c,title:d,content:e||null,experimentDesignUuid:g||null,createdByUuid:b.actorUuid});return{content:[{type:"text",text:JSON.stringify({uuid:j.uuid,title:j.title,type:j.type},null,2)}]}}),a.registerTool("synapse_update_document",{description:"Update document content (increments version number)",inputSchema:e.Ikc({documentUuid:e.YjP().describe("Document UUID"),title:e.YjP().optional().describe("New title"),content:e.YjP().optional().describe("New content (Markdown)")})},async({documentUuid:a,title:c,content:d})=>{if(!await i.YE(b.companyUuid,a))return{content:[{type:"text",text:"Document not found"}],isError:!0};let e=await i.lU(a,{title:c,content:d,incrementVersion:!0});return{content:[{type:"text",text:JSON.stringify({uuid:e.uuid,version:e.version},null,2)}]}}),a.registerTool("synapse_add_document_draft",{description:"Add a document draft to a pending Experiment Design container",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),type:e.YjP().describe("Document type (prd, tech_design, adr, spec, guide)"),title:e.YjP().describe("Document title"),content:e.YjP().describe("Document content (Markdown)")})},async({experimentDesignUuid:a,type:c,title:d,content:e})=>{try{let f=await h.M9(a,b.companyUuid,{type:c,title:d,content:e}),g=f.documentDrafts,i=g?.[g.length-1];return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:f.uuid,action:"document_draft_added",draftUuid:i?.uuid,draftTitle:i?.title},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to add document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}}),a.registerTool("synapse_update_document_draft",{description:"Update a document draft in an Experiment Design",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),draftUuid:e.YjP().describe("Document draft UUID"),type:e.YjP().optional().describe("Document type"),title:e.YjP().optional().describe("Document title"),content:e.YjP().optional().describe("Document content (Markdown)")})},async({experimentDesignUuid:a,draftUuid:c,type:d,title:e,content:f})=>{try{let g={};void 0!==d&&(g.type=d),void 0!==e&&(g.title=e),void 0!==f&&(g.content=f);let i=await h.gT(a,b.companyUuid,c,g);return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:i.uuid,draftUuid:c,action:"document_draft_updated"},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to update document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}}),a.registerTool("synapse_remove_document_draft",{description:"Remove a document draft from an Experiment Design",inputSchema:e.Ikc({experimentDesignUuid:e.YjP().describe("Experiment Design UUID"),draftUuid:e.YjP().describe("Document draft UUID")})},async({experimentDesignUuid:a,draftUuid:c})=>{try{let d=await h.nW(a,b.companyUuid,c);return{content:[{type:"text",text:JSON.stringify({experimentDesignUuid:d.uuid,draftUuid:c,action:"document_draft_removed"},null,2)}]}}catch(a){return{content:[{type:"text",text:`Failed to remove document draft: ${a instanceof Error?a.message:"Unknown error"}`}],isError:!0}}});let c=(0,m.Ht)([(0,m.V4)({name:"synapse_move_research_question",description:"Move a Research Question to a different research project within the same company. Also moves linked draft/pending Experiment Designs.",inputSchema:e.Ikc({researchQuestionUuid:e.YjP().describe("Research Question UUID"),targetResearchProjectUuid:e.YjP().describe("Target Research Project UUID")}),async execute({researchQuestionUuid:a,targetResearchProjectUuid:c}){try{let d=await g.Be(b.companyUuid,a,c,b.actorUuid,b.type);return(0,m.XP)({uuid:d.uuid,project:d.project})}catch(a){return(0,m.xv)(`Failed to move Research Question: ${a instanceof Error?a.message:"Unknown error"}`,!0)}}}),(0,m.V4)({name:"synapse_create_research_question",description:"Create a Research Question (submits requirements on behalf of humans). Pass parentUuid to create a child question under an existing question.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),title:e.YjP().describe("Research Question title"),content:e.YjP().optional().describe("Research Question detailed description"),parentUuid:e.YjP().optional().describe("Optional parent Research Question UUID to create this as a child question.")}),async execute({researchProjectUuid:a,title:c,content:d,parentUuid:e}){if(!await (0,f.vP)(b.companyUuid,a))return(0,m.xv)("Research Project not found",!0);try{let f=await g.q0({companyUuid:b.companyUuid,researchProjectUuid:a,title:c,content:d||null,parentQuestionUuid:e??null,createdByUuid:b.actorUuid});return(0,m.XP)({uuid:f.uuid,title:f.title,parentQuestionUuid:f.parentQuestionUuid})}catch(a){return(0,m.xv)(`Failed to create research question: ${a instanceof Error?a.message:"Unknown error"}`,!0)}}}),(0,m.V4)({name:"synapse_generate_project_ideas",description:"Create one or more agent-generated research ideas from a project brief so they enter the human review board.",inputSchema:e.Ikc({researchProjectUuid:e.YjP().describe("Research Project UUID"),ideas:e.YOg(e.Ikc({title:e.YjP().describe("Research idea title"),content:e.YjP().optional().describe("Supporting rationale, approach, or ablation details")})).min(1).max(12)}),async execute({researchProjectUuid:a,ideas:c}){if(!await (0,f.j5)(b.companyUuid,a))return(0,m.xv)("Research Project not found",!0);let d=await Promise.all(c.map(c=>g.q0({companyUuid:b.companyUuid,researchProjectUuid:a,title:c.title,content:c.content||null,createdByUuid:b.actorUuid,sourceType:"agent",sourceLabel:`Generated by ${b.agentName||"agent"} from project brief`,generatedByAgentUuid:b.actorUuid})));return(0,m.XP)({researchProjectUuid:a,createdCount:d.length,ideas:d.map(a=>({uuid:a.uuid,title:a.title,reviewStatus:a.reviewStatus,sourceType:a.sourceType}))})}}),(0,m.V4)({name:"synapse_create_baseline",description:"Register a baseline result for comparison in a research project. Metrics accept numbers, strings (e.g. dataset tags), or nested records (e.g. { value, unit }) since baseline metrics are stored as JSON.",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),name:e.YjP(),metrics:e.g1P(e.YjP(),e.KCZ([e.aig(),e.YjP(),e.g1P(e.YjP(),e.bzn())])),experimentUuid:e.YjP().optional()}),async execute(a){let c=await k.wu(b.companyUuid,{researchProjectUuid:a.researchProjectUuid,name:a.name,metrics:a.metrics,experimentUuid:a.experimentUuid});return(0,m.XP)(c)}}),(0,m.V4)({name:"synapse_list_baselines",description:"List all baselines for a research project",inputSchema:e.Ikc({researchProjectUuid:e.YjP()}),async execute({researchProjectUuid:a}){let c=await k.$W(b.companyUuid,a);return(0,m.XP)({baselines:c})}}),(0,m.V4)({name:"synapse_compare_results",description:"Compare experiment results against the active baseline. Accepts either a flat per-experiment metric (Record<experimentUuid, number>) or per-metric results (Record<experimentUuid, Record<metricName, number>>).",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),experimentResults:e.g1P(e.YjP(),e.KCZ([e.aig(),e.g1P(e.YjP(),e.aig())]))}),async execute({researchProjectUuid:a,experimentResults:c}){let d=await k.aJ(b.companyUuid,a);if(!d)return(0,m.XP)({error:"No active baseline found"});let e=d.metrics??{},f={};for(let[a,b]of Object.entries(e))"number"==typeof b?f[a]=b:b&&"object"==typeof b&&"number"==typeof b.value&&(f[a]=b.value);let g={};for(let[a,b]of Object.entries(c)){let c="number"==typeof b?{default:b}:b,d={};for(let[a,b]of Object.entries(c)){let c;if("default"===a){let b=Object.keys(f);1===b.length?c=f[b[0]]:a in f&&(c=f[a])}else a in f&&(c=f[a]);void 0!==c&&(d[a]={baseline:c,experiment:b,delta:b-c,improved:b>c})}g[a]=d}return(0,m.XP)({baseline:d.name,comparisons:g})}}),(0,m.V4)({name:"synapse_create_rdr",description:"Create a Research Decision Record documenting why a particular approach was chosen",inputSchema:e.Ikc({researchProjectUuid:e.YjP(),title:e.YjP(),content:e.YjP()}),async execute({researchProjectUuid:a,title:c,content:d}){let e=await i.ui({researchProjectUuid:a,type:"rdr",title:c,content:d,createdByUuid:b.actorUuid,companyUuid:b.companyUuid});return(0,m.XP)(e)}})]);(0,m.D8)(a,c)}[f,g,h,i,j,k]=n.then?(await n)():n,d()}catch(a){d(a)}})},92782:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});let d=c(74489);b.default={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message:({keyword:a,schemaCode:b})=>(0,d.str)`must NOT have ${"maxProperties"===a?"more":"fewer"} than ${b} properties`,params:({schemaCode:a})=>(0,d._)`{limit: ${a}}`},code(a){let{keyword:b,data:c,schemaCode:e}=a,f="maxProperties"===b?d.operators.GT:d.operators.LT;a.fail$data((0,d._)`Object.keys(${c}).length ${f} ${e}`)}}},93629:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.validateSchemaDeps=b.validatePropertyDeps=b.error=void 0;let d=c(74489),e=c(23235),f=c(41033);b.error={message:({params:{property:a,depsCount:b,deps:c}})=>(0,d.str)`must have ${1===b?"property":"properties"} ${c} when property ${a} is present`,params:({params:{property:a,depsCount:b,deps:c,missingProperty:e}})=>(0,d._)`{property: ${a},
33
113
  missingProperty: ${e},
34
114
  depsCount: ${b},
35
115
  deps: ${c}}`};let g={keyword:"dependencies",type:"object",schemaType:"object",error:b.error,code(a){let[b,c]=function({schema:a}){let b={},c={};for(let d in a)"__proto__"!==d&&((Array.isArray(a[d])?b:c)[d]=a[d]);return[b,c]}(a);h(a,b),i(a,c)}};function h(a,b=a.schema){let{gen:c,data:e,it:g}=a;if(0===Object.keys(b).length)return;let i=c.let("missing");for(let h in b){let j=b[h];if(0===j.length)continue;let k=(0,f.propertyInData)(c,e,h,g.opts.ownProperties);a.setParams({property:h,depsCount:j.length,deps:j.join(", ")}),g.allErrors?c.if(k,()=>{for(let b of j)(0,f.checkReportMissingProp)(a,b)}):(c.if((0,d._)`${k} && (${(0,f.checkMissingProp)(a,j,i)})`),(0,f.reportMissingProp)(a,i),c.else())}}function i(a,b=a.schema){let{gen:c,data:d,keyword:g,it:h}=a,j=c.name("valid");for(let i in b)(0,e.alwaysValidSchema)(h,b[i])||(c.if((0,f.propertyInData)(c,d,i,h.opts.ownProperties),()=>{let b=a.subschema({keyword:g,schemaProp:i},j);a.mergeValidEvaluated(b,j)},()=>c.var(j,!0)),a.ok(j))}b.validatePropertyDeps=h,b.validateSchemaDeps=i,b.default=g},94735:a=>{a.exports=require("events")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[8843,7352,936,9833,3548,324,8481,7258,314,5700,7943,4742,136,3073,6499,2653,8499,8112],()=>b(b.s=18614));module.exports=c})();