@synapse-research/synapse 0.2.11 → 0.2.12

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 (187) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +118 -118
  3. package/dist/.next/app-path-routes-manifest.json +38 -38
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/prerender-manifest.json +6 -6
  6. package/dist/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  7. package/dist/.next/server/app/(dashboard)/compute/page_client-reference-manifest.js +1 -1
  8. package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  11. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  12. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page_client-reference-manifest.js +1 -1
  17. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page_client-reference-manifest.js +1 -1
  18. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/(dashboard)/research-projects/new/page_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/(dashboard)/research-projects/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/_not-found.html +1 -1
  31. package/dist/.next/server/app/_not-found.rsc +1 -1
  32. package/dist/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/admin/companies/new.html +1 -1
  35. package/dist/.next/server/app/admin/companies/new.rsc +1 -1
  36. package/dist/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/admin/companies.html +1 -1
  38. package/dist/.next/server/app/admin/companies.rsc +1 -1
  39. package/dist/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/admin.html +1 -1
  41. package/dist/.next/server/app/admin.rsc +1 -1
  42. package/dist/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  44. package/dist/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/api/admin/stats/route_client-reference-manifest.js +1 -1
  47. package/dist/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  49. package/dist/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  50. package/dist/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  53. package/dist/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  55. package/dist/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  56. package/dist/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  59. package/dist/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  61. package/dist/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  62. package/dist/.next/server/app/api/compute-gpus/[uuid]/release/route_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/api/compute-nodes/[uuid]/route_client-reference-manifest.js +1 -1
  64. package/dist/.next/server/app/api/compute-nodes/route_client-reference-manifest.js +1 -1
  65. package/dist/.next/server/app/api/compute-pools/[uuid]/route_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/api/compute-pools/route_client-reference-manifest.js +1 -1
  67. package/dist/.next/server/app/api/documents/[uuid]/images/[filename]/route_client-reference-manifest.js +1 -1
  68. package/dist/.next/server/app/api/documents/[uuid]/images/route_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  70. package/dist/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  71. package/dist/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/api/experiment-designs/[uuid]/approve/route_client-reference-manifest.js +1 -1
  73. package/dist/.next/server/app/api/experiment-designs/[uuid]/close/route_client-reference-manifest.js +1 -1
  74. package/dist/.next/server/app/api/experiment-designs/[uuid]/reject/route_client-reference-manifest.js +1 -1
  75. package/dist/.next/server/app/api/experiment-designs/[uuid]/route_client-reference-manifest.js +1 -1
  76. package/dist/.next/server/app/api/experiment-runs/[uuid]/claim/route_client-reference-manifest.js +1 -1
  77. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/api/experiment-runs/[uuid]/evaluate-criteria/route_client-reference-manifest.js +1 -1
  80. package/dist/.next/server/app/api/experiment-runs/[uuid]/registry/route_client-reference-manifest.js +1 -1
  81. package/dist/.next/server/app/api/experiment-runs/[uuid]/release/route_client-reference-manifest.js +1 -1
  82. package/dist/.next/server/app/api/experiment-runs/[uuid]/route_client-reference-manifest.js +1 -1
  83. package/dist/.next/server/app/api/experiment-runs/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/api/experiments/[uuid]/complete/route_client-reference-manifest.js +1 -1
  85. package/dist/.next/server/app/api/experiments/[uuid]/progress/route_client-reference-manifest.js +1 -1
  86. package/dist/.next/server/app/api/experiments/[uuid]/request-plan/route_client-reference-manifest.js +1 -1
  87. package/dist/.next/server/app/api/experiments/[uuid]/reset/route_client-reference-manifest.js +1 -1
  88. package/dist/.next/server/app/api/experiments/[uuid]/review/route.js +1 -1
  89. package/dist/.next/server/app/api/experiments/[uuid]/review/route_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/api/experiments/[uuid]/route_client-reference-manifest.js +1 -1
  91. package/dist/.next/server/app/api/experiments/[uuid]/start/route_client-reference-manifest.js +1 -1
  92. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  93. package/dist/.next/server/app/api/mcp/route.js +1 -1
  94. package/dist/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  95. package/dist/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  96. package/dist/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  97. package/dist/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  98. package/dist/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  99. package/dist/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  100. package/dist/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  101. package/dist/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  102. package/dist/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  103. package/dist/.next/server/app/api/onboarding/status/route_client-reference-manifest.js +1 -1
  104. package/dist/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  105. package/dist/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  106. package/dist/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  107. package/dist/.next/server/app/api/research-projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  108. package/dist/.next/server/app/api/research-projects/[uuid]/agent-activity/route_client-reference-manifest.js +1 -1
  109. package/dist/.next/server/app/api/research-projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  110. package/dist/.next/server/app/api/research-projects/[uuid]/baselines/route_client-reference-manifest.js +1 -1
  111. package/dist/.next/server/app/api/research-projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  112. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route_client-reference-manifest.js +1 -1
  113. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/route_client-reference-manifest.js +1 -1
  114. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/summary/route_client-reference-manifest.js +1 -1
  115. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/dependencies/route_client-reference-manifest.js +1 -1
  116. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/route_client-reference-manifest.js +1 -1
  117. package/dist/.next/server/app/api/research-projects/[uuid]/experiments/route_client-reference-manifest.js +1 -1
  118. package/dist/.next/server/app/api/research-projects/[uuid]/github/branches/route_client-reference-manifest.js +1 -1
  119. package/dist/.next/server/app/api/research-projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  120. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/[workUuid]/route_client-reference-manifest.js +1 -1
  121. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/complete/route_client-reference-manifest.js +1 -1
  122. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/route_client-reference-manifest.js +1 -1
  123. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/complete/route_client-reference-manifest.js +1 -1
  124. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/route_client-reference-manifest.js +1 -1
  125. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/route_client-reference-manifest.js +1 -1
  126. package/dist/.next/server/app/api/research-projects/[uuid]/research-questions/route_client-reference-manifest.js +1 -1
  127. package/dist/.next/server/app/api/research-projects/[uuid]/route_client-reference-manifest.js +1 -1
  128. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/complete/route_client-reference-manifest.js +1 -1
  129. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/refresh/route_client-reference-manifest.js +1 -1
  130. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/trigger/route_client-reference-manifest.js +1 -1
  131. package/dist/.next/server/app/api/research-projects/route_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/api/research-questions/[uuid]/claim/route_client-reference-manifest.js +1 -1
  133. package/dist/.next/server/app/api/research-questions/[uuid]/move/route_client-reference-manifest.js +1 -1
  134. package/dist/.next/server/app/api/research-questions/[uuid]/release/route_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/api/research-questions/[uuid]/review/route_client-reference-manifest.js +1 -1
  136. package/dist/.next/server/app/api/research-questions/[uuid]/route_client-reference-manifest.js +1 -1
  137. package/dist/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  138. package/dist/.next/server/app/api/settings/integrations/route_client-reference-manifest.js +1 -1
  139. package/dist/.next/server/app/api/ssh-config/route_client-reference-manifest.js +1 -1
  140. package/dist/.next/server/app/index.html +1 -1
  141. package/dist/.next/server/app/index.rsc +1 -1
  142. package/dist/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  143. package/dist/.next/server/app/login/admin.html +1 -1
  144. package/dist/.next/server/app/login/admin.rsc +1 -1
  145. package/dist/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  146. package/dist/.next/server/app/login/callback.html +1 -1
  147. package/dist/.next/server/app/login/callback.rsc +1 -1
  148. package/dist/.next/server/app/login/page_client-reference-manifest.js +1 -1
  149. package/dist/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  150. package/dist/.next/server/app/login/silent-refresh.html +1 -1
  151. package/dist/.next/server/app/login/silent-refresh.rsc +1 -1
  152. package/dist/.next/server/app/login.html +1 -1
  153. package/dist/.next/server/app/login.rsc +1 -1
  154. package/dist/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  155. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  156. package/dist/.next/server/app/research-projects/new.html +1 -1
  157. package/dist/.next/server/app/research-projects/new.rsc +1 -1
  158. package/dist/.next/server/app/research-projects.html +1 -1
  159. package/dist/.next/server/app/research-projects.rsc +1 -1
  160. package/dist/.next/server/app/settings.html +1 -1
  161. package/dist/.next/server/app/settings.rsc +1 -1
  162. package/dist/.next/server/app-paths-manifest.json +38 -38
  163. package/dist/.next/server/chunks/8499.js +1 -1
  164. package/dist/.next/server/middleware-manifest.json +1 -1
  165. package/dist/.next/server/pages/404.html +1 -1
  166. package/dist/.next/server/pages/500.html +1 -1
  167. package/dist/.next/server/pages-manifest.json +1 -1
  168. package/dist/.next/server/server-reference-manifest.js +1 -1
  169. package/dist/.next/server/server-reference-manifest.json +1 -1
  170. package/dist/public/skill/aris-synapse-sync/SKILL.md +2 -2
  171. package/dist/public/synapse-plugin/.claude-plugin/plugin.json +1 -1
  172. package/dist/public/synapse-plugin/bin/on-post-create-experiment.sh +61 -0
  173. package/dist/public/synapse-plugin/bin/on-post-submit-results.sh +56 -0
  174. package/dist/public/synapse-plugin/bin/on-session-start.sh +2 -1
  175. package/dist/public/synapse-plugin/hooks/hooks.json +20 -0
  176. package/dist/public/synapse-plugin/skills/autonomy/SKILL.md +37 -0
  177. package/dist/public/synapse-plugin/skills/experiments/SKILL.md +52 -4
  178. package/dist/public/synapse-plugin/skills/sessions/SKILL.md +3 -1
  179. package/dist/public/synapse-plugin/skills/setup/SKILL.md +39 -4
  180. package/dist/public/synapse-plugin/skills/synapse/SKILL.md +2 -1
  181. package/dist/public/synapse-plugin/skills/synapse/references/00-common-tools.md +38 -1
  182. package/dist/public/synapse-plugin/skills/synapse/references/01-setup.md +28 -10
  183. package/dist/public/synapse-plugin/skills/synapse/references/03-experiment-workflow.md +4 -4
  184. package/dist/public/synapse-plugin/skills/synapse/references/05-session-sub-agent.md +3 -1
  185. package/package.json +1 -1
  186. /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → CTg26EE4IkxbdY0E6xEiL}/_buildManifest.js +0 -0
  187. /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → CTg26EE4IkxbdY0E6xEiL}/_ssgManifest.js +0 -0
@@ -29,7 +29,7 @@ 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:()=>m});var e=c(77258),f=c(85034),g=c(90136),h=c(8777),i=c(88437),j=c(53235),k=c(25191),l=a([f,g,h,i,j,k]);function m(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_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.then?(await l)():l,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. This is the standard agent-side creation path for user-directed work and defaults to pending_review so a human can inspect it before execution.",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("pending_review")})},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:"Propose one independent experiment run. In Human Review mode, created as 'pending_review' for human approval. In Full Auto mode, created as 'pending_start' and assigned to you for immediate execution. Only usable when autonomous loop is active and you are the assigned agent. Split comparisons, ablations, and repeated runs into separate experiment cards.",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,autonomousLoopMode:!0}});if(!h)return{content:[{type:"text",text:"Autonomous loop is not enabled for this project or you are not the assigned agent"}],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",...j?{status:"pending_start",assigneeUuid:b.actorUuid,assigneeType:"agent",assignedByUuid:b.actorUuid,assignedAt:new Date}:{}});try{let d=await f.prisma.researchProject.findFirst({where:{uuid:a,companyUuid:b.companyUuid},select:{name:!0}}),e=await f.prisma.agent.findUnique({where:{uuid:b.actorUuid},select:{ownerUuid:!0,name:!0}});e?.ownerUuid&&d&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"user",recipientUuid:e.ownerUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:d.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:e.name??"Agent"}),j&&d&&await m.vt({companyUuid:b.companyUuid,researchProjectUuid:a,recipientType:"agent",recipientUuid:b.actorUuid,entityType:"experiment",entityUuid:k.uuid,entityTitle:k.title,projectName:d.name,action:"task_assigned",message:`Experiment "${c}" auto-assigned for immediate execution.`,actorType:"agent",actorUuid:b.actorUuid,actorName:e?.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:()=>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},
33
33
  missingProperty: ${e},
34
34
  depsCount: ${b},
35
35
  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})();