@makaio/framework 1.0.0-dev-1788978977154 → 1.0.0-dev-1789000242829

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 (210) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{2020-CpDjcHDh.mjs → 2020-DvDj4r_K.mjs} +1 -1
  3. package/dist/{account-identity-D00LLclm.mjs → account-identity-CNdiLYaM.mjs} +1 -1
  4. package/dist/{adapter-D92pfm_b.mjs → adapter-BdMny6vw.mjs} +1 -1
  5. package/dist/adapters/claude/index.d.mts +24 -24
  6. package/dist/adapters/index.mjs +1 -1
  7. package/dist/artifact-Cxm5ZX7L.mjs +1 -0
  8. package/dist/{auth-CB4an9bh.mjs → auth-BIgwGHp-.mjs} +1 -1
  9. package/dist/{authority-state-bootstrap-B8jG1zI1.mjs → authority-state-bootstrap-DVFYemDL.mjs} +1 -1
  10. package/dist/{automation-trigger-xNDX0Am_.mjs → automation-trigger-CQNQpzkA.mjs} +1 -1
  11. package/dist/bus/index.mjs +8 -1
  12. package/dist/{caller-owned-adapter-stub-oM1G1KvC.mjs → caller-owned-adapter-stub-NiR7KT2N.mjs} +1 -1
  13. package/dist/{canonical-model-D7Cg0l2R.mjs → canonical-model-BMnzRhG_.mjs} +1 -1
  14. package/dist/{capabilities-D2ggcMem.mjs → capabilities-CEwSeTB3.mjs} +1 -1
  15. package/dist/{client-CpUVfDxa.mjs → client-C0HcPzvw.mjs} +1 -1
  16. package/dist/{code-execution-CMqsHnGg.mjs → code-execution-BhUo84eg.mjs} +1 -1
  17. package/dist/{compression-Civ-rf-O.mjs → compression-DvPXSBWS.mjs} +1 -1
  18. package/dist/{config-namespace-CQnsvr77.mjs → config-namespace-CE3KasJn.mjs} +1 -1
  19. package/dist/contracts/adapter/index.mjs +1 -1
  20. package/dist/contracts/artifact/index.d.mts +3 -3
  21. package/dist/contracts/artifact/index.mjs +1 -1
  22. package/dist/contracts/auth/index.mjs +1 -1
  23. package/dist/contracts/automation-trigger/index.mjs +1 -1
  24. package/dist/contracts/canonical-model/index.mjs +1 -1
  25. package/dist/contracts/capabilities/index.d.mts +1 -1
  26. package/dist/contracts/capabilities/index.mjs +1 -1
  27. package/dist/contracts/client/index.d.mts +1 -1
  28. package/dist/contracts/client/index.mjs +1 -1
  29. package/dist/contracts/code-execution/index.mjs +1 -1
  30. package/dist/contracts/common/index.mjs +1 -1
  31. package/dist/contracts/config/index.mjs +1 -1
  32. package/dist/contracts/extension/index.d.mts +3 -3
  33. package/dist/contracts/extension/index.mjs +1 -1
  34. package/dist/contracts/facet/index.mjs +1 -1
  35. package/dist/contracts/harness/index.mjs +1 -1
  36. package/dist/contracts/host/index.mjs +1 -1
  37. package/dist/contracts/index.d.mts +22 -22
  38. package/dist/contracts/index.mjs +1 -1
  39. package/dist/contracts/materialization/index.d.mts +1 -1
  40. package/dist/contracts/materialization/index.mjs +1 -1
  41. package/dist/contracts/model-registry/index.mjs +1 -1
  42. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  43. package/dist/contracts/platform/index.mjs +1 -1
  44. package/dist/contracts/provider/index.mjs +1 -1
  45. package/dist/contracts/reaction/index.mjs +1 -1
  46. package/dist/contracts/session/index.d.mts +2 -2
  47. package/dist/contracts/session/index.mjs +1 -1
  48. package/dist/contracts/shared/index.d.mts +1 -1
  49. package/dist/contracts/shared/index.mjs +1 -1
  50. package/dist/contracts/skill/index.mjs +1 -1
  51. package/dist/contracts/telemetry/index.mjs +1 -1
  52. package/dist/contracts/timeout/index.mjs +1 -1
  53. package/dist/contracts/toast/index.mjs +1 -1
  54. package/dist/contracts/variant/index.d.mts +1 -1
  55. package/dist/contracts/variant/index.mjs +1 -1
  56. package/dist/contracts/worker/index.d.mts +1 -1
  57. package/dist/contracts/worker/index.mjs +1 -1
  58. package/dist/contracts/workflow/index.d.mts +2 -2
  59. package/dist/contracts/workflow/index.mjs +1 -1
  60. package/dist/{definition-Dqw0YJdi.mjs → definition-o5Dfg5j-.mjs} +1 -1
  61. package/dist/{dist-DeI9zYMP.mjs → dist-DMIaE8sg.mjs} +1 -1
  62. package/dist/{execution-target-_oVNW6Zm.mjs → execution-target-Ba7b_UmX.mjs} +1 -1
  63. package/dist/{extension-CAi7bbyv.mjs → extension-D9D8tJQY.mjs} +1 -1
  64. package/dist/{extension-CrghVa93.mjs → extension-GQEL-NCV.mjs} +1 -1
  65. package/dist/{framework-packages-BOPhhtK7.mjs → framework-packages-DdCJ4JsE.mjs} +1 -1
  66. package/dist/{handlers-YPTyZDhF.mjs → handlers-CqL2TWbk.mjs} +1 -1
  67. package/dist/{harness-Ds1I4smU.mjs → harness-CYzkReGi.mjs} +1 -1
  68. package/dist/{index-2ww5IWeo.d.mts → index-BTluq4-E.d.mts} +85 -42
  69. package/dist/{index-CQ8MVY5G.d.mts → index-BxJRljy-.d.mts} +77 -77
  70. package/dist/{index-CWuPfOzU.d.mts → index-CCNCo440.d.mts} +5 -5
  71. package/dist/{index-OQeNNbiX2.d.mts → index-CRM23ToM2.d.mts} +2 -2
  72. package/dist/{index-D_oDoazF.d.mts → index-D7IZQNhD.d.mts} +1 -1
  73. package/dist/{index-h7_ddTvG2.d.mts → index-DR308wUB2.d.mts} +3 -3
  74. package/dist/{index-VLZJ3Scz.d.mts → index-DvoitgXV.d.mts} +5 -5
  75. package/dist/{index-CWq-9Mpk.d.mts → index-GTCM4lXx.d.mts} +1 -1
  76. package/dist/{index-CVBlYxKV2.d.mts → index-hm8NV4CJ2.d.mts} +4 -4
  77. package/dist/kernel/cli/index.mjs +1 -1
  78. package/dist/kernel/cli/register.mjs +1 -1
  79. package/dist/kernel/cli/schemas.mjs +1 -1
  80. package/dist/kernel/extension/index.mjs +1 -1
  81. package/dist/kernel/index.mjs +1 -1
  82. package/dist/kernel/namespace/index.mjs +1 -1
  83. package/dist/kernel/observability/index.mjs +1 -1
  84. package/dist/kernel/providers/index.mjs +1 -1
  85. package/dist/kernel/window/index.mjs +1 -1
  86. package/dist/kind-registration-BanX_UAF.mjs +1 -0
  87. package/dist/{materialization-BwC7pVg2.mjs → materialization--bg6ZwQd.mjs} +1 -1
  88. package/dist/mcp-http-server/index.mjs +1 -1
  89. package/dist/model-Dya0clsM.mjs +1 -0
  90. package/dist/{namespace-CnRcpgJ8.mjs → namespace-CD9mJGhU.mjs} +1 -1
  91. package/dist/{namespace-B1sjokHd.d.mts → namespace-CfA0C0JR.d.mts} +2 -2
  92. package/dist/namespace-D53UGrP6.mjs +1 -0
  93. package/dist/{namespace-Cy62a3YP.d.mts → namespace-Dmbm2JzV.d.mts} +2 -2
  94. package/dist/{native-session-supervisor-B0rziwHI.mjs → native-session-supervisor-i3PeijHn.mjs} +1 -1
  95. package/dist/{orchestrator-shared-CmS8iU9_.mjs → orchestrator-shared-DMldWEah.mjs} +1 -1
  96. package/dist/{ownership-memory-handler-DMirNILL.mjs → ownership-memory-handler-LXaweX6V.mjs} +1 -1
  97. package/dist/{package-Co36_pRw.mjs → package-BFto8lbP.mjs} +1 -1
  98. package/dist/{package-BDaNGoBY.mjs → package-BT94BLu4.mjs} +1 -1
  99. package/dist/{package-DQgqWIcX.d.mts → package-BaTrCWZl.d.mts} +1 -1
  100. package/dist/package.json +1 -1
  101. package/dist/packages-DAw3Z011.mjs +1 -0
  102. package/dist/{profile-C9RV7ao-.mjs → profile-Cjq4QnUQ.mjs} +1 -1
  103. package/dist/{provider-context-BPITm0cn.mjs → provider-context-BpabfMlj.mjs} +1 -1
  104. package/dist/{provider-context-CyGvwXPz.mjs → provider-context-CYUUoI6x.mjs} +1 -1
  105. package/dist/{resolved-M6PyrgFr.mjs → resolved-XQTiHgrA.mjs} +1 -1
  106. package/dist/runtime-node/index.mjs +1 -1
  107. package/dist/runtime-node/workflow-execution-bus-access.mjs +1 -1
  108. package/dist/{schema-DrHrto2J.mjs → schema-BVbkNHVQ.mjs} +1 -1
  109. package/dist/{schemas-DGKWi7mk.d.mts → schemas-CQe4xCRn.d.mts} +2 -2
  110. package/dist/{schemas-DRho446W.mjs → schemas-NKlV5jqJ.mjs} +1 -1
  111. package/dist/{schemas-DyZNwquY.mjs → schemas-QEr2LI43.mjs} +1 -1
  112. package/dist/{schemas-uWyTgMWm.d.mts → schemas-bcDK-fK3.d.mts} +17 -8
  113. package/dist/{schemas-CQKfd2Xd.mjs → schemas-pHboaOxJ.mjs} +1 -1
  114. package/dist/{schemas-C_kxk6gr.d.mts → schemas-yXs929kr.d.mts} +7 -7
  115. package/dist/{selection-BDs7K53w.mjs → selection-D7V0wyHX.mjs} +1 -1
  116. package/dist/services/adapter-runtime/index.mjs +1 -1
  117. package/dist/services/adapter-subsystem/index.mjs +1 -1
  118. package/dist/services/adapter-subsystem/namespace.mjs +1 -1
  119. package/dist/services/agent-runtime/index.d.mts +2 -2
  120. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  121. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  122. package/dist/services/execution-target/index.mjs +1 -1
  123. package/dist/services/execution-target/namespace.mjs +1 -1
  124. package/dist/services/execution-target/schemas.mjs +1 -1
  125. package/dist/services/filesystem/namespace.d.mts +6 -6
  126. package/dist/services/filesystem/schemas.d.mts +3 -3
  127. package/dist/services/index.d.mts +10 -10
  128. package/dist/services/index.mjs +1 -1
  129. package/dist/services/materialization/index.mjs +1 -1
  130. package/dist/services/provider-context/index.mjs +1 -1
  131. package/dist/services/session/handlers/index.mjs +1 -1
  132. package/dist/services/session/index.mjs +1 -1
  133. package/dist/services/session/messages/namespace.mjs +1 -1
  134. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  135. package/dist/services/session/session-events/namespace.mjs +1 -1
  136. package/dist/services/session/testing/index.mjs +1 -1
  137. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  138. package/dist/services/session/turns/namespace.mjs +1 -1
  139. package/dist/services/session-editor/index.mjs +1 -1
  140. package/dist/services/settings/index.mjs +1 -1
  141. package/dist/services/settings/namespace.d.mts +4 -4
  142. package/dist/services/settings/storage/clients-namespace.mjs +1 -1
  143. package/dist/services/settings/storage/index.mjs +1 -1
  144. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  145. package/dist/services/subagent/index.mjs +1 -1
  146. package/dist/services/subagent-template/index.d.mts +2 -2
  147. package/dist/services/subagent-template/namespace.d.mts +1 -1
  148. package/dist/services/subagent-template/schemas.d.mts +1 -1
  149. package/dist/services/tool-approval/index.mjs +1 -1
  150. package/dist/services/tools/index.mjs +1 -1
  151. package/dist/services/workflow-transitions/index.mjs +1 -1
  152. package/dist/{session-Cn8z1hxD.mjs → session-CAKfa5o8.mjs} +1 -1
  153. package/dist/{session-9C42TPQq.mjs → session-CODDwsGa.mjs} +1 -1
  154. package/dist/{shared-DqvfJVYk.mjs → shared-CkCrHz66.mjs} +1 -1
  155. package/dist/{skill-BmRp8GhW.mjs → skill-91kZNQnF.mjs} +1 -1
  156. package/dist/{tool-approval-service-DchkAdAr.mjs → tool-approval-service-BV3WxxX6.mjs} +1 -1
  157. package/dist/{tools-r50UBPJ9.mjs → tools-CElCajoS.mjs} +1 -1
  158. package/dist/{transition-h6UZHLGq.d.mts → transition-bYkXnLY2.d.mts} +1 -1
  159. package/dist/{types-Bcsp_FCp.d.mts → types-BNKqcHfP.d.mts} +1 -1
  160. package/dist/{version-sDSWOMn_.mjs → version-DdGhNoY5.mjs} +1 -1
  161. package/dist/{view-builder-BMmmF-Mf.d.mts → view-builder-CA5qUx85.d.mts} +2 -2
  162. package/dist/{visibility-syKffo3e.mjs → visibility-cMXbf9nY.mjs} +1 -1
  163. package/dist/{worker-DRQGyWAS.mjs → worker-B0xwfo9-.mjs} +1 -1
  164. package/dist/{worker-DzbPk2YI.mjs → worker-Cx1JDOB9.mjs} +1 -1
  165. package/dist/{workflow-D-yrAZW8.mjs → workflow-5yHn_Knq.mjs} +1 -1
  166. package/dist/workflow-engine/index.d.mts +48 -48
  167. package/dist/workflow-engine/index.mjs +1 -1
  168. package/dist/workflow-engine/package.d.mts +1 -1
  169. package/dist/workflow-engine/package.mjs +1 -1
  170. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  171. package/dist/{workflow-transitions-D5RvMSnf.mjs → workflow-transitions-DH246j6E.mjs} +1 -1
  172. package/package.json +1 -1
  173. package/dist/artifact-_pN73_7c.mjs +0 -1
  174. package/dist/kind-registration-DggkrLkv.mjs +0 -1
  175. package/dist/model-Cn1IFEP8.mjs +0 -1
  176. package/dist/namespace-DFc1nkal.mjs +0 -1
  177. package/dist/packages-COqPg5TI.mjs +0 -1
  178. /package/dist/{ajv-IlnfOGAj.mjs → ajv-Dz-0DD7m.mjs} +0 -0
  179. /package/dist/{attach-error-DOlUtquX.mjs → attach-error-D5BWfaBO.mjs} +0 -0
  180. /package/dist/{capability-BQHyskJB.mjs → capability-BnQx1BWc.mjs} +0 -0
  181. /package/dist/{common-CylczUIW.mjs → common-Bta2ivrd.mjs} +0 -0
  182. /package/dist/{definitions-2T95Q-y6.mjs → definitions-CyFaNG_c.mjs} +0 -0
  183. /package/dist/{extension-namespace-CWfV3IiR.mjs → extension-namespace-AaHKv6tQ.mjs} +0 -0
  184. /package/dist/{facet-6tnSbjXc.mjs → facet-De-2AP_o.mjs} +0 -0
  185. /package/dist/{host-D7v3YlDG.mjs → host-CbaJg6D4.mjs} +0 -0
  186. /package/dist/{identity-CxMRRAXx.mjs → identity-B6RqbCn7.mjs} +0 -0
  187. /package/dist/{model-registry-BTjKBCCw.mjs → model-registry-DVTFd0RF.mjs} +0 -0
  188. /package/dist/{modes-Bo9Vv5c9.mjs → modes-Dc9_sSbr.mjs} +0 -0
  189. /package/dist/{namespace-DX3QsYpv.mjs → namespace-BZ7UQmW4.mjs} +0 -0
  190. /package/dist/{namespace-Dyxpur8_.mjs → namespace-BnNBM94X.mjs} +0 -0
  191. /package/dist/{namespace-DORNUF0_.mjs → namespace-DGi7tw_W.mjs} +0 -0
  192. /package/dist/{namespace-BCSJz417.mjs → namespace-KYIbWPvl.mjs} +0 -0
  193. /package/dist/{ownership-recovery-guard-CYA5CsiO.mjs → ownership-recovery-guard-BIB5uqgz.mjs} +0 -0
  194. /package/dist/{platform-BdLHWgVc.mjs → platform-BObC-WJA.mjs} +0 -0
  195. /package/dist/{providers-DGTA-lki.mjs → providers-BysYiNMO.mjs} +0 -0
  196. /package/dist/{reaction-aQJGWUWl.mjs → reaction-Cev6JNcb.mjs} +0 -0
  197. /package/dist/{schema-mXXJcaQT.mjs → schema-bfw9nz8B.mjs} +0 -0
  198. /package/dist/{schema-introspection-BsWP1vGC.mjs → schema-introspection-BTS7FZT_.mjs} +0 -0
  199. /package/dist/{schemas-HffXbw8C.mjs → schemas-A2hlgeNu.mjs} +0 -0
  200. /package/dist/{schemas-NYUz8K9Q.mjs → schemas-B3UNnzKG.mjs} +0 -0
  201. /package/dist/{schemas-7fHmNUQc.mjs → schemas-BEDq3Psz.mjs} +0 -0
  202. /package/dist/{schemas-MIYusvwn.mjs → schemas-mLjTSUvJ.mjs} +0 -0
  203. /package/dist/{semver-_h8-BJ8k.mjs → semver-ByPlHR3P.mjs} +0 -0
  204. /package/dist/{shared-schemas-CaL1iEk6.mjs → shared-schemas-CKsgVsGX.mjs} +0 -0
  205. /package/dist/{storage-namespace-definition-4UYuij1r.mjs → storage-namespace-definition-Ct9ohqU0.mjs} +0 -0
  206. /package/dist/{telemetry-BLYrkonr.mjs → telemetry-Be3u4I7b.mjs} +0 -0
  207. /package/dist/{timeout-d0dzIY3V.mjs → timeout-Bscg1B-y.mjs} +0 -0
  208. /package/dist/{ui-config-CsH94fwa.mjs → ui-config-Bl2Wbkr-.mjs} +0 -0
  209. /package/dist/{variant-BZ9UcJBi.mjs → variant-B5j5wR2p.mjs} +0 -0
  210. /package/dist/{window-registry-DQkv5wM9.mjs → window-registry-DWHz8TA5.mjs} +0 -0
@@ -1,4 +1,4 @@
1
- import{o as e}from"../chunk-DTipWd-i.mjs";import{t}from"../ajv-IlnfOGAj.mjs";import{t as n}from"../dist-DeI9zYMP.mjs";import{t as r}from"../quick-lru-bVGGo5bq.mjs";import{t as i}from"../cross-spawn-Bi05YtQQ.mjs";import{AgentSubjects as a,McpSubjects as o,ToolSubjects as s}from"@makaio/framework/contracts";import{BaseService as c}from"@makaio/framework/service-base";import{ToolErrorCodes as l,ensureMcpObjectSchema as u,errorToToolResult as d,toolError as f,toolSuccess as p}from"@makaio/framework/tools";import m from"node:process";import{PassThrough as h}from"node:stream";import*as g from"zod/v4";import"zod/v3";import*as ee from"zod/v4-mini";import*as te from"node:http";import{getRequestListener as ne}from"@hono/node-server";function _(e){return!!e._zod}function v(e,t){return _(e)?ee.safeParse(e,t):e.safeParse(t)}function re(e){if(!e)return;let t;if(t=_(e)?e._zod?.def?.shape:e.shape,t){if(typeof t==`function`)try{return t()}catch{return}return t}}function ie(e){if(_(e)){let t=e._zod?.def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}}let t=e._def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}let n=e.value;if(n!==void 0)return n}const ae=`2025-11-25`,y=[ae,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],b=`io.modelcontextprotocol/related-task`,x=g.custom(e=>e!==null&&(typeof e==`object`||typeof e==`function`)),oe=g.union([g.string(),g.number().int()]),se=g.string();g.looseObject({ttl:g.number().optional(),pollInterval:g.number().optional()});const ce=g.object({ttl:g.number().optional()}),le=g.object({taskId:g.string()}),ue=g.looseObject({progressToken:oe.optional(),[b]:le.optional()}),S=g.object({_meta:ue.optional()}),C=S.extend({task:ce.optional()}),de=e=>C.safeParse(e).success,w=g.object({method:g.string(),params:S.loose().optional()}),T=g.object({_meta:ue.optional()}),E=g.object({method:g.string(),params:T.loose().optional()}),D=g.looseObject({_meta:ue.optional()}),O=g.union([g.string(),g.number().int()]),fe=g.object({jsonrpc:g.literal(`2.0`),id:O,...w.shape}).strict(),k=e=>fe.safeParse(e).success,pe=g.object({jsonrpc:g.literal(`2.0`),...E.shape}).strict(),me=e=>pe.safeParse(e).success,he=g.object({jsonrpc:g.literal(`2.0`),id:O,result:D}).strict(),A=e=>he.safeParse(e).success;var j;(function(e){e[e.ConnectionClosed=-32e3]=`ConnectionClosed`,e[e.RequestTimeout=-32001]=`RequestTimeout`,e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`})(j||={});const ge=g.object({jsonrpc:g.literal(`2.0`),id:O.optional(),error:g.object({code:g.number().int(),message:g.string(),data:g.unknown().optional()})}).strict(),M=e=>ge.safeParse(e).success,_e=g.union([fe,pe,he,ge]);g.union([he,ge]);const N=D.strict(),ve=T.extend({requestId:O.optional(),reason:g.string().optional()}),ye=E.extend({method:g.literal(`notifications/cancelled`),params:ve}),be=g.object({src:g.string(),mimeType:g.string().optional(),sizes:g.array(g.string()).optional(),theme:g.enum([`light`,`dark`]).optional()}),P=g.object({icons:g.array(be).optional()}),F=g.object({name:g.string(),title:g.string().optional()}),xe=F.extend({...F.shape,...P.shape,version:g.string(),websiteUrl:g.string().optional(),description:g.string().optional()}),Se=g.intersection(g.object({applyDefaults:g.boolean().optional()}),g.record(g.string(),g.unknown())),Ce=g.preprocess(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,g.intersection(g.object({form:Se.optional(),url:x.optional()}),g.record(g.string(),g.unknown()).optional())),we=g.looseObject({list:x.optional(),cancel:x.optional(),requests:g.looseObject({sampling:g.looseObject({createMessage:x.optional()}).optional(),elicitation:g.looseObject({create:x.optional()}).optional()}).optional()}),Te=g.looseObject({list:x.optional(),cancel:x.optional(),requests:g.looseObject({tools:g.looseObject({call:x.optional()}).optional()}).optional()}),Ee=g.object({experimental:g.record(g.string(),x).optional(),sampling:g.object({context:x.optional(),tools:x.optional()}).optional(),elicitation:Ce.optional(),roots:g.object({listChanged:g.boolean().optional()}).optional(),tasks:we.optional(),extensions:g.record(g.string(),x).optional()}),De=S.extend({protocolVersion:g.string(),capabilities:Ee,clientInfo:xe}),Oe=w.extend({method:g.literal(`initialize`),params:De}),ke=e=>Oe.safeParse(e).success,Ae=g.object({experimental:g.record(g.string(),x).optional(),logging:x.optional(),completions:x.optional(),prompts:g.object({listChanged:g.boolean().optional()}).optional(),resources:g.object({subscribe:g.boolean().optional(),listChanged:g.boolean().optional()}).optional(),tools:g.object({listChanged:g.boolean().optional()}).optional(),tasks:Te.optional(),extensions:g.record(g.string(),x).optional()}),je=D.extend({protocolVersion:g.string(),capabilities:Ae,serverInfo:xe,instructions:g.string().optional()}),Me=E.extend({method:g.literal(`notifications/initialized`),params:T.optional()}),Ne=w.extend({method:g.literal(`ping`),params:S.optional()}),Pe=g.object({progress:g.number(),total:g.optional(g.number()),message:g.optional(g.string())}),Fe=g.object({...T.shape,...Pe.shape,progressToken:oe}),Ie=E.extend({method:g.literal(`notifications/progress`),params:Fe}),Le=S.extend({cursor:se.optional()}),I=w.extend({params:Le.optional()}),L=D.extend({nextCursor:se.optional()}),Re=g.enum([`working`,`input_required`,`completed`,`failed`,`cancelled`]),R=g.object({taskId:g.string(),status:Re,ttl:g.union([g.number(),g.null()]),createdAt:g.string(),lastUpdatedAt:g.string(),pollInterval:g.optional(g.number()),statusMessage:g.optional(g.string())}),z=D.extend({task:R}),ze=T.merge(R),B=E.extend({method:g.literal(`notifications/tasks/status`),params:ze}),Be=w.extend({method:g.literal(`tasks/get`),params:S.extend({taskId:g.string()})}),Ve=D.merge(R),He=w.extend({method:g.literal(`tasks/result`),params:S.extend({taskId:g.string()})});D.loose();const Ue=I.extend({method:g.literal(`tasks/list`)}),We=L.extend({tasks:g.array(R)}),Ge=w.extend({method:g.literal(`tasks/cancel`),params:S.extend({taskId:g.string()})}),Ke=D.merge(R),qe=g.object({uri:g.string(),mimeType:g.optional(g.string()),_meta:g.record(g.string(),g.unknown()).optional()}),Je=qe.extend({text:g.string()}),Ye=g.string().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Xe=qe.extend({blob:Ye}),V=g.enum([`user`,`assistant`]),H=g.object({audience:g.array(V).optional(),priority:g.number().min(0).max(1).optional(),lastModified:g.iso.datetime({offset:!0}).optional()}),Ze=g.object({...F.shape,...P.shape,uri:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),size:g.optional(g.number()),annotations:H.optional(),_meta:g.optional(g.looseObject({}))}),Qe=g.object({...F.shape,...P.shape,uriTemplate:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),annotations:H.optional(),_meta:g.optional(g.looseObject({}))}),$e=I.extend({method:g.literal(`resources/list`)}),et=L.extend({resources:g.array(Ze)}),tt=I.extend({method:g.literal(`resources/templates/list`)}),nt=L.extend({resourceTemplates:g.array(Qe)}),rt=S.extend({uri:g.string()}),it=rt,at=w.extend({method:g.literal(`resources/read`),params:it}),ot=D.extend({contents:g.array(g.union([Je,Xe]))}),st=E.extend({method:g.literal(`notifications/resources/list_changed`),params:T.optional()}),ct=rt,lt=w.extend({method:g.literal(`resources/subscribe`),params:ct}),ut=rt,dt=w.extend({method:g.literal(`resources/unsubscribe`),params:ut}),ft=T.extend({uri:g.string()}),pt=E.extend({method:g.literal(`notifications/resources/updated`),params:ft}),mt=g.object({name:g.string(),description:g.optional(g.string()),required:g.optional(g.boolean())}),ht=g.object({...F.shape,...P.shape,description:g.optional(g.string()),arguments:g.optional(g.array(mt)),_meta:g.optional(g.looseObject({}))}),gt=I.extend({method:g.literal(`prompts/list`)}),_t=L.extend({prompts:g.array(ht)}),vt=S.extend({name:g.string(),arguments:g.record(g.string(),g.string()).optional()}),yt=w.extend({method:g.literal(`prompts/get`),params:vt}),bt=g.object({type:g.literal(`text`),text:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),xt=g.object({type:g.literal(`image`),data:Ye,mimeType:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),St=g.object({type:g.literal(`audio`),data:Ye,mimeType:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Ct=g.object({type:g.literal(`tool_use`),name:g.string(),id:g.string(),input:g.record(g.string(),g.unknown()),_meta:g.record(g.string(),g.unknown()).optional()}),wt=g.object({type:g.literal(`resource`),resource:g.union([Je,Xe]),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Tt=Ze.extend({type:g.literal(`resource_link`)}),Et=g.union([bt,xt,St,Tt,wt]),Dt=g.object({role:V,content:Et}),Ot=D.extend({description:g.string().optional(),messages:g.array(Dt)}),kt=E.extend({method:g.literal(`notifications/prompts/list_changed`),params:T.optional()}),At=g.object({title:g.string().optional(),readOnlyHint:g.boolean().optional(),destructiveHint:g.boolean().optional(),idempotentHint:g.boolean().optional(),openWorldHint:g.boolean().optional()}),jt=g.object({taskSupport:g.enum([`required`,`optional`,`forbidden`]).optional()}),Mt=g.object({...F.shape,...P.shape,description:g.string().optional(),inputSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),x).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()),outputSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),x).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()).optional(),annotations:At.optional(),execution:jt.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Nt=I.extend({method:g.literal(`tools/list`)}),Pt=L.extend({tools:g.array(Mt)}),U=D.extend({content:g.array(Et).default([]),structuredContent:g.record(g.string(),g.unknown()).optional(),isError:g.boolean().optional()});U.or(D.extend({toolResult:g.unknown()}));const Ft=C.extend({name:g.string(),arguments:g.record(g.string(),g.unknown()).optional()}),It=w.extend({method:g.literal(`tools/call`),params:Ft}),Lt=E.extend({method:g.literal(`notifications/tools/list_changed`),params:T.optional()}),Rt=g.object({autoRefresh:g.boolean().default(!0),debounceMs:g.number().int().nonnegative().default(300)}),W=g.enum([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),zt=S.extend({level:W}),Bt=w.extend({method:g.literal(`logging/setLevel`),params:zt}),Vt=T.extend({level:W,logger:g.string().optional(),data:g.unknown()}),Ht=E.extend({method:g.literal(`notifications/message`),params:Vt}),Ut=g.object({name:g.string().optional()}),Wt=g.object({hints:g.array(Ut).optional(),costPriority:g.number().min(0).max(1).optional(),speedPriority:g.number().min(0).max(1).optional(),intelligencePriority:g.number().min(0).max(1).optional()}),Gt=g.object({mode:g.enum([`auto`,`required`,`none`]).optional()}),Kt=g.object({type:g.literal(`tool_result`),toolUseId:g.string().describe(`The unique identifier for the corresponding tool call.`),content:g.array(Et).default([]),structuredContent:g.object({}).loose().optional(),isError:g.boolean().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),qt=g.discriminatedUnion(`type`,[bt,xt,St]),G=g.discriminatedUnion(`type`,[bt,xt,St,Ct,Kt]),Jt=g.object({role:V,content:g.union([G,g.array(G)]),_meta:g.record(g.string(),g.unknown()).optional()}),Yt=C.extend({messages:g.array(Jt),modelPreferences:Wt.optional(),systemPrompt:g.string().optional(),includeContext:g.enum([`none`,`thisServer`,`allServers`]).optional(),temperature:g.number().optional(),maxTokens:g.number().int(),stopSequences:g.array(g.string()).optional(),metadata:x.optional(),tools:g.array(Mt).optional(),toolChoice:Gt.optional()}),Xt=w.extend({method:g.literal(`sampling/createMessage`),params:Yt}),K=D.extend({model:g.string(),stopReason:g.optional(g.enum([`endTurn`,`stopSequence`,`maxTokens`]).or(g.string())),role:V,content:qt}),Zt=D.extend({model:g.string(),stopReason:g.optional(g.enum([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(g.string())),role:V,content:g.union([G,g.array(G)])}),Qt=g.object({type:g.literal(`boolean`),title:g.string().optional(),description:g.string().optional(),default:g.boolean().optional()}),$t=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),minLength:g.number().optional(),maxLength:g.number().optional(),format:g.enum([`email`,`uri`,`date`,`date-time`]).optional(),default:g.string().optional()}),en=g.object({type:g.enum([`number`,`integer`]),title:g.string().optional(),description:g.string().optional(),minimum:g.number().optional(),maximum:g.number().optional(),default:g.number().optional()}),tn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),default:g.string().optional()}),nn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),oneOf:g.array(g.object({const:g.string(),title:g.string()})),default:g.string().optional()}),rn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),enumNames:g.array(g.string()).optional(),default:g.string().optional()}),an=g.union([tn,nn]),on=g.object({type:g.literal(`array`),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({type:g.literal(`string`),enum:g.array(g.string())}),default:g.array(g.string()).optional()}),sn=g.object({type:g.literal(`array`),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({anyOf:g.array(g.object({const:g.string(),title:g.string()}))}),default:g.array(g.string()).optional()}),cn=g.union([on,sn]),ln=g.union([rn,an,cn]),un=g.union([ln,Qt,$t,en]),dn=C.extend({mode:g.literal(`form`).optional(),message:g.string(),requestedSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),un),required:g.array(g.string()).optional()})}),fn=C.extend({mode:g.literal(`url`),message:g.string(),elicitationId:g.string(),url:g.string().url()}),pn=g.union([dn,fn]),mn=w.extend({method:g.literal(`elicitation/create`),params:pn}),hn=T.extend({elicitationId:g.string()}),gn=E.extend({method:g.literal(`notifications/elicitation/complete`),params:hn}),q=D.extend({action:g.enum([`accept`,`decline`,`cancel`]),content:g.preprocess(e=>e===null?void 0:e,g.record(g.string(),g.union([g.string(),g.number(),g.boolean(),g.array(g.string())])).optional())}),_n=g.object({type:g.literal(`ref/resource`),uri:g.string()}),vn=g.object({type:g.literal(`ref/prompt`),name:g.string()}),yn=S.extend({ref:g.union([vn,_n]),argument:g.object({name:g.string(),value:g.string()}),context:g.object({arguments:g.record(g.string(),g.string()).optional()}).optional()}),bn=w.extend({method:g.literal(`completion/complete`),params:yn}),xn=D.extend({completion:g.looseObject({values:g.array(g.string()).max(100),total:g.optional(g.number().int()),hasMore:g.optional(g.boolean())})}),Sn=g.object({uri:g.string().startsWith(`file://`),name:g.string().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Cn=w.extend({method:g.literal(`roots/list`),params:S.optional()}),wn=D.extend({roots:g.array(Sn)}),Tn=E.extend({method:g.literal(`notifications/roots/list_changed`),params:T.optional()});g.union([Ne,Oe,bn,Bt,yt,gt,$e,tt,at,lt,dt,It,Nt,Be,He,Ue,Ge]),g.union([ye,Ie,Me,Tn,B]),g.union([N,K,Zt,q,wn,Ve,We,z]),g.union([Ne,Xt,mn,Cn,Be,He,Ue,Ge]),g.union([ye,Ie,Ht,pt,st,Lt,kt,B,gn]),g.union([N,je,xn,Ot,_t,et,nt,ot,U,Pt,Ve,We,z]);var J=class e extends Error{constructor(e,t,n){super(`MCP error ${e}: ${t}`),this.code=e,this.data=n,this.name=`McpError`}static fromError(t,n,r){if(t===j.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new En(e.elicitations,n)}return new e(t,n,r)}},En=class extends J{constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(j.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}};function Y(e){return e===`completed`||e===`failed`||e===`cancelled`}function Dn(e){let t=re(e)?.method;if(!t)throw Error(`Schema is missing a method literal`);let n=ie(t);if(typeof n!=`string`)throw Error(`Schema method literal must be a string`);return n}function On(e,t){let n=v(e,t);if(!n.success)throw n.error;return n.data}var kn=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(ye,e=>{this._oncancel(e)}),this.setNotificationHandler(Ie,e=>{this._onprogress(e)}),this.setRequestHandler(Ne,e=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Be,async(e,t)=>{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new J(j.InvalidParams,`Failed to retrieve task: Task not found`);return{...n}}),this.setRequestHandler(He,async(e,t)=>{let n=async()=>{let r=e.params.taskId;if(this._taskMessageQueue){let e;for(;e=await this._taskMessageQueue.dequeue(r,t.sessionId);){if(e.type===`response`||e.type===`error`){let t=e.message,n=t.id,r=this._requestResolvers.get(n);if(r)if(this._requestResolvers.delete(n),e.type===`response`)r(t);else{let e=t;r(new J(e.error.code,e.error.message,e.error.data))}else{let t=e.type===`response`?`Response`:`Error`;this._onerror(Error(`${t} handler missing for request ${n}`))}continue}await this._transport?.send(e.message,{relatedRequestId:t.requestId})}}let i=await this._taskStore.getTask(r,t.sessionId);if(!i)throw new J(j.InvalidParams,`Task not found: ${r}`);if(!Y(i.status))return await this._waitForTaskUpdate(r,t.signal),await n();if(Y(i.status)){let e=await this._taskStore.getTaskResult(r,t.sessionId);return this._clearTaskQueue(r),{...e,_meta:{...e._meta,[b]:{taskId:r}}}}return await n()};return await n()}),this.setRequestHandler(Ue,async(e,t)=>{try{let{tasks:n,nextCursor:r}=await this._taskStore.listTasks(e.params?.cursor,t.sessionId);return{tasks:n,nextCursor:r,_meta:{}}}catch(e){throw new J(j.InvalidParams,`Failed to list tasks: ${e instanceof Error?e.message:String(e)}`)}}),this.setRequestHandler(Ge,async(e,t)=>{try{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new J(j.InvalidParams,`Task not found: ${e.params.taskId}`);if(Y(n.status))throw new J(j.InvalidParams,`Cannot cancel task in terminal status: ${n.status}`);await this._taskStore.updateTaskStatus(e.params.taskId,`cancelled`,`Client cancelled task execution.`,t.sessionId),this._clearTaskQueue(e.params.taskId);let r=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!r)throw new J(j.InvalidParams,`Task not found after cancellation: ${e.params.taskId}`);return{_meta:{},...r}}catch(e){throw e instanceof J?e:new J(j.InvalidRequest,`Failed to cancel task: ${e instanceof Error?e.message:String(e)}`)}}))}async _oncancel(e){e.params.requestId&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),J.fromError(j.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw Error(`Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.`);this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),A(e)||M(e)?this._onresponse(e):k(e)?this._onrequest(e,t):me(e)?this._onnotification(e):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();for(let e of this._requestHandlerAbortControllers.values())e.abort();this._requestHandlerAbortControllers.clear();let t=J.fromError(j.ConnectionClosed,`Connection closed`);this._transport=void 0,this.onclose?.();for(let n of e.values())n(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){let t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;t!==void 0&&Promise.resolve().then(()=>t(e)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,r=this._transport,i=e.params?._meta?.[b]?.taskId;if(n===void 0){let t={jsonrpc:`2.0`,id:e.id,error:{code:j.MethodNotFound,message:`Method not found`}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{type:`error`,message:t,timestamp:Date.now()},r?.sessionId).catch(e=>this._onerror(Error(`Failed to enqueue error response: ${e}`))):r?.send(t).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(e.id,a);let o=de(e.params)?e.params.task:void 0,s=this._taskStore?this.requestTaskStore(e,r?.sessionId):void 0,c={signal:a.signal,sessionId:r?.sessionId,_meta:e.params?._meta,sendNotification:async t=>{if(a.signal.aborted)return;let n={relatedRequestId:e.id};i&&(n.relatedTask={taskId:i}),await this.notification(t,n)},sendRequest:async(t,n,r)=>{if(a.signal.aborted)throw new J(j.ConnectionClosed,`Request was cancelled`);let o={...r,relatedRequestId:e.id};i&&!o.relatedTask&&(o.relatedTask={taskId:i});let c=o.relatedTask?.taskId??i;return c&&s&&await s.updateTaskStatus(c,`input_required`),await this.request(t,n,o)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:i,taskStore:s,taskRequestedTtl:o?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{o&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,c)).then(async t=>{if(a.signal.aborted)return;let n={result:t,jsonrpc:`2.0`,id:e.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`response`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)},async t=>{if(a.signal.aborted)return;let n={jsonrpc:`2.0`,id:e.id,error:{code:Number.isSafeInteger(t.code)?t.code:j.InternalError,message:t.message??`Internal error`,...t.data!==void 0&&{data:t.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`error`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(e.id)===a&&this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._requestResolvers.get(t);if(n){this._requestResolvers.delete(t),A(e)?n(e):n(new J(e.error.code,e.error.message,e.error.data));return}let r=this._responseHandlers.get(t);if(r===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t);let i=!1;if(A(e)&&e.result&&typeof e.result==`object`){let n=e.result;if(n.task&&typeof n.task==`object`){let e=n.task;typeof e.taskId==`string`&&(i=!0,this._taskProgressTokens.set(e.taskId,t))}}i||this._progressHandlers.delete(t),A(e)?r(e):r(J.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,t,n){let{task:r}=n??{};if(!r){try{yield{type:`result`,result:await this.request(e,t,n)}}catch(e){yield{type:`error`,error:e instanceof J?e:new J(j.InternalError,String(e))}}return}let i;try{let r=await this.request(e,z,n);if(r.task)i=r.task.taskId,yield{type:`taskCreated`,task:r.task};else throw new J(j.InternalError,`Task creation did not return a task`);for(;;){let e=await this.getTask({taskId:i},n);if(yield{type:`taskStatus`,task:e},Y(e.status)){e.status===`completed`?yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)}:e.status===`failed`?yield{type:`error`,error:new J(j.InternalError,`Task ${i} failed`)}:e.status===`cancelled`&&(yield{type:`error`,error:new J(j.InternalError,`Task ${i} was cancelled`)});return}if(e.status===`input_required`){yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)};return}let r=e.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(e=>setTimeout(e,r)),n?.signal?.throwIfAborted()}}catch(e){yield{type:`error`,error:e instanceof J?e:new J(j.InternalError,String(e))}}}request(e,t,n){let{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a,task:o,relatedTask:s}=n??{};return new Promise((c,l)=>{let u=e=>{l(e)};if(!this._transport){u(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),o&&this.assertTaskCapability(e.method)}catch(e){u(e);return}n?.signal?.throwIfAborted();let d=this._requestMessageId++,f={...e,jsonrpc:`2.0`,id:d};n?.onprogress&&(this._progressHandlers.set(d,n.onprogress),f.params={...e.params,_meta:{...e.params?._meta||{},progressToken:d}}),o&&(f.params={...f.params,task:o}),s&&(f.params={...f.params,_meta:{...f.params?._meta||{},[b]:s}});let p=e=>{this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),this._transport?.send({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:d,reason:String(e)}},{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))),l(e instanceof J?e:new J(j.RequestTimeout,String(e)))};this._responseHandlers.set(d,e=>{if(!n?.signal?.aborted){if(e instanceof Error)return l(e);try{let n=v(t,e.result);n.success?c(n.data):l(n.error)}catch(e){l(e)}}}),n?.signal?.addEventListener(`abort`,()=>{p(n?.signal?.reason)});let m=n?.timeout??6e4;this._setupTimeout(d,m,n?.maxTotalTimeout,()=>p(J.fromError(j.RequestTimeout,`Request timed out`,{timeout:m})),n?.resetTimeoutOnProgress??!1);let h=s?.taskId;h?(this._requestResolvers.set(d,e=>{let t=this._responseHandlers.get(d);t?t(e):this._onerror(Error(`Response handler missing for side-channeled request ${d}`))}),this._enqueueTaskMessage(h,{type:`request`,message:f,timestamp:Date.now()}).catch(e=>{this._cleanupTimeout(d),l(e)})):this._transport.send(f,{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>{this._cleanupTimeout(d),l(e)})})}async getTask(e,t){return this.request({method:`tasks/get`,params:e},Ve,t)}async getTaskResult(e,t,n){return this.request({method:`tasks/result`,params:e},t,n)}async listTasks(e,t){return this.request({method:`tasks/list`,params:e},We,t)}async cancelTask(e,t){return this.request({method:`tasks/cancel`,params:e},Ke,t)}async notification(e,t){if(!this._transport)throw Error(`Not connected`);this.assertNotificationCapability(e.method);let n=t?.relatedTask?.taskId;if(n){let r={...e,jsonrpc:`2.0`,params:{...e.params,_meta:{...e.params?._meta||{},[b]:t.relatedTask}}};await this._enqueueTaskMessage(n,{type:`notification`,message:r,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let n={...e,jsonrpc:`2.0`};t?.relatedTask&&(n={...n,params:{...n.params,_meta:{...n.params?._meta||{},[b]:t.relatedTask}}}),this._transport?.send(n,t).catch(e=>this._onerror(e))});return}let r={...e,jsonrpc:`2.0`};t?.relatedTask&&(r={...r,params:{...r.params,_meta:{...r.params?._meta||{},[b]:t.relatedTask}}}),await this._transport.send(r,t)}setRequestHandler(e,t){let n=Dn(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(n,r)=>{let i=On(e,n);return Promise.resolve(t(i,r))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){let n=Dn(e);this._notificationHandlers.set(n,n=>{let r=On(e,n);return Promise.resolve(t(r))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let t=this._taskProgressTokens.get(e);t!==void 0&&(this._progressHandlers.delete(t),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,t,n){if(!this._taskStore||!this._taskMessageQueue)throw Error(`Cannot enqueue task message: taskStore and taskMessageQueue are not configured`);let r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,n,r)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,t);for(let t of n)if(t.type===`request`&&k(t.message)){let n=t.message.id,r=this._requestResolvers.get(n);r?(r(new J(j.InternalError,`Task cancelled or completed`)),this._requestResolvers.delete(n)):this._onerror(Error(`Resolver missing for request ${n} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let n=this._options?.defaultTaskPollInterval??1e3;try{let t=await this._taskStore?.getTask(e);t?.pollInterval&&(n=t.pollInterval)}catch{}return new Promise((e,r)=>{if(t.aborted){r(new J(j.InvalidRequest,`Request cancelled`));return}let i=setTimeout(e,n);t.addEventListener(`abort`,()=>{clearTimeout(i),r(new J(j.InvalidRequest,`Request cancelled`))},{once:!0})})}requestTaskStore(e,t){let n=this._taskStore;if(!n)throw Error(`No task store configured`);return{createTask:async r=>{if(!e)throw Error(`No request provided`);return await n.createTask(r,e.id,{method:e.method,params:e.params},t)},getTask:async e=>{let r=await n.getTask(e,t);if(!r)throw new J(j.InvalidParams,`Failed to retrieve task: Task not found`);return r},storeTaskResult:async(e,r,i)=>{await n.storeTaskResult(e,r,i,t);let a=await n.getTask(e,t);if(a){let t=B.parse({method:`notifications/tasks/status`,params:a});await this.notification(t),Y(a.status)&&this._cleanupTaskProgressHandler(e)}},getTaskResult:e=>n.getTaskResult(e,t),updateTaskStatus:async(e,r,i)=>{let a=await n.getTask(e,t);if(!a)throw new J(j.InvalidParams,`Task "${e}" not found - it may have been cleaned up`);if(Y(a.status))throw new J(j.InvalidParams,`Cannot update task "${e}" from terminal status "${a.status}" to "${r}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(e,r,i,t);let o=await n.getTask(e,t);if(o){let t=B.parse({method:`notifications/tasks/status`,params:o});await this.notification(t),Y(o.status)&&this._cleanupTaskProgressHandler(e)}},listTasks:e=>n.listTasks(e,t)}}};function An(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function jn(e,t){let n={...e};for(let e in t){let r=e,i=t[r];if(i===void 0)continue;let a=n[r];An(a)&&An(i)?n[r]={...a,...i}:n[r]=i}return n}var Mn=e(t(),1),Nn=e(n(),1);function Pn(){let e=new Mn.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,Nn.default)(e),e}var Fn=class{constructor(e){this._ajv=e??Pn()}getValidator(e){let t=`$id`in e&&typeof e.$id==`string`?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return e=>t(e)?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(t.errors)}}},In=class{constructor(e){this._server=e}requestStream(e,t,n){return this._server.requestStream(e,t,n)}createMessageStream(e,t){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],o=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!o)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(o){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return this.requestStream({method:`sampling/createMessage`,params:e},K,t)}elicitInputStream(e,t){let n=this._server.getClientCapabilities(),r=e.mode??`form`;switch(r){case`url`:if(!n?.elicitation?.url)throw Error(`Client does not support url elicitation.`);break;case`form`:if(!n?.elicitation?.form)throw Error(`Client does not support form elicitation.`);break}let i=r===`form`&&e.mode===void 0?{...e,mode:`form`}:e;return this.requestStream({method:`elicitation/create`,params:i},q,t)}async getTask(e,t){return this._server.getTask({taskId:e},t)}async getTaskResult(e,t,n){return this._server.getTaskResult({taskId:e},t,n)}async listTasks(e,t){return this._server.listTasks(e?{cursor:e}:void 0,t)}async cancelTask(e,t){return this._server.cancelTask({taskId:e},t)}};function Ln(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`tools/call`:if(!e.tools?.call)throw Error(`${n} does not support task creation for tools/call (required for ${t})`);break;default:break}}function Rn(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`sampling/createMessage`:if(!e.sampling?.createMessage)throw Error(`${n} does not support task creation for sampling/createMessage (required for ${t})`);break;case`elicitation/create`:if(!e.elicitation?.create)throw Error(`${n} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var zn=class extends kn{constructor(e,t){super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(W.options.map((e,t)=>[e,t])),this.isMessageIgnored=(e,t)=>{let n=this._loggingLevels.get(t);return n?this.LOG_LEVEL_SEVERITY.get(e)<this.LOG_LEVEL_SEVERITY.get(n):!1},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new Fn,this.setRequestHandler(Oe,e=>this._oninitialize(e)),this.setNotificationHandler(Me,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Bt,async(e,t)=>{let n=t.sessionId||t.requestInfo?.headers[`mcp-session-id`]||void 0,{level:r}=e.params,i=W.safeParse(r);return i.success&&this._loggingLevels.set(n,i.data),{}})}get experimental(){return this._experimental||={tasks:new In(this)},this._experimental}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=jn(this._capabilities,e)}setRequestHandler(e,t){let n=re(e)?.method;if(!n)throw Error(`Schema is missing a method literal`);let r;if(_(n)){let e=n;r=e._zod?.def?.value??e.value}else{let e=n;r=e._def?.value??e.value}if(typeof r!=`string`)throw Error(`Schema method literal must be a string`);return r===`tools/call`?super.setRequestHandler(e,async(e,n)=>{let r=v(It,e);if(!r.success){let e=r.error instanceof Error?r.error.message:String(r.error);throw new J(j.InvalidParams,`Invalid tools/call request: ${e}`)}let{params:i}=r.data,a=await Promise.resolve(t(e,n));if(i.task){let e=v(z,a);if(!e.success){let t=e.error instanceof Error?e.error.message:String(e.error);throw new J(j.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}let o=v(U,a);if(!o.success){let e=o.error instanceof Error?o.error.message:String(o.error);throw new J(j.InvalidParams,`Invalid tools/call result: ${e}`)}return o.data}):super.setRequestHandler(e,t)}assertCapabilityForMethod(e){switch(e){case`sampling/createMessage`:if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${e})`);break;case`elicitation/create`:if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${e})`);break;case`roots/list`:if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${e})`);break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/message`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`notifications/resources/updated`:case`notifications/resources/list_changed`:if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${e})`);break;case`notifications/tools/list_changed`:if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case`notifications/prompts/list_changed`:if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case`notifications/elicitation/complete`:if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${e})`);break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case`completion/complete`:if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${e})`);break;case`logging/setLevel`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${e})`);break;case`tasks/get`:case`tasks/list`:case`tasks/result`:case`tasks/cancel`:if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${e})`);break;case`ping`:case`initialize`:break}}assertTaskCapability(e){Rn(this._clientCapabilities?.tasks?.requests,e,`Client`)}assertTaskHandlerCapability(e){this._capabilities&&Ln(this._capabilities.tasks?.requests,e,`Server`)}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:y.includes(t)?t:ae,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:`ping`},N)}async createMessage(e,t){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],o=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!o)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(o){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return e.tools?this.request({method:`sampling/createMessage`,params:e},Zt,t):this.request({method:`sampling/createMessage`,params:e},K,t)}async elicitInput(e,t){switch(e.mode??`form`){case`url`:{if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support url elicitation.`);let n=e;return this.request({method:`elicitation/create`,params:n},q,t)}case`form`:{if(!this._clientCapabilities?.elicitation?.form)throw Error(`Client does not support form elicitation.`);let n=e.mode===`form`?e:{...e,mode:`form`},r=await this.request({method:`elicitation/create`,params:n},q,t);if(r.action===`accept`&&r.content&&n.requestedSchema)try{let e=this._jsonSchemaValidator.getValidator(n.requestedSchema)(r.content);if(!e.valid)throw new J(j.InvalidParams,`Elicitation response content does not match requested schema: ${e.errorMessage}`)}catch(e){throw e instanceof J?e:new J(j.InternalError,`Error validating elicitation response: ${e instanceof Error?e.message:String(e)}`)}return r}}}createElicitationCompletionNotifier(e,t){if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for notifications/elicitation/complete)`);return()=>this.notification({method:`notifications/elicitation/complete`,params:{elicitationId:e}},t)}async listRoots(e,t){return this.request({method:`roots/list`,params:e},wn,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:`notifications/message`,params:e})}async sendResourceUpdated(e){return this.notification({method:`notifications/resources/updated`,params:e})}async sendResourceListChanged(){return this.notification({method:`notifications/resources/list_changed`})}async sendToolListChanged(){return this.notification({method:`notifications/tools/list_changed`})}async sendPromptListChanged(){return this.notification({method:`notifications/prompts/list_changed`})}};const Bn=`approve`;function Vn(){return{name:Bn,description:`Permission prompt handler - approves or denies tool usage requests`,inputSchema:{type:`object`,properties:{tool_name:{type:`string`},input:{type:`object`,additionalProperties:!0},tool_use_id:{type:`string`}},required:[`tool_name`,`input`,`tool_use_id`]}}}function Hn(e){if(typeof e!=`object`||!e)return`Arguments must be an object`;let t=e;return typeof t.tool_name==`string`?typeof t.tool_use_id==`string`?typeof t.input!=`object`||t.input===null||Array.isArray(t.input)?`input must be an object`:{tool_name:t.tool_name,tool_use_id:t.tool_use_id,input:t.input}:`tool_use_id must be a string`:`tool_name must be a string`}async function Un(e,t,n,r){let i=e=>({content:[{type:`text`,text:JSON.stringify({behavior:`deny`,message:e})}]}),a=n?t.get(n):void 0;if(!a)return i(`No agent context found for this session`);let o=Hn(e??{});if(typeof o==`string`)return i(`Invalid approve tool arguments: ${o}`);let s;try{s=await r({toolName:o.tool_name,args:o.input,toolCallId:o.tool_use_id,agentId:a.agentId,adapterId:a.adapterId,adapterName:a.adapterName,adapterSessionId:a.adapterSessionId,sessionId:a.sessionId})}catch(e){return i(`Tool approval request failed: ${e instanceof Error?e.message:`Unknown error`}`)}return{content:[{type:`text`,text:JSON.stringify(s.action===`allow`?{behavior:`allow`,updatedInput:s.updatedInput??o.input}:{behavior:`deny`,message:s.message??`Denied by policy`})}]}}function Wn(e,t){let n=t[e.toolsetName];return n?`${n}.${e.name}`:e.name}async function Gn(e,t,n){let r=t?.pluginToolsets??{},i=t?.staticFallback??[],a=await e.requestOptional(s.list,{adapterId:n?.adapterId,adapterName:n?.adapterName}),o=a.handled?a.data.tools:i,c=t?.getExposedTools?t.getExposedTools(o):o,l=c.map(e=>Wn(e,r)),u=new Map;for(let e of l)u.set(e,(u.get(e)??0)+1);let d=new Map,f=[];for(let e=0;e<c.length;e++){let t=c[e],n=l[e],r=(u.get(n)??1)>1?`${t.toolsetName}.${t.name}`:n,i={mcpName:r,sourceToolName:t.name,toolsetName:t.toolsetName};if(d.has(r))throw Error(`Duplicate resolved MCP tool name: ${r}`);d.set(r,i),f.push(Kn(t,r))}return{tools:f,byMcpName:d}}function Kn(e,t){return{name:t,description:e.description,inputSchema:u(e.inputSchema),annotations:e.annotations}}function qn(e){let t=!1;return()=>{t||(t=!0,e?.())}}function Jn(e){let t;return()=>t??=e()}async function Yn(e,t,n,r){try{await e.connect(t)}catch(e){try{await n()}catch(t){throw AggregateError([e,t],`Failed to start and clean up ${r}`)}throw e}}async function Xn(e,t){let n=(await Promise.allSettled(e)).filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));if(n.length>0)throw AggregateError(n,t)}function Zn(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0||e>18e5)throw RangeError(`toolExecutionTimeoutMs must be a positive safe integer no greater than 1800000`);return e}}function Qn(e,t){if(e!==void 0){if(!Number.isFinite(e)||e<=0)throw RangeError(`${t} must be a positive finite number of milliseconds`);return e}}const $n=2147483647;function er(e,t){let n=Qn(e,t);if(n!==void 0&&n>$n)throw RangeError(`${t} must be no greater than ${$n} milliseconds`);return n}const tr=`adapterSessionId`,X=`x-adapter-session-id`;function nr(e){return e.success?{content:[{type:`text`,text:JSON.stringify(e.data,null,2)}]}:{content:[{type:`text`,text:JSON.stringify(e.error,null,2)}],isError:!0}}function rr(e){let t=e.requestInfo?.headers[X];return Array.isArray(t)?t[0]:t}function ir(e,t){if(!e||!t)return;let n=t.get(e);if(n)return{adapterId:n.adapterId,adapterName:n.adapterName}}function ar(e,t){let n=qn(t.on(s.registryChanged,()=>{e.sendToolListChanged().catch(e=>{console.error(`[MCP Server] Failed to send tools/list_changed notification:`,e)})})),r=e.onclose;e.onclose=()=>{n(),r?.()};let i=e.close.bind(e);e.close=async()=>{try{await i()}finally{n()}}}function or(e,t){return{cwd:e?.cwd??process.cwd(),sessionId:e?.sessionId??t,env:e?.env,agentId:e?.agentId,adapterSessionId:e?.adapterSessionId,turnId:e?.turnId,reasoning:e?.reasoning,toolCallId:e?.toolCallId,turnContext:e?.turnContext,constraints:e?.constraints}}async function sr(e,t,n){let{contextRegistry:r,toolDiscovery:i,resolveContextOverrides:o}=n??{},c=Zn(n?.toolExecutionTimeoutMs),l=new zn({name:`makaio`,version:`1.0.0`},{capabilities:{tools:{listChanged:!0}}}),u=t=>e.request(a.toolApprove,t);return l.setRequestHandler(Nt,async(t,n)=>({tools:[...(await Gn(e,i,ir(rr(n),r))).tools,...r?[Vn()]:[]]})),l.setRequestHandler(It,async(n,a)=>{let l=rr(a);if(n.params.name===`approve`)return r?Un(n.params.arguments,r,l,u):{content:[{type:`text`,text:JSON.stringify({behavior:`deny`,message:`Permission prompt tool is not available in this server mode`})}]};let d=ir(l,r),f=(await Gn(e,i,d)).byMcpName.get(n.params.name);if(!f)throw new J(j.InvalidParams,`Tool ${n.params.name} not found`);let p=o?.(l),m=or(p,t),h={toolName:f.sourceToolName,input:n.params.arguments??{},adapterId:d?.adapterId,adapterName:d?.adapterName,contextOverrides:m},g=c===void 0?await e.requestOptional(s.execute,h):await e.requestOptional(s.execute,h,{timeout:c});if(!g.handled)throw new J(j.InternalError,`Tool execution handler unavailable`);return nr(g.data)}),ar(l,e),l}var cr=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
1
+ import{o as e}from"../chunk-DTipWd-i.mjs";import{t}from"../ajv-Dz-0DD7m.mjs";import{t as n}from"../dist-DMIaE8sg.mjs";import{t as r}from"../quick-lru-bVGGo5bq.mjs";import{t as i}from"../cross-spawn-Bi05YtQQ.mjs";import{AgentSubjects as a,McpSubjects as o,ToolSubjects as s}from"@makaio/framework/contracts";import{BaseService as c}from"@makaio/framework/service-base";import{ToolErrorCodes as l,ensureMcpObjectSchema as u,errorToToolResult as d,toolError as f,toolSuccess as p}from"@makaio/framework/tools";import m from"node:process";import{PassThrough as h}from"node:stream";import*as g from"zod/v4";import"zod/v3";import*as ee from"zod/v4-mini";import*as te from"node:http";import{getRequestListener as ne}from"@hono/node-server";function _(e){return!!e._zod}function v(e,t){return _(e)?ee.safeParse(e,t):e.safeParse(t)}function re(e){if(!e)return;let t;if(t=_(e)?e._zod?.def?.shape:e.shape,t){if(typeof t==`function`)try{return t()}catch{return}return t}}function ie(e){if(_(e)){let t=e._zod?.def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}}let t=e._def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}let n=e.value;if(n!==void 0)return n}const ae=`2025-11-25`,y=[ae,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],b=`io.modelcontextprotocol/related-task`,x=g.custom(e=>e!==null&&(typeof e==`object`||typeof e==`function`)),oe=g.union([g.string(),g.number().int()]),se=g.string();g.looseObject({ttl:g.number().optional(),pollInterval:g.number().optional()});const ce=g.object({ttl:g.number().optional()}),le=g.object({taskId:g.string()}),ue=g.looseObject({progressToken:oe.optional(),[b]:le.optional()}),S=g.object({_meta:ue.optional()}),C=S.extend({task:ce.optional()}),de=e=>C.safeParse(e).success,w=g.object({method:g.string(),params:S.loose().optional()}),T=g.object({_meta:ue.optional()}),E=g.object({method:g.string(),params:T.loose().optional()}),D=g.looseObject({_meta:ue.optional()}),O=g.union([g.string(),g.number().int()]),fe=g.object({jsonrpc:g.literal(`2.0`),id:O,...w.shape}).strict(),k=e=>fe.safeParse(e).success,pe=g.object({jsonrpc:g.literal(`2.0`),...E.shape}).strict(),me=e=>pe.safeParse(e).success,he=g.object({jsonrpc:g.literal(`2.0`),id:O,result:D}).strict(),A=e=>he.safeParse(e).success;var j;(function(e){e[e.ConnectionClosed=-32e3]=`ConnectionClosed`,e[e.RequestTimeout=-32001]=`RequestTimeout`,e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`})(j||={});const ge=g.object({jsonrpc:g.literal(`2.0`),id:O.optional(),error:g.object({code:g.number().int(),message:g.string(),data:g.unknown().optional()})}).strict(),M=e=>ge.safeParse(e).success,_e=g.union([fe,pe,he,ge]);g.union([he,ge]);const N=D.strict(),ve=T.extend({requestId:O.optional(),reason:g.string().optional()}),ye=E.extend({method:g.literal(`notifications/cancelled`),params:ve}),be=g.object({src:g.string(),mimeType:g.string().optional(),sizes:g.array(g.string()).optional(),theme:g.enum([`light`,`dark`]).optional()}),P=g.object({icons:g.array(be).optional()}),F=g.object({name:g.string(),title:g.string().optional()}),xe=F.extend({...F.shape,...P.shape,version:g.string(),websiteUrl:g.string().optional(),description:g.string().optional()}),Se=g.intersection(g.object({applyDefaults:g.boolean().optional()}),g.record(g.string(),g.unknown())),Ce=g.preprocess(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,g.intersection(g.object({form:Se.optional(),url:x.optional()}),g.record(g.string(),g.unknown()).optional())),we=g.looseObject({list:x.optional(),cancel:x.optional(),requests:g.looseObject({sampling:g.looseObject({createMessage:x.optional()}).optional(),elicitation:g.looseObject({create:x.optional()}).optional()}).optional()}),Te=g.looseObject({list:x.optional(),cancel:x.optional(),requests:g.looseObject({tools:g.looseObject({call:x.optional()}).optional()}).optional()}),Ee=g.object({experimental:g.record(g.string(),x).optional(),sampling:g.object({context:x.optional(),tools:x.optional()}).optional(),elicitation:Ce.optional(),roots:g.object({listChanged:g.boolean().optional()}).optional(),tasks:we.optional(),extensions:g.record(g.string(),x).optional()}),De=S.extend({protocolVersion:g.string(),capabilities:Ee,clientInfo:xe}),Oe=w.extend({method:g.literal(`initialize`),params:De}),ke=e=>Oe.safeParse(e).success,Ae=g.object({experimental:g.record(g.string(),x).optional(),logging:x.optional(),completions:x.optional(),prompts:g.object({listChanged:g.boolean().optional()}).optional(),resources:g.object({subscribe:g.boolean().optional(),listChanged:g.boolean().optional()}).optional(),tools:g.object({listChanged:g.boolean().optional()}).optional(),tasks:Te.optional(),extensions:g.record(g.string(),x).optional()}),je=D.extend({protocolVersion:g.string(),capabilities:Ae,serverInfo:xe,instructions:g.string().optional()}),Me=E.extend({method:g.literal(`notifications/initialized`),params:T.optional()}),Ne=w.extend({method:g.literal(`ping`),params:S.optional()}),Pe=g.object({progress:g.number(),total:g.optional(g.number()),message:g.optional(g.string())}),Fe=g.object({...T.shape,...Pe.shape,progressToken:oe}),Ie=E.extend({method:g.literal(`notifications/progress`),params:Fe}),Le=S.extend({cursor:se.optional()}),I=w.extend({params:Le.optional()}),L=D.extend({nextCursor:se.optional()}),Re=g.enum([`working`,`input_required`,`completed`,`failed`,`cancelled`]),R=g.object({taskId:g.string(),status:Re,ttl:g.union([g.number(),g.null()]),createdAt:g.string(),lastUpdatedAt:g.string(),pollInterval:g.optional(g.number()),statusMessage:g.optional(g.string())}),z=D.extend({task:R}),ze=T.merge(R),B=E.extend({method:g.literal(`notifications/tasks/status`),params:ze}),Be=w.extend({method:g.literal(`tasks/get`),params:S.extend({taskId:g.string()})}),Ve=D.merge(R),He=w.extend({method:g.literal(`tasks/result`),params:S.extend({taskId:g.string()})});D.loose();const Ue=I.extend({method:g.literal(`tasks/list`)}),We=L.extend({tasks:g.array(R)}),Ge=w.extend({method:g.literal(`tasks/cancel`),params:S.extend({taskId:g.string()})}),Ke=D.merge(R),qe=g.object({uri:g.string(),mimeType:g.optional(g.string()),_meta:g.record(g.string(),g.unknown()).optional()}),Je=qe.extend({text:g.string()}),Ye=g.string().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Xe=qe.extend({blob:Ye}),V=g.enum([`user`,`assistant`]),H=g.object({audience:g.array(V).optional(),priority:g.number().min(0).max(1).optional(),lastModified:g.iso.datetime({offset:!0}).optional()}),Ze=g.object({...F.shape,...P.shape,uri:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),size:g.optional(g.number()),annotations:H.optional(),_meta:g.optional(g.looseObject({}))}),Qe=g.object({...F.shape,...P.shape,uriTemplate:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),annotations:H.optional(),_meta:g.optional(g.looseObject({}))}),$e=I.extend({method:g.literal(`resources/list`)}),et=L.extend({resources:g.array(Ze)}),tt=I.extend({method:g.literal(`resources/templates/list`)}),nt=L.extend({resourceTemplates:g.array(Qe)}),rt=S.extend({uri:g.string()}),it=rt,at=w.extend({method:g.literal(`resources/read`),params:it}),ot=D.extend({contents:g.array(g.union([Je,Xe]))}),st=E.extend({method:g.literal(`notifications/resources/list_changed`),params:T.optional()}),ct=rt,lt=w.extend({method:g.literal(`resources/subscribe`),params:ct}),ut=rt,dt=w.extend({method:g.literal(`resources/unsubscribe`),params:ut}),ft=T.extend({uri:g.string()}),pt=E.extend({method:g.literal(`notifications/resources/updated`),params:ft}),mt=g.object({name:g.string(),description:g.optional(g.string()),required:g.optional(g.boolean())}),ht=g.object({...F.shape,...P.shape,description:g.optional(g.string()),arguments:g.optional(g.array(mt)),_meta:g.optional(g.looseObject({}))}),gt=I.extend({method:g.literal(`prompts/list`)}),_t=L.extend({prompts:g.array(ht)}),vt=S.extend({name:g.string(),arguments:g.record(g.string(),g.string()).optional()}),yt=w.extend({method:g.literal(`prompts/get`),params:vt}),bt=g.object({type:g.literal(`text`),text:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),xt=g.object({type:g.literal(`image`),data:Ye,mimeType:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),St=g.object({type:g.literal(`audio`),data:Ye,mimeType:g.string(),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Ct=g.object({type:g.literal(`tool_use`),name:g.string(),id:g.string(),input:g.record(g.string(),g.unknown()),_meta:g.record(g.string(),g.unknown()).optional()}),wt=g.object({type:g.literal(`resource`),resource:g.union([Je,Xe]),annotations:H.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Tt=Ze.extend({type:g.literal(`resource_link`)}),Et=g.union([bt,xt,St,Tt,wt]),Dt=g.object({role:V,content:Et}),Ot=D.extend({description:g.string().optional(),messages:g.array(Dt)}),kt=E.extend({method:g.literal(`notifications/prompts/list_changed`),params:T.optional()}),At=g.object({title:g.string().optional(),readOnlyHint:g.boolean().optional(),destructiveHint:g.boolean().optional(),idempotentHint:g.boolean().optional(),openWorldHint:g.boolean().optional()}),jt=g.object({taskSupport:g.enum([`required`,`optional`,`forbidden`]).optional()}),Mt=g.object({...F.shape,...P.shape,description:g.string().optional(),inputSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),x).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()),outputSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),x).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()).optional(),annotations:At.optional(),execution:jt.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Nt=I.extend({method:g.literal(`tools/list`)}),Pt=L.extend({tools:g.array(Mt)}),U=D.extend({content:g.array(Et).default([]),structuredContent:g.record(g.string(),g.unknown()).optional(),isError:g.boolean().optional()});U.or(D.extend({toolResult:g.unknown()}));const Ft=C.extend({name:g.string(),arguments:g.record(g.string(),g.unknown()).optional()}),It=w.extend({method:g.literal(`tools/call`),params:Ft}),Lt=E.extend({method:g.literal(`notifications/tools/list_changed`),params:T.optional()}),Rt=g.object({autoRefresh:g.boolean().default(!0),debounceMs:g.number().int().nonnegative().default(300)}),W=g.enum([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),zt=S.extend({level:W}),Bt=w.extend({method:g.literal(`logging/setLevel`),params:zt}),Vt=T.extend({level:W,logger:g.string().optional(),data:g.unknown()}),Ht=E.extend({method:g.literal(`notifications/message`),params:Vt}),Ut=g.object({name:g.string().optional()}),Wt=g.object({hints:g.array(Ut).optional(),costPriority:g.number().min(0).max(1).optional(),speedPriority:g.number().min(0).max(1).optional(),intelligencePriority:g.number().min(0).max(1).optional()}),Gt=g.object({mode:g.enum([`auto`,`required`,`none`]).optional()}),Kt=g.object({type:g.literal(`tool_result`),toolUseId:g.string().describe(`The unique identifier for the corresponding tool call.`),content:g.array(Et).default([]),structuredContent:g.object({}).loose().optional(),isError:g.boolean().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),qt=g.discriminatedUnion(`type`,[bt,xt,St]),G=g.discriminatedUnion(`type`,[bt,xt,St,Ct,Kt]),Jt=g.object({role:V,content:g.union([G,g.array(G)]),_meta:g.record(g.string(),g.unknown()).optional()}),Yt=C.extend({messages:g.array(Jt),modelPreferences:Wt.optional(),systemPrompt:g.string().optional(),includeContext:g.enum([`none`,`thisServer`,`allServers`]).optional(),temperature:g.number().optional(),maxTokens:g.number().int(),stopSequences:g.array(g.string()).optional(),metadata:x.optional(),tools:g.array(Mt).optional(),toolChoice:Gt.optional()}),Xt=w.extend({method:g.literal(`sampling/createMessage`),params:Yt}),K=D.extend({model:g.string(),stopReason:g.optional(g.enum([`endTurn`,`stopSequence`,`maxTokens`]).or(g.string())),role:V,content:qt}),Zt=D.extend({model:g.string(),stopReason:g.optional(g.enum([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(g.string())),role:V,content:g.union([G,g.array(G)])}),Qt=g.object({type:g.literal(`boolean`),title:g.string().optional(),description:g.string().optional(),default:g.boolean().optional()}),$t=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),minLength:g.number().optional(),maxLength:g.number().optional(),format:g.enum([`email`,`uri`,`date`,`date-time`]).optional(),default:g.string().optional()}),en=g.object({type:g.enum([`number`,`integer`]),title:g.string().optional(),description:g.string().optional(),minimum:g.number().optional(),maximum:g.number().optional(),default:g.number().optional()}),tn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),default:g.string().optional()}),nn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),oneOf:g.array(g.object({const:g.string(),title:g.string()})),default:g.string().optional()}),rn=g.object({type:g.literal(`string`),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),enumNames:g.array(g.string()).optional(),default:g.string().optional()}),an=g.union([tn,nn]),on=g.object({type:g.literal(`array`),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({type:g.literal(`string`),enum:g.array(g.string())}),default:g.array(g.string()).optional()}),sn=g.object({type:g.literal(`array`),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({anyOf:g.array(g.object({const:g.string(),title:g.string()}))}),default:g.array(g.string()).optional()}),cn=g.union([on,sn]),ln=g.union([rn,an,cn]),un=g.union([ln,Qt,$t,en]),dn=C.extend({mode:g.literal(`form`).optional(),message:g.string(),requestedSchema:g.object({type:g.literal(`object`),properties:g.record(g.string(),un),required:g.array(g.string()).optional()})}),fn=C.extend({mode:g.literal(`url`),message:g.string(),elicitationId:g.string(),url:g.string().url()}),pn=g.union([dn,fn]),mn=w.extend({method:g.literal(`elicitation/create`),params:pn}),hn=T.extend({elicitationId:g.string()}),gn=E.extend({method:g.literal(`notifications/elicitation/complete`),params:hn}),q=D.extend({action:g.enum([`accept`,`decline`,`cancel`]),content:g.preprocess(e=>e===null?void 0:e,g.record(g.string(),g.union([g.string(),g.number(),g.boolean(),g.array(g.string())])).optional())}),_n=g.object({type:g.literal(`ref/resource`),uri:g.string()}),vn=g.object({type:g.literal(`ref/prompt`),name:g.string()}),yn=S.extend({ref:g.union([vn,_n]),argument:g.object({name:g.string(),value:g.string()}),context:g.object({arguments:g.record(g.string(),g.string()).optional()}).optional()}),bn=w.extend({method:g.literal(`completion/complete`),params:yn}),xn=D.extend({completion:g.looseObject({values:g.array(g.string()).max(100),total:g.optional(g.number().int()),hasMore:g.optional(g.boolean())})}),Sn=g.object({uri:g.string().startsWith(`file://`),name:g.string().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Cn=w.extend({method:g.literal(`roots/list`),params:S.optional()}),wn=D.extend({roots:g.array(Sn)}),Tn=E.extend({method:g.literal(`notifications/roots/list_changed`),params:T.optional()});g.union([Ne,Oe,bn,Bt,yt,gt,$e,tt,at,lt,dt,It,Nt,Be,He,Ue,Ge]),g.union([ye,Ie,Me,Tn,B]),g.union([N,K,Zt,q,wn,Ve,We,z]),g.union([Ne,Xt,mn,Cn,Be,He,Ue,Ge]),g.union([ye,Ie,Ht,pt,st,Lt,kt,B,gn]),g.union([N,je,xn,Ot,_t,et,nt,ot,U,Pt,Ve,We,z]);var J=class e extends Error{constructor(e,t,n){super(`MCP error ${e}: ${t}`),this.code=e,this.data=n,this.name=`McpError`}static fromError(t,n,r){if(t===j.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new En(e.elicitations,n)}return new e(t,n,r)}},En=class extends J{constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(j.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}};function Y(e){return e===`completed`||e===`failed`||e===`cancelled`}function Dn(e){let t=re(e)?.method;if(!t)throw Error(`Schema is missing a method literal`);let n=ie(t);if(typeof n!=`string`)throw Error(`Schema method literal must be a string`);return n}function On(e,t){let n=v(e,t);if(!n.success)throw n.error;return n.data}var kn=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(ye,e=>{this._oncancel(e)}),this.setNotificationHandler(Ie,e=>{this._onprogress(e)}),this.setRequestHandler(Ne,e=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Be,async(e,t)=>{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new J(j.InvalidParams,`Failed to retrieve task: Task not found`);return{...n}}),this.setRequestHandler(He,async(e,t)=>{let n=async()=>{let r=e.params.taskId;if(this._taskMessageQueue){let e;for(;e=await this._taskMessageQueue.dequeue(r,t.sessionId);){if(e.type===`response`||e.type===`error`){let t=e.message,n=t.id,r=this._requestResolvers.get(n);if(r)if(this._requestResolvers.delete(n),e.type===`response`)r(t);else{let e=t;r(new J(e.error.code,e.error.message,e.error.data))}else{let t=e.type===`response`?`Response`:`Error`;this._onerror(Error(`${t} handler missing for request ${n}`))}continue}await this._transport?.send(e.message,{relatedRequestId:t.requestId})}}let i=await this._taskStore.getTask(r,t.sessionId);if(!i)throw new J(j.InvalidParams,`Task not found: ${r}`);if(!Y(i.status))return await this._waitForTaskUpdate(r,t.signal),await n();if(Y(i.status)){let e=await this._taskStore.getTaskResult(r,t.sessionId);return this._clearTaskQueue(r),{...e,_meta:{...e._meta,[b]:{taskId:r}}}}return await n()};return await n()}),this.setRequestHandler(Ue,async(e,t)=>{try{let{tasks:n,nextCursor:r}=await this._taskStore.listTasks(e.params?.cursor,t.sessionId);return{tasks:n,nextCursor:r,_meta:{}}}catch(e){throw new J(j.InvalidParams,`Failed to list tasks: ${e instanceof Error?e.message:String(e)}`)}}),this.setRequestHandler(Ge,async(e,t)=>{try{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new J(j.InvalidParams,`Task not found: ${e.params.taskId}`);if(Y(n.status))throw new J(j.InvalidParams,`Cannot cancel task in terminal status: ${n.status}`);await this._taskStore.updateTaskStatus(e.params.taskId,`cancelled`,`Client cancelled task execution.`,t.sessionId),this._clearTaskQueue(e.params.taskId);let r=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!r)throw new J(j.InvalidParams,`Task not found after cancellation: ${e.params.taskId}`);return{_meta:{},...r}}catch(e){throw e instanceof J?e:new J(j.InvalidRequest,`Failed to cancel task: ${e instanceof Error?e.message:String(e)}`)}}))}async _oncancel(e){e.params.requestId&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),J.fromError(j.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw Error(`Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.`);this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),A(e)||M(e)?this._onresponse(e):k(e)?this._onrequest(e,t):me(e)?this._onnotification(e):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();for(let e of this._requestHandlerAbortControllers.values())e.abort();this._requestHandlerAbortControllers.clear();let t=J.fromError(j.ConnectionClosed,`Connection closed`);this._transport=void 0,this.onclose?.();for(let n of e.values())n(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){let t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;t!==void 0&&Promise.resolve().then(()=>t(e)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,r=this._transport,i=e.params?._meta?.[b]?.taskId;if(n===void 0){let t={jsonrpc:`2.0`,id:e.id,error:{code:j.MethodNotFound,message:`Method not found`}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{type:`error`,message:t,timestamp:Date.now()},r?.sessionId).catch(e=>this._onerror(Error(`Failed to enqueue error response: ${e}`))):r?.send(t).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(e.id,a);let o=de(e.params)?e.params.task:void 0,s=this._taskStore?this.requestTaskStore(e,r?.sessionId):void 0,c={signal:a.signal,sessionId:r?.sessionId,_meta:e.params?._meta,sendNotification:async t=>{if(a.signal.aborted)return;let n={relatedRequestId:e.id};i&&(n.relatedTask={taskId:i}),await this.notification(t,n)},sendRequest:async(t,n,r)=>{if(a.signal.aborted)throw new J(j.ConnectionClosed,`Request was cancelled`);let o={...r,relatedRequestId:e.id};i&&!o.relatedTask&&(o.relatedTask={taskId:i});let c=o.relatedTask?.taskId??i;return c&&s&&await s.updateTaskStatus(c,`input_required`),await this.request(t,n,o)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:i,taskStore:s,taskRequestedTtl:o?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{o&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,c)).then(async t=>{if(a.signal.aborted)return;let n={result:t,jsonrpc:`2.0`,id:e.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`response`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)},async t=>{if(a.signal.aborted)return;let n={jsonrpc:`2.0`,id:e.id,error:{code:Number.isSafeInteger(t.code)?t.code:j.InternalError,message:t.message??`Internal error`,...t.data!==void 0&&{data:t.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`error`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(e.id)===a&&this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._requestResolvers.get(t);if(n){this._requestResolvers.delete(t),A(e)?n(e):n(new J(e.error.code,e.error.message,e.error.data));return}let r=this._responseHandlers.get(t);if(r===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t);let i=!1;if(A(e)&&e.result&&typeof e.result==`object`){let n=e.result;if(n.task&&typeof n.task==`object`){let e=n.task;typeof e.taskId==`string`&&(i=!0,this._taskProgressTokens.set(e.taskId,t))}}i||this._progressHandlers.delete(t),A(e)?r(e):r(J.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,t,n){let{task:r}=n??{};if(!r){try{yield{type:`result`,result:await this.request(e,t,n)}}catch(e){yield{type:`error`,error:e instanceof J?e:new J(j.InternalError,String(e))}}return}let i;try{let r=await this.request(e,z,n);if(r.task)i=r.task.taskId,yield{type:`taskCreated`,task:r.task};else throw new J(j.InternalError,`Task creation did not return a task`);for(;;){let e=await this.getTask({taskId:i},n);if(yield{type:`taskStatus`,task:e},Y(e.status)){e.status===`completed`?yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)}:e.status===`failed`?yield{type:`error`,error:new J(j.InternalError,`Task ${i} failed`)}:e.status===`cancelled`&&(yield{type:`error`,error:new J(j.InternalError,`Task ${i} was cancelled`)});return}if(e.status===`input_required`){yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)};return}let r=e.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(e=>setTimeout(e,r)),n?.signal?.throwIfAborted()}}catch(e){yield{type:`error`,error:e instanceof J?e:new J(j.InternalError,String(e))}}}request(e,t,n){let{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a,task:o,relatedTask:s}=n??{};return new Promise((c,l)=>{let u=e=>{l(e)};if(!this._transport){u(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),o&&this.assertTaskCapability(e.method)}catch(e){u(e);return}n?.signal?.throwIfAborted();let d=this._requestMessageId++,f={...e,jsonrpc:`2.0`,id:d};n?.onprogress&&(this._progressHandlers.set(d,n.onprogress),f.params={...e.params,_meta:{...e.params?._meta||{},progressToken:d}}),o&&(f.params={...f.params,task:o}),s&&(f.params={...f.params,_meta:{...f.params?._meta||{},[b]:s}});let p=e=>{this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),this._transport?.send({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:d,reason:String(e)}},{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))),l(e instanceof J?e:new J(j.RequestTimeout,String(e)))};this._responseHandlers.set(d,e=>{if(!n?.signal?.aborted){if(e instanceof Error)return l(e);try{let n=v(t,e.result);n.success?c(n.data):l(n.error)}catch(e){l(e)}}}),n?.signal?.addEventListener(`abort`,()=>{p(n?.signal?.reason)});let m=n?.timeout??6e4;this._setupTimeout(d,m,n?.maxTotalTimeout,()=>p(J.fromError(j.RequestTimeout,`Request timed out`,{timeout:m})),n?.resetTimeoutOnProgress??!1);let h=s?.taskId;h?(this._requestResolvers.set(d,e=>{let t=this._responseHandlers.get(d);t?t(e):this._onerror(Error(`Response handler missing for side-channeled request ${d}`))}),this._enqueueTaskMessage(h,{type:`request`,message:f,timestamp:Date.now()}).catch(e=>{this._cleanupTimeout(d),l(e)})):this._transport.send(f,{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>{this._cleanupTimeout(d),l(e)})})}async getTask(e,t){return this.request({method:`tasks/get`,params:e},Ve,t)}async getTaskResult(e,t,n){return this.request({method:`tasks/result`,params:e},t,n)}async listTasks(e,t){return this.request({method:`tasks/list`,params:e},We,t)}async cancelTask(e,t){return this.request({method:`tasks/cancel`,params:e},Ke,t)}async notification(e,t){if(!this._transport)throw Error(`Not connected`);this.assertNotificationCapability(e.method);let n=t?.relatedTask?.taskId;if(n){let r={...e,jsonrpc:`2.0`,params:{...e.params,_meta:{...e.params?._meta||{},[b]:t.relatedTask}}};await this._enqueueTaskMessage(n,{type:`notification`,message:r,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let n={...e,jsonrpc:`2.0`};t?.relatedTask&&(n={...n,params:{...n.params,_meta:{...n.params?._meta||{},[b]:t.relatedTask}}}),this._transport?.send(n,t).catch(e=>this._onerror(e))});return}let r={...e,jsonrpc:`2.0`};t?.relatedTask&&(r={...r,params:{...r.params,_meta:{...r.params?._meta||{},[b]:t.relatedTask}}}),await this._transport.send(r,t)}setRequestHandler(e,t){let n=Dn(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(n,r)=>{let i=On(e,n);return Promise.resolve(t(i,r))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){let n=Dn(e);this._notificationHandlers.set(n,n=>{let r=On(e,n);return Promise.resolve(t(r))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let t=this._taskProgressTokens.get(e);t!==void 0&&(this._progressHandlers.delete(t),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,t,n){if(!this._taskStore||!this._taskMessageQueue)throw Error(`Cannot enqueue task message: taskStore and taskMessageQueue are not configured`);let r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,n,r)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,t);for(let t of n)if(t.type===`request`&&k(t.message)){let n=t.message.id,r=this._requestResolvers.get(n);r?(r(new J(j.InternalError,`Task cancelled or completed`)),this._requestResolvers.delete(n)):this._onerror(Error(`Resolver missing for request ${n} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let n=this._options?.defaultTaskPollInterval??1e3;try{let t=await this._taskStore?.getTask(e);t?.pollInterval&&(n=t.pollInterval)}catch{}return new Promise((e,r)=>{if(t.aborted){r(new J(j.InvalidRequest,`Request cancelled`));return}let i=setTimeout(e,n);t.addEventListener(`abort`,()=>{clearTimeout(i),r(new J(j.InvalidRequest,`Request cancelled`))},{once:!0})})}requestTaskStore(e,t){let n=this._taskStore;if(!n)throw Error(`No task store configured`);return{createTask:async r=>{if(!e)throw Error(`No request provided`);return await n.createTask(r,e.id,{method:e.method,params:e.params},t)},getTask:async e=>{let r=await n.getTask(e,t);if(!r)throw new J(j.InvalidParams,`Failed to retrieve task: Task not found`);return r},storeTaskResult:async(e,r,i)=>{await n.storeTaskResult(e,r,i,t);let a=await n.getTask(e,t);if(a){let t=B.parse({method:`notifications/tasks/status`,params:a});await this.notification(t),Y(a.status)&&this._cleanupTaskProgressHandler(e)}},getTaskResult:e=>n.getTaskResult(e,t),updateTaskStatus:async(e,r,i)=>{let a=await n.getTask(e,t);if(!a)throw new J(j.InvalidParams,`Task "${e}" not found - it may have been cleaned up`);if(Y(a.status))throw new J(j.InvalidParams,`Cannot update task "${e}" from terminal status "${a.status}" to "${r}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(e,r,i,t);let o=await n.getTask(e,t);if(o){let t=B.parse({method:`notifications/tasks/status`,params:o});await this.notification(t),Y(o.status)&&this._cleanupTaskProgressHandler(e)}},listTasks:e=>n.listTasks(e,t)}}};function An(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function jn(e,t){let n={...e};for(let e in t){let r=e,i=t[r];if(i===void 0)continue;let a=n[r];An(a)&&An(i)?n[r]={...a,...i}:n[r]=i}return n}var Mn=e(t(),1),Nn=e(n(),1);function Pn(){let e=new Mn.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,Nn.default)(e),e}var Fn=class{constructor(e){this._ajv=e??Pn()}getValidator(e){let t=`$id`in e&&typeof e.$id==`string`?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return e=>t(e)?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(t.errors)}}},In=class{constructor(e){this._server=e}requestStream(e,t,n){return this._server.requestStream(e,t,n)}createMessageStream(e,t){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],o=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!o)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(o){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return this.requestStream({method:`sampling/createMessage`,params:e},K,t)}elicitInputStream(e,t){let n=this._server.getClientCapabilities(),r=e.mode??`form`;switch(r){case`url`:if(!n?.elicitation?.url)throw Error(`Client does not support url elicitation.`);break;case`form`:if(!n?.elicitation?.form)throw Error(`Client does not support form elicitation.`);break}let i=r===`form`&&e.mode===void 0?{...e,mode:`form`}:e;return this.requestStream({method:`elicitation/create`,params:i},q,t)}async getTask(e,t){return this._server.getTask({taskId:e},t)}async getTaskResult(e,t,n){return this._server.getTaskResult({taskId:e},t,n)}async listTasks(e,t){return this._server.listTasks(e?{cursor:e}:void 0,t)}async cancelTask(e,t){return this._server.cancelTask({taskId:e},t)}};function Ln(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`tools/call`:if(!e.tools?.call)throw Error(`${n} does not support task creation for tools/call (required for ${t})`);break;default:break}}function Rn(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`sampling/createMessage`:if(!e.sampling?.createMessage)throw Error(`${n} does not support task creation for sampling/createMessage (required for ${t})`);break;case`elicitation/create`:if(!e.elicitation?.create)throw Error(`${n} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var zn=class extends kn{constructor(e,t){super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(W.options.map((e,t)=>[e,t])),this.isMessageIgnored=(e,t)=>{let n=this._loggingLevels.get(t);return n?this.LOG_LEVEL_SEVERITY.get(e)<this.LOG_LEVEL_SEVERITY.get(n):!1},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new Fn,this.setRequestHandler(Oe,e=>this._oninitialize(e)),this.setNotificationHandler(Me,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Bt,async(e,t)=>{let n=t.sessionId||t.requestInfo?.headers[`mcp-session-id`]||void 0,{level:r}=e.params,i=W.safeParse(r);return i.success&&this._loggingLevels.set(n,i.data),{}})}get experimental(){return this._experimental||={tasks:new In(this)},this._experimental}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=jn(this._capabilities,e)}setRequestHandler(e,t){let n=re(e)?.method;if(!n)throw Error(`Schema is missing a method literal`);let r;if(_(n)){let e=n;r=e._zod?.def?.value??e.value}else{let e=n;r=e._def?.value??e.value}if(typeof r!=`string`)throw Error(`Schema method literal must be a string`);return r===`tools/call`?super.setRequestHandler(e,async(e,n)=>{let r=v(It,e);if(!r.success){let e=r.error instanceof Error?r.error.message:String(r.error);throw new J(j.InvalidParams,`Invalid tools/call request: ${e}`)}let{params:i}=r.data,a=await Promise.resolve(t(e,n));if(i.task){let e=v(z,a);if(!e.success){let t=e.error instanceof Error?e.error.message:String(e.error);throw new J(j.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}let o=v(U,a);if(!o.success){let e=o.error instanceof Error?o.error.message:String(o.error);throw new J(j.InvalidParams,`Invalid tools/call result: ${e}`)}return o.data}):super.setRequestHandler(e,t)}assertCapabilityForMethod(e){switch(e){case`sampling/createMessage`:if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${e})`);break;case`elicitation/create`:if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${e})`);break;case`roots/list`:if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${e})`);break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/message`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`notifications/resources/updated`:case`notifications/resources/list_changed`:if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${e})`);break;case`notifications/tools/list_changed`:if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case`notifications/prompts/list_changed`:if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case`notifications/elicitation/complete`:if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${e})`);break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case`completion/complete`:if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${e})`);break;case`logging/setLevel`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${e})`);break;case`tasks/get`:case`tasks/list`:case`tasks/result`:case`tasks/cancel`:if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${e})`);break;case`ping`:case`initialize`:break}}assertTaskCapability(e){Rn(this._clientCapabilities?.tasks?.requests,e,`Client`)}assertTaskHandlerCapability(e){this._capabilities&&Ln(this._capabilities.tasks?.requests,e,`Server`)}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:y.includes(t)?t:ae,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:`ping`},N)}async createMessage(e,t){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],o=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!o)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(o){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return e.tools?this.request({method:`sampling/createMessage`,params:e},Zt,t):this.request({method:`sampling/createMessage`,params:e},K,t)}async elicitInput(e,t){switch(e.mode??`form`){case`url`:{if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support url elicitation.`);let n=e;return this.request({method:`elicitation/create`,params:n},q,t)}case`form`:{if(!this._clientCapabilities?.elicitation?.form)throw Error(`Client does not support form elicitation.`);let n=e.mode===`form`?e:{...e,mode:`form`},r=await this.request({method:`elicitation/create`,params:n},q,t);if(r.action===`accept`&&r.content&&n.requestedSchema)try{let e=this._jsonSchemaValidator.getValidator(n.requestedSchema)(r.content);if(!e.valid)throw new J(j.InvalidParams,`Elicitation response content does not match requested schema: ${e.errorMessage}`)}catch(e){throw e instanceof J?e:new J(j.InternalError,`Error validating elicitation response: ${e instanceof Error?e.message:String(e)}`)}return r}}}createElicitationCompletionNotifier(e,t){if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for notifications/elicitation/complete)`);return()=>this.notification({method:`notifications/elicitation/complete`,params:{elicitationId:e}},t)}async listRoots(e,t){return this.request({method:`roots/list`,params:e},wn,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:`notifications/message`,params:e})}async sendResourceUpdated(e){return this.notification({method:`notifications/resources/updated`,params:e})}async sendResourceListChanged(){return this.notification({method:`notifications/resources/list_changed`})}async sendToolListChanged(){return this.notification({method:`notifications/tools/list_changed`})}async sendPromptListChanged(){return this.notification({method:`notifications/prompts/list_changed`})}};const Bn=`approve`;function Vn(){return{name:Bn,description:`Permission prompt handler - approves or denies tool usage requests`,inputSchema:{type:`object`,properties:{tool_name:{type:`string`},input:{type:`object`,additionalProperties:!0},tool_use_id:{type:`string`}},required:[`tool_name`,`input`,`tool_use_id`]}}}function Hn(e){if(typeof e!=`object`||!e)return`Arguments must be an object`;let t=e;return typeof t.tool_name==`string`?typeof t.tool_use_id==`string`?typeof t.input!=`object`||t.input===null||Array.isArray(t.input)?`input must be an object`:{tool_name:t.tool_name,tool_use_id:t.tool_use_id,input:t.input}:`tool_use_id must be a string`:`tool_name must be a string`}async function Un(e,t,n,r){let i=e=>({content:[{type:`text`,text:JSON.stringify({behavior:`deny`,message:e})}]}),a=n?t.get(n):void 0;if(!a)return i(`No agent context found for this session`);let o=Hn(e??{});if(typeof o==`string`)return i(`Invalid approve tool arguments: ${o}`);let s;try{s=await r({toolName:o.tool_name,args:o.input,toolCallId:o.tool_use_id,agentId:a.agentId,adapterId:a.adapterId,adapterName:a.adapterName,adapterSessionId:a.adapterSessionId,sessionId:a.sessionId})}catch(e){return i(`Tool approval request failed: ${e instanceof Error?e.message:`Unknown error`}`)}return{content:[{type:`text`,text:JSON.stringify(s.action===`allow`?{behavior:`allow`,updatedInput:s.updatedInput??o.input}:{behavior:`deny`,message:s.message??`Denied by policy`})}]}}function Wn(e,t){let n=t[e.toolsetName];return n?`${n}.${e.name}`:e.name}async function Gn(e,t,n){let r=t?.pluginToolsets??{},i=t?.staticFallback??[],a=await e.requestOptional(s.list,{adapterId:n?.adapterId,adapterName:n?.adapterName}),o=a.handled?a.data.tools:i,c=t?.getExposedTools?t.getExposedTools(o):o,l=c.map(e=>Wn(e,r)),u=new Map;for(let e of l)u.set(e,(u.get(e)??0)+1);let d=new Map,f=[];for(let e=0;e<c.length;e++){let t=c[e],n=l[e],r=(u.get(n)??1)>1?`${t.toolsetName}.${t.name}`:n,i={mcpName:r,sourceToolName:t.name,toolsetName:t.toolsetName};if(d.has(r))throw Error(`Duplicate resolved MCP tool name: ${r}`);d.set(r,i),f.push(Kn(t,r))}return{tools:f,byMcpName:d}}function Kn(e,t){return{name:t,description:e.description,inputSchema:u(e.inputSchema),annotations:e.annotations}}function qn(e){let t=!1;return()=>{t||(t=!0,e?.())}}function Jn(e){let t;return()=>t??=e()}async function Yn(e,t,n,r){try{await e.connect(t)}catch(e){try{await n()}catch(t){throw AggregateError([e,t],`Failed to start and clean up ${r}`)}throw e}}async function Xn(e,t){let n=(await Promise.allSettled(e)).filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));if(n.length>0)throw AggregateError(n,t)}function Zn(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0||e>18e5)throw RangeError(`toolExecutionTimeoutMs must be a positive safe integer no greater than 1800000`);return e}}function Qn(e,t){if(e!==void 0){if(!Number.isFinite(e)||e<=0)throw RangeError(`${t} must be a positive finite number of milliseconds`);return e}}const $n=2147483647;function er(e,t){let n=Qn(e,t);if(n!==void 0&&n>$n)throw RangeError(`${t} must be no greater than ${$n} milliseconds`);return n}const tr=`adapterSessionId`,X=`x-adapter-session-id`;function nr(e){return e.success?{content:[{type:`text`,text:JSON.stringify(e.data,null,2)}]}:{content:[{type:`text`,text:JSON.stringify(e.error,null,2)}],isError:!0}}function rr(e){let t=e.requestInfo?.headers[X];return Array.isArray(t)?t[0]:t}function ir(e,t){if(!e||!t)return;let n=t.get(e);if(n)return{adapterId:n.adapterId,adapterName:n.adapterName}}function ar(e,t){let n=qn(t.on(s.registryChanged,()=>{e.sendToolListChanged().catch(e=>{console.error(`[MCP Server] Failed to send tools/list_changed notification:`,e)})})),r=e.onclose;e.onclose=()=>{n(),r?.()};let i=e.close.bind(e);e.close=async()=>{try{await i()}finally{n()}}}function or(e,t){return{cwd:e?.cwd??process.cwd(),sessionId:e?.sessionId??t,env:e?.env,agentId:e?.agentId,adapterSessionId:e?.adapterSessionId,turnId:e?.turnId,reasoning:e?.reasoning,toolCallId:e?.toolCallId,turnContext:e?.turnContext,constraints:e?.constraints}}async function sr(e,t,n){let{contextRegistry:r,toolDiscovery:i,resolveContextOverrides:o}=n??{},c=Zn(n?.toolExecutionTimeoutMs),l=new zn({name:`makaio`,version:`1.0.0`},{capabilities:{tools:{listChanged:!0}}}),u=t=>e.request(a.toolApprove,t);return l.setRequestHandler(Nt,async(t,n)=>({tools:[...(await Gn(e,i,ir(rr(n),r))).tools,...r?[Vn()]:[]]})),l.setRequestHandler(It,async(n,a)=>{let l=rr(a);if(n.params.name===`approve`)return r?Un(n.params.arguments,r,l,u):{content:[{type:`text`,text:JSON.stringify({behavior:`deny`,message:`Permission prompt tool is not available in this server mode`})}]};let d=ir(l,r),f=(await Gn(e,i,d)).byMcpName.get(n.params.name);if(!f)throw new J(j.InvalidParams,`Tool ${n.params.name} not found`);let p=o?.(l),m=or(p,t),h={toolName:f.sourceToolName,input:n.params.arguments??{},adapterId:d?.adapterId,adapterName:d?.adapterName,contextOverrides:m},g=c===void 0?await e.requestOptional(s.execute,h):await e.requestOptional(s.execute,h,{timeout:c});if(!g.handled)throw new J(j.InternalError,`Tool execution handler unavailable`);return nr(g.data)}),ar(l,e),l}var cr=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
2
2
  `);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),lr(t)}clear(){this._buffer=void 0}};function lr(e){return _e.parse(JSON.parse(e))}function ur(e){return JSON.stringify(e)+`
3
3
  `}var dr=class{constructor(e=m.stdin,t=m.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new cr,this._started=!1,this._ondata=e=>{this._readBuffer.append(e),this.processReadBuffer()},this._onerror=e=>{this.onerror?.(e)}}async start(){if(this._started)throw Error(`StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.`);this._started=!0,this._stdin.on(`data`,this._ondata),this._stdin.on(`error`,this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off(`data`,this._ondata),this._stdin.off(`error`,this._onerror),this._stdin.listenerCount(`data`)===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(t=>{let n=ur(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}},fr=class{constructor(e={}){this._started=!1,this._hasHandledRequest=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId=`_GET_stream`,this.sessionIdGenerator=e.sessionIdGenerator,this._enableJsonResponse=e.enableJsonResponse??!1,this._eventStore=e.eventStore,this._onsessioninitialized=e.onsessioninitialized,this._onsessionclosed=e.onsessionclosed,this._allowedHosts=e.allowedHosts,this._allowedOrigins=e.allowedOrigins,this._enableDnsRebindingProtection=e.enableDnsRebindingProtection??!1,this._retryInterval=e.retryInterval}async start(){if(this._started)throw Error(`Transport already started`);this._started=!0}createJsonErrorResponse(e,t,n,r){let i={code:t,message:n};return r?.data!==void 0&&(i.data=r.data),new Response(JSON.stringify({jsonrpc:`2.0`,error:i,id:null}),{status:e,headers:{"Content-Type":`application/json`,...r?.headers}})}validateRequestHeaders(e){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let t=e.headers.get(`host`);if(!t||!this._allowedHosts.includes(t)){let e=`Invalid Host header: ${t}`;return this.onerror?.(Error(e)),this.createJsonErrorResponse(403,-32e3,e)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let t=e.headers.get(`origin`);if(t&&!this._allowedOrigins.includes(t)){let e=`Invalid Origin header: ${t}`;return this.onerror?.(Error(e)),this.createJsonErrorResponse(403,-32e3,e)}}}}async handleRequest(e,t){if(!this.sessionIdGenerator&&this._hasHandledRequest)throw Error(`Stateless transport cannot be reused across requests. Create a new transport per request.`);this._hasHandledRequest=!0;let n=this.validateRequestHeaders(e);if(n)return n;switch(e.method){case`POST`:return this.handlePostRequest(e,t);case`GET`:return this.handleGetRequest(e);case`DELETE`:return this.handleDeleteRequest(e);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(e,t,n,r){if(!this._eventStore||r<`2025-11-25`)return;let i=await this._eventStore.storeEvent(n,{}),a=`id: ${i}\ndata: \n\n`;this._retryInterval!==void 0&&(a=`id: ${i}\nretry: ${this._retryInterval}\ndata: \n\n`),e.enqueue(t.encode(a))}async handleGetRequest(e){if(!e.headers.get(`accept`)?.includes(`text/event-stream`))return this.onerror?.(Error(`Not Acceptable: Client must accept text/event-stream`)),this.createJsonErrorResponse(406,-32e3,`Not Acceptable: Client must accept text/event-stream`);let t=this.validateSession(e);if(t)return t;let n=this.validateProtocolVersion(e);if(n)return n;if(this._eventStore){let t=e.headers.get(`last-event-id`);if(t)return this.replayEvents(t)}if(this._streamMapping.get(this._standaloneSseStreamId)!==void 0)return this.onerror?.(Error(`Conflict: Only one SSE stream is allowed per session`)),this.createJsonErrorResponse(409,-32e3,`Conflict: Only one SSE stream is allowed per session`);let r=new TextEncoder,i,a=new ReadableStream({start:e=>{i=e},cancel:()=>{this._streamMapping.delete(this._standaloneSseStreamId)}}),o={"Content-Type":`text/event-stream`,"Cache-Control":`no-cache, no-transform`,Connection:`keep-alive`};return this.sessionId!==void 0&&(o[`mcp-session-id`]=this.sessionId),this._streamMapping.set(this._standaloneSseStreamId,{controller:i,encoder:r,cleanup:()=>{this._streamMapping.delete(this._standaloneSseStreamId);try{i.close()}catch{}}}),new Response(a,{headers:o})}async replayEvents(e){if(!this._eventStore)return this.onerror?.(Error(`Event store not configured`)),this.createJsonErrorResponse(400,-32e3,`Event store not configured`);try{let t;if(this._eventStore.getStreamIdForEventId){if(t=await this._eventStore.getStreamIdForEventId(e),!t)return this.onerror?.(Error(`Invalid event ID format`)),this.createJsonErrorResponse(400,-32e3,`Invalid event ID format`);if(this._streamMapping.get(t)!==void 0)return this.onerror?.(Error(`Conflict: Stream already has an active connection`)),this.createJsonErrorResponse(409,-32e3,`Conflict: Stream already has an active connection`)}let n={"Content-Type":`text/event-stream`,"Cache-Control":`no-cache, no-transform`,Connection:`keep-alive`};this.sessionId!==void 0&&(n[`mcp-session-id`]=this.sessionId);let r=new TextEncoder,i,a=new ReadableStream({start:e=>{i=e},cancel:()=>{}}),o=await this._eventStore.replayEventsAfter(e,{send:async(e,t)=>{if(!this.writeSSEEvent(i,r,t,e)){this.onerror?.(Error(`Failed replay events`));try{i.close()}catch{}}}});return this._streamMapping.set(o,{controller:i,encoder:r,cleanup:()=>{this._streamMapping.delete(o);try{i.close()}catch{}}}),new Response(a,{headers:n})}catch(e){return this.onerror?.(e),this.createJsonErrorResponse(500,-32e3,`Error replaying events`)}}writeSSEEvent(e,t,n,r){try{let i=`event: message
4
4
  `;return r&&(i+=`id: ${r}\n`),i+=`data: ${JSON.stringify(n)}\n\n`,e.enqueue(t.encode(i)),!0}catch(e){return this.onerror?.(e),!1}}handleUnsupportedRequest(){return this.onerror?.(Error(`Method not allowed.`)),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(e,t){try{let n=e.headers.get(`accept`);if(!n?.includes(`application/json`)||!n.includes(`text/event-stream`))return this.onerror?.(Error(`Not Acceptable: Client must accept both application/json and text/event-stream`)),this.createJsonErrorResponse(406,-32e3,`Not Acceptable: Client must accept both application/json and text/event-stream`);let r=e.headers.get(`content-type`);if(!r||!r.includes(`application/json`))return this.onerror?.(Error(`Unsupported Media Type: Content-Type must be application/json`)),this.createJsonErrorResponse(415,-32e3,`Unsupported Media Type: Content-Type must be application/json`);let i={headers:Object.fromEntries(e.headers.entries()),url:new URL(e.url)},a;if(t?.parsedBody!==void 0)a=t.parsedBody;else try{a=await e.json()}catch{return this.onerror?.(Error(`Parse error: Invalid JSON`)),this.createJsonErrorResponse(400,-32700,`Parse error: Invalid JSON`)}let o;try{o=Array.isArray(a)?a.map(e=>_e.parse(e)):[_e.parse(a)]}catch{return this.onerror?.(Error(`Parse error: Invalid JSON-RPC message`)),this.createJsonErrorResponse(400,-32700,`Parse error: Invalid JSON-RPC message`)}let s=o.some(ke);if(s){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(Error(`Invalid Request: Server already initialized`)),this.createJsonErrorResponse(400,-32600,`Invalid Request: Server already initialized`);if(o.length>1)return this.onerror?.(Error(`Invalid Request: Only one initialization request is allowed`)),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(!s){let t=this.validateSession(e);if(t)return t;let n=this.validateProtocolVersion(e);if(n)return n}if(!o.some(k)){for(let e of o)this.onmessage?.(e,{authInfo:t?.authInfo,requestInfo:i});return new Response(null,{status:202})}let c=crypto.randomUUID(),l=o.find(e=>ke(e)),u=l?l.params.protocolVersion:e.headers.get(`mcp-protocol-version`)??`2025-03-26`;if(this._enableJsonResponse)return new Promise(e=>{this._streamMapping.set(c,{resolveJson:e,cleanup:()=>{this._streamMapping.delete(c)}});for(let e of o)k(e)&&this._requestToStreamMapping.set(e.id,c);for(let e of o)this.onmessage?.(e,{authInfo:t?.authInfo,requestInfo:i})});let d=new TextEncoder,f,p=new ReadableStream({start:e=>{f=e},cancel:()=>{this._streamMapping.delete(c)}}),m={"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`};this.sessionId!==void 0&&(m[`mcp-session-id`]=this.sessionId);for(let e of o)k(e)&&(this._streamMapping.set(c,{controller:f,encoder:d,cleanup:()=>{this._streamMapping.delete(c);try{f.close()}catch{}}}),this._requestToStreamMapping.set(e.id,c));await this.writePrimingEvent(f,d,c,u);for(let e of o){let n,r;k(e)&&this._eventStore&&u>=`2025-11-25`&&(n=()=>{this.closeSSEStream(e.id)},r=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(e,{authInfo:t?.authInfo,requestInfo:i,closeSSEStream:n,closeStandaloneSSEStream:r})}return new Response(p,{status:200,headers:m})}catch(e){return this.onerror?.(e),this.createJsonErrorResponse(400,-32700,`Parse error`,{data:String(e)})}}async handleDeleteRequest(e){return this.validateSession(e)||this.validateProtocolVersion(e)||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(e){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(Error(`Bad Request: Server not initialized`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Server not initialized`);let t=e.headers.get(`mcp-session-id`);if(!t)return this.onerror?.(Error(`Bad Request: Mcp-Session-Id header is required`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Mcp-Session-Id header is required`);if(t!==this.sessionId)return this.onerror?.(Error(`Session not found`)),this.createJsonErrorResponse(404,-32001,`Session not found`)}validateProtocolVersion(e){let t=e.headers.get(`mcp-protocol-version`);if(t!==null&&!y.includes(t))return this.onerror?.(Error(`Bad Request: Unsupported protocol version: ${t} (supported versions: ${y.join(`, `)})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${t} (supported versions: ${y.join(`, `)})`)}async close(){this._streamMapping.forEach(({cleanup:e})=>{e()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(e){let t=this._requestToStreamMapping.get(e);if(!t)return;let n=this._streamMapping.get(t);n&&n.cleanup()}closeStandaloneSSEStream(){let e=this._streamMapping.get(this._standaloneSseStreamId);e&&e.cleanup()}async send(e,t){let n=t?.relatedRequestId;if((A(e)||M(e))&&(n=e.id),n===void 0){if(A(e)||M(e))throw Error(`Cannot send a response on a standalone SSE stream unless resuming a previous client request`);let t;this._eventStore&&(t=await this._eventStore.storeEvent(this._standaloneSseStreamId,e));let n=this._streamMapping.get(this._standaloneSseStreamId);if(n===void 0)return;n.controller&&n.encoder&&this.writeSSEEvent(n.controller,n.encoder,e,t);return}let r=this._requestToStreamMapping.get(n);if(!r)throw Error(`No connection established for request ID: ${String(n)}`);let i=this._streamMapping.get(r);if(!this._enableJsonResponse&&i?.controller&&i?.encoder){let t;this._eventStore&&(t=await this._eventStore.storeEvent(r,e)),this.writeSSEEvent(i.controller,i.encoder,e,t)}if(A(e)||M(e)){this._requestResponseMap.set(n,e);let t=Array.from(this._requestToStreamMapping.entries()).filter(([e,t])=>t===r).map(([e])=>e);if(t.every(e=>this._requestResponseMap.has(e))){if(!i)throw Error(`No connection established for request ID: ${String(n)}`);if(this._enableJsonResponse&&i.resolveJson){let e={"Content-Type":`application/json`};this.sessionId!==void 0&&(e[`mcp-session-id`]=this.sessionId);let n=t.map(e=>this._requestResponseMap.get(e));n.length===1?i.resolveJson(new Response(JSON.stringify(n[0]),{status:200,headers:e})):i.resolveJson(new Response(JSON.stringify(n),{status:200,headers:e}))}else i.cleanup();for(let e of t)this._requestResponseMap.delete(e),this._requestToStreamMapping.delete(e)}}}},pr=class{constructor(e={}){this._requestContext=new WeakMap,this._webStandardTransport=new fr(e),this._requestListener=ne(async e=>{let t=this._requestContext.get(e);return this._webStandardTransport.handleRequest(e,{authInfo:t?.authInfo,parsedBody:t?.parsedBody})},{overrideGlobalObjects:!1})}get sessionId(){return this._webStandardTransport.sessionId}set onclose(e){this._webStandardTransport.onclose=e}get onclose(){return this._webStandardTransport.onclose}set onerror(e){this._webStandardTransport.onerror=e}get onerror(){return this._webStandardTransport.onerror}set onmessage(e){this._webStandardTransport.onmessage=e}get onmessage(){return this._webStandardTransport.onmessage}async start(){return this._webStandardTransport.start()}async close(){return this._webStandardTransport.close()}async send(e,t){return this._webStandardTransport.send(e,t)}async handleRequest(e,t,n){let r=e.auth;await ne(async e=>this._webStandardTransport.handleRequest(e,{authInfo:r,parsedBody:n}),{overrideGlobalObjects:!1})(e,t)}closeSSEStream(e){this._webStandardTransport.closeSSEStream(e)}closeStandaloneSSEStream(){this._webStandardTransport.closeStandaloneSSEStream()}};async function mr(e){await new Promise((t,n)=>{e.close(e=>{if(e&&e.code!==`ERR_SERVER_NOT_RUNNING`){n(e);return}t()})})}async function hr(e,t,n){return new Promise((r,i)=>{let a=t=>{e.off(`error`,o),n(t).then(()=>i(t),e=>i(AggregateError([t,e],`Failed during MCP server startup`)))},o=e=>a(e);e.once(`error`,o);try{e.listen(t,`127.0.0.1`,()=>{let t=e.address();if(!t||typeof t==`string`){a(Error(`Unexpected server address format`));return}e.off(`error`,o),r(t.port)})}catch(e){a(e instanceof Error?e:Error(String(e)))}})}function Z(e,t,n){return{status:e,body:{jsonrpc:`2.0`,error:{code:t,message:n},id:null}}}const gr=Z(404,-32001,`Session not found`),_r=Z(400,-32e3,`Bad Request: Mcp-Session-Id header is required`),vr=Z(503,-32e3,`Server is shutting down`),Q=Z(500,-32603,`Internal server error`);function yr(e){switch(e){case`unknown-session`:return gr;case`session-id-required`:return _r;case`closed`:return vr;case`create-failed`:return Q}}function br(e,t){e.writeHead(t.status,{"Content-Type":`application/json`}),e.end(JSON.stringify(t.body))}function xr(e){return new Response(JSON.stringify(e.body),{status:e.status,headers:{"Content-Type":`application/json`}})}var Sr=class{registry=new Map;register(e,t){this.registry.set(e,t)}get(e){return this.registry.get(e)}unregister(e){this.registry.delete(e)}};function Cr(e,t){typeof process>`u`||process.env?.MAKAIO_DEBUG!==`true`||console.debug(`[McpTransportRegistry] ${e}`,t)}function wr(e,t){let n=setInterval(e,t);return typeof n==`object`&&typeof n.unref==`function`&&n.unref(),n}function Tr(e){console.error(`[MCP Server] Failed to close an MCP client session:`,e)}function Er(e){return console.error(`[MCP Server] Failed to create an MCP client session:`,e),{outcome:`create-failed`,error:e}}function Dr(e,t){let n=e.getReader();return new ReadableStream({async pull(e){try{let{done:r,value:i}=await n.read();if(r){e.close(),t();return}e.enqueue(i)}catch(n){e.error(n),t()}},async cancel(e){t(),await n.cancel(e)}})}var Or=class{sessions=new Map;pending=new Set;startups=new Set;disposals=new Set;createSession;idleTimeoutMs;sweepTimer;closed=!1;closePromise;constructor(e){this.createSession=e.createSession,this.idleTimeoutMs=Qn(e.idleTimeoutMs,`idleTimeoutMs`)??6e5;let t=er(e.sweepIntervalMs,`sweepIntervalMs`)??6e4;this.sweepTimer=wr(()=>this.sweep(),t)}get size(){return this.sessions.size}async route(e){let t=await this.resolve(e);return Cr(`routed request`,{method:e.method,mcpSessionId:e.mcpSessionId,outcome:t.outcome,sessions:this.sessions.size}),t}closeAll(){return this.closePromise??=this.drainAll()}async drainAll(){this.closed=!0,clearInterval(this.sweepTimer),await Promise.allSettled(this.startups);let e=[...this.sessions.values(),...this.pending];this.sessions.clear(),this.pending.clear(),await Xn([...e.map(e=>e.server.close()),...this.disposals],`Failed to close MCP client sessions`)}disposeInBackground(e){let t=e.server.close();this.disposals.add(t),t.catch(Tr).finally(()=>this.disposals.delete(t))}async resolve(e){if(this.closed)return{outcome:`closed`};if(e.mcpSessionId!==void 0){let t=this.sessions.get(e.mcpSessionId);return t?this.lease(t):{outcome:`unknown-session`}}return e.method===`POST`?this.createPending():{outcome:`session-id-required`}}lease(e){e.openExchanges+=1,e.lastActivity=Date.now();let t=!1;return{outcome:`dispatch`,transport:e.transport,finish:()=>{t||(t=!0,--e.openExchanges,e.lastActivity=Date.now(),this.pending.delete(e)&&this.disposeInBackground(e))}}}async createPending(){let e=this.buildAndLeasePending();this.startups.add(e);try{return await e}finally{this.startups.delete(e)}}async buildAndLeasePending(){let e=e=>{this.pending.delete(i)&&this.sessions.set(e,i)},t;try{t=await this.createSession({onSessionInitialized:e})}catch(e){return Er(e)}let{transport:n,server:r}=t;n.onclose=()=>{let e=n.sessionId;e!==void 0&&this.sessions.delete(e)};try{await Yn(r,n,()=>r.close(),`MCP client session`)}catch(e){return Er(e)}let i={transport:n,server:r,lastActivity:Date.now(),openExchanges:0};return this.pending.add(i),this.closed?{outcome:`closed`}:this.lease(i)}sweep(){let e=Date.now()-this.idleTimeoutMs;for(let[t,n]of[...this.sessions])n.openExchanges>0||n.lastActivity>=e||(this.sessions.delete(t),this.disposeInBackground(n))}};function kr(e,t,n){Zn(t.toolExecutionTimeoutMs);let r=new Sr,i=t.agentContext?.adapterSessionId??crypto.randomUUID();t.agentContext&&r.register(i,t.agentContext);let a=new Or({createSession:async a=>{let o=n(a);return{server:await sr(e,i,{contextRegistry:r,toolDiscovery:t.toolDiscovery,resolveContextOverrides:t.resolveContextOverrides,toolExecutionTimeoutMs:t.toolExecutionTimeoutMs}),transport:o}},idleTimeoutMs:t.idleTimeoutMs,sweepIntervalMs:t.sweepIntervalMs}),o=qn(t.onclose);return{registry:a,contextRegistry:r,close:Jn(()=>a.closeAll().finally(o))}}function Ar(e){let t=e.url??`/`,n=t.indexOf(`?`);if(n===-1)return;let r=new URLSearchParams(t.slice(n+1)).get(tr);r&&(e.headers[X]=r,Object.defineProperty(e,`rawHeaders`,{value:[...e.rawHeaders,X,r],configurable:!0}))}function jr(e){let t=e.headers[`mcp-session-id`];return Array.isArray(t)?t[0]:t}async function Mr(e,t={}){let n=kr(e,t,e=>new pr({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:t=>e.onSessionInitialized(t)})),r=async(e,t)=>{let r=await n.registry.route({method:e.method??`GET`,mcpSessionId:jr(e)});if(r.outcome!==`dispatch`){br(t,yr(r.outcome));return}if(t.once(`close`,r.finish),t.closed){r.finish();return}await r.transport.handleRequest(e,t)};return{handler:(e,t)=>{Ar(e),r(e,t).catch(e=>{console.error(`[MCP Server] Failed to handle request:`,e),!t.headersSent&&!t.writableEnded&&br(t,Q)})},contextRegistry:n.contextRegistry,close:n.close}}async function Nr(e,t={}){let n=await Mr(e,t),r=te.createServer(n.handler),i=await hr(r,t.port??0,async()=>{await Promise.allSettled([n.close(),mr(r)])});console.error(`[MCP Server] HTTP transport listening on port ${i}`);let a=Jn(async()=>{r.closeAllConnections(),await Xn([n.close(),mr(r)],`Failed to close HTTP MCP server resources`)});return{port:i,contextRegistry:n.contextRegistry,close:a}}async function Pr(e,t,n={transport:`stdio`}){if(n.transport===`http`)return Nr(e,n);let r=await sr(e,t,{toolDiscovery:n.toolDiscovery,resolveContextOverrides:n.resolveContextOverrides,toolExecutionTimeoutMs:n.toolExecutionTimeoutMs}),i=new dr,a=process.stdin,o=qn(n.onclose),s=Jn(async()=>{a.off(`end`,c),a.off(`close`,c),await r.close().finally(o)}),c=()=>{s().catch(e=>{console.error(`[MCP Server] Error closing server on stdin EOF:`,e)})};return i.onclose=()=>{a.off(`end`,c),a.off(`close`,c),o()},a.once(`end`,c),a.once(`close`,c),await Yn(r,i,s,`stdio MCP server`),console.error(`[MCP Server] Started and listening on stdio`),{close:async()=>{await s()}}}function Fr(e){if(!e.url.includes(`adapterSessionId`))return e;let t=new URL(e.url).searchParams.get(tr);if(!t)return e;let n=new Headers(e.headers);return n.set(X,t),new Request(e,{headers:n})}async function Ir(e,t={}){let n=kr(e,t,e=>new fr({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:t=>e.onSessionInitialized(t)}));return{handler:async e=>{let t;try{let r=Fr(e);if(t=await n.registry.route({method:r.method,mcpSessionId:r.headers.get(`mcp-session-id`)??void 0}),t.outcome!==`dispatch`)return xr(yr(t.outcome));let i=await t.transport.handleRequest(r);return i.body===null?(t.finish(),i):new Response(Dr(i.body,t.finish),{status:i.status,statusText:i.statusText,headers:i.headers})}catch(e){return t?.outcome===`dispatch`&&t.finish(),console.error(`[MCP Server] Failed to handle request:`,e),xr(Q)}},contextRegistry:n.contextRegistry,close:n.close}}var Lr=class extends c{mcpHandle=null;startPromise=null;sessions=new r({maxSize:1e3,onEviction:e=>{this.mcpHandle?.contextRegistry.unregister(e)}});pinnedSessions=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(o.session.register,async e=>{let{adapterSessionId:t,agentId:n,adapterId:r,adapterName:i,sessionId:a,contextOverrides:o,pinned:s}=e.payload,c=await this.ensureStarted();c.contextRegistry.register(t,{agentId:n,adapterId:r,adapterName:i,adapterSessionId:t,sessionId:a});let l={agentId:n,adapterId:r,adapterName:i,sessionId:a,contextOverrides:o,lastActivity:Date.now(),pinned:s??!1};this.pinnedSessions.delete(t),this.sessions.delete(t),s?(this.pinnedSessions.set(t,l),this.pinnedSessions.size>100&&console.warn(`[McpServerBridgeService] pinnedSessions size (${this.pinnedSessions.size}) exceeds the safety cap of 100. This likely indicates a bug in the unregister path — sessions are not being released.`)):this.sessions.set(t,l),e.setResult({port:c.port})}),this.registerHandler(o.session.unregister,e=>{let{adapterSessionId:t}=e.payload;this.pinnedSessions.delete(t),this.sessions.delete(t),this.mcpHandle?.contextRegistry.unregister(t),e.setResult({})});let e=setInterval(()=>{let e=Date.now()-18e5;for(let[t,n]of this.sessions)n.lastActivity<e&&(this.sessions.delete(t),this.mcpHandle?.contextRegistry.unregister(t))},6e4);e.unref(),this.addCleanup(()=>clearInterval(e))}resolveOverrides(e){let t=this.pinnedSessions.get(e);if(t)return t.lastActivity=Date.now(),t.contextOverrides;let n=this.sessions.get(e);return n&&(n.lastActivity=Date.now()),n?.contextOverrides}async ensureStarted(){return this.mcpHandle?this.mcpHandle:(this.startPromise||=Nr(this.bus,{resolveContextOverrides:e=>{if(e)return this.resolveOverrides(e)},onclose:()=>{this.startPromise=null;let e=this.mcpHandle;for(let[t]of this.pinnedSessions)e?.contextRegistry.unregister(t);this.pinnedSessions.clear();for(let[t]of this.sessions)e?.contextRegistry.unregister(t);this.sessions.clear(),this.mcpHandle=null}}).then(async e=>{if(this.startPromise=null,!this.initialized)throw await e.close(),Error(`MCP server bridge was destroyed during startup`);return this.mcpHandle=e,this.addCleanup(()=>e.close()),e}).catch(e=>{throw this.startPromise=null,e}),this.startPromise)}},Rr=class{constructor(e){this._client=e}async*callToolStream(e,t=U,n){let r=this._client,i={...n,task:n?.task??(r.isToolTask(e.name)?{}:void 0)},a=r.requestStream({method:`tools/call`,params:e},t,i),o=r.getToolOutputValidator(e.name);for await(let t of a){if(t.type===`result`&&o){let n=t.result;if(!n.structuredContent&&!n.isError){yield{type:`error`,error:new J(j.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`)};return}if(n.structuredContent)try{let e=o(n.structuredContent);if(!e.valid){yield{type:`error`,error:new J(j.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)};return}}catch(e){if(e instanceof J){yield{type:`error`,error:e};return}yield{type:`error`,error:new J(j.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)};return}}yield t}}async getTask(e,t){return this._client.getTask({taskId:e},t)}async getTaskResult(e,t,n){return this._client.getTaskResult({taskId:e},t,n)}async listTasks(e,t){return this._client.listTasks(e?{cursor:e}:void 0,t)}async cancelTask(e,t){return this._client.cancelTask({taskId:e},t)}requestStream(e,t,n){return this._client.requestStream(e,t,n)}};function $(e,t){if(!(!e||typeof t!=`object`||!t)){if(e.type===`object`&&e.properties&&typeof e.properties==`object`){let n=t,r=e.properties;for(let e of Object.keys(r)){let t=r[e];n[e]===void 0&&Object.prototype.hasOwnProperty.call(t,`default`)&&(n[e]=t.default),n[e]!==void 0&&$(t,n[e])}}if(Array.isArray(e.anyOf))for(let n of e.anyOf)typeof n!=`boolean`&&$(n,t);if(Array.isArray(e.oneOf))for(let n of e.oneOf)typeof n!=`boolean`&&$(n,t)}}function zr(e){if(!e)return{supportsFormMode:!1,supportsUrlMode:!1};let t=e.form!==void 0,n=e.url!==void 0;return{supportsFormMode:t||!t&&!n,supportsUrlMode:n}}var Br=class extends kn{constructor(e,t){super(t),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._cachedKnownTaskTools=new Set,this._cachedRequiredTaskTools=new Set,this._listChangedDebounceTimers=new Map,this._capabilities=t?.capabilities??{},this._jsonSchemaValidator=t?.jsonSchemaValidator??new Fn,t?.listChanged&&(this._pendingListChangedConfig=t.listChanged)}_setupListChangedHandlers(e){e.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler(`tools`,Lt,e.tools,async()=>(await this.listTools()).tools),e.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler(`prompts`,kt,e.prompts,async()=>(await this.listPrompts()).prompts),e.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler(`resources`,st,e.resources,async()=>(await this.listResources()).resources)}get experimental(){return this._experimental||={tasks:new Rr(this)},this._experimental}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=jn(this._capabilities,e)}setRequestHandler(e,t){let n=re(e)?.method;if(!n)throw Error(`Schema is missing a method literal`);let r;if(_(n)){let e=n;r=e._zod?.def?.value??e.value}else{let e=n;r=e._def?.value??e.value}if(typeof r!=`string`)throw Error(`Schema method literal must be a string`);let i=r;return i===`elicitation/create`?super.setRequestHandler(e,async(e,n)=>{let r=v(mn,e);if(!r.success){let e=r.error instanceof Error?r.error.message:String(r.error);throw new J(j.InvalidParams,`Invalid elicitation request: ${e}`)}let{params:i}=r.data;i.mode=i.mode??`form`;let{supportsFormMode:a,supportsUrlMode:o}=zr(this._capabilities.elicitation);if(i.mode===`form`&&!a)throw new J(j.InvalidParams,`Client does not support form-mode elicitation requests`);if(i.mode===`url`&&!o)throw new J(j.InvalidParams,`Client does not support URL-mode elicitation requests`);let s=await Promise.resolve(t(e,n));if(i.task){let e=v(z,s);if(!e.success){let t=e.error instanceof Error?e.error.message:String(e.error);throw new J(j.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}let c=v(q,s);if(!c.success){let e=c.error instanceof Error?c.error.message:String(c.error);throw new J(j.InvalidParams,`Invalid elicitation result: ${e}`)}let l=c.data,u=i.mode===`form`?i.requestedSchema:void 0;if(i.mode===`form`&&l.action===`accept`&&l.content&&u&&this._capabilities.elicitation?.form?.applyDefaults)try{$(u,l.content)}catch{}return l}):i===`sampling/createMessage`?super.setRequestHandler(e,async(e,n)=>{let r=v(Xt,e);if(!r.success){let e=r.error instanceof Error?r.error.message:String(r.error);throw new J(j.InvalidParams,`Invalid sampling request: ${e}`)}let{params:i}=r.data,a=await Promise.resolve(t(e,n));if(i.task){let e=v(z,a);if(!e.success){let t=e.error instanceof Error?e.error.message:String(e.error);throw new J(j.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}let o=v(i.tools||i.toolChoice?Zt:K,a);if(!o.success){let e=o.error instanceof Error?o.error.message:String(o.error);throw new J(j.InvalidParams,`Invalid sampling result: ${e}`)}return o.data}):super.setRequestHandler(e,t)}assertCapability(e,t){if(!this._serverCapabilities?.[e])throw Error(`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(await super.connect(e),e.sessionId===void 0)try{let n=await this.request({method:`initialize`,params:{protocolVersion:ae,capabilities:this._capabilities,clientInfo:this._clientInfo}},je,t);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);if(!y.includes(n.protocolVersion))throw Error(`Server's protocol version is not supported: ${n.protocolVersion}`);this._serverCapabilities=n.capabilities,this._serverVersion=n.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(n.protocolVersion),this._instructions=n.instructions,await this.notification({method:`notifications/initialized`}),this._pendingListChangedConfig&&=(this._setupListChangedHandlers(this._pendingListChangedConfig),void 0)}catch(e){throw this.close(),e}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){switch(e){case`logging/setLevel`:if(!this._serverCapabilities?.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._serverCapabilities?.prompts)throw Error(`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:case`resources/subscribe`:case`resources/unsubscribe`:if(!this._serverCapabilities?.resources)throw Error(`Server does not support resources (required for ${e})`);if(e===`resources/subscribe`&&!this._serverCapabilities.resources.subscribe)throw Error(`Server does not support resource subscriptions (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._serverCapabilities?.tools)throw Error(`Server does not support tools (required for ${e})`);break;case`completion/complete`:if(!this._serverCapabilities?.completions)throw Error(`Server does not support completions (required for ${e})`);break;case`initialize`:break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/roots/list_changed`:if(!this._capabilities.roots?.listChanged)throw Error(`Client does not support roots list changed notifications (required for ${e})`);break;case`notifications/initialized`:break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case`sampling/createMessage`:if(!this._capabilities.sampling)throw Error(`Client does not support sampling capability (required for ${e})`);break;case`elicitation/create`:if(!this._capabilities.elicitation)throw Error(`Client does not support elicitation capability (required for ${e})`);break;case`roots/list`:if(!this._capabilities.roots)throw Error(`Client does not support roots capability (required for ${e})`);break;case`tasks/get`:case`tasks/list`:case`tasks/result`:case`tasks/cancel`:if(!this._capabilities.tasks)throw Error(`Client does not support tasks capability (required for ${e})`);break;case`ping`:break}}assertTaskCapability(e){Ln(this._serverCapabilities?.tasks?.requests,e,`Server`)}assertTaskHandlerCapability(e){this._capabilities&&Rn(this._capabilities.tasks?.requests,e,`Client`)}async ping(e){return this.request({method:`ping`},N,e)}async complete(e,t){return this.request({method:`completion/complete`,params:e},xn,t)}async setLoggingLevel(e,t){return this.request({method:`logging/setLevel`,params:{level:e}},N,t)}async getPrompt(e,t){return this.request({method:`prompts/get`,params:e},Ot,t)}async listPrompts(e,t){return this.request({method:`prompts/list`,params:e},_t,t)}async listResources(e,t){return this.request({method:`resources/list`,params:e},et,t)}async listResourceTemplates(e,t){return this.request({method:`resources/templates/list`,params:e},nt,t)}async readResource(e,t){return this.request({method:`resources/read`,params:e},ot,t)}async subscribeResource(e,t){return this.request({method:`resources/subscribe`,params:e},N,t)}async unsubscribeResource(e,t){return this.request({method:`resources/unsubscribe`,params:e},N,t)}async callTool(e,t=U,n){if(this.isToolTaskRequired(e.name))throw new J(j.InvalidRequest,`Tool "${e.name}" requires task-based execution. Use client.experimental.tasks.callToolStream() instead.`);let r=await this.request({method:`tools/call`,params:e},t,n),i=this.getToolOutputValidator(e.name);if(i){if(!r.structuredContent&&!r.isError)throw new J(j.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(r.structuredContent)try{let e=i(r.structuredContent);if(!e.valid)throw new J(j.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)}catch(e){throw e instanceof J?e:new J(j.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)}}return r}isToolTask(e){return this._serverCapabilities?.tasks?.requests?.tools?.call?this._cachedKnownTaskTools.has(e):!1}isToolTaskRequired(e){return this._cachedRequiredTaskTools.has(e)}cacheToolMetadata(e){this._cachedToolOutputValidators.clear(),this._cachedKnownTaskTools.clear(),this._cachedRequiredTaskTools.clear();for(let t of e){if(t.outputSchema){let e=this._jsonSchemaValidator.getValidator(t.outputSchema);this._cachedToolOutputValidators.set(t.name,e)}let e=t.execution?.taskSupport;(e===`required`||e===`optional`)&&this._cachedKnownTaskTools.add(t.name),e===`required`&&this._cachedRequiredTaskTools.add(t.name)}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,t){let n=await this.request({method:`tools/list`,params:e},Pt,t);return this.cacheToolMetadata(n.tools),n}_setupListChangedHandler(e,t,n,r){let i=Rt.safeParse(n);if(!i.success)throw Error(`Invalid ${e} listChanged options: ${i.error.message}`);if(typeof n.onChanged!=`function`)throw Error(`Invalid ${e} listChanged options: onChanged must be a function`);let{autoRefresh:a,debounceMs:o}=i.data,{onChanged:s}=n,c=async()=>{if(!a){s(null,null);return}try{s(null,await r())}catch(e){s(e instanceof Error?e:Error(String(e)),null)}};this.setNotificationHandler(t,()=>{if(o){let t=this._listChangedDebounceTimers.get(e);t&&clearTimeout(t);let n=setTimeout(c,o);this._listChangedDebounceTimers.set(e,n)}else c()})}async sendRootsListChanged(){return this.notification({method:`notifications/roots/list_changed`})}},Vr=e(i(),1);const Hr=m.platform===`win32`?[`APPDATA`,`HOMEDRIVE`,`HOMEPATH`,`LOCALAPPDATA`,`PATH`,`PROCESSOR_ARCHITECTURE`,`SYSTEMDRIVE`,`SYSTEMROOT`,`TEMP`,`USERNAME`,`USERPROFILE`,`PROGRAMFILES`]:[`HOME`,`LOGNAME`,`PATH`,`SHELL`,`TERM`,`USER`];function Ur(){let e={};for(let t of Hr){let n=m.env[t];n!==void 0&&(n.startsWith(`()`)||(e[t]=n))}return e}var Wr=class{constructor(e){this._readBuffer=new cr,this._stderrStream=null,this._serverParams=e,(e.stderr===`pipe`||e.stderr===`overlapped`)&&(this._stderrStream=new h)}async start(){if(this._process)throw Error(`StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.`);return new Promise((e,t)=>{this._process=(0,Vr.default)(this._serverParams.command,this._serverParams.args??[],{env:{...Ur(),...this._serverParams.env},stdio:[`pipe`,`pipe`,this._serverParams.stderr??`inherit`],shell:!1,windowsHide:m.platform===`win32`,cwd:this._serverParams.cwd}),this._process.on(`error`,e=>{t(e),this.onerror?.(e)}),this._process.on(`spawn`,()=>{e()}),this._process.on(`close`,e=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on(`error`,e=>{this.onerror?.(e)}),this._process.stdout?.on(`data`,e=>{this._readBuffer.append(e),this.processReadBuffer()}),this._process.stdout?.on(`error`,e=>{this.onerror?.(e)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){return this._stderrStream?this._stderrStream:this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){if(this._process){let e=this._process;this._process=void 0;let t=new Promise(t=>{e.once(`close`,()=>{t()})});try{e.stdin?.end()}catch{}if(await Promise.race([t,new Promise(e=>setTimeout(e,2e3).unref())]),e.exitCode===null){try{e.kill(`SIGTERM`)}catch{}await Promise.race([t,new Promise(e=>setTimeout(e,2e3).unref())])}if(e.exitCode===null)try{e.kill(`SIGKILL`)}catch{}}this._readBuffer.clear()}send(e){return new Promise(t=>{if(!this._process?.stdin)throw Error(`Not connected`);let n=ur(e);this._process.stdin.write(n)?t():this._process.stdin.once(`drain`,t)})}};function Gr(e){return{name:e.name,description:e.description??``,inputSchema:e.inputSchema}}function Kr(e){if(!(typeof e!=`object`||!e||Array.isArray(e)))return Object.fromEntries(Object.entries(e))}function qr(e,t){return e.map(e=>({name:e.name,description:e.description,toolsetName:t,inputSchema:Kr(e.inputSchema)}))}function Jr(e){return e.isError===!0?f(l.EXECUTION_ERROR,`MCP tool returned an error result`,e):p(e)}function Yr(e){return typeof e==`object`&&e&&!Array.isArray(e)?Object.fromEntries(Object.entries(e)):{}}function Xr(e){let{bus:t,client:n,extensionName:r,toolsetName:i,priority:a,getTools:o}=e;return[t.on(s.list,async e=>{await e.next();let t=e.result,n=o(),a=qr(n,i),s=e.payload.toolsetName===void 0||e.payload.toolsetName===i;e.setResult({tools:[...t?.tools??[],...s?a:[]],toolsets:[...t?.toolsets??[],...s?[{name:i,description:`MCP tools exposed by ${r}`,version:`1.0.0`,toolCount:n.length}]:[]]})},{priority:a}),t.on(s.execute,async e=>{let t=o().find(t=>t.name===e.payload.toolName);if(!t){await e.next();return}try{let r=await n.callTool({name:t.name,arguments:Yr(e.payload.input)});e.setResult(Jr(r))}catch(t){e.setResult(d(t))}},{priority:a})]}function Zr(e,t,n){return new Br({name:`makaio-${e}`,version:`1.0.0`},{...t?{listChanged:{tools:{autoRefresh:!0,onChanged:(t,r)=>{if(t){console.error(`[McpClientBridge:${e}] Failed to refresh tools:`,t);return}n((r??[]).map(Gr))}}}}:{}})}function Qr(e,t,n){e&&(t.revision+=1,e.emit(s.registryChanged,{revision:t.revision,reason:n,toolsetName:t.toolsetName}).catch(e=>{console.error(`[McpClientBridge:${t.extensionName}] Failed to emit tool registry change:`,e)}))}async function $r(e){let{command:t,args:n=[],env:r,cwd:i,extensionName:a,onToolsChanged:o,bus:s,toolsetName:c=a,busHandlerPriority:l=100}=e,u=[],d={revision:0,extensionName:a,toolsetName:c},f=[],p=e=>{u=e,o?.(e),Qr(s,d,`plugin-loaded`)},m=new Wr({command:t,args:[...n],env:r?{...r}:void 0,cwd:i}),h=Zr(a,o!==void 0||s!==void 0,p);await h.connect(m);try{u=((await h.listTools()).tools??[]).map(Gr)}catch(e){throw await h.close(),e}s&&(f.push(...Xr({bus:s,client:h,extensionName:a,toolsetName:c,priority:l,getTools:()=>u})),Qr(s,d,`toolset-registered`));let g=!1;return{get tools(){return u},get toolNames(){return u.map(e=>e.name)},async callTool(e,t){if(g)throw Error(`MCP bridge is closed`);let n={name:e,arguments:t};return h.callTool(n)},async close(){if(!g){for(g=!0;f.length>0;)f.pop()?.();Qr(s,d,`toolset-unregistered`),await h.close()}}}}export{X as ADAPTER_SESSION_ID_HEADER,tr as ADAPTER_SESSION_ID_PARAM,Bn as APPROVE_TOOL_NAME,Sr as McpContextRegistry,Lr as McpServerBridgeService,Or as McpTransportRegistry,Ir as createFetchMcpHandler,Mr as createHttpMcpHandler,kr as createMcpEndpoint,sr as createMcpServer,Gn as resolveMcpTools,Nr as startHttpMcpServer,$r as startMcpClientBridge,Pr as startMcpServer,Kn as toolInfoToMcpTool};
@@ -0,0 +1 @@
1
+ import"./visibility-cMXbf9nY.mjs";export{};
@@ -1 +1 @@
1
- import{sessionsDual as e}from"./services/session/storage/schema.mjs";import{n as t}from"./schema-mXXJcaQT.mjs";import{t as n}from"./schema-DrHrto2J.mjs";import{SessionEventStorageNamespace as r,SessionEventStorageSubjects as i}from"@makaio/framework/contracts";import{index as a}from"drizzle-orm/sqlite-core";import{customType as o,index as s,pgTable as c,text as l,uniqueIndex as u}from"drizzle-orm/pg-core";import{defineDialectSchema as d,defineDualTable as f}from"@makaio/framework/storage/drizzle";import{sql as p}from"drizzle-orm";import{epochMs as m}from"@makaio/framework/storage/drizzle/columns/postgres";const h=o({dataType(){return`tsvector`}}),g=c(`messages`,{messageId:l(`message_id`).primaryKey(),turnId:l(`turn_id`).references(()=>t.postgres.turnId,{onDelete:`cascade`}),sessionId:l(`session_id`).notNull().references(()=>e.postgres.sessionId,{onDelete:`cascade`}),role:l(`role`,{enum:[`user`,`assistant`]}).notNull(),contentText:l(`content_text`).notNull(),blocks:l(`blocks`).notNull().default(`[]`),agentId:l(`agent_id`),adapterSessionId:l(`adapter_session_id`),adapterMessageId:l(`adapter_message_id`),timestamp:m(`timestamp`).notNull(),editOf:l(`edit_of`).references(()=>g.messageId),origin:l(`origin`,{enum:[`voice`,`text`,`compact`]}),contentTsv:h(`content_tsv`).generatedAlwaysAs(p`to_tsvector('english', coalesce(content_text, ''))`)},e=>[s(`idx_messages_session`).on(e.sessionId,e.timestamp),s(`idx_messages_turn`).on(e.turnId,e.timestamp),s(`idx_messages_agent`).on(e.agentId,e.timestamp),u(`uniq_messages_adapter_message_id_session`).on(e.adapterMessageId,e.sessionId),s(`idx_messages_content_tsv`).using(`gin`,e.contentTsv)]),_=d({messages:n},{messages:g}),v=()=>({sqlite:n.messageId,postgres:g.messageId}),y=f(`session_events`,t=>({id:t.autoPk(`id`),sessionId:t.text(`session_id`).notNull().references(()=>e.columnPair(`sessionId`),{onDelete:`cascade`}),eventId:t.text(`event_id`).notNull().unique(),timestamp:t.epochMs(`timestamp`).notNull(),type:t.text(`type`).notNull(),agentId:t.text(`agent_id`),adapterId:t.text(`adapter_id`),originatingMessageId:t.text(`originating_message_id`),messageId:t.text(`message_id`).references(v,{onDelete:`cascade`}),turnId:t.text(`turn_id`),contentText:t.text(`content_text`),payload:t.text(`payload`).notNull()}),{sqlite:e=>[a(`idx_events_session_ts`).on(e.sessionId,e.timestamp),a(`idx_events_session_type`).on(e.sessionId,e.type),a(`idx_events_turn`).on(e.turnId),a(`idx_events_originating_message`).on(e.originatingMessageId)],postgres:e=>[s(`idx_events_session_ts`).on(e.sessionId,e.timestamp),s(`idx_events_session_type`).on(e.sessionId,e.type),s(`idx_events_turn`).on(e.turnId),s(`idx_events_originating_message`).on(e.originatingMessageId)]}),b=y.sqlite,x={...r,extensions:{drizzle:{sessionEvents:b}}};export{v as a,y as i,i as n,_ as o,b as r,x as t};
1
+ import{sessionsDual as e}from"./services/session/storage/schema.mjs";import{n as t}from"./schema-bfw9nz8B.mjs";import{t as n}from"./schema-BVbkNHVQ.mjs";import{SessionEventStorageNamespace as r,SessionEventStorageSubjects as i}from"@makaio/framework/contracts";import{index as a}from"drizzle-orm/sqlite-core";import{customType as o,index as s,pgTable as c,text as l,uniqueIndex as u}from"drizzle-orm/pg-core";import{defineDialectSchema as d,defineDualTable as f}from"@makaio/framework/storage/drizzle";import{sql as p}from"drizzle-orm";import{epochMs as m}from"@makaio/framework/storage/drizzle/columns/postgres";const h=o({dataType(){return`tsvector`}}),g=c(`messages`,{messageId:l(`message_id`).primaryKey(),turnId:l(`turn_id`).references(()=>t.postgres.turnId,{onDelete:`cascade`}),sessionId:l(`session_id`).notNull().references(()=>e.postgres.sessionId,{onDelete:`cascade`}),role:l(`role`,{enum:[`user`,`assistant`]}).notNull(),contentText:l(`content_text`).notNull(),blocks:l(`blocks`).notNull().default(`[]`),agentId:l(`agent_id`),adapterSessionId:l(`adapter_session_id`),adapterMessageId:l(`adapter_message_id`),timestamp:m(`timestamp`).notNull(),editOf:l(`edit_of`).references(()=>g.messageId),origin:l(`origin`,{enum:[`voice`,`text`,`compact`]}),contentTsv:h(`content_tsv`).generatedAlwaysAs(p`to_tsvector('english', coalesce(content_text, ''))`)},e=>[s(`idx_messages_session`).on(e.sessionId,e.timestamp),s(`idx_messages_turn`).on(e.turnId,e.timestamp),s(`idx_messages_agent`).on(e.agentId,e.timestamp),u(`uniq_messages_adapter_message_id_session`).on(e.adapterMessageId,e.sessionId),s(`idx_messages_content_tsv`).using(`gin`,e.contentTsv)]),_=d({messages:n},{messages:g}),v=()=>({sqlite:n.messageId,postgres:g.messageId}),y=f(`session_events`,t=>({id:t.autoPk(`id`),sessionId:t.text(`session_id`).notNull().references(()=>e.columnPair(`sessionId`),{onDelete:`cascade`}),eventId:t.text(`event_id`).notNull().unique(),timestamp:t.epochMs(`timestamp`).notNull(),type:t.text(`type`).notNull(),agentId:t.text(`agent_id`),adapterId:t.text(`adapter_id`),originatingMessageId:t.text(`originating_message_id`),messageId:t.text(`message_id`).references(v,{onDelete:`cascade`}),turnId:t.text(`turn_id`),contentText:t.text(`content_text`),payload:t.text(`payload`).notNull()}),{sqlite:e=>[a(`idx_events_session_ts`).on(e.sessionId,e.timestamp),a(`idx_events_session_type`).on(e.sessionId,e.type),a(`idx_events_turn`).on(e.turnId),a(`idx_events_originating_message`).on(e.originatingMessageId)],postgres:e=>[s(`idx_events_session_ts`).on(e.sessionId,e.timestamp),s(`idx_events_session_type`).on(e.sessionId,e.type),s(`idx_events_turn`).on(e.turnId),s(`idx_events_originating_message`).on(e.originatingMessageId)]}),b=y.sqlite,x={...r,extensions:{drizzle:{sessionEvents:b}}};export{v as a,y as i,i as n,_ as o,b as r,x as t};
@@ -434,9 +434,9 @@ declare const AgentRuntimeNamespace: _$_makaio_core0.BusNamespaceDefinition<"age
434
434
  status: _$zod.ZodEnum<{
435
435
  completed: "completed";
436
436
  cancelled: "cancelled";
437
- failed: "failed";
438
437
  running: "running";
439
438
  waiting_input: "waiting_input";
439
+ failed: "failed";
440
440
  }>;
441
441
  result: _$zod.ZodOptional<_$zod.ZodString>;
442
442
  error: _$zod.ZodOptional<_$zod.ZodString>;
@@ -893,9 +893,9 @@ declare const AgentRuntimeSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.
893
893
  status: _$zod.ZodEnum<{
894
894
  completed: "completed";
895
895
  cancelled: "cancelled";
896
- failed: "failed";
897
896
  running: "running";
898
897
  waiting_input: "waiting_input";
898
+ failed: "failed";
899
899
  }>;
900
900
  result: _$zod.ZodOptional<_$zod.ZodString>;
901
901
  error: _$zod.ZodOptional<_$zod.ZodString>;
@@ -0,0 +1 @@
1
+ import{t as e}from"./schemas-BEDq3Psz.mjs";import{createBusNamespace as t}from"@makaio/framework/core";const n=t(`kernel:cli`,e),r=n.subjects;export{r as n,n as t};
@@ -37,9 +37,9 @@ declare const SubagentTemplateKernelNamespace: _$_makaio_core0.BusNamespaceDefin
37
37
  status: _$zod.ZodEnum<{
38
38
  completed: "completed";
39
39
  cancelled: "cancelled";
40
- failed: "failed";
41
40
  running: "running";
42
41
  waiting_input: "waiting_input";
42
+ failed: "failed";
43
43
  }>;
44
44
  result: _$zod.ZodOptional<_$zod.ZodString>;
45
45
  error: _$zod.ZodOptional<_$zod.ZodString>;
@@ -101,9 +101,9 @@ declare const SubagentTemplateSubjects: _$_makaio_core0.BusSubjects<_$_makaio_co
101
101
  status: _$zod.ZodEnum<{
102
102
  completed: "completed";
103
103
  cancelled: "cancelled";
104
- failed: "failed";
105
104
  running: "running";
106
105
  waiting_input: "waiting_input";
106
+ failed: "failed";
107
107
  }>;
108
108
  result: _$zod.ZodOptional<_$zod.ZodString>;
109
109
  error: _$zod.ZodOptional<_$zod.ZodString>;
@@ -1 +1 @@
1
- import{r as e}from"./profile-C9RV7ao-.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`running`,`stopped`,`exited`,`unknown`]),i={request:t.object({clientId:t.string(),cwd:t.string(),command:t.string(),args:t.array(t.string()),env:t.record(t.string(),t.string()).optional(),sessionId:t.string().optional(),clientProfileName:e.optional(),adapterSessionId:t.string().optional(),metadata:t.record(t.string(),t.unknown()).optional()}),response:t.object({supervisorSessionId:t.string(),pid:t.number().int().positive()})},a={request:t.union([t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({success:t.boolean(),supervisorSessionId:t.string().optional(),pid:t.number().int().positive().optional(),terminalAttachment:t.object({canAttach:t.boolean()}).optional()})},o={request:t.object({supervisorSessionId:t.string(),signal:t.string().optional()}),response:t.object({success:t.boolean()})},s=t.object({supervisorSessionId:t.string(),clientId:t.string(),pid:t.number().int().positive().nullable(),status:r,cwd:t.string(),sessionId:t.string().optional(),adapterSessionId:t.string().optional(),startedAt:t.number().int().nonnegative(),stoppedAt:t.number().int().nonnegative().optional()}),c={request:t.union([t.object({}).strict(),t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({runtimes:t.array(s)})},l={launch:i,attach:a,stop:o,status:c},u=n(`native-session-supervisor`,l),d=u.subjects;export{i as a,s as c,a as i,r as l,d as n,c as o,l as r,o as s,u as t};
1
+ import{r as e}from"./profile-Cjq4QnUQ.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`running`,`stopped`,`exited`,`unknown`]),i={request:t.object({clientId:t.string(),cwd:t.string(),command:t.string(),args:t.array(t.string()),env:t.record(t.string(),t.string()).optional(),sessionId:t.string().optional(),clientProfileName:e.optional(),adapterSessionId:t.string().optional(),metadata:t.record(t.string(),t.unknown()).optional()}),response:t.object({supervisorSessionId:t.string(),pid:t.number().int().positive()})},a={request:t.union([t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({success:t.boolean(),supervisorSessionId:t.string().optional(),pid:t.number().int().positive().optional(),terminalAttachment:t.object({canAttach:t.boolean()}).optional()})},o={request:t.object({supervisorSessionId:t.string(),signal:t.string().optional()}),response:t.object({success:t.boolean()})},s=t.object({supervisorSessionId:t.string(),clientId:t.string(),pid:t.number().int().positive().nullable(),status:r,cwd:t.string(),sessionId:t.string().optional(),adapterSessionId:t.string().optional(),startedAt:t.number().int().nonnegative(),stoppedAt:t.number().int().nonnegative().optional()}),c={request:t.union([t.object({}).strict(),t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({runtimes:t.array(s)})},l={launch:i,attach:a,stop:o,status:c},u=n(`native-session-supervisor`,l),d=u.subjects;export{i as a,s as c,a as i,r as l,d as n,c as o,l as r,o as s,u as t};
@@ -1 +1 @@
1
- import{n as e}from"./namespace-CnRcpgJ8.mjs";import"./ownership-memory-handler-DMirNILL.mjs";import{t}from"./caller-owned-adapter-stub-oM1G1KvC.mjs";import{AdapterSubjects as n,AgentSubjects as r,SessionSubjects as i}from"@makaio/framework/contracts";import{MakaioBus as a}from"@makaio/framework/bus";function o(){a.__resetHandlers?.()}function s(e=10){return new Promise(t=>setTimeout(t,e))}function c(e,t){let n=Date.now();return{agentId:e,adapterId:`adapter-${e}`,adapterName:`test-adapter`,sessionId:t?.sessionId??`test-session`,role:`member`,status:`idle`,createdAt:n,lastActivityAt:n,...t}}async function l(e,t=e,r=`test-machine`){await a.emit(n.initialized,{adapterName:e,adapterId:t,machineId:r,ownerInstanceId:`owner-${t}`,capabilities:[]})}async function u(t){return(await a.request(e.getEvents,{sessionId:t})).events}function d(e,t,n){let r=[];return n.push(a.on(e,(e=>{let n=e.payload;r.push(t(n))}))),{received:r,clear:()=>{r.length=0}}}function f(e){return d(i.turn.started,e=>({sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,messageId:e.messageId,agentIds:[...e.agentIds],initiator:e.initiator,ingestionMarker:e.ingestionMarker}),e)}function p(e){return d(i.turn.completed,e=>({sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:e.success,error:e.error,initiator:e.initiator,ingestionMarker:e.ingestionMarker}),e)}function m(e){return d(i.user_message.sent,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,content:e.content,agentIds:[...e.agentIds],origin:e.origin}),e)}function h(e){return d(i.user_message.acknowledged,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,agentId:e.agentId}),e)}function g(e){return d(i.user_message.completed,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,agentId:e.agentId,outcome:e.outcome,error:e.error}),e)}function _(e,t){return c(e,{runtimeOwner:{machineId:`test-machine`,instanceId:`test-runtime-owner`},...t})}function v(e){let t=Date.now();return{sessionId:e.sessionId,createdAt:t,lastActivityAt:t,status:e.status??`active`,agents:e.agents??[],leadAgentId:e.leadAgentId,targetWorkingDirectory:e.targetWorkingDirectory}}function y(e){return a.on(i.create,t=>{let n=t.payload.sessionId??`session-${crypto.randomUUID().slice(0,8)}`;e.set(n,v({sessionId:n,agents:[]})),t.setResult({sessionId:n})})}function b(e){return a.on(i.agent.added,t=>{let n=e.get(t.payload.sessionId);if(!n)return;let r=n.agents.length===0,i=t.payload.role??(r?`lead`:`member`);r&&(n.adapterSessionId=t.payload.adapterSessionId,n.adapterName=t.payload.adapterName,n.adapterId=t.payload.adapterId);let a=Date.now();n.agents.push({agentId:t.payload.agentId,adapterId:t.payload.adapterId,adapterName:t.payload.adapterName,sessionId:t.payload.sessionId,role:i,status:`idle`,createdAt:a,lastActivityAt:a}),i===`lead`&&(n.leadAgentId=t.payload.agentId),n.lastActivityAt=Date.now()})}function x(e){return a.on(i.get,t=>{t.setResult({session:e.get(t.payload.sessionId)??null})})}function S(e){return a.on(n.getAgent,t=>{for(let n of e.values()){let e=n.agents.find(e=>e.agentId===t.payload.agentId);if(e){t.setResult({agent:{agentId:e.agentId,sessionId:n.sessionId,adapterSessionId:``}});return}}t.setResult({agent:null})})}function C(){return a.on(n.rehydrateAgent,e=>{e.setResult({success:!0,...t(e.payload)})})}function w(e=`/previous/cwd`){return a.on(r.cwd.change,t=>{t.setResult({success:!0,previousCwd:e})})}function T(){return a.on(r.model.change,e=>{e.setResult({success:!0,swapped:!1})})}function E(e){return a.on(n.startAgent,n=>{let{adapterId:r,initialMessage:i}=n.payload,a=n.payload.sessionId??`session-${crypto.randomUUID().slice(0,8)}`,o=n.payload.agentId??`agent-${crypto.randomUUID().slice(0,8)}`,s=i?`msg-${crypto.randomUUID().slice(0,8)}`:void 0,c=`adapter-session-${a}`;e?.({adapterId:r,sessionId:a,initialMessage:i}),n.setResult({success:!0,agentId:o,adapterId:r,adapterSessionId:c,sessionId:a,...t(n.payload),...s&&{messageId:s}}),M({sessionId:a,agentId:o,adapterId:r,adapterSessionId:c})})}function D(e){return a.on(n.startAgent,t=>{t.setResult({success:!1,dispatch:`not-dispatched`,message:e})})}function O(e){return a.on(r.sendMessage,t=>{let{agentId:n,adapterId:r,message:i,messageId:a,sessionContext:o,responseSchema:s}=t.payload,c=a??`msg-${crypto.randomUUID().slice(0,8)}`;e?.({agentId:n,adapterId:r,message:i,messageId:c,sessionContext:o,responseSchema:s}),t.setResult({messageId:c})})}function k(e,t){return a.on(r.sendMessage,n=>{if(e.has(n.payload.agentId))throw Error(t);n.setResult({messageId:n.payload.messageId??`generated-id`})})}async function A(e){await a.emit(r.complete,{agentId:e.agentId,adapterId:`adapter-${e.agentId}`,adapterName:`test-adapter`,adapterSessionId:`adapter-session-${e.agentId}`,messageId:e.messageId,turnId:e.turnId})}async function j(e){await a.emit(r.complete,{agentId:e.agentId,adapterId:`adapter-${e.agentId}`,adapterName:`test-adapter`,adapterSessionId:`adapter-session-${e.agentId}`,messageId:e.messageId,turnId:e.turnId,outcome:`error`,error:e.error})}function M(e){setImmediate(()=>{a.emit(i.agent.added,{sessionId:e.sessionId,agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterId,adapterSessionId:e.adapterSessionId,role:e.role})})}function N(e,r){let i=new Map,o=a.on(n.startAgent,n=>{r.payload=n.payload;let a=n.payload.agentId??`agent-${crypto.randomUUID().slice(0,8)}`,o=n.payload.initialMessage?`msg-${crypto.randomUUID().slice(0,8)}`:void 0,s=`adapter-session-${e}`;i.set(a,{agentId:a,sessionId:e,adapterSessionId:s,adapterId:n.payload.adapterId}),n.setResult({success:!0,agentId:a,adapterId:n.payload.adapterId,adapterSessionId:s,sessionId:e,...t(n.payload),...o&&{messageId:o}}),M({sessionId:e,agentId:a,adapterId:n.payload.adapterId,adapterSessionId:s})}),s=a.on(n.getAgent,e=>{let t=i.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})});return()=>{o(),s()}}export{l as C,s as E,m as S,o as T,E as _,j as a,h as b,y as c,D as d,S as f,O as g,C as h,A as i,w as l,T as m,v as n,b as o,x as p,M as r,N as s,_ as t,k as u,p as v,u as w,g as x,f as y};
1
+ import{n as e}from"./namespace-CD9mJGhU.mjs";import"./ownership-memory-handler-LXaweX6V.mjs";import{t}from"./caller-owned-adapter-stub-NiR7KT2N.mjs";import{AdapterSubjects as n,AgentSubjects as r,SessionSubjects as i}from"@makaio/framework/contracts";import{MakaioBus as a}from"@makaio/framework/bus";function o(){a.__resetHandlers?.()}function s(e=10){return new Promise(t=>setTimeout(t,e))}function c(e,t){let n=Date.now();return{agentId:e,adapterId:`adapter-${e}`,adapterName:`test-adapter`,sessionId:t?.sessionId??`test-session`,role:`member`,status:`idle`,createdAt:n,lastActivityAt:n,...t}}async function l(e,t=e,r=`test-machine`){await a.emit(n.initialized,{adapterName:e,adapterId:t,machineId:r,ownerInstanceId:`owner-${t}`,capabilities:[]})}async function u(t){return(await a.request(e.getEvents,{sessionId:t})).events}function d(e,t,n){let r=[];return n.push(a.on(e,(e=>{let n=e.payload;r.push(t(n))}))),{received:r,clear:()=>{r.length=0}}}function f(e){return d(i.turn.started,e=>({sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,messageId:e.messageId,agentIds:[...e.agentIds],initiator:e.initiator,ingestionMarker:e.ingestionMarker}),e)}function p(e){return d(i.turn.completed,e=>({sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:e.success,error:e.error,initiator:e.initiator,ingestionMarker:e.ingestionMarker}),e)}function m(e){return d(i.user_message.sent,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,content:e.content,agentIds:[...e.agentIds],origin:e.origin}),e)}function h(e){return d(i.user_message.acknowledged,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,agentId:e.agentId}),e)}function g(e){return d(i.user_message.completed,e=>({sessionId:e.sessionId,turnId:e.turnId,messageId:e.messageId,agentId:e.agentId,outcome:e.outcome,error:e.error}),e)}function _(e,t){return c(e,{runtimeOwner:{machineId:`test-machine`,instanceId:`test-runtime-owner`},...t})}function v(e){let t=Date.now();return{sessionId:e.sessionId,createdAt:t,lastActivityAt:t,status:e.status??`active`,agents:e.agents??[],leadAgentId:e.leadAgentId,targetWorkingDirectory:e.targetWorkingDirectory}}function y(e){return a.on(i.create,t=>{let n=t.payload.sessionId??`session-${crypto.randomUUID().slice(0,8)}`;e.set(n,v({sessionId:n,agents:[]})),t.setResult({sessionId:n})})}function b(e){return a.on(i.agent.added,t=>{let n=e.get(t.payload.sessionId);if(!n)return;let r=n.agents.length===0,i=t.payload.role??(r?`lead`:`member`);r&&(n.adapterSessionId=t.payload.adapterSessionId,n.adapterName=t.payload.adapterName,n.adapterId=t.payload.adapterId);let a=Date.now();n.agents.push({agentId:t.payload.agentId,adapterId:t.payload.adapterId,adapterName:t.payload.adapterName,sessionId:t.payload.sessionId,role:i,status:`idle`,createdAt:a,lastActivityAt:a}),i===`lead`&&(n.leadAgentId=t.payload.agentId),n.lastActivityAt=Date.now()})}function x(e){return a.on(i.get,t=>{t.setResult({session:e.get(t.payload.sessionId)??null})})}function S(e){return a.on(n.getAgent,t=>{for(let n of e.values()){let e=n.agents.find(e=>e.agentId===t.payload.agentId);if(e){t.setResult({agent:{agentId:e.agentId,sessionId:n.sessionId,adapterSessionId:``}});return}}t.setResult({agent:null})})}function C(){return a.on(n.rehydrateAgent,e=>{e.setResult({success:!0,...t(e.payload)})})}function w(e=`/previous/cwd`){return a.on(r.cwd.change,t=>{t.setResult({success:!0,previousCwd:e})})}function T(){return a.on(r.model.change,e=>{e.setResult({success:!0,swapped:!1})})}function E(e){return a.on(n.startAgent,n=>{let{adapterId:r,initialMessage:i}=n.payload,a=n.payload.sessionId??`session-${crypto.randomUUID().slice(0,8)}`,o=n.payload.agentId??`agent-${crypto.randomUUID().slice(0,8)}`,s=i?`msg-${crypto.randomUUID().slice(0,8)}`:void 0,c=`adapter-session-${a}`;e?.({adapterId:r,sessionId:a,initialMessage:i}),n.setResult({success:!0,agentId:o,adapterId:r,adapterSessionId:c,sessionId:a,...t(n.payload),...s&&{messageId:s}}),M({sessionId:a,agentId:o,adapterId:r,adapterSessionId:c})})}function D(e){return a.on(n.startAgent,t=>{t.setResult({success:!1,dispatch:`not-dispatched`,message:e})})}function O(e){return a.on(r.sendMessage,t=>{let{agentId:n,adapterId:r,message:i,messageId:a,sessionContext:o,responseSchema:s}=t.payload,c=a??`msg-${crypto.randomUUID().slice(0,8)}`;e?.({agentId:n,adapterId:r,message:i,messageId:c,sessionContext:o,responseSchema:s}),t.setResult({messageId:c})})}function k(e,t){return a.on(r.sendMessage,n=>{if(e.has(n.payload.agentId))throw Error(t);n.setResult({messageId:n.payload.messageId??`generated-id`})})}async function A(e){await a.emit(r.complete,{agentId:e.agentId,adapterId:`adapter-${e.agentId}`,adapterName:`test-adapter`,adapterSessionId:`adapter-session-${e.agentId}`,messageId:e.messageId,turnId:e.turnId})}async function j(e){await a.emit(r.complete,{agentId:e.agentId,adapterId:`adapter-${e.agentId}`,adapterName:`test-adapter`,adapterSessionId:`adapter-session-${e.agentId}`,messageId:e.messageId,turnId:e.turnId,outcome:`error`,error:e.error})}function M(e){setImmediate(()=>{a.emit(i.agent.added,{sessionId:e.sessionId,agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterId,adapterSessionId:e.adapterSessionId,role:e.role})})}function N(e,r){let i=new Map,o=a.on(n.startAgent,n=>{r.payload=n.payload;let a=n.payload.agentId??`agent-${crypto.randomUUID().slice(0,8)}`,o=n.payload.initialMessage?`msg-${crypto.randomUUID().slice(0,8)}`:void 0,s=`adapter-session-${e}`;i.set(a,{agentId:a,sessionId:e,adapterSessionId:s,adapterId:n.payload.adapterId}),n.setResult({success:!0,agentId:a,adapterId:n.payload.adapterId,adapterSessionId:s,sessionId:e,...t(n.payload),...o&&{messageId:o}}),M({sessionId:e,agentId:a,adapterId:n.payload.adapterId,adapterSessionId:s})}),s=a.on(n.getAgent,e=>{let t=i.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})});return()=>{o(),s()}}export{l as C,s as E,m as S,o as T,E as _,j as a,h as b,y as c,D as d,S as f,O as g,C as h,A as i,w as l,T as m,v as n,b as o,x as p,M as r,N as s,_ as t,k as u,p as v,u as w,g as x,f as y};