@1mcp/agent 0.38.1 → 0.39.0-beta.0

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 (374) hide show
  1. package/build/admin/assets/{admin-OAuthServicesWorkspace-C3DNmymC.js → admin-OAuthServicesWorkspace-Bmets2jv.js} +1 -1
  2. package/build/admin/assets/{admin-console-BmdH0cQS.js → admin-console-DyzxXXr5.js} +3 -3
  3. package/build/admin/index.html +1 -1
  4. package/build/commands/run/run.d.ts.map +1 -1
  5. package/build/commands/run/run.js +35 -14
  6. package/build/commands/run/run.js.map +1 -1
  7. package/build/commands/run/runUtils.d.ts +2 -3
  8. package/build/commands/run/runUtils.d.ts.map +1 -1
  9. package/build/commands/run/runUtils.js +12 -11
  10. package/build/commands/run/runUtils.js.map +1 -1
  11. package/build/commands/serve/cooperativeRuntime.d.ts +18 -0
  12. package/build/commands/serve/cooperativeRuntime.d.ts.map +1 -0
  13. package/build/commands/serve/cooperativeRuntime.js +588 -0
  14. package/build/commands/serve/cooperativeRuntime.js.map +1 -0
  15. package/build/commands/serve/index.d.ts +10 -0
  16. package/build/commands/serve/index.d.ts.map +1 -1
  17. package/build/commands/serve/index.js +10 -0
  18. package/build/commands/serve/index.js.map +1 -1
  19. package/build/commands/serve/legacyRuntimeStop.d.ts +16 -0
  20. package/build/commands/serve/legacyRuntimeStop.d.ts.map +1 -0
  21. package/build/commands/serve/legacyRuntimeStop.js +143 -0
  22. package/build/commands/serve/legacyRuntimeStop.js.map +1 -0
  23. package/build/commands/serve/serveStatus.d.ts +2 -0
  24. package/build/commands/serve/serveStatus.d.ts.map +1 -1
  25. package/build/commands/serve/serveStatus.js +37 -3
  26. package/build/commands/serve/serveStatus.js.map +1 -1
  27. package/build/commands/serve/serveStop.d.ts.map +1 -1
  28. package/build/commands/serve/serveStop.js +33 -4
  29. package/build/commands/serve/serveStop.js.map +1 -1
  30. package/build/commands/shared/apiClient.d.ts.map +1 -1
  31. package/build/commands/shared/apiClient.js +13 -9
  32. package/build/commands/shared/apiClient.js.map +1 -1
  33. package/build/commands/shared/clientSurfaceAttachment.d.ts.map +1 -1
  34. package/build/commands/shared/clientSurfaceAttachment.js +33 -7
  35. package/build/commands/shared/clientSurfaceAttachment.js.map +1 -1
  36. package/build/config/configLoader.d.ts.map +1 -1
  37. package/build/config/configLoader.js +9 -1
  38. package/build/config/configLoader.js.map +1 -1
  39. package/build/config/configManager.d.ts +4 -0
  40. package/build/config/configManager.d.ts.map +1 -1
  41. package/build/config/configManager.js +48 -1
  42. package/build/config/configManager.js.map +1 -1
  43. package/build/config/configWatcher.d.ts.map +1 -1
  44. package/build/config/configWatcher.js +3 -1
  45. package/build/config/configWatcher.js.map +1 -1
  46. package/build/config/envProcessor.d.ts.map +1 -1
  47. package/build/config/envProcessor.js +6 -5
  48. package/build/config/envProcessor.js.map +1 -1
  49. package/build/config/mcpConfigManager.d.ts +4 -0
  50. package/build/config/mcpConfigManager.d.ts.map +1 -1
  51. package/build/config/mcpConfigManager.js +48 -1
  52. package/build/config/mcpConfigManager.js.map +1 -1
  53. package/build/config/runtimeBootstrap.d.ts +15 -0
  54. package/build/config/runtimeBootstrap.d.ts.map +1 -0
  55. package/build/config/runtimeBootstrap.js +35 -0
  56. package/build/config/runtimeBootstrap.js.map +1 -0
  57. package/build/config/runtimeScopeEnv.d.ts.map +1 -1
  58. package/build/config/runtimeScopeEnv.js +4 -0
  59. package/build/config/runtimeScopeEnv.js.map +1 -1
  60. package/build/config/runtimeTargetFingerprint.d.ts.map +1 -1
  61. package/build/config/runtimeTargetFingerprint.js +5 -2
  62. package/build/config/runtimeTargetFingerprint.js.map +1 -1
  63. package/build/constants/mcp.d.ts +1 -1
  64. package/build/constants/mcp.d.ts.map +1 -1
  65. package/build/constants/mcp.js +1 -1
  66. package/build/constants/mcp.js.map +1 -1
  67. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +2 -1
  68. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -1
  69. package/build/core/capabilities/asyncLoadingOrchestrator.js +2 -21
  70. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -1
  71. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
  72. package/build/core/capabilities/capabilityAggregator.js +12 -4
  73. package/build/core/capabilities/capabilityAggregator.js.map +1 -1
  74. package/build/core/capabilities/capabilityCatalog.d.ts +2 -1
  75. package/build/core/capabilities/capabilityCatalog.d.ts.map +1 -1
  76. package/build/core/capabilities/capabilityCatalog.js +94 -17
  77. package/build/core/capabilities/capabilityCatalog.js.map +1 -1
  78. package/build/core/capabilities/capabilityPagination.d.ts +11 -0
  79. package/build/core/capabilities/capabilityPagination.d.ts.map +1 -1
  80. package/build/core/capabilities/capabilityPagination.js +158 -40
  81. package/build/core/capabilities/capabilityPagination.js.map +1 -1
  82. package/build/core/capabilities/catalogGeneration.d.ts.map +1 -1
  83. package/build/core/capabilities/catalogGeneration.js +8 -2
  84. package/build/core/capabilities/catalogGeneration.js.map +1 -1
  85. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts +1 -1
  86. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts.map +1 -1
  87. package/build/core/capabilities/lazyLoadingOrchestrator.js +8 -8
  88. package/build/core/capabilities/lazyLoadingOrchestrator.js.map +1 -1
  89. package/build/core/capabilities/metaToolProvider.d.ts +2 -2
  90. package/build/core/capabilities/metaToolProvider.d.ts.map +1 -1
  91. package/build/core/capabilities/metaToolProvider.js +20 -30
  92. package/build/core/capabilities/metaToolProvider.js.map +1 -1
  93. package/build/core/capabilities/runtimeCapabilityCatalog.d.ts +8 -0
  94. package/build/core/capabilities/runtimeCapabilityCatalog.d.ts.map +1 -1
  95. package/build/core/capabilities/runtimeCapabilityCatalog.js +249 -64
  96. package/build/core/capabilities/runtimeCapabilityCatalog.js.map +1 -1
  97. package/build/core/capabilities/schemaCache.d.ts +6 -2
  98. package/build/core/capabilities/schemaCache.d.ts.map +1 -1
  99. package/build/core/capabilities/schemaCache.js +101 -19
  100. package/build/core/capabilities/schemaCache.js.map +1 -1
  101. package/build/core/client/legacyAdapterRequest.d.ts.map +1 -1
  102. package/build/core/client/legacyAdapterRequest.js +25 -21
  103. package/build/core/client/legacyAdapterRequest.js.map +1 -1
  104. package/build/core/client/postAuthOAuthRecovery.d.ts.map +1 -1
  105. package/build/core/client/postAuthOAuthRecovery.js +3 -1
  106. package/build/core/client/postAuthOAuthRecovery.js.map +1 -1
  107. package/build/core/configChangeHandler.d.ts.map +1 -1
  108. package/build/core/configChangeHandler.js +11 -2
  109. package/build/core/configChangeHandler.js.map +1 -1
  110. package/build/core/context/templateContextTrust.d.ts +3 -1
  111. package/build/core/context/templateContextTrust.d.ts.map +1 -1
  112. package/build/core/context/templateContextTrust.js +22 -6
  113. package/build/core/context/templateContextTrust.js.map +1 -1
  114. package/build/core/loading/mcpLoadingManager.d.ts +3 -0
  115. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -1
  116. package/build/core/loading/mcpLoadingManager.js +11 -1
  117. package/build/core/loading/mcpLoadingManager.js.map +1 -1
  118. package/build/core/protocol/resourceTemplateRouting.d.ts +2 -0
  119. package/build/core/protocol/resourceTemplateRouting.d.ts.map +1 -0
  120. package/build/core/protocol/resourceTemplateRouting.js +2 -0
  121. package/build/core/protocol/resourceTemplateRouting.js.map +1 -0
  122. package/build/core/server/backgroundRuntimeSupervisor.d.ts +2 -0
  123. package/build/core/server/backgroundRuntimeSupervisor.d.ts.map +1 -1
  124. package/build/core/server/backgroundRuntimeSupervisor.js +11 -2
  125. package/build/core/server/backgroundRuntimeSupervisor.js.map +1 -1
  126. package/build/core/server/backgroundRuntimeSupervisorState.d.ts +2 -1
  127. package/build/core/server/backgroundRuntimeSupervisorState.d.ts.map +1 -1
  128. package/build/core/server/backgroundRuntimeSupervisorState.js +3 -2
  129. package/build/core/server/backgroundRuntimeSupervisorState.js.map +1 -1
  130. package/build/core/server/legacyRuntimeRecovery.d.ts +14 -0
  131. package/build/core/server/legacyRuntimeRecovery.d.ts.map +1 -0
  132. package/build/core/server/legacyRuntimeRecovery.js +209 -0
  133. package/build/core/server/legacyRuntimeRecovery.js.map +1 -0
  134. package/build/core/server/pidFileManager.d.ts +35 -0
  135. package/build/core/server/pidFileManager.d.ts.map +1 -1
  136. package/build/core/server/pidFileManager.js +16 -5
  137. package/build/core/server/pidFileManager.js.map +1 -1
  138. package/build/core/server/processEvidence.d.ts +23 -0
  139. package/build/core/server/processEvidence.d.ts.map +1 -0
  140. package/build/core/server/processEvidence.js +114 -0
  141. package/build/core/server/processEvidence.js.map +1 -0
  142. package/build/core/server/processIdentity.d.ts +3 -0
  143. package/build/core/server/processIdentity.d.ts.map +1 -1
  144. package/build/core/server/processIdentity.js +69 -17
  145. package/build/core/server/processIdentity.js.map +1 -1
  146. package/build/core/server/runtimeControl.d.ts +31 -0
  147. package/build/core/server/runtimeControl.d.ts.map +1 -0
  148. package/build/core/server/runtimeControl.js +288 -0
  149. package/build/core/server/runtimeControl.js.map +1 -0
  150. package/build/core/server/runtimeDrain.d.ts +68 -0
  151. package/build/core/server/runtimeDrain.d.ts.map +1 -0
  152. package/build/core/server/runtimeDrain.js +248 -0
  153. package/build/core/server/runtimeDrain.js.map +1 -0
  154. package/build/core/server/runtimeLaunchIpc.d.ts +285 -0
  155. package/build/core/server/runtimeLaunchIpc.d.ts.map +1 -0
  156. package/build/core/server/runtimeLaunchIpc.js +146 -0
  157. package/build/core/server/runtimeLaunchIpc.js.map +1 -0
  158. package/build/core/server/runtimeLifecycle.d.ts +3 -1
  159. package/build/core/server/runtimeLifecycle.d.ts.map +1 -1
  160. package/build/core/server/runtimeLifecycle.js +7 -5
  161. package/build/core/server/runtimeLifecycle.js.map +1 -1
  162. package/build/core/server/runtimeReplacementConfig.d.ts +295 -0
  163. package/build/core/server/runtimeReplacementConfig.d.ts.map +1 -0
  164. package/build/core/server/runtimeReplacementConfig.js +187 -0
  165. package/build/core/server/runtimeReplacementConfig.js.map +1 -0
  166. package/build/core/server/runtimeScopeOwnership.d.ts +3 -0
  167. package/build/core/server/runtimeScopeOwnership.d.ts.map +1 -1
  168. package/build/core/server/runtimeScopeOwnership.js +23 -4
  169. package/build/core/server/runtimeScopeOwnership.js.map +1 -1
  170. package/build/core/tools/internal/discoveryHandlers.d.ts.map +1 -1
  171. package/build/core/tools/internal/discoveryHandlers.js +8 -6
  172. package/build/core/tools/internal/discoveryHandlers.js.map +1 -1
  173. package/build/core/tools/internal/installationHandlers.d.ts.map +1 -1
  174. package/build/core/tools/internal/installationHandlers.js +46 -39
  175. package/build/core/tools/internal/installationHandlers.js.map +1 -1
  176. package/build/core/types/server.d.ts +2 -0
  177. package/build/core/types/server.d.ts.map +1 -1
  178. package/build/core/types/transport.d.ts +1 -1
  179. package/build/core/validation/schemaBoundary.d.ts +51 -0
  180. package/build/core/validation/schemaBoundary.d.ts.map +1 -0
  181. package/build/core/validation/schemaBoundary.js +237 -0
  182. package/build/core/validation/schemaBoundary.js.map +1 -0
  183. package/build/core/validation/schemaPolicy.d.ts +38 -0
  184. package/build/core/validation/schemaPolicy.d.ts.map +1 -0
  185. package/build/core/validation/schemaPolicy.js +127 -0
  186. package/build/core/validation/schemaPolicy.js.map +1 -0
  187. package/build/core/validation/schemaWorker.d.ts +2 -0
  188. package/build/core/validation/schemaWorker.d.ts.map +1 -0
  189. package/build/core/validation/schemaWorker.js +222 -0
  190. package/build/core/validation/schemaWorker.js.map +1 -0
  191. package/build/core/validation/toolSchemaBoundary.d.ts +19 -0
  192. package/build/core/validation/toolSchemaBoundary.d.ts.map +1 -0
  193. package/build/core/validation/toolSchemaBoundary.js +51 -0
  194. package/build/core/validation/toolSchemaBoundary.js.map +1 -0
  195. package/build/domains/admin/adminOperationService.d.ts +1 -0
  196. package/build/domains/admin/adminOperationService.d.ts.map +1 -1
  197. package/build/domains/admin/adminOperationService.js +4 -0
  198. package/build/domains/admin/adminOperationService.js.map +1 -1
  199. package/build/domains/config-change/configChange.d.ts.map +1 -1
  200. package/build/domains/config-change/configChange.js +36 -8
  201. package/build/domains/config-change/configChange.js.map +1 -1
  202. package/build/domains/installation/serverInstallationWorkflow.d.ts.map +1 -1
  203. package/build/domains/installation/serverInstallationWorkflow.js +21 -12
  204. package/build/domains/installation/serverInstallationWorkflow.js.map +1 -1
  205. package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
  206. package/build/domains/preset/manager/presetManager.js +2 -1
  207. package/build/domains/preset/manager/presetManager.js.map +1 -1
  208. package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -1
  209. package/build/domains/registry/mcpRegistryClient.js +10 -3
  210. package/build/domains/registry/mcpRegistryClient.js.map +1 -1
  211. package/build/gateway/adapters/modern/modernOutboundEraAdapter.d.ts +2 -1
  212. package/build/gateway/adapters/modern/modernOutboundEraAdapter.d.ts.map +1 -1
  213. package/build/gateway/adapters/modern/modernOutboundEraAdapter.js +77 -3
  214. package/build/gateway/adapters/modern/modernOutboundEraAdapter.js.map +1 -1
  215. package/build/gateway/contracts/gatewayFailure.d.ts +38 -0
  216. package/build/gateway/contracts/gatewayFailure.d.ts.map +1 -1
  217. package/build/gateway/contracts/gatewayFailure.js +137 -20
  218. package/build/gateway/contracts/gatewayFailure.js.map +1 -1
  219. package/build/gateway/core/gatewayDispatcher.d.ts +4 -0
  220. package/build/gateway/core/gatewayDispatcher.d.ts.map +1 -1
  221. package/build/gateway/core/gatewayDispatcher.js +35 -3
  222. package/build/gateway/core/gatewayDispatcher.js.map +1 -1
  223. package/build/gateway/interactions/interactionBroker.d.ts +29 -0
  224. package/build/gateway/interactions/interactionBroker.d.ts.map +1 -0
  225. package/build/gateway/interactions/interactionBroker.js +244 -0
  226. package/build/gateway/interactions/interactionBroker.js.map +1 -0
  227. package/build/gateway/interactions/interactionCapabilities.d.ts +4 -0
  228. package/build/gateway/interactions/interactionCapabilities.d.ts.map +1 -0
  229. package/build/gateway/interactions/interactionCapabilities.js +36 -0
  230. package/build/gateway/interactions/interactionCapabilities.js.map +1 -0
  231. package/build/gateway/interactions/interactionOwner.d.ts +45 -0
  232. package/build/gateway/interactions/interactionOwner.d.ts.map +1 -0
  233. package/build/gateway/interactions/interactionOwner.js +203 -0
  234. package/build/gateway/interactions/interactionOwner.js.map +1 -0
  235. package/build/gateway/interactions/interactionRoute.d.ts +16 -0
  236. package/build/gateway/interactions/interactionRoute.d.ts.map +1 -0
  237. package/build/gateway/interactions/interactionRoute.js +41 -0
  238. package/build/gateway/interactions/interactionRoute.js.map +1 -0
  239. package/build/gateway/interactions/validateInteractionResponse.d.ts +6 -0
  240. package/build/gateway/interactions/validateInteractionResponse.d.ts.map +1 -0
  241. package/build/gateway/interactions/validateInteractionResponse.js +175 -0
  242. package/build/gateway/interactions/validateInteractionResponse.js.map +1 -0
  243. package/build/gateway/ports/outboundEraAdapter.d.ts +10 -1
  244. package/build/gateway/ports/outboundEraAdapter.d.ts.map +1 -1
  245. package/build/sdk/contracts/legacySdkAdapter.d.ts +5 -0
  246. package/build/sdk/contracts/legacySdkAdapter.d.ts.map +1 -1
  247. package/build/sdk/contracts/protocol.d.ts +3 -3
  248. package/build/sdk/contracts/protocol.d.ts.map +1 -1
  249. package/build/sdk/contracts/protocol.js +3 -2
  250. package/build/sdk/contracts/protocol.js.map +1 -1
  251. package/build/sdk/legacy/client/runtime/backendDispatchLifetime.d.ts +8 -0
  252. package/build/sdk/legacy/client/runtime/backendDispatchLifetime.d.ts.map +1 -0
  253. package/build/sdk/legacy/client/runtime/backendDispatchLifetime.js +63 -0
  254. package/build/sdk/legacy/client/runtime/backendDispatchLifetime.js.map +1 -0
  255. package/build/sdk/legacy/client/runtime/clientFactory.d.ts +4 -1
  256. package/build/sdk/legacy/client/runtime/clientFactory.d.ts.map +1 -1
  257. package/build/sdk/legacy/client/runtime/clientFactory.js +41 -14
  258. package/build/sdk/legacy/client/runtime/clientFactory.js.map +1 -1
  259. package/build/sdk/legacy/client/runtime/clientManager.d.ts.map +1 -1
  260. package/build/sdk/legacy/client/runtime/clientManager.js +20 -7
  261. package/build/sdk/legacy/client/runtime/clientManager.js.map +1 -1
  262. package/build/sdk/legacy/client/runtime/legacyInteractionLease.d.ts +8 -0
  263. package/build/sdk/legacy/client/runtime/legacyInteractionLease.d.ts.map +1 -0
  264. package/build/sdk/legacy/client/runtime/legacyInteractionLease.js +44 -0
  265. package/build/sdk/legacy/client/runtime/legacyInteractionLease.js.map +1 -0
  266. package/build/sdk/legacy/client/runtime/legacySdkClientAdapter.d.ts +4 -0
  267. package/build/sdk/legacy/client/runtime/legacySdkClientAdapter.d.ts.map +1 -1
  268. package/build/sdk/legacy/client/runtime/legacySdkClientAdapter.js +20 -0
  269. package/build/sdk/legacy/client/runtime/legacySdkClientAdapter.js.map +1 -1
  270. package/build/sdk/legacy/client/runtime/legacyTransport.d.ts +2 -0
  271. package/build/sdk/legacy/client/runtime/legacyTransport.d.ts.map +1 -1
  272. package/build/sdk/legacy/client/runtime/modernSdkClientAdapter.d.ts +3 -0
  273. package/build/sdk/legacy/client/runtime/modernSdkClientAdapter.d.ts.map +1 -1
  274. package/build/sdk/legacy/client/runtime/modernSdkClientAdapter.js +98 -4
  275. package/build/sdk/legacy/client/runtime/modernSdkClientAdapter.js.map +1 -1
  276. package/build/sdk/legacy/commands/serve.d.ts +2 -0
  277. package/build/sdk/legacy/commands/serve.d.ts.map +1 -1
  278. package/build/sdk/legacy/commands/serve.js +40 -9
  279. package/build/sdk/legacy/commands/serve.js.map +1 -1
  280. package/build/sdk/legacy/server/protocol/notificationHandlers.d.ts.map +1 -1
  281. package/build/sdk/legacy/server/protocol/notificationHandlers.js +19 -47
  282. package/build/sdk/legacy/server/protocol/notificationHandlers.js.map +1 -1
  283. package/build/sdk/legacy/server/protocol/privateInteractionConnection.d.ts +7 -0
  284. package/build/sdk/legacy/server/protocol/privateInteractionConnection.d.ts.map +1 -0
  285. package/build/sdk/legacy/server/protocol/privateInteractionConnection.js +134 -0
  286. package/build/sdk/legacy/server/protocol/privateInteractionConnection.js.map +1 -0
  287. package/build/sdk/legacy/server/protocol/promptRequestHandlers.d.ts.map +1 -1
  288. package/build/sdk/legacy/server/protocol/promptRequestHandlers.js +4 -3
  289. package/build/sdk/legacy/server/protocol/promptRequestHandlers.js.map +1 -1
  290. package/build/sdk/legacy/server/protocol/requestHandlers.d.ts.map +1 -1
  291. package/build/sdk/legacy/server/protocol/requestHandlers.js +5 -47
  292. package/build/sdk/legacy/server/protocol/requestHandlers.js.map +1 -1
  293. package/build/sdk/legacy/server/protocol/requestInteractionScope.d.ts +17 -0
  294. package/build/sdk/legacy/server/protocol/requestInteractionScope.d.ts.map +1 -0
  295. package/build/sdk/legacy/server/protocol/requestInteractionScope.js +223 -0
  296. package/build/sdk/legacy/server/protocol/requestInteractionScope.js.map +1 -0
  297. package/build/sdk/legacy/server/protocol/resourceRequestHandlers.d.ts.map +1 -1
  298. package/build/sdk/legacy/server/protocol/resourceRequestHandlers.js +3 -2
  299. package/build/sdk/legacy/server/protocol/resourceRequestHandlers.js.map +1 -1
  300. package/build/sdk/legacy/server/protocol/toolRequestHandlers.d.ts.map +1 -1
  301. package/build/sdk/legacy/server/protocol/toolRequestHandlers.js +72 -17
  302. package/build/sdk/legacy/server/protocol/toolRequestHandlers.js.map +1 -1
  303. package/build/sdk/legacy/server/runtime/connectionManager.d.ts.map +1 -1
  304. package/build/sdk/legacy/server/runtime/connectionManager.js +3 -0
  305. package/build/sdk/legacy/server/runtime/connectionManager.js.map +1 -1
  306. package/build/sdk/legacy/server/runtime/serverManager.d.ts +2 -0
  307. package/build/sdk/legacy/server/runtime/serverManager.d.ts.map +1 -1
  308. package/build/sdk/legacy/server/runtime/serverManager.js +35 -8
  309. package/build/sdk/legacy/server/runtime/serverManager.js.map +1 -1
  310. package/build/sdk/legacy/shared/capabilityListCapture.d.ts.map +1 -1
  311. package/build/sdk/legacy/shared/capabilityListCapture.js +3 -0
  312. package/build/sdk/legacy/shared/capabilityListCapture.js.map +1 -1
  313. package/build/sdk/legacy/shared/schemaProjection.d.ts +11 -0
  314. package/build/sdk/legacy/shared/schemaProjection.d.ts.map +1 -0
  315. package/build/sdk/legacy/shared/schemaProjection.js +45 -0
  316. package/build/sdk/legacy/shared/schemaProjection.js.map +1 -0
  317. package/build/sdk/legacy/transport/http/middlewares/scopeAuthMiddleware.d.ts +2 -0
  318. package/build/sdk/legacy/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -1
  319. package/build/sdk/legacy/transport/http/middlewares/scopeAuthMiddleware.js +31 -0
  320. package/build/sdk/legacy/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -1
  321. package/build/sdk/legacy/transport/http/modernInboundLegacyBridge.d.ts +7 -1
  322. package/build/sdk/legacy/transport/http/modernInboundLegacyBridge.d.ts.map +1 -1
  323. package/build/sdk/legacy/transport/http/modernInboundLegacyBridge.js +29 -4
  324. package/build/sdk/legacy/transport/http/modernInboundLegacyBridge.js.map +1 -1
  325. package/build/sdk/legacy/transport/http/server.d.ts +1 -1
  326. package/build/sdk/legacy/transport/http/server.d.ts.map +1 -1
  327. package/build/sdk/legacy/transport/http/server.js +2 -1
  328. package/build/sdk/legacy/transport/http/server.js.map +1 -1
  329. package/build/sdk/legacy/transport/transportFactory.d.ts.map +1 -1
  330. package/build/sdk/legacy/transport/transportFactory.js +4 -3
  331. package/build/sdk/legacy/transport/transportFactory.js.map +1 -1
  332. package/build/sdk/legacy/validation/CustomJsonSchemaValidator.d.ts +4 -52
  333. package/build/sdk/legacy/validation/CustomJsonSchemaValidator.d.ts.map +1 -1
  334. package/build/sdk/legacy/validation/CustomJsonSchemaValidator.js +5 -311
  335. package/build/sdk/legacy/validation/CustomJsonSchemaValidator.js.map +1 -1
  336. package/build/server.d.ts +2 -2
  337. package/build/server.d.ts.map +1 -1
  338. package/build/server.js +8 -6
  339. package/build/server.js.map +1 -1
  340. package/build/transport/http/routes/adminRoutes.d.ts.map +1 -1
  341. package/build/transport/http/routes/adminRoutes.js +37 -0
  342. package/build/transport/http/routes/adminRoutes.js.map +1 -1
  343. package/build/transport/http/routes/inspectRoutes.d.ts.map +1 -1
  344. package/build/transport/http/routes/inspectRoutes.js +77 -85
  345. package/build/transport/http/routes/inspectRoutes.js.map +1 -1
  346. package/build/transport/http/routes/modernHttpRoutes.d.ts +7 -1
  347. package/build/transport/http/routes/modernHttpRoutes.d.ts.map +1 -1
  348. package/build/transport/http/routes/modernHttpRoutes.js +121 -16
  349. package/build/transport/http/routes/modernHttpRoutes.js.map +1 -1
  350. package/build/transport/http/routes/modernInteractionBinding.d.ts +14 -0
  351. package/build/transport/http/routes/modernInteractionBinding.d.ts.map +1 -0
  352. package/build/transport/http/routes/modernInteractionBinding.js +142 -0
  353. package/build/transport/http/routes/modernInteractionBinding.js.map +1 -0
  354. package/build/transport/http/routes/toolRoutes.d.ts.map +1 -1
  355. package/build/transport/http/routes/toolRoutes.js +123 -27
  356. package/build/transport/http/routes/toolRoutes.js.map +1 -1
  357. package/build/transport/http/utils/contextExtractor.d.ts.map +1 -1
  358. package/build/transport/http/utils/contextExtractor.js +29 -0
  359. package/build/transport/http/utils/contextExtractor.js.map +1 -1
  360. package/build/utils/core/errorHandling.d.ts.map +1 -1
  361. package/build/utils/core/errorHandling.js +19 -4
  362. package/build/utils/core/errorHandling.js.map +1 -1
  363. package/build/utils/filePermissions.d.ts +3 -0
  364. package/build/utils/filePermissions.d.ts.map +1 -1
  365. package/build/utils/filePermissions.js +10 -0
  366. package/build/utils/filePermissions.js.map +1 -1
  367. package/build/utils/validation/urlDetection.d.ts.map +1 -1
  368. package/build/utils/validation/urlDetection.js +42 -2
  369. package/build/utils/validation/urlDetection.js.map +1 -1
  370. package/build/utils/watchPath.d.ts +3 -0
  371. package/build/utils/watchPath.d.ts.map +1 -0
  372. package/build/utils/watchPath.js +7 -0
  373. package/build/utils/watchPath.js.map +1 -0
  374. package/package.json +1 -1
@@ -0,0 +1,244 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { types } from 'node:util';
3
+ import { captureJson } from '../../core/validation/schemaPolicy.js';
4
+ import { createGatewayFailure, toImmutableJsonValue } from '../contracts/index.js';
5
+ import { InteractionOwner } from './interactionOwner.js';
6
+ function rejected() {
7
+ return createGatewayFailure({
8
+ kind: 'authorization',
9
+ code: 'interaction_state_invalid',
10
+ message: 'Interaction continuation rejected',
11
+ });
12
+ }
13
+ function digest(token) {
14
+ return createHash('sha256').update(token).digest('hex');
15
+ }
16
+ /** Converts request-local reverse callbacks into MRTR without invoking an operation twice. */
17
+ export class InteractionBroker {
18
+ options;
19
+ owner;
20
+ flows = new Map();
21
+ tokens = new Map();
22
+ constructor(options) {
23
+ this.options = options;
24
+ this.owner = new InteractionOwner(options.limits);
25
+ }
26
+ async start(binding, deadline, invoke, callerSignal) {
27
+ if (!this.options.authorize(binding))
28
+ throw rejected();
29
+ const operation = this.owner.start(binding, deadline);
30
+ const flow = { ...operation, binding, queue: [], sequence: 0, pendingInputs: 0 };
31
+ this.flows.set(flow.id, flow);
32
+ const abort = () => this.owner.cancel(flow.id);
33
+ callerSignal?.addEventListener('abort', abort, { once: true });
34
+ flow.signal.addEventListener('abort', () => {
35
+ if (!this.flows.has(flow.id))
36
+ return;
37
+ this.publish(flow, { error: flow.signal.reason });
38
+ this.forget(flow);
39
+ }, { once: true });
40
+ if (callerSignal?.aborted)
41
+ abort();
42
+ void Promise.resolve()
43
+ .then(() => {
44
+ flow.signal.throwIfAborted();
45
+ return invoke((input) => this.interact(flow, input), flow.signal, (inputs) => this.interactRound(flow, inputs));
46
+ })
47
+ .then((value) => this.complete(flow, { value }), (error) => this.complete(flow, { error }));
48
+ try {
49
+ return await this.next(flow);
50
+ }
51
+ finally {
52
+ callerSignal?.removeEventListener('abort', abort);
53
+ }
54
+ }
55
+ async resume(token, binding, responses, callerSignal, reauthorize) {
56
+ callerSignal?.throwIfAborted();
57
+ const flow = this.tokens.get(digest(token));
58
+ const current = flow?.current;
59
+ if (!flow ||
60
+ !current ||
61
+ current.resuming ||
62
+ !Object.values(current.requests).every((request) => this.options.authorize(binding, request)) ||
63
+ JSON.stringify(flow.binding) !== JSON.stringify(binding))
64
+ throw rejected();
65
+ current.resuming = true;
66
+ const abort = () => this.owner.cancel(flow.id);
67
+ callerSignal?.addEventListener('abort', abort, { once: true });
68
+ try {
69
+ if (!responses || typeof responses !== 'object' || Array.isArray(responses))
70
+ throw rejected();
71
+ const record = captureJson(responses, false).value;
72
+ const accepted = {
73
+ ...current.responses,
74
+ };
75
+ for (const [key, request] of Object.entries(current.requests)) {
76
+ if (Object.hasOwn(current.responses, key) || !Object.hasOwn(record, key))
77
+ continue;
78
+ await this.options.validate(request, record[key], binding, flow.signal);
79
+ Object.defineProperty(accepted, key, {
80
+ value: record[key],
81
+ enumerable: true,
82
+ configurable: true,
83
+ });
84
+ }
85
+ const combined = captureJson(accepted, false).value;
86
+ callerSignal?.throwIfAborted();
87
+ let allowed = false;
88
+ try {
89
+ allowed =
90
+ (!reauthorize || (await reauthorize())) &&
91
+ Object.values(current.requests).every((request) => this.options.authorize(binding, request));
92
+ }
93
+ catch {
94
+ allowed = false;
95
+ }
96
+ if (!allowed) {
97
+ this.owner.cancel(flow.id, 'authority_lost');
98
+ throw rejected();
99
+ }
100
+ callerSignal?.throwIfAborted();
101
+ if (flow.current !== current || this.tokens.get(digest(token)) !== flow)
102
+ throw rejected();
103
+ const missing = Object.fromEntries(Object.entries(current.requests).filter(([key]) => !Object.hasOwn(accepted, key)));
104
+ if (Object.keys(missing).length > 0) {
105
+ // Keep valid inputs only within this native round; never send partial responses upstream.
106
+ const successor = this.owner.rotate(token, binding);
107
+ this.tokens.delete(digest(token));
108
+ this.tokens.set(digest(successor), flow);
109
+ flow.current = {
110
+ requests: current.requests,
111
+ responses: combined,
112
+ token: digest(successor),
113
+ };
114
+ return toImmutableJsonValue({
115
+ resultType: 'input_required',
116
+ requestState: successor,
117
+ inputRequests: missing,
118
+ });
119
+ }
120
+ this.owner.resume(token, binding, combined);
121
+ this.tokens.delete(digest(token));
122
+ delete flow.current;
123
+ flow.reserved = flow.queue.length > 0;
124
+ flow.queue.shift()?.();
125
+ return await this.next(flow);
126
+ }
127
+ finally {
128
+ current.resuming = false;
129
+ callerSignal?.removeEventListener('abort', abort);
130
+ }
131
+ }
132
+ invalidate(binding) {
133
+ this.owner.invalidate(binding);
134
+ }
135
+ async close() {
136
+ await this.owner.close();
137
+ }
138
+ async interact(flow, input) {
139
+ const key = String(++flow.sequence);
140
+ const response = await this.interactRound(flow, { [key]: input });
141
+ return response[key];
142
+ }
143
+ async interactRound(flow, inputs) {
144
+ flow.signal.throwIfAborted();
145
+ if (inputs === null ||
146
+ typeof inputs !== 'object' ||
147
+ types.isProxy(inputs) ||
148
+ Array.isArray(inputs) ||
149
+ (Object.getPrototypeOf(inputs) !== Object.prototype && Object.getPrototypeOf(inputs) !== null))
150
+ throw rejected();
151
+ const inputCount = Reflect.ownKeys(inputs).length;
152
+ if (inputCount === 0)
153
+ throw rejected();
154
+ // Reserve actual inputs before copying payloads or suspending behind an active round.
155
+ if (inputCount > 32 || flow.pendingInputs + inputCount > 32) {
156
+ this.owner.cancel(flow.id, 'capacity_exceeded');
157
+ throw rejected();
158
+ }
159
+ flow.pendingInputs += inputCount;
160
+ try {
161
+ const requests = captureJson(inputs, false).value;
162
+ const entries = Object.entries(requests);
163
+ flow.signal.throwIfAborted();
164
+ if (!entries.every(([, request]) => this.options.authorize(flow.binding, request)))
165
+ throw rejected();
166
+ if (flow.current || flow.reserved) {
167
+ await new Promise((resolve, reject) => {
168
+ const abort = () => reject(flow.signal.reason);
169
+ flow.signal.addEventListener('abort', abort, { once: true });
170
+ flow.queue.push(() => {
171
+ flow.signal.removeEventListener('abort', abort);
172
+ resolve();
173
+ });
174
+ });
175
+ }
176
+ flow.signal.throwIfAborted();
177
+ flow.reserved = true;
178
+ try {
179
+ for (const [, request] of entries)
180
+ await this.options.validateRequest?.(request, flow.binding, flow.signal);
181
+ }
182
+ catch (error) {
183
+ this.owner.cancel(flow.id, 'response_invalid');
184
+ throw error;
185
+ }
186
+ flow.signal.throwIfAborted();
187
+ const round = this.owner.park(flow.id, requests);
188
+ flow.current = {
189
+ requests,
190
+ responses: {},
191
+ token: digest(round.requestState),
192
+ };
193
+ flow.reserved = false;
194
+ this.tokens.set(digest(round.requestState), flow);
195
+ this.publish(flow, {
196
+ value: toImmutableJsonValue({
197
+ resultType: 'input_required',
198
+ inputRequests: requests,
199
+ requestState: round.requestState,
200
+ }),
201
+ });
202
+ return (await round.response);
203
+ }
204
+ finally {
205
+ flow.pendingInputs -= inputCount;
206
+ }
207
+ }
208
+ next(flow) {
209
+ const result = flow.ready;
210
+ delete flow.ready;
211
+ return (result
212
+ ? Promise.resolve(result)
213
+ : new Promise((resolve) => {
214
+ flow.deliver = resolve;
215
+ })).then((settled) => {
216
+ if ('error' in settled)
217
+ throw settled.error;
218
+ return settled.value;
219
+ });
220
+ }
221
+ publish(flow, result) {
222
+ if (flow.deliver) {
223
+ const deliver = flow.deliver;
224
+ delete flow.deliver;
225
+ deliver(result);
226
+ }
227
+ else
228
+ flow.ready = result;
229
+ }
230
+ complete(flow, result) {
231
+ if (!this.flows.has(flow.id))
232
+ return;
233
+ this.publish(flow, result);
234
+ this.forget(flow);
235
+ this.owner.finish(flow.id);
236
+ }
237
+ forget(flow) {
238
+ this.flows.delete(flow.id);
239
+ if (flow.current)
240
+ this.tokens.delete(flow.current.token);
241
+ flow.queue.length = 0;
242
+ }
243
+ }
244
+ //# sourceMappingURL=interactionBroker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionBroker.js","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionBroker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GatewayInteractionRequest } from '../ports/outboundEraAdapter.js';
2
+ /** Capability truth is request-local, including the exact interaction subtype. */
3
+ export declare function hasInteractionCapability(capabilities: unknown, request: GatewayInteractionRequest): boolean;
4
+ //# sourceMappingURL=interactionCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionCapabilities.d.ts","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAMhF,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAuB3G"}
@@ -0,0 +1,36 @@
1
+ function record(value) {
2
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
3
+ }
4
+ /** Capability truth is request-local, including the exact interaction subtype. */
5
+ export function hasInteractionCapability(capabilities, request) {
6
+ if (!record(capabilities))
7
+ return false;
8
+ const params = record(request.params) ? request.params : {};
9
+ switch (request.method) {
10
+ case 'roots/list':
11
+ return Object.hasOwn(capabilities, 'roots') && record(capabilities.roots);
12
+ case 'sampling/createMessage': {
13
+ const sampling = capabilities.sampling;
14
+ if (!Object.hasOwn(capabilities, 'sampling') || !record(sampling))
15
+ return false;
16
+ if (params.tools === undefined && params.toolChoice === undefined)
17
+ return true;
18
+ return Object.hasOwn(sampling, 'tools') && record(sampling.tools);
19
+ }
20
+ case 'elicitation/create': {
21
+ const elicitation = capabilities.elicitation;
22
+ if (!Object.hasOwn(capabilities, 'elicitation') || !record(elicitation))
23
+ return false;
24
+ if (params.mode === 'url')
25
+ return Object.hasOwn(elicitation, 'url') && record(elicitation.url);
26
+ if (params.mode !== undefined && params.mode !== 'form')
27
+ return false;
28
+ if (Object.hasOwn(elicitation, 'form'))
29
+ return record(elicitation.form);
30
+ return !Object.hasOwn(elicitation, 'url');
31
+ }
32
+ default:
33
+ return false;
34
+ }
35
+ }
36
+ //# sourceMappingURL=interactionCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionCapabilities.js","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionCapabilities.ts"],"names":[],"mappings":"AAEA,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,YAAqB,EAAE,OAAkC;IAChG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,YAAY;YACf,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC/E,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAAE,OAAO,KAAK,CAAC;YACtF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/F,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC;YACtE,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { type ImmutableJsonValue } from '../contracts/index.js';
2
+ export interface InteractionBinding {
3
+ readonly principal: string;
4
+ readonly request: string;
5
+ readonly route: string;
6
+ readonly provider?: string;
7
+ readonly generation: string;
8
+ readonly inbound: string;
9
+ readonly outbound: string;
10
+ }
11
+ export interface InteractionLimits {
12
+ readonly active: number;
13
+ readonly perOwner: number;
14
+ readonly perRoute: number;
15
+ readonly rounds: number;
16
+ readonly payloadBytes: number;
17
+ readonly ttlMs: number;
18
+ readonly drainMs: number;
19
+ }
20
+ /** Owns live promises only. Tokens are unguessable references, never serialized authority. */
21
+ export declare class InteractionOwner {
22
+ private readonly now;
23
+ private readonly operations;
24
+ private readonly tokens;
25
+ private readonly limits;
26
+ private closed;
27
+ constructor(limits?: Partial<InteractionLimits>, now?: () => number);
28
+ start(binding: InteractionBinding, deadline: number): {
29
+ id: string;
30
+ signal: AbortSignal;
31
+ };
32
+ park(id: string, input: unknown): {
33
+ requestState: string;
34
+ input: ImmutableJsonValue;
35
+ response: Promise<ImmutableJsonValue>;
36
+ };
37
+ resume(token: string, binding: InteractionBinding, input: unknown): string;
38
+ rotate(token: string, binding: InteractionBinding): string;
39
+ finish(id: string): void;
40
+ cancel(id: string, reason?: string): void;
41
+ invalidate(binding: InteractionBinding): void;
42
+ close(drain?: () => Promise<void>): Promise<void>;
43
+ private payload;
44
+ }
45
+ //# sourceMappingURL=interactionOwner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionOwner.d.ts","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionOwner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,KAAK,kBAAkB,EAAwB,MAAM,uBAAuB,CAAC;AAE5G,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA4DD,8FAA8F;AAC9F,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAGrB,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM,EACtB,GAAG,eAAW;IAoBjC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE;IAkCzF,IAAI,CACF,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GACb;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;KAAE;IAoB7F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAiB1E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM;IAwB1D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAc,GAAG,IAAI;IAa9C,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAOvC,KAAK,CAAC,KAAK,GAAE,MAAM,OAAO,CAAC,IAAI,CAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9E,OAAO,CAAC,OAAO;CAKhB"}
@@ -0,0 +1,203 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import { captureJson, SCHEMA_LIMITS } from '../../core/validation/schemaPolicy.js';
3
+ import { createGatewayFailure, toImmutableJsonValue } from '../contracts/index.js';
4
+ // All listener/broker and direct legacy owners share the accepted process capacity.
5
+ const processOperations = new Map();
6
+ const defaults = {
7
+ active: 128,
8
+ perOwner: 16,
9
+ perRoute: 32,
10
+ rounds: 10,
11
+ payloadBytes: SCHEMA_LIMITS.inputBytes,
12
+ ttlMs: 600_000,
13
+ drainMs: 1000,
14
+ };
15
+ function tokenKey(token) {
16
+ if (!/^[A-Za-z0-9_-]{43}$/.test(token))
17
+ throw failure('state_invalid');
18
+ return createHash('sha256').update(token).digest('hex');
19
+ }
20
+ function failure(code) {
21
+ return createGatewayFailure({
22
+ kind: 'invalid-request',
23
+ code: `interaction_${code}`,
24
+ message: 'Interaction is unavailable or cannot accept this continuation',
25
+ data: { outcome: 'unknown' },
26
+ });
27
+ }
28
+ function bindingKey(binding) {
29
+ const parts = [
30
+ binding.principal,
31
+ binding.request,
32
+ binding.route,
33
+ binding.provider ?? binding.route,
34
+ binding.generation,
35
+ binding.inbound,
36
+ binding.outbound,
37
+ ];
38
+ if (parts.some((part) => typeof part !== 'string' || !part))
39
+ throw failure('binding_required');
40
+ return JSON.stringify(parts);
41
+ }
42
+ /** Owns live promises only. Tokens are unguessable references, never serialized authority. */
43
+ export class InteractionOwner {
44
+ now;
45
+ operations = new Map();
46
+ tokens = new Map();
47
+ limits;
48
+ closed = false;
49
+ constructor(limits = {}, now = Date.now) {
50
+ this.now = now;
51
+ this.limits = { ...defaults, ...limits };
52
+ if (Object.entries(this.limits).some(([key, value]) => !Number.isSafeInteger(value) || value < 0 || (value === 0 && key !== 'ttlMs'))) {
53
+ throw new TypeError('Interaction limits must be positive integers');
54
+ }
55
+ if (this.limits.active > 2048 ||
56
+ this.limits.perOwner > 128 ||
57
+ this.limits.perRoute > 512 ||
58
+ this.limits.rounds > 10 ||
59
+ this.limits.ttlMs > 3_600_000)
60
+ throw new TypeError('Interaction hard limit exceeded');
61
+ }
62
+ start(binding, deadline) {
63
+ const key = bindingKey(binding);
64
+ let ownerCount = 0;
65
+ let routeCount = 0;
66
+ for (const operation of processOperations.values()) {
67
+ if (operation.principal === binding.principal)
68
+ ownerCount++;
69
+ if (operation.route === (binding.provider ?? binding.route))
70
+ routeCount++;
71
+ }
72
+ if (this.closed ||
73
+ processOperations.size >= this.limits.active ||
74
+ ownerCount >= this.limits.perOwner ||
75
+ routeCount >= this.limits.perRoute)
76
+ throw failure('capacity_exceeded');
77
+ const expires = Math.min(deadline, this.now() + this.limits.ttlMs);
78
+ if (!Number.isSafeInteger(expires) || expires <= this.now())
79
+ throw failure('expired');
80
+ const id = randomBytes(32).toString('base64url');
81
+ const controller = new AbortController();
82
+ const timer = setTimeout(() => this.cancel(id, 'expired'), expires - this.now());
83
+ timer.unref();
84
+ this.operations.set(id, {
85
+ binding: key,
86
+ principal: binding.principal,
87
+ route: binding.provider ?? binding.route,
88
+ deadline: expires,
89
+ controller,
90
+ timer,
91
+ rounds: 0,
92
+ });
93
+ processOperations.set(id, this.operations.get(id));
94
+ return { id, signal: controller.signal };
95
+ }
96
+ park(id, input) {
97
+ const operation = this.operations.get(id);
98
+ if (!operation || operation.deadline <= this.now())
99
+ throw failure('expired');
100
+ if (operation.round)
101
+ throw failure('round_pending');
102
+ if (operation.rounds >= this.limits.rounds) {
103
+ this.cancel(id, 'round_limit');
104
+ throw failure('round_limit');
105
+ }
106
+ const value = this.payload(input);
107
+ const token = randomBytes(32).toString('base64url');
108
+ const response = new Promise((resolve, reject) => {
109
+ operation.round = { token: tokenKey(token), resolve, reject };
110
+ });
111
+ // A peer may disconnect before the parked callback attaches its await.
112
+ void response.catch(() => undefined);
113
+ operation.rounds++;
114
+ this.tokens.set(tokenKey(token), id);
115
+ return { requestState: token, input: value, response };
116
+ }
117
+ resume(token, binding, input) {
118
+ const digest = tokenKey(token);
119
+ const id = this.tokens.get(digest);
120
+ const operation = id === undefined ? undefined : this.operations.get(id);
121
+ if (!operation || operation.binding !== bindingKey(binding) || operation.deadline <= this.now()) {
122
+ throw failure('continuation_rejected');
123
+ }
124
+ const round = operation.round;
125
+ if (!round || round.token !== digest)
126
+ throw failure('continuation_rejected');
127
+ const value = this.payload(input);
128
+ // Consume synchronously before waking the same live operation.
129
+ this.tokens.delete(digest);
130
+ delete operation.round;
131
+ round.resolve(value);
132
+ return id;
133
+ }
134
+ rotate(token, binding) {
135
+ const previous = tokenKey(token);
136
+ const id = this.tokens.get(previous);
137
+ const operation = id === undefined ? undefined : this.operations.get(id);
138
+ if (!operation ||
139
+ operation.binding !== bindingKey(binding) ||
140
+ operation.deadline <= this.now() ||
141
+ !operation.round ||
142
+ operation.round.token !== previous)
143
+ throw failure('continuation_rejected');
144
+ if (operation.rounds >= this.limits.rounds) {
145
+ this.cancel(id, 'round_limit');
146
+ throw failure('round_limit');
147
+ }
148
+ const next = randomBytes(32).toString('base64url');
149
+ this.tokens.delete(previous);
150
+ operation.round = { ...operation.round, token: tokenKey(next) };
151
+ operation.rounds++;
152
+ this.tokens.set(tokenKey(next), id);
153
+ return next;
154
+ }
155
+ finish(id) {
156
+ this.cancel(id, 'completed');
157
+ }
158
+ cancel(id, reason = 'cancelled') {
159
+ const operation = this.operations.get(id);
160
+ if (!operation)
161
+ return;
162
+ this.operations.delete(id);
163
+ processOperations.delete(id);
164
+ clearTimeout(operation.timer);
165
+ if (operation.round) {
166
+ this.tokens.delete(operation.round.token);
167
+ operation.round.reject(failure(reason));
168
+ }
169
+ operation.controller.abort(failure(reason));
170
+ }
171
+ invalidate(binding) {
172
+ const key = bindingKey(binding);
173
+ for (const [id, operation] of this.operations) {
174
+ if (operation.binding === key)
175
+ this.cancel(id, 'authority_lost');
176
+ }
177
+ }
178
+ async close(drain = async () => undefined) {
179
+ this.closed = true;
180
+ for (const id of this.operations.keys())
181
+ this.cancel(id, 'interrupted');
182
+ let timer;
183
+ try {
184
+ await Promise.race([
185
+ drain(),
186
+ new Promise((resolve) => {
187
+ timer = setTimeout(resolve, this.limits.drainMs);
188
+ }),
189
+ ]);
190
+ }
191
+ finally {
192
+ if (timer)
193
+ clearTimeout(timer);
194
+ }
195
+ }
196
+ payload(input) {
197
+ const value = toImmutableJsonValue(captureJson(input, false).value);
198
+ if (Buffer.byteLength(JSON.stringify(value)) > this.limits.payloadBytes)
199
+ throw failure('payload_limit');
200
+ return value;
201
+ }
202
+ }
203
+ //# sourceMappingURL=interactionOwner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionOwner.js","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionOwner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAA2B,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAuC5G,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEvD,MAAM,QAAQ,GAAsB;IAClC,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;IACV,YAAY,EAAE,aAAa,CAAC,UAAU;IACtC,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,oBAAoB,CAAC;QAC1B,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,eAAe,IAAI,EAAE;QAC3B,OAAO,EAAE,+DAA+D;QACxE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAA2B;IAC7C,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,KAAK;QACb,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK;QACjC,OAAO,CAAC,UAAU;QAClB,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,QAAQ;KACjB,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/F,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,8FAA8F;AAC9F,MAAM,OAAO,gBAAgB;IAQR;IAPF,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC1C,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,MAAM,CAAoB;IACnC,MAAM,GAAG,KAAK,CAAC;IAEvB,YACE,SAAqC,EAAE,EACtB,MAAM,IAAI,CAAC,GAAG;QAAd,QAAG,GAAH,GAAG,CAAW;QAE/B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACzC,IACE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,CAChG,EACD,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QACD,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS;YAE7B,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,OAA2B,EAAE,QAAgB;QACjD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;gBAAE,UAAU,EAAE,CAAC;YAC5D,IAAI,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,UAAU,EAAE,CAAC;QAC5E,CAAC;QACD,IACE,IAAI,CAAC,MAAM;YACX,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAC5C,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAClC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAElC,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;YACtB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK;YACxC,QAAQ,EAAE,OAAO;YACjB,UAAU;YACV,KAAK;YACL,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,CACF,EAAU,EACV,KAAc;QAEd,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,SAAS,CAAC,KAAK;YAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAC/B,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnE,SAAS,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,uEAAuE;QACvE,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,OAA2B,EAAE,KAAc;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChG,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;YAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC,KAAK,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,EAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,OAA2B;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,IACE,CAAC,SAAS;YACV,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC;YACzC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;YAChC,CAAC,SAAS,CAAC,KAAK;YAChB,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;YAElC,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,EAAG,EAAE,aAAa,CAAC,CAAC;YAChC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,SAAS,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,MAAM,GAAG,WAAW;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,OAA2B;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,SAAS,CAAC,OAAO,KAAK,GAAG;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAA6B,KAAK,IAAI,EAAE,CAAC,SAAS;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACxE,IAAI,KAAgD,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE;gBACP,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5B,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnD,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,KAAc;QAC5B,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;QACxG,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { GatewayRequestOptions } from '../ports/outboundEraAdapter.js';
2
+ interface InteractionRoute {
3
+ readonly adapter: object;
4
+ readonly method: string;
5
+ readonly identity: string;
6
+ readonly isCurrent?: () => boolean;
7
+ }
8
+ export declare function withNativeInteractionRound<T>(handler: NonNullable<GatewayRequestOptions['interactionRound']>, operation: () => Promise<T>): Promise<T>;
9
+ export declare function currentNativeInteractionRound(): GatewayRequestOptions['interactionRound'];
10
+ export declare function withInteractionRoute<T>(pin: InteractionRoute, operation: () => Promise<T>): Promise<T>;
11
+ /** A freshly recreated private peer may implement only the already-authorized source route. */
12
+ export declare function withDerivedInteractionRoute<T>(original: object, child: object, operation: () => Promise<T>): Promise<T>;
13
+ /** Runs at the actual provider boundary, after private bridge routing/catalog acquisition. */
14
+ export declare function assertInteractionRoute(adapter: object, method: string, params: unknown): void;
15
+ export {};
16
+ //# sourceMappingURL=interactionRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionRoute.d.ts","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionRoute.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,UAAU,gBAAgB;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CACpC;AAID,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,OAAO,EAAE,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,EAC/D,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAgB,6BAA6B,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,CAEzF;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEtG;AAED,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAY7F"}
@@ -0,0 +1,41 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { createGatewayFailure } from '../contracts/index.js';
3
+ const routes = new AsyncLocalStorage();
4
+ const nativeRounds = new AsyncLocalStorage();
5
+ export function withNativeInteractionRound(handler, operation) {
6
+ return nativeRounds.run(handler, operation);
7
+ }
8
+ export function currentNativeInteractionRound() {
9
+ return nativeRounds.getStore();
10
+ }
11
+ export function withInteractionRoute(pin, operation) {
12
+ return routes.run(Object.freeze({ ...pin }), operation);
13
+ }
14
+ /** A freshly recreated private peer may implement only the already-authorized source route. */
15
+ export function withDerivedInteractionRoute(original, child, operation) {
16
+ const pin = routes.getStore();
17
+ if (!pin || pin.adapter !== original || pin.isCurrent?.() === false) {
18
+ throw createGatewayFailure({
19
+ kind: 'authorization',
20
+ code: 'interaction_lost',
21
+ message: 'Interaction route is no longer available',
22
+ });
23
+ }
24
+ return withInteractionRoute({ ...pin, adapter: child }, operation);
25
+ }
26
+ /** Runs at the actual provider boundary, after private bridge routing/catalog acquisition. */
27
+ export function assertInteractionRoute(adapter, method, params) {
28
+ const pin = routes.getStore();
29
+ if (!pin || !['tools/call', 'prompts/get', 'resources/read'].includes(method))
30
+ return;
31
+ const key = method === 'resources/read' ? 'uri' : 'name';
32
+ const identity = params && typeof params === 'object' ? params[key] : undefined;
33
+ if (pin.adapter !== adapter || pin.method !== method || pin.identity !== identity || pin.isCurrent?.() === false) {
34
+ throw createGatewayFailure({
35
+ kind: 'authorization',
36
+ code: 'interaction_lost',
37
+ message: 'Interaction route is no longer available',
38
+ });
39
+ }
40
+ }
41
+ //# sourceMappingURL=interactionRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionRoute.js","sourceRoot":"","sources":["../../../src/gateway/interactions/interactionRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAS7D,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAoB,CAAC;AACzD,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAA0D,CAAC;AAErG,MAAM,UAAU,0BAA0B,CACxC,OAA+D,EAC/D,SAA2B;IAE3B,OAAO,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,GAAqB,EAAE,SAA2B;IACxF,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,KAAa,EACb,SAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;QACpE,MAAM,oBAAoB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,oBAAoB,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAc,EAAE,MAAe;IACrF,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO;IACtF,MAAM,GAAG,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;QACjH,MAAM,oBAAoB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}