(extension: McpPluginExtension)
| 39 | ); |
| 40 | |
| 41 | const webHandlerFor = (extension: McpPluginExtension) => |
| 42 | Effect.acquireRelease( |
| 43 | Effect.sync(() => |
| 44 | HttpRouter.toWebHandler( |
| 45 | HttpApiBuilder.layer(Api).pipe( |
| 46 | Layer.provide(CoreHandlers), |
| 47 | Layer.provide(McpHandlers), |
| 48 | Layer.provide(observabilityMiddleware(Api)), |
| 49 | Layer.provide(UnusedExecutor), |
| 50 | Layer.provide(UnusedExecutionEngine), |
| 51 | Layer.provide(Layer.succeed(McpExtensionService, extension)), |
| 52 | Layer.provideMerge(HttpServer.layerServices), |
| 53 | Layer.provideMerge(Layer.succeed(HttpRouter.RouterConfig)({ maxParamLength: 1000 })), |
| 54 | ), |
| 55 | ), |
| 56 | ), |
| 57 | (web) => Effect.promise(() => web.dispose()), |
| 58 | ); |
| 59 | |
| 60 | // `acquireRelease` keeps disposal inside the Effect scope — no |
| 61 | // try/finally, no per-test cleanup plumbing. `it.scoped` closes the |
no test coverage detected