apps 0.0.1-beta.4 → 0.0.1-beta.41

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 (171) hide show
  1. package/README.md +68 -44
  2. package/framework-reference.json +1 -1
  3. package/js/{chunk-QKHR7BMF.js → chunk-3MMG2H6M.js} +89 -53
  4. package/js/{chunk-EQB7JMAL.js → chunk-6XGB4BAL.js} +146 -31
  5. package/js/chunk-ADD6H64X.js +729 -0
  6. package/js/{chunk-6VRYO2BG.js → chunk-AHGGO2VY.js} +837 -254
  7. package/js/{chunk-FDNTX5QJ.js → chunk-CQD3WSYH.js} +2 -2
  8. package/js/{chunk-EVJUVWN2.js → chunk-DKUEYTYD.js} +463 -218
  9. package/js/chunk-EM4UL26F.js +118 -0
  10. package/js/{chunk-2VPJHFOU.js → chunk-FXWRE655.js} +128 -24
  11. package/js/{chunk-5MQZEB6Y.js → chunk-JI3EP2GL.js} +40 -12
  12. package/js/chunk-JJSLEJ6T.js +156 -0
  13. package/js/chunk-KAQD3DTI.js +16 -0
  14. package/js/chunk-KIM5HXNK.js +49 -0
  15. package/js/chunk-MJZYV7IO.js +255 -0
  16. package/js/{chunk-FW5HBOIK.js → chunk-MXDKXAY4.js} +19117 -18309
  17. package/js/{chunk-T2LAZCAD.js → chunk-NKWWPJYX.js} +3 -3
  18. package/js/chunk-OD3KFKZD.js +1617 -0
  19. package/js/{chunk-3M2MEDNL.js → chunk-OTCLXFLL.js} +1337 -188
  20. package/js/chunk-P7MGDPFD.js +240 -0
  21. package/js/{chunk-ZCAMUXSG.js → chunk-PNVCCB4L.js} +432 -79
  22. package/js/{chunk-D47C7KG5.js → chunk-RIXVGVA6.js} +2 -2
  23. package/js/{chunk-NQ3OMCA5.js → chunk-TT6OU4UG.js} +2 -2
  24. package/js/{chunk-YEJOQEII.js → chunk-UOZMSUJ2.js} +61 -9
  25. package/js/chunk-UTJIGUSS.js +42 -0
  26. package/js/{chunk-G7ZIRKMK.js → chunk-VIU2XXA7.js} +228 -264
  27. package/js/{chunk-HDJH3RPR.js → chunk-VJQXXOQ3.js} +4 -4
  28. package/js/{chunk-WFSQXYUT.js → chunk-WPBR4AWB.js} +523 -63
  29. package/js/{chunk-SATWJKN6.js → chunk-YQ35E7KS.js} +2 -2
  30. package/js/chunk-ZUKBIHMK.js +92 -0
  31. package/js/client.js +122 -88
  32. package/js/contracts.js +116 -25
  33. package/js/effect.js +19 -20
  34. package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
  35. package/js/graphql.js +57 -55
  36. package/js/host.js +19 -20
  37. package/js/index.js +245 -212
  38. package/js/mcp/effect.js +23 -22
  39. package/js/mcp/stdio.js +34 -30
  40. package/js/mcp.js +104 -68
  41. package/js/openapi.js +4087 -1503
  42. package/js/react.js +2 -3
  43. package/js/skills/effect.js +6 -3
  44. package/js/skills.js +147 -65
  45. package/js/storage/facet.js +1 -540
  46. package/js/ui/auth/contracts.js +2 -2
  47. package/js/ui/auth.js +5 -5
  48. package/js/ui/contracts.js +5 -4
  49. package/js/ui/serving.js +8517 -214
  50. package/package.json +2 -3
  51. package/runtime.json +1 -1
  52. package/types/app-data/src/contracts/database.d.ts +33 -6
  53. package/types/apps/src/contracts/api-response-error.d.ts +4 -0
  54. package/types/apps/src/contracts/app.d.ts +7 -8
  55. package/types/apps/src/contracts/cache.d.ts +14 -0
  56. package/types/apps/src/contracts/context.d.ts +12 -11
  57. package/types/apps/src/contracts/elicitation.d.ts +6 -6
  58. package/types/apps/src/contracts/failure.d.ts +54 -0
  59. package/types/apps/src/contracts/graphql.d.ts +2 -1
  60. package/types/apps/src/contracts/host.d.ts +44 -17
  61. package/types/apps/src/contracts/live.d.ts +2 -0
  62. package/types/apps/src/contracts/mcp.d.ts +96 -10
  63. package/types/apps/src/contracts/network.d.ts +84 -0
  64. package/types/apps/src/contracts/openapi-compile.d.ts +32 -3
  65. package/types/apps/src/contracts/openapi.d.ts +45 -9
  66. package/types/apps/src/contracts/operations.d.ts +8 -9
  67. package/types/apps/src/contracts/protocol-version.d.ts +2 -2
  68. package/types/apps/src/contracts/protocols/1.d.ts +263 -74
  69. package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
  70. package/types/apps/src/contracts/protocols/2.d.ts +66 -24
  71. package/types/apps/src/contracts/protocols/3.d.ts +715 -0
  72. package/types/apps/src/contracts/protocols/4.d.ts +1297 -0
  73. package/types/apps/src/contracts/protocols/5.d.ts +1174 -0
  74. package/types/apps/src/contracts/protocols/6.d.ts +1620 -0
  75. package/types/apps/src/contracts/protocols/7.d.ts +1784 -0
  76. package/types/apps/src/contracts/protocols/8.d.ts +1130 -0
  77. package/types/apps/src/contracts/protocols/9.d.ts +1106 -0
  78. package/types/apps/src/contracts/protocols/oauth.d.ts +89 -0
  79. package/types/apps/src/contracts/provider-error.d.ts +9 -0
  80. package/types/apps/src/contracts/provider.d.ts +115 -10
  81. package/types/apps/src/contracts/router.d.ts +59 -0
  82. package/types/apps/src/contracts/skills.d.ts +39 -9
  83. package/types/apps/src/contracts/sql.d.ts +58 -0
  84. package/types/apps/src/contracts/ui.d.ts +19 -1
  85. package/types/apps/src/contracts/workflows.d.ts +40 -3
  86. package/types/apps/src/facet.d.ts +4 -5
  87. package/types/apps/src/graphql.d.ts +1 -3
  88. package/types/apps/src/implementation/account-router.d.ts +12 -0
  89. package/types/apps/src/implementation/app.d.ts +5 -4
  90. package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
  91. package/types/apps/src/implementation/catalog-cache.d.ts +32 -5
  92. package/types/apps/src/implementation/elicitation.d.ts +12 -12
  93. package/types/apps/src/implementation/failure-detail.d.ts +47 -0
  94. package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
  95. package/types/apps/src/implementation/graphql.d.ts +4 -3
  96. package/types/apps/src/implementation/input-problems.d.ts +6 -2
  97. package/types/apps/src/implementation/live.d.ts +2 -2
  98. package/types/apps/src/implementation/mcp-call.d.ts +6 -5
  99. package/types/apps/src/implementation/mcp-catalog.d.ts +7 -8
  100. package/types/apps/src/implementation/mcp-client.d.ts +49 -25
  101. package/types/apps/src/implementation/mcp-stdio.d.ts +1 -1
  102. package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
  103. package/types/apps/src/implementation/mcp.d.ts +52 -25
  104. package/types/apps/src/implementation/network.d.ts +16 -0
  105. package/types/apps/src/implementation/openapi-compile.d.ts +27 -6
  106. package/types/apps/src/implementation/openapi-document.d.ts +46 -19
  107. package/types/apps/src/implementation/openapi-names.d.ts +9 -4
  108. package/types/apps/src/implementation/openapi-request.d.ts +10 -2
  109. package/types/apps/src/implementation/openapi-source.d.ts +8 -6
  110. package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
  111. package/types/apps/src/implementation/operations.d.ts +36 -3
  112. package/types/apps/src/implementation/optimistic.d.ts +1 -1
  113. package/types/apps/src/implementation/protocol-operations.d.ts +6 -4
  114. package/types/apps/src/implementation/provider-error.d.ts +28 -1
  115. package/types/apps/src/implementation/provider.d.ts +19 -5
  116. package/types/apps/src/implementation/query-commit.d.ts +1 -1
  117. package/types/apps/src/implementation/router-catalog.d.ts +223 -0
  118. package/types/apps/src/implementation/router.d.ts +68 -0
  119. package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
  120. package/types/apps/src/implementation/schema.d.ts +95 -11
  121. package/types/apps/src/implementation/skills.d.ts +18 -24
  122. package/types/apps/src/implementation/sql.d.ts +66 -0
  123. package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
  124. package/types/apps/src/implementation/ui-auth.d.ts +1 -1
  125. package/types/apps/src/implementation/ui-client.d.ts +2 -2
  126. package/types/apps/src/implementation/ui-document.d.ts +5 -0
  127. package/types/apps/src/implementation/ui-errors.d.ts +1 -1
  128. package/types/apps/src/implementation/ui-serving.d.ts +11 -5
  129. package/types/apps/src/implementation/ui-watch.d.ts +1 -1
  130. package/types/apps/src/implementation/upstream-error.d.ts +7 -0
  131. package/types/apps/src/implementation/webhooks.d.ts +1 -1
  132. package/types/apps/src/implementation/workflow-context.d.ts +11 -3
  133. package/types/apps/src/index.d.ts +30 -13
  134. package/types/apps/src/mcp-stdio.d.ts +2 -5
  135. package/types/apps/src/mcp.d.ts +25 -5
  136. package/types/apps/src/openapi.d.ts +6 -6
  137. package/types/apps/src/react.d.ts +1 -1
  138. package/types/apps/src/skills.d.ts +10 -8
  139. package/types/telemetry/src/app-records.d.ts +42 -0
  140. package/types/telemetry/src/browser-operations.d.ts +6 -3
  141. package/types/telemetry/src/browser.d.ts +2 -2
  142. package/types/telemetry/src/config.d.ts +2 -2
  143. package/types/telemetry/src/layer.d.ts +2 -2
  144. package/types/telemetry/src/recorded-failure.d.ts +20 -0
  145. package/types/telemetry/src/relay.d.ts +2 -2
  146. package/types/telemetry/src/transport.d.ts +8 -1
  147. package/types/utils/src/api-error.d.ts +53 -0
  148. package/types/utils/src/recorded-message.d.ts +15 -0
  149. package/js/chunk-BMOIAIVR.js +0 -138
  150. package/js/chunk-DHUDODG5.js +0 -213
  151. package/js/chunk-FZJOYIZO.js +0 -19
  152. package/js/chunk-LGIYBDWA.js +0 -85
  153. package/js/chunk-M6ZRRIBI.js +0 -877
  154. package/js/chunk-PLCMJREA.js +0 -590
  155. package/js/chunk-PYUYJRSK.js +0 -93
  156. package/js/chunk-SWPD52J7.js +0 -35
  157. package/js/chunk-W7D7WVSY.js +0 -18
  158. package/js/chunk-Z5NMEGJN.js +0 -29
  159. package/js/chunk-ZJWDMTE3.js +0 -63
  160. package/types/app-data/src/implementation/cursor.d.ts +0 -10
  161. package/types/app-data/src/implementation/index-key.d.ts +0 -7
  162. package/types/app-data/src/implementation/promise.d.ts +0 -68
  163. package/types/app-data/src/implementation/range.d.ts +0 -8
  164. package/types/app-data/src/implementation/schema.d.ts +0 -33
  165. package/types/app-data/src/implementation/sqlite.d.ts +0 -11
  166. package/types/app-data/src/index.d.ts +0 -4
  167. package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
  168. package/types/apps/src/contracts/storage.d.ts +0 -68
  169. package/types/apps/src/implementation/account-operations.d.ts +0 -151
  170. package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
  171. package/types/apps/src/implementation/storage.d.ts +0 -13
@@ -1,37 +1,52 @@
1
1
  import {
2
2
  adaptMcpTools,
3
+ answeredError,
3
4
  mcpClient,
4
5
  mcpJsonSchemaValidator
5
- } from "./chunk-2VPJHFOU.js";
6
+ } from "./chunk-FXWRE655.js";
7
+ import {
8
+ failOnNetworkRefusal
9
+ } from "./chunk-KIM5HXNK.js";
6
10
  import {
7
11
  accountProviderError,
8
- httpProviderError
9
- } from "./chunk-ZJWDMTE3.js";
12
+ bodyUpstreamError,
13
+ httpProviderError,
14
+ providerErrorDetail
15
+ } from "./chunk-EM4UL26F.js";
10
16
  import {
17
+ McpCredentialsUnverified,
11
18
  McpError,
19
+ McpHealthInput,
12
20
  McpToolsOptions,
13
- defaultMcpClientLimits
14
- } from "./chunk-3M2MEDNL.js";
21
+ defaultMcpClientLimits,
22
+ mcpHealthReserveMs
23
+ } from "./chunk-OTCLXFLL.js";
15
24
  import {
25
+ NetworkRefused,
16
26
  ProviderError
17
- } from "./chunk-W7D7WVSY.js";
27
+ } from "./chunk-P7MGDPFD.js";
18
28
  import {
19
29
  captureTelemetry
20
- } from "./chunk-ZCAMUXSG.js";
30
+ } from "./chunk-PNVCCB4L.js";
21
31
  import {
22
32
  FetchHttpClient_exports
23
- } from "./chunk-HDJH3RPR.js";
33
+ } from "./chunk-VJQXXOQ3.js";
24
34
  import {
25
35
  HttpClientRequest_exports,
26
36
  HttpClient_exports
27
- } from "./chunk-QKHR7BMF.js";
37
+ } from "./chunk-3MMG2H6M.js";
28
38
  import {
39
+ Clock_exports,
29
40
  Deferred_exports,
30
41
  Effect_exports,
42
+ Match_exports,
43
+ Option_exports,
44
+ Predicate_exports,
31
45
  Redacted_exports,
46
+ Ref_exports,
32
47
  Schema_exports,
33
48
  Stream_exports
34
- } from "./chunk-FW5HBOIK.js";
49
+ } from "./chunk-MXDKXAY4.js";
35
50
 
36
51
  // src/implementation/mcp.ts
37
52
  import { UnauthorizedError } from "@modelcontextprotocol/sdk/client/auth.js";
@@ -46,18 +61,45 @@ import {
46
61
  StreamableHTTPClientTransport,
47
62
  StreamableHTTPError
48
63
  } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
64
+ var unreadable = (error) => error instanceof SyntaxError || error instanceof Error && Predicate_exports.hasProperty(error, "issues") && Array.isArray(error.issues);
49
65
  var failure = (phase, error) => {
50
- if (Schema_exports.is(ProviderError)(error) || Schema_exports.is(McpError)(error)) return error;
51
- const status = error instanceof UnauthorizedError ? 401 : error instanceof StreamableHTTPError || error instanceof SseError ? error.code : void 0;
52
- const provider = status === void 0 ? void 0 : httpProviderError(status);
53
- if (provider !== void 0) return provider;
66
+ if (Schema_exports.is(ProviderError)(error) || Schema_exports.is(McpError)(error) || Schema_exports.is(NetworkRefused)(error))
67
+ return error;
68
+ const code = error instanceof UnauthorizedError ? 401 : error instanceof StreamableHTTPError || error instanceof SseError ? error.code : void 0;
69
+ if (code !== void 0 && code >= 300 && code <= 599)
70
+ return httpProviderError(code) ?? new McpError({ phase, reason: "request", status: code });
71
+ const upstream = answeredError(error);
54
72
  return new McpError({
55
73
  phase,
56
- reason: error instanceof ProtocolError && error.code === ErrorCode.RequestTimeout ? "timeout" : "request",
57
- ...status === void 0 ? {} : { status }
74
+ reason: code !== void 0 || unreadable(error) ? "invalid_response" : error instanceof ProtocolError && error.code === ErrorCode.RequestTimeout ? "timeout" : "request",
75
+ ...upstream === void 0 ? {} : { upstream }
58
76
  });
59
77
  };
60
- var transportFetch = (connection, telemetry, rejected) => (url, init) => Effect_exports.runPromiseWith(telemetry.context)(
78
+ var errorBodyLimits = { maxBytes: 65536, readTimeoutMs: 2e3 };
79
+ var errorBody = (response) => Effect_exports.gen(function* () {
80
+ const json = /^application\/(?:[\w.-]+\+)?json$/i.test(
81
+ response.headers["content-type"]?.split(";")[0]?.trim() ?? ""
82
+ );
83
+ const length = response.headers["content-length"];
84
+ if (!json || length !== void 0 && Number(length) > errorBodyLimits.maxBytes)
85
+ return { body: Stream_exports.toReadableStream(response.stream), upstream: void 0 };
86
+ const unreadable2 = new McpError({ phase: "transport", reason: "invalid_response" });
87
+ const read = yield* response.stream.pipe(
88
+ Stream_exports.mapError(() => unreadable2),
89
+ Stream_exports.limitBytes(errorBodyLimits.maxBytes, () => Stream_exports.fail(unreadable2)),
90
+ Stream_exports.decodeText,
91
+ Stream_exports.mkString,
92
+ Effect_exports.timeout(errorBodyLimits.readTimeoutMs),
93
+ Effect_exports.option
94
+ );
95
+ if (Option_exports.isNone(read)) return { body: null, upstream: void 0 };
96
+ const parsed = Schema_exports.decodeUnknownOption(Schema_exports.fromJsonString(Schema_exports.Json))(read.value);
97
+ return {
98
+ body: read.value,
99
+ upstream: Option_exports.isSome(parsed) ? bodyUpstreamError(parsed.value) : void 0
100
+ };
101
+ });
102
+ var transportFetch = (connection, telemetry, rejected, answered) => (url, init) => Effect_exports.runPromiseWith(telemetry.context)(
61
103
  Effect_exports.gen(function* () {
62
104
  const target = yield* Effect_exports.try({
63
105
  try: () => new URL(url),
@@ -67,26 +109,41 @@ var transportFetch = (connection, telemetry, rejected) => (url, init) => Effect_
67
109
  return yield* new McpError({ phase: "transport", reason: "invalid_input" });
68
110
  if (target.origin !== connection.url.origin || target.username || target.password)
69
111
  return yield* new McpError({ phase: "transport", reason: "invalid_response" });
70
- const headers = new Headers(Redacted_exports.value(connection.headers));
71
- new Headers(init?.headers).forEach((value, name) => headers.set(name, value));
72
112
  const request = yield* Effect_exports.try({
73
- try: () => HttpClientRequest_exports.fromWeb(new Request(target, { ...init, headers })),
74
- catch: () => failure("transport", void 0)
113
+ try: () => {
114
+ const headers = new Headers(Redacted_exports.value(connection.headers));
115
+ new Headers(init?.headers).forEach((value, name) => headers.set(name, value));
116
+ return HttpClientRequest_exports.fromWeb(new Request(target, { ...init, headers }));
117
+ },
118
+ // The provider's headers cannot form an HTTP request, such as a name with a space.
119
+ catch: () => new McpError({ phase: "transport", reason: "invalid_input" })
75
120
  });
76
121
  const client = yield* HttpClient_exports.HttpClient;
77
122
  const response = yield* client.execute(request);
123
+ yield* failOnNetworkRefusal(response).pipe(
124
+ Effect_exports.tapError((refused) => Deferred_exports.fail(rejected, refused))
125
+ );
126
+ if (response.status < 400)
127
+ return new Response(
128
+ [204, 205, 304].includes(response.status) ? null : Stream_exports.toReadableStream(response.stream),
129
+ {
130
+ status: response.status,
131
+ headers: response.headers
132
+ }
133
+ );
134
+ const { body, upstream } = yield* errorBody(response);
78
135
  const provider = httpProviderError(response.status, response.headers);
79
136
  if (provider !== void 0) {
80
- yield* Deferred_exports.fail(rejected, provider);
81
- return yield* provider;
137
+ const refused = providerErrorDetail(provider, { upstream });
138
+ yield* Deferred_exports.fail(rejected, refused);
139
+ return yield* refused;
82
140
  }
83
- return new Response(
84
- [204, 205, 304].includes(response.status) ? null : Stream_exports.toReadableStream(response.stream),
85
- {
86
- status: response.status,
87
- headers: response.headers
88
- }
141
+ const session = new Headers(init?.headers).has("mcp-session-id");
142
+ yield* Ref_exports.update(
143
+ answered,
144
+ (responses) => new Map(responses).set(response.status, { upstream, session })
89
145
  );
146
+ return new Response(body, { status: response.status, headers: response.headers });
90
147
  }).pipe(
91
148
  Effect_exports.provide(FetchHttpClient_exports.layer),
92
149
  Effect_exports.provideService(FetchHttpClient_exports.RequestInit, { redirect: "manual" }),
@@ -104,15 +161,34 @@ var transportFetch = (connection, telemetry, rejected) => (url, init) => Effect_
104
161
  ),
105
162
  init?.signal ? { signal: init.signal } : {}
106
163
  );
164
+ var explain = (error, phase, responses) => {
165
+ if (Schema_exports.is(ProviderError)(error)) return providerErrorDetail(error, { phase });
166
+ if (!Schema_exports.is(McpError)(error) || error.status === void 0) return error;
167
+ const response = responses.get(error.status);
168
+ if (response === void 0 || (error.upstream !== void 0 || response.upstream === void 0) && !response.session)
169
+ return error;
170
+ const upstream = error.upstream ?? response.upstream;
171
+ return new McpError({
172
+ phase: error.phase,
173
+ reason: error.reason,
174
+ status: error.status,
175
+ ...upstream === void 0 ? {} : { upstream },
176
+ ...response.session ? { session: true } : {}
177
+ });
178
+ };
179
+ var explained = (phase, answered) => (error) => Ref_exports.get(answered).pipe(
180
+ Effect_exports.flatMap((responses) => Effect_exports.fail(explain(error, phase, responses)))
181
+ );
107
182
  function withClient(connection, mode, use, changed) {
108
183
  const attempt = (kind) => Effect_exports.scoped(
109
184
  Effect_exports.gen(function* () {
110
185
  const telemetry = yield* captureTelemetry;
111
186
  const rejected = yield* Deferred_exports.make();
187
+ const answered = yield* Ref_exports.make(/* @__PURE__ */ new Map());
112
188
  const pending = /* @__PURE__ */ new Set();
113
189
  const { client, transport } = yield* Effect_exports.acquireRelease(
114
190
  Effect_exports.sync(() => {
115
- const fetch = transportFetch(connection, telemetry, rejected);
191
+ const fetch = transportFetch(connection, telemetry, rejected, answered);
116
192
  const client2 = new Client(
117
193
  { name: "executor-apps", version: "0.1.0" },
118
194
  {
@@ -168,10 +244,14 @@ function withClient(connection, mode, use, changed) {
168
244
  catch: (error) => failure("connect", error)
169
245
  }).pipe(
170
246
  Effect_exports.raceFirst(Deferred_exports.await(rejected)),
247
+ Effect_exports.catch(explained("connect", answered)),
171
248
  Effect_exports.timeout(connection.timeoutMs),
172
249
  Effect_exports.withSpan("provider.mcp.connect")
173
250
  );
174
- return yield* use(client).pipe(Effect_exports.raceFirst(Deferred_exports.await(rejected)));
251
+ return yield* use(client).pipe(
252
+ Effect_exports.raceFirst(Deferred_exports.await(rejected)),
253
+ Effect_exports.catch(explained(mode, answered))
254
+ );
175
255
  })
176
256
  ).pipe(
177
257
  Effect_exports.withSpan("provider.mcp.session", {
@@ -216,9 +296,44 @@ var mcpClientEffect = (input, changed) => Effect_exports.gen(function* () {
216
296
  failure
217
297
  );
218
298
  });
299
+ var refusesCredentials = (error) => Schema_exports.is(ProviderError)(error) && Match_exports.value(error.reason).pipe(
300
+ Match_exports.whenOr("unauthorized", "forbidden", "rejected", () => true),
301
+ Match_exports.whenOr("rate_limited", "unavailable", () => false),
302
+ Match_exports.exhaustive
303
+ );
304
+ var mcpHealthEffect = (check, options) => Effect_exports.gen(function* () {
305
+ const { deadline, timeoutMs, ...parsed } = yield* Schema_exports.decodeUnknownEffect(McpHealthInput)({
306
+ ...options,
307
+ accountId: check.account.id,
308
+ signal: check.signal,
309
+ deadline: check.deadline
310
+ }).pipe(Effect_exports.mapError(() => new McpError({ phase: "connect", reason: "invalid_input" })));
311
+ const end = Math.min(
312
+ (yield* Clock_exports.currentTimeMillis) + (timeoutMs ?? defaultMcpClientLimits.timeoutMs),
313
+ deadline === void 0 ? Number.POSITIVE_INFINITY : deadline - mcpHealthReserveMs
314
+ );
315
+ const remaining = Effect_exports.flatMap(
316
+ Clock_exports.currentTimeMillis,
317
+ (now) => end - now >= 1 ? Effect_exports.succeed(Math.floor(end - now)) : Effect_exports.fail(new McpError({ phase: "transport", reason: "timeout" }))
318
+ );
319
+ yield* (yield* mcpClientEffect({ ...parsed, timeoutMs: yield* remaining })).check;
320
+ return yield* remaining.pipe(
321
+ Effect_exports.flatMap(
322
+ (timeoutMs2) => mcpClientEffect({ url: parsed.url, signal: parsed.signal, timeoutMs: timeoutMs2 })
323
+ ),
324
+ Effect_exports.flatMap((anonymous) => anonymous.check),
325
+ Effect_exports.matchEffect({
326
+ onSuccess: () => Effect_exports.fail(new McpCredentialsUnverified({ anonymous: "answered" })),
327
+ // Executor's network refused the attempt, so the server never answered it.
328
+ onFailure: (error) => Schema_exports.is(NetworkRefused)(error) ? Effect_exports.fail(error) : refusesCredentials(error) ? Effect_exports.void : Effect_exports.fail(new McpCredentialsUnverified({ anonymous: error }))
329
+ }),
330
+ Effect_exports.withSpan("provider.mcp.anonymous")
331
+ );
332
+ }).pipe(Effect_exports.withSpan("provider.mcp.health"));
219
333
  var mcpToolsEffect = (input) => mcpClientEffect(input).pipe(Effect_exports.flatMap(adaptMcpTools));
220
334
 
221
335
  export {
222
336
  mcpClientEffect,
337
+ mcpHealthEffect,
223
338
  mcpToolsEffect
224
339
  };