apps 0.0.1-beta.5 → 0.0.1-beta.54

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 (185) hide show
  1. package/README.md +68 -44
  2. package/framework-reference.json +1 -1
  3. package/js/chunk-5FHWNLCI.js +88 -0
  4. package/js/{chunk-M3B3DE4K.js → chunk-74YVXBKY.js} +463 -218
  5. package/js/chunk-7UUHJR2Q.js +49 -0
  6. package/js/{chunk-CYYBFC2K.js → chunk-AQU56EPI.js} +9 -5
  7. package/js/chunk-CDXQDN7W.js +92 -0
  8. package/js/{chunk-UDDE5KOR.js → chunk-D45JTD6N.js} +148 -34
  9. package/js/{chunk-UK573G7W.js → chunk-EOPQ727L.js} +87 -51
  10. package/js/chunk-GDYPM7RS.js +266 -0
  11. package/js/{chunk-27F7W2LG.js → chunk-H2CJWXA3.js} +2 -2
  12. package/js/{chunk-JU7VHODU.js → chunk-H72MEDMN.js} +65 -10
  13. package/js/{chunk-CDL5PM2Q.js → chunk-IFJU5SYQ.js} +19082 -18402
  14. package/js/{chunk-RJDDBDSN.js → chunk-JM7LOD2W.js} +628 -85
  15. package/js/{chunk-VFZKSM3T.js → chunk-JPEUKEV4.js} +3 -3
  16. package/js/{chunk-DQAZTA4I.js → chunk-JY56GVSV.js} +1324 -209
  17. package/js/{chunk-FWQC6I3C.js → chunk-KGCTYL2S.js} +523 -63
  18. package/js/{chunk-KUMBKVJD.js → chunk-KLYSEHUD.js} +2 -2
  19. package/js/chunk-LTDHQJ2Z.js +171 -0
  20. package/js/chunk-MWKHKOTL.js +240 -0
  21. package/js/chunk-OD3KFKZD.js +1617 -0
  22. package/js/{chunk-57RKNWL2.js → chunk-PD6I2SDG.js} +4 -4
  23. package/js/chunk-PO5NPRFT.js +1885 -0
  24. package/js/chunk-QKHTRD6G.js +42 -0
  25. package/js/chunk-SVHI6AKV.js +729 -0
  26. package/js/{chunk-IJX4CYZO.js → chunk-TUMGL2OC.js} +228 -264
  27. package/js/{chunk-XHO2ZX6W.js → chunk-UM62MBJQ.js} +96 -41
  28. package/js/chunk-X5U5KIWQ.js +221 -0
  29. package/js/{chunk-IPI4MFSN.js → chunk-XBG7HHXC.js} +2 -2
  30. package/js/chunk-YQD2MLFY.js +340 -0
  31. package/js/client.js +142 -94
  32. package/js/contracts.js +123 -33
  33. package/js/effect.js +19 -21
  34. package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
  35. package/js/graphql.js +63 -60
  36. package/js/host.js +83 -60
  37. package/js/index.js +262 -222
  38. package/js/mcp/effect.js +23 -23
  39. package/js/mcp/stdio.js +48 -40
  40. package/js/mcp.js +109 -72
  41. package/js/openapi.js +4129 -1419
  42. package/js/react.js +2 -3
  43. package/js/skills/effect.js +6 -3
  44. package/js/skills.js +208 -82
  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-cache/src/index.d.ts +10 -1
  53. package/types/apps/src/contracts/api-response-error.d.ts +4 -0
  54. package/types/apps/src/contracts/app.d.ts +9 -8
  55. package/types/apps/src/contracts/cache.d.ts +20 -0
  56. package/types/apps/src/contracts/context.d.ts +19 -11
  57. package/types/apps/src/contracts/elicitation.d.ts +6 -6
  58. package/types/apps/src/contracts/events.d.ts +93 -0
  59. package/types/apps/src/contracts/failure.d.ts +30 -1
  60. package/types/apps/src/contracts/graphql.d.ts +2 -1
  61. package/types/apps/src/contracts/host.d.ts +55 -16
  62. package/types/apps/src/contracts/live.d.ts +2 -0
  63. package/types/apps/src/contracts/mcp.d.ts +96 -10
  64. package/types/apps/src/contracts/network.d.ts +84 -0
  65. package/types/apps/src/contracts/openapi-compile.d.ts +32 -3
  66. package/types/apps/src/contracts/openapi.d.ts +45 -9
  67. package/types/apps/src/contracts/operations.d.ts +8 -9
  68. package/types/apps/src/contracts/protocol-version.d.ts +2 -2
  69. package/types/apps/src/contracts/protocols/1.d.ts +248 -73
  70. package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
  71. package/types/apps/src/contracts/protocols/11.d.ts +1098 -0
  72. package/types/apps/src/contracts/protocols/2.d.ts +65 -23
  73. package/types/apps/src/contracts/protocols/3.d.ts +65 -26
  74. package/types/apps/src/contracts/protocols/4.d.ts +1297 -0
  75. package/types/apps/src/contracts/protocols/5.d.ts +1174 -0
  76. package/types/apps/src/contracts/protocols/6.d.ts +1620 -0
  77. package/types/apps/src/contracts/protocols/7.d.ts +1784 -0
  78. package/types/apps/src/contracts/protocols/8.d.ts +1130 -0
  79. package/types/apps/src/contracts/protocols/9.d.ts +1106 -0
  80. package/types/apps/src/contracts/protocols/oauth.d.ts +89 -0
  81. package/types/apps/src/contracts/provider-error.d.ts +9 -0
  82. package/types/apps/src/contracts/provider.d.ts +115 -10
  83. package/types/apps/src/contracts/router.d.ts +59 -0
  84. package/types/apps/src/contracts/skills.d.ts +50 -13
  85. package/types/apps/src/contracts/sql.d.ts +58 -0
  86. package/types/apps/src/contracts/ui.d.ts +19 -1
  87. package/types/apps/src/contracts/workflows.d.ts +6 -0
  88. package/types/apps/src/facet.d.ts +4 -5
  89. package/types/apps/src/graphql.d.ts +1 -3
  90. package/types/apps/src/host.d.ts +5 -0
  91. package/types/apps/src/implementation/account-router.d.ts +13 -0
  92. package/types/apps/src/implementation/app.d.ts +5 -4
  93. package/types/apps/src/implementation/authoring.d.ts +25 -5
  94. package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
  95. package/types/apps/src/implementation/cache.d.ts +4 -0
  96. package/types/apps/src/implementation/catalog-cache.d.ts +43 -5
  97. package/types/apps/src/implementation/elicitation.d.ts +18 -15
  98. package/types/apps/src/implementation/events.d.ts +59 -0
  99. package/types/apps/src/implementation/failure-detail.d.ts +25 -3
  100. package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
  101. package/types/apps/src/implementation/graphql.d.ts +4 -3
  102. package/types/apps/src/implementation/input-problems.d.ts +6 -2
  103. package/types/apps/src/implementation/invocation-timing.d.ts +16 -0
  104. package/types/apps/src/implementation/live.d.ts +2 -2
  105. package/types/apps/src/implementation/mcp-call.d.ts +6 -5
  106. package/types/apps/src/implementation/mcp-catalog.d.ts +7 -8
  107. package/types/apps/src/implementation/mcp-client.d.ts +49 -25
  108. package/types/apps/src/implementation/mcp-stdio.d.ts +1 -1
  109. package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
  110. package/types/apps/src/implementation/mcp.d.ts +52 -25
  111. package/types/apps/src/implementation/network.d.ts +16 -0
  112. package/types/apps/src/implementation/openapi-compile.d.ts +27 -6
  113. package/types/apps/src/implementation/openapi-document.d.ts +46 -19
  114. package/types/apps/src/implementation/openapi-names.d.ts +9 -4
  115. package/types/apps/src/implementation/openapi-request.d.ts +10 -2
  116. package/types/apps/src/implementation/openapi-source.d.ts +8 -6
  117. package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
  118. package/types/apps/src/implementation/operations.d.ts +43 -5
  119. package/types/apps/src/implementation/optimistic.d.ts +1 -1
  120. package/types/apps/src/implementation/protocol-operations.d.ts +6 -4
  121. package/types/apps/src/implementation/provider-error.d.ts +28 -1
  122. package/types/apps/src/implementation/provider.d.ts +19 -5
  123. package/types/apps/src/implementation/query-commit.d.ts +1 -1
  124. package/types/apps/src/implementation/router-catalog.d.ts +223 -0
  125. package/types/apps/src/implementation/router.d.ts +70 -0
  126. package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
  127. package/types/apps/src/implementation/schema.d.ts +95 -11
  128. package/types/apps/src/implementation/skills.d.ts +18 -24
  129. package/types/apps/src/implementation/sql.d.ts +71 -0
  130. package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
  131. package/types/apps/src/implementation/ui-auth.d.ts +1 -1
  132. package/types/apps/src/implementation/ui-client.d.ts +2 -2
  133. package/types/apps/src/implementation/ui-document.d.ts +5 -0
  134. package/types/apps/src/implementation/ui-errors.d.ts +1 -1
  135. package/types/apps/src/implementation/ui-serving.d.ts +11 -5
  136. package/types/apps/src/implementation/ui-watch.d.ts +1 -1
  137. package/types/apps/src/implementation/upstream-error.d.ts +7 -0
  138. package/types/apps/src/implementation/workflow-context.d.ts +1 -1
  139. package/types/apps/src/implementation/workflows.d.ts +1 -1
  140. package/types/apps/src/index.d.ts +32 -13
  141. package/types/apps/src/mcp-stdio.d.ts +2 -5
  142. package/types/apps/src/mcp.d.ts +25 -5
  143. package/types/apps/src/openapi.d.ts +6 -6
  144. package/types/apps/src/react.d.ts +1 -1
  145. package/types/apps/src/skills.d.ts +10 -8
  146. package/types/telemetry/src/app-records.d.ts +42 -0
  147. package/types/telemetry/src/browser-operations.d.ts +7 -4
  148. package/types/telemetry/src/browser.d.ts +8 -3
  149. package/types/telemetry/src/config.d.ts +2 -2
  150. package/types/telemetry/src/index.d.ts +1 -0
  151. package/types/telemetry/src/layer.d.ts +2 -2
  152. package/types/telemetry/src/ownership.d.ts +56 -0
  153. package/types/telemetry/src/recorded-failure.d.ts +29 -0
  154. package/types/telemetry/src/relay.d.ts +2 -2
  155. package/types/telemetry/src/transport.d.ts +8 -1
  156. package/types/utils/src/api-error.d.ts +55 -0
  157. package/types/utils/src/connection-failure.d.ts +33 -0
  158. package/types/utils/src/recorded-message.d.ts +18 -0
  159. package/types/utils/src/user-facing-error.d.ts +83 -0
  160. package/js/chunk-3XKZDQLM.js +0 -93
  161. package/js/chunk-4M277YTM.js +0 -136
  162. package/js/chunk-67EVWIGJ.js +0 -224
  163. package/js/chunk-C3VAOK5B.js +0 -215
  164. package/js/chunk-G7T27IWB.js +0 -63
  165. package/js/chunk-LUVSFETN.js +0 -1347
  166. package/js/chunk-N7YDVXYJ.js +0 -186
  167. package/js/chunk-PJJ24GU7.js +0 -877
  168. package/js/chunk-PZB6T6KU.js +0 -19
  169. package/js/chunk-SB3V4YVR.js +0 -18
  170. package/js/chunk-TDNYXSIX.js +0 -29
  171. package/js/chunk-W4DMKWAB.js +0 -35
  172. package/js/chunk-YEPYT6SD.js +0 -85
  173. package/js/chunk-ZQINWV4W.js +0 -630
  174. package/types/app-data/src/implementation/cursor.d.ts +0 -10
  175. package/types/app-data/src/implementation/index-key.d.ts +0 -7
  176. package/types/app-data/src/implementation/promise.d.ts +0 -68
  177. package/types/app-data/src/implementation/range.d.ts +0 -8
  178. package/types/app-data/src/implementation/schema.d.ts +0 -18
  179. package/types/app-data/src/implementation/sqlite.d.ts +0 -11
  180. package/types/app-data/src/index.d.ts +0 -4
  181. package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
  182. package/types/apps/src/contracts/storage.d.ts +0 -68
  183. package/types/apps/src/implementation/account-operations.d.ts +0 -151
  184. package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
  185. package/types/apps/src/implementation/storage.d.ts +0 -15
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  appSignInCallbackPath
3
- } from "./chunk-VFZKSM3T.js";
3
+ } from "./chunk-JPEUKEV4.js";
4
4
  import {
5
5
  HttpServerResponse_exports
6
- } from "./chunk-UK573G7W.js";
6
+ } from "./chunk-EOPQ727L.js";
7
7
 
8
8
  // src/implementation/ui-auth.ts
9
9
  var appPrivateHeaders = {
@@ -0,0 +1,171 @@
1
+ import {
2
+ ProviderError,
3
+ maxUpstreamMessageLength
4
+ } from "./chunk-MWKHKOTL.js";
5
+ import {
6
+ owned
7
+ } from "./chunk-JM7LOD2W.js";
8
+ import {
9
+ AccountId
10
+ } from "./chunk-H2CJWXA3.js";
11
+ import {
12
+ Effect_exports,
13
+ Option_exports,
14
+ Schema_exports
15
+ } from "./chunk-IFJU5SYQ.js";
16
+
17
+ // src/implementation/authoring.ts
18
+ var NativeCallback = /* @__PURE__ */ Symbol("apps.NativeCallback");
19
+ var appCode = (code) => owned("app", "app.code", { attributes: { "executor.app.code": code } });
20
+ var fromPromise = (callback, code) => (...args) => {
21
+ if (NativeCallback in callback) {
22
+ const native = callback[NativeCallback];
23
+ return native(...args);
24
+ }
25
+ return Effect_exports.tryPromise({ try: () => callback(...args), catch: (error) => error }).pipe(
26
+ appCode(code)
27
+ );
28
+ };
29
+ var method = (target, key) => {
30
+ const value = target[key];
31
+ const call = (...args) => Reflect.apply(value, target, args);
32
+ if (NativeCallback in value) Object.assign(call, { [NativeCallback]: value[NativeCallback] });
33
+ return call;
34
+ };
35
+ var toPromise = (operation, signalOf, services) => {
36
+ const native = (...args) => Effect_exports.suspend(() => {
37
+ const signal = typeof signalOf === "function" ? signalOf(...args) : signalOf;
38
+ if (signal === void 0) return operation(...args);
39
+ if (signal.aborted) return Effect_exports.interrupt;
40
+ const cancelled = Effect_exports.callback((resume) => {
41
+ if (signal.aborted) {
42
+ resume(Effect_exports.interrupt);
43
+ return;
44
+ }
45
+ const abort = () => resume(Effect_exports.interrupt);
46
+ signal.addEventListener("abort", abort, { once: true });
47
+ return Effect_exports.sync(() => signal.removeEventListener("abort", abort));
48
+ });
49
+ return Effect_exports.raceFirst(
50
+ cancelled,
51
+ Effect_exports.suspend(() => operation(...args))
52
+ );
53
+ });
54
+ return Object.assign(
55
+ (...args) => services === void 0 ? Effect_exports.runPromise(native(...args)) : Effect_exports.runPromiseWith(services)(native(...args)),
56
+ {
57
+ [NativeCallback]: native
58
+ }
59
+ );
60
+ };
61
+
62
+ // src/implementation/upstream-error.ts
63
+ var ErrorToken = Schema_exports.String.check(Schema_exports.isPattern(/^[A-Za-z0-9._-]{1,128}$/u));
64
+ var JsonRpcError = Schema_exports.Struct({
65
+ error: Schema_exports.Struct({ code: Schema_exports.Int, message: Schema_exports.String })
66
+ });
67
+ var OAuthError = Schema_exports.Struct({
68
+ error: ErrorToken,
69
+ error_description: Schema_exports.optional(Schema_exports.String)
70
+ });
71
+ var bounded = (message) => message.length <= maxUpstreamMessageLength ? message : `${message.slice(0, maxUpstreamMessageLength - 1)}\u2026`;
72
+ var isShortenedUpstream = (message) => message.length === maxUpstreamMessageLength && message.endsWith("\u2026");
73
+ var stated = (code, message) => ({
74
+ code,
75
+ ...message === void 0 || message === "" ? {} : { message: bounded(message) }
76
+ });
77
+ var bodyUpstreamError = (json) => {
78
+ const rpc = Schema_exports.decodeUnknownOption(JsonRpcError)(json);
79
+ if (Option_exports.isSome(rpc)) return stated(rpc.value.error.code, rpc.value.error.message);
80
+ const oauth = Schema_exports.decodeUnknownOption(OAuthError)(json);
81
+ if (Option_exports.isSome(oauth)) return stated(oauth.value.error, oauth.value.error_description);
82
+ return void 0;
83
+ };
84
+ var authParam = /([A-Za-z][A-Za-z0-9_-]*)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^\s,"]+))/g;
85
+ var challengeUpstreamError = (header) => {
86
+ const bearer = header === void 0 ? -1 : header.search(/\bBearer\b/i);
87
+ if (header === void 0 || bearer === -1) return void 0;
88
+ const params = /* @__PURE__ */ new Map();
89
+ for (const [, name, quoted, token] of header.slice(bearer + "Bearer".length).matchAll(authParam))
90
+ if (name !== void 0 && !params.has(name.toLowerCase()))
91
+ params.set(name.toLowerCase(), quoted?.replace(/\\(.)/g, "$1") ?? token ?? "");
92
+ const code = Schema_exports.decodeUnknownOption(ErrorToken)(params.get("error"));
93
+ return Option_exports.isNone(code) ? void 0 : stated(code.value, params.get("error_description"));
94
+ };
95
+
96
+ // src/implementation/provider-error.ts
97
+ var providerError = ({
98
+ reason,
99
+ status,
100
+ accountId,
101
+ phase,
102
+ upstream
103
+ }) => new ProviderError({
104
+ reason,
105
+ ...status === void 0 ? {} : { status },
106
+ ...accountId === void 0 ? {} : { accountId },
107
+ ...phase === void 0 ? {} : { phase },
108
+ ...upstream === void 0 ? {} : { upstream }
109
+ });
110
+ function parseProviderError(error) {
111
+ return Schema_exports.decodeUnknownOption(ProviderError)(error).pipe(Option_exports.map(providerError));
112
+ }
113
+ function providerErrorDetail(error, detail) {
114
+ return providerError({
115
+ ...error,
116
+ phase: error.phase ?? detail.phase,
117
+ upstream: error.upstream ?? detail.upstream
118
+ });
119
+ }
120
+ function httpProviderError(status, headers = {}) {
121
+ const upstream = challengeUpstreamError(headers["www-authenticate"]);
122
+ if (status >= 500 && status <= 599)
123
+ return providerError({ reason: "unavailable", status, upstream });
124
+ if (status === 401) return providerError({ reason: "unauthorized", status, upstream });
125
+ if (status === 429) return providerError({ reason: "rate_limited", status, upstream });
126
+ if (status !== 403) return void 0;
127
+ const retry = headers["retry-after"];
128
+ if (headers["x-ratelimit-remaining"] === "0" || retry !== void 0 && (/^\d+$/.test(retry) || Number.isFinite(Date.parse(retry))))
129
+ return providerError({ reason: "rate_limited", status, upstream });
130
+ if (typeof upstream?.code === "string" && upstream.code.toLowerCase() === "insufficient_scope")
131
+ return providerError({ reason: "forbidden", status, upstream });
132
+ return providerError({ reason: "rejected", status, upstream });
133
+ }
134
+ function accountProviderError(error, accountId) {
135
+ const parsed = parseProviderError(error);
136
+ const account = Schema_exports.decodeUnknownOption(AccountId)(accountId);
137
+ if (Option_exports.isNone(parsed) || Option_exports.isNone(account)) return error;
138
+ return providerError({ ...parsed.value, accountId: account.value });
139
+ }
140
+ function graphqlProviderError(errors, status) {
141
+ const codes = errors.flatMap((error) => {
142
+ const parsed = Schema_exports.decodeUnknownOption(
143
+ Schema_exports.Struct({
144
+ type: Schema_exports.optional(Schema_exports.String),
145
+ extensions: Schema_exports.optional(Schema_exports.Struct({ code: Schema_exports.optional(Schema_exports.String) }))
146
+ })
147
+ )(error);
148
+ return Option_exports.isSome(parsed) ? [parsed.value.type, parsed.value.extensions?.code] : [];
149
+ });
150
+ if (codes.includes("RATE_LIMITED") || codes.includes("TOO_MANY_REQUESTS"))
151
+ return new ProviderError({ reason: "rate_limited", status });
152
+ if (codes.includes("UNAUTHENTICATED"))
153
+ return new ProviderError({ reason: "unauthorized", status });
154
+ if (codes.includes("FORBIDDEN")) return new ProviderError({ reason: "forbidden", status });
155
+ return void 0;
156
+ }
157
+
158
+ export {
159
+ appCode,
160
+ fromPromise,
161
+ method,
162
+ toPromise,
163
+ isShortenedUpstream,
164
+ bodyUpstreamError,
165
+ providerError,
166
+ parseProviderError,
167
+ providerErrorDetail,
168
+ httpProviderError,
169
+ accountProviderError,
170
+ graphqlProviderError
171
+ };
@@ -0,0 +1,240 @@
1
+ import {
2
+ AccountId
3
+ } from "./chunk-H2CJWXA3.js";
4
+ import {
5
+ Schema_exports
6
+ } from "./chunk-IFJU5SYQ.js";
7
+
8
+ // src/contracts/failure.ts
9
+ var maxFailureMessageLength = 2048;
10
+ var FailureSource = Schema_exports.Literals(["app", "storage", "service"]);
11
+ var FailureName = Schema_exports.String.check(Schema_exports.isMaxLength(128));
12
+ var FailureCode = Schema_exports.String.check(Schema_exports.isMaxLength(128));
13
+ var FailureMessage = Schema_exports.String.check(Schema_exports.isMaxLength(maxFailureMessageLength));
14
+ var maxFailureFields = 8;
15
+ var maxFailureFieldLength = 256;
16
+ var FailureFieldName = Schema_exports.String.check(
17
+ Schema_exports.isPattern(/^[A-Za-z_$][A-Za-z0-9_$]{0,63}$/)
18
+ );
19
+ var FailureFieldValue = Schema_exports.Union([
20
+ Schema_exports.String.check(Schema_exports.isMaxLength(maxFailureFieldLength)),
21
+ Schema_exports.Finite,
22
+ Schema_exports.Boolean
23
+ ]);
24
+ var FailureFields = Schema_exports.Record(FailureFieldName, FailureFieldValue).check(
25
+ Schema_exports.isMaxProperties(maxFailureFields)
26
+ );
27
+ var FailureDetail = {
28
+ source: Schema_exports.optionalKey(FailureSource),
29
+ errorName: Schema_exports.optionalKey(FailureName),
30
+ code: Schema_exports.optionalKey(FailureCode),
31
+ message: Schema_exports.optionalKey(FailureMessage),
32
+ fields: Schema_exports.optionalKey(FailureFields)
33
+ };
34
+ var maxUpstreamMessageLength = 1024;
35
+ var UpstreamError = Schema_exports.Struct({
36
+ code: Schema_exports.Union([
37
+ Schema_exports.Int,
38
+ Schema_exports.String.check(Schema_exports.isMinLength(1), Schema_exports.isMaxLength(128))
39
+ ]),
40
+ message: Schema_exports.optionalKey(Schema_exports.String.check(Schema_exports.isMaxLength(maxUpstreamMessageLength)))
41
+ });
42
+ var FailurePhase = Schema_exports.Literals(["connect", "discover", "call"]);
43
+
44
+ // src/contracts/provider-error.ts
45
+ var ProviderError = class extends Schema_exports.TaggedError()("ProviderError", {
46
+ reason: Schema_exports.Literals(["unauthorized", "forbidden", "rate_limited", "unavailable", "rejected"]),
47
+ status: Schema_exports.optional(Schema_exports.Int.check(Schema_exports.isBetween({ minimum: 100, maximum: 599 }))),
48
+ accountId: Schema_exports.optional(AccountId),
49
+ phase: Schema_exports.optional(FailurePhase),
50
+ upstream: Schema_exports.optional(UpstreamError)
51
+ }) {
52
+ };
53
+
54
+ // src/contracts/network.ts
55
+ var NetworkRefusal = Schema_exports.Union([
56
+ Schema_exports.Struct({ reason: Schema_exports.Literal("private_address") }),
57
+ Schema_exports.Struct({
58
+ reason: Schema_exports.Literal("credential_host"),
59
+ /** The provider of the credential handle the request carried. */
60
+ provider: Schema_exports.String,
61
+ /** The hosts that provider's credentials may reach; empty when it declares none. */
62
+ allowedHosts: Schema_exports.Array(Schema_exports.String)
63
+ }),
64
+ Schema_exports.Struct({ reason: Schema_exports.Literal("credential_app") }),
65
+ Schema_exports.Struct({
66
+ reason: Schema_exports.Literal("credential_expired"),
67
+ /** The provider of the expired credential handle. */
68
+ provider: Schema_exports.String
69
+ })
70
+ ]);
71
+ var NetworkRefused = class extends Schema_exports.TaggedError()("NetworkRefused", {
72
+ /** The refused destination, with its port when the URL names one. */
73
+ host: Schema_exports.String,
74
+ refusal: NetworkRefusal
75
+ }) {
76
+ get message() {
77
+ const refusal = this.refusal;
78
+ switch (refusal.reason) {
79
+ case "private_address":
80
+ return `Executor refused a request to ${this.host}: apps on this instance can reach only public addresses, and ${this.host} is a private, loopback or internal address. The request was not sent.`;
81
+ case "credential_host":
82
+ return refusal.allowedHosts.length === 0 ? `Executor refused this request: ${refusal.provider} credentials cannot be sent to ${this.host}: the provider declares no hosts.` : `Executor refused this request: ${refusal.provider} credentials cannot be sent to ${this.host}. The provider allows: ${refusal.allowedHosts.join(", ")}.`;
83
+ case "credential_app":
84
+ return "Executor refused this request: it carries a credential handle that is not valid for this app. Use the account fields this invocation received.";
85
+ case "credential_expired":
86
+ return `Executor refused this request: it carries an expired ${refusal.provider} credential handle. Use the account fields this invocation received.`;
87
+ }
88
+ }
89
+ };
90
+ var networkRefusalStatus = 421;
91
+ var networkRefusalHeader = "x-executor-refused";
92
+ var NetworkRefusedHeader = Schema_exports.StringFromUriComponent.pipe(
93
+ Schema_exports.decodeTo(Schema_exports.fromJsonString(NetworkRefused))
94
+ );
95
+ var encodeRefusal = Schema_exports.encodeSync(NetworkRefused);
96
+ var encodeRefusalHeader = Schema_exports.encodeSync(NetworkRefusedHeader);
97
+ var networkRefusalResponse = (refused) => new Response(JSON.stringify({ ...encodeRefusal(refused), message: refused.message }), {
98
+ status: networkRefusalStatus,
99
+ statusText: "Refused by Executor",
100
+ headers: {
101
+ "content-type": "application/json; charset=utf-8",
102
+ [networkRefusalHeader]: encodeRefusalHeader(refused)
103
+ }
104
+ });
105
+ var RestrictedFetchOption = Schema_exports.Literals(["redirect", "cache", "integrity"]);
106
+ var supportedFetchOptions = {
107
+ redirect: ["follow", "manual"],
108
+ cache: ["no-store", "no-cache"],
109
+ integrity: [""]
110
+ };
111
+ var FetchOptionUnsupported = class extends Schema_exports.TaggedError()(
112
+ "FetchOptionUnsupported",
113
+ {
114
+ option: RestrictedFetchOption,
115
+ value: Schema_exports.String,
116
+ supported: Schema_exports.Array(Schema_exports.String)
117
+ }
118
+ ) {
119
+ get message() {
120
+ const supported = this.supported.map((value) => JSON.stringify(value)).join(" or ");
121
+ return `fetch option ${this.option}: ${JSON.stringify(this.value)} is not supported by Executor's app runtime. Use ${supported}, or omit ${this.option}.${this.advice}`;
122
+ }
123
+ /** What to do instead, when the standard value has an equivalent the runtime supports. */
124
+ get advice() {
125
+ switch (this.option) {
126
+ case "redirect":
127
+ return this.value === "error" ? ` To reject redirects, send redirect: "manual" and treat a 3xx response as the error.` : "";
128
+ case "cache":
129
+ return "";
130
+ case "integrity":
131
+ return " To check a digest, read the body and hash it with crypto.subtle.digest.";
132
+ }
133
+ }
134
+ };
135
+
136
+ // ../app-cache/src/contracts/cache.ts
137
+ var CacheError = class extends Schema_exports.TaggedError()("CacheError", {
138
+ reason: Schema_exports.Literals(["unavailable", "storage", "invalid", "capacity", "timeout"])
139
+ }) {
140
+ };
141
+ var cacheLimits = {
142
+ keyBytes: 8192,
143
+ entryBytes: 2e6,
144
+ batchBytes: 8e6,
145
+ batchEntries: 128,
146
+ totalBytes: 128e6,
147
+ totalEntries: 1e5,
148
+ retentionMs: 7 * 24 * 60 * 60 * 1e3,
149
+ loadTimeoutMs: 9e4,
150
+ /**
151
+ * A loader's lease lapses this long after its host last renewed it. Hosts renew every
152
+ * `renewMs` while the invocation that claimed it runs, so a stalled or lost holder frees the
153
+ * key well inside an MCP execute budget.
154
+ */
155
+ leaseMs: 15e3,
156
+ renewMs: 5e3,
157
+ /** The longest a caller waits on another loader before loading for itself without publishing. */
158
+ waitMs: 1e4,
159
+ /** Bound for one command to a host store; a lost reply fails instead of holding its caller. */
160
+ commandTimeoutMs: 1e4
161
+ };
162
+ var Key = Schema_exports.String.check(Schema_exports.isPattern(/^[a-f0-9]{64}$/));
163
+ var Time = Schema_exports.Finite.check(Schema_exports.isGreaterThanOrEqualTo(0));
164
+ var CacheEntry = Schema_exports.Struct({
165
+ value: Schema_exports.Json,
166
+ version: Schema_exports.String,
167
+ freshUntil: Time,
168
+ staleUntil: Time
169
+ });
170
+ var CacheAcquired = Schema_exports.Struct({
171
+ entry: Schema_exports.NullOr(CacheEntry),
172
+ lease: Schema_exports.NullOr(Schema_exports.String)
173
+ });
174
+ var CacheCommand = Schema_exports.Union([
175
+ Schema_exports.Struct({ operation: Schema_exports.Literal("read"), keys: Schema_exports.Array(Key) }),
176
+ Schema_exports.Struct({
177
+ operation: Schema_exports.Literal("acquire"),
178
+ key: Key,
179
+ /** Claim even a fresh entry, as an explicit refresh does. */
180
+ refresh: Schema_exports.Boolean,
181
+ /** Claim only while the entry still has this version. Absent accepts the current one. */
182
+ version: Schema_exports.optionalKey(Schema_exports.NullOr(Schema_exports.String))
183
+ }),
184
+ Schema_exports.Struct({
185
+ operation: Schema_exports.Literal("claim"),
186
+ key: Key,
187
+ version: Schema_exports.NullOr(Schema_exports.String)
188
+ }),
189
+ Schema_exports.Struct({
190
+ operation: Schema_exports.Literal("publish"),
191
+ key: Key,
192
+ lease: Schema_exports.String,
193
+ entry: CacheEntry
194
+ }),
195
+ Schema_exports.Struct({ operation: Schema_exports.Literal("release"), key: Key, lease: Schema_exports.String }),
196
+ /** Extend a lease its holder still owns. Replies false once the lease lapsed or was replaced. */
197
+ Schema_exports.Struct({ operation: Schema_exports.Literal("renew"), key: Key, lease: Schema_exports.String }),
198
+ Schema_exports.Struct({
199
+ operation: Schema_exports.Literal("write"),
200
+ entries: Schema_exports.Array(Schema_exports.Struct({ key: Key, entry: CacheEntry }))
201
+ }),
202
+ Schema_exports.Struct({ operation: Schema_exports.Literal("invalidate"), key: Key })
203
+ ]);
204
+ var CacheReply = Schema_exports.Union([
205
+ Schema_exports.Struct({ ok: Schema_exports.Literal(true), value: Schema_exports.Json }),
206
+ Schema_exports.Struct({ ok: Schema_exports.Literal(false), error: CacheError })
207
+ ]);
208
+
209
+ export {
210
+ maxFailureMessageLength,
211
+ FailureSource,
212
+ FailureName,
213
+ FailureCode,
214
+ FailureMessage,
215
+ maxFailureFields,
216
+ maxFailureFieldLength,
217
+ FailureFieldName,
218
+ FailureFieldValue,
219
+ FailureFields,
220
+ FailureDetail,
221
+ maxUpstreamMessageLength,
222
+ UpstreamError,
223
+ FailurePhase,
224
+ ProviderError,
225
+ NetworkRefusal,
226
+ NetworkRefused,
227
+ networkRefusalStatus,
228
+ networkRefusalHeader,
229
+ NetworkRefusedHeader,
230
+ networkRefusalResponse,
231
+ RestrictedFetchOption,
232
+ supportedFetchOptions,
233
+ FetchOptionUnsupported,
234
+ CacheError,
235
+ cacheLimits,
236
+ CacheEntry,
237
+ CacheAcquired,
238
+ CacheCommand,
239
+ CacheReply
240
+ };