apps 0.0.1-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 (135) hide show
  1. package/README.md +191 -0
  2. package/check-publish.mjs +10 -0
  3. package/framework-reference.json +1 -0
  4. package/js/chunk-22WRQZT7.js +389 -0
  5. package/js/chunk-2OTCEKL2.js +29480 -0
  6. package/js/chunk-36DNRFZQ.js +34 -0
  7. package/js/chunk-3ANFZFCV.js +1799 -0
  8. package/js/chunk-7JXHF5IF.js +138 -0
  9. package/js/chunk-BCSNKUAC.js +0 -0
  10. package/js/chunk-BKVL7XAJ.js +47 -0
  11. package/js/chunk-BPEFS4YF.js +1323 -0
  12. package/js/chunk-C24KEZXR.js +59 -0
  13. package/js/chunk-D6BKYP2L.js +877 -0
  14. package/js/chunk-EP6AEUZO.js +19 -0
  15. package/js/chunk-HP7E42X6.js +1719 -0
  16. package/js/chunk-KWTCHVLT.js +284 -0
  17. package/js/chunk-LOKGDT6B.js +28 -0
  18. package/js/chunk-MLKGABMK.js +9 -0
  19. package/js/chunk-OWD2YICM.js +2486 -0
  20. package/js/chunk-Q2FD5IBM.js +899 -0
  21. package/js/chunk-R6JMJSVT.js +590 -0
  22. package/js/chunk-SBKHUC5L.js +56 -0
  23. package/js/chunk-VFUZI3NY.js +75 -0
  24. package/js/chunk-W7Q5EOTS.js +4375 -0
  25. package/js/chunk-WIDTG42X.js +171 -0
  26. package/js/chunk-X3YBZCJW.js +246 -0
  27. package/js/chunk-YDR4CPJA.js +2357 -0
  28. package/js/client.js +1023 -0
  29. package/js/contracts.js +163 -0
  30. package/js/effect.js +44 -0
  31. package/js/graphql.js +392 -0
  32. package/js/host.js +193 -0
  33. package/js/index.js +284 -0
  34. package/js/mcp/effect.js +23 -0
  35. package/js/mcp/stdio.js +123 -0
  36. package/js/mcp.js +37 -0
  37. package/js/openapi.js +246 -0
  38. package/js/operations/approval.js +9 -0
  39. package/js/react.js +37 -0
  40. package/js/storage/facet.js +546 -0
  41. package/js/ui/auth/contracts.js +19 -0
  42. package/js/ui/auth.js +28 -0
  43. package/js/ui/contracts.js +24 -0
  44. package/js/ui/serving.js +286 -0
  45. package/package.json +116 -0
  46. package/runtime.json +1 -0
  47. package/types/app-data/src/contracts/database.d.ts +193 -0
  48. package/types/app-data/src/implementation/cursor.d.ts +10 -0
  49. package/types/app-data/src/implementation/index-key.d.ts +7 -0
  50. package/types/app-data/src/implementation/promise.d.ts +68 -0
  51. package/types/app-data/src/implementation/range.d.ts +8 -0
  52. package/types/app-data/src/implementation/schema.d.ts +33 -0
  53. package/types/app-data/src/implementation/sqlite.d.ts +11 -0
  54. package/types/app-data/src/index.d.ts +4 -0
  55. package/types/apps/src/approval.d.ts +10 -0
  56. package/types/apps/src/client.d.ts +5 -0
  57. package/types/apps/src/contracts/app.d.ts +58 -0
  58. package/types/apps/src/contracts/approval.d.ts +14 -0
  59. package/types/apps/src/contracts/context.d.ts +25 -0
  60. package/types/apps/src/contracts/elicitation.d.ts +86 -0
  61. package/types/apps/src/contracts/graphql.d.ts +102 -0
  62. package/types/apps/src/contracts/host.d.ts +568 -0
  63. package/types/apps/src/contracts/http.d.ts +20 -0
  64. package/types/apps/src/contracts/live.d.ts +26 -0
  65. package/types/apps/src/contracts/mcp.d.ts +93 -0
  66. package/types/apps/src/contracts/openapi.d.ts +105 -0
  67. package/types/apps/src/contracts/operations.d.ts +30 -0
  68. package/types/apps/src/contracts/optimistic.d.ts +22 -0
  69. package/types/apps/src/contracts/provider.d.ts +96 -0
  70. package/types/apps/src/contracts/schedules.d.ts +51 -0
  71. package/types/apps/src/contracts/schema.d.ts +20 -0
  72. package/types/apps/src/contracts/storage.d.ts +68 -0
  73. package/types/apps/src/contracts/tools.d.ts +11 -0
  74. package/types/apps/src/contracts/ui-auth.d.ts +28 -0
  75. package/types/apps/src/contracts/ui.d.ts +90 -0
  76. package/types/apps/src/contracts/webhook-protocol.d.ts +102 -0
  77. package/types/apps/src/contracts/webhooks.d.ts +53 -0
  78. package/types/apps/src/contracts/workflows.d.ts +277 -0
  79. package/types/apps/src/effect.d.ts +10 -0
  80. package/types/apps/src/facet.d.ts +5 -0
  81. package/types/apps/src/graphql.d.ts +10 -0
  82. package/types/apps/src/host.d.ts +16 -0
  83. package/types/apps/src/implementation/account-operations.d.ts +32 -0
  84. package/types/apps/src/implementation/app.d.ts +40 -0
  85. package/types/apps/src/implementation/authoring.d.ts +12 -0
  86. package/types/apps/src/implementation/elicitation.d.ts +103 -0
  87. package/types/apps/src/implementation/graphql.d.ts +5 -0
  88. package/types/apps/src/implementation/host.d.ts +3 -0
  89. package/types/apps/src/implementation/http.d.ts +5 -0
  90. package/types/apps/src/implementation/live.d.ts +18 -0
  91. package/types/apps/src/implementation/mcp-call.d.ts +19 -0
  92. package/types/apps/src/implementation/mcp-client.d.ts +50 -0
  93. package/types/apps/src/implementation/mcp-stdio.d.ts +4 -0
  94. package/types/apps/src/implementation/mcp-tools.d.ts +6 -0
  95. package/types/apps/src/implementation/mcp.d.ts +4 -0
  96. package/types/apps/src/implementation/openapi-request.d.ts +11 -0
  97. package/types/apps/src/implementation/openapi.d.ts +5 -0
  98. package/types/apps/src/implementation/operations.d.ts +65 -0
  99. package/types/apps/src/implementation/optimistic.d.ts +30 -0
  100. package/types/apps/src/implementation/protocol-operations.d.ts +24 -0
  101. package/types/apps/src/implementation/provider.d.ts +16 -0
  102. package/types/apps/src/implementation/query-commit.d.ts +10 -0
  103. package/types/apps/src/implementation/schedules.d.ts +16 -0
  104. package/types/apps/src/implementation/schema.d.ts +93 -0
  105. package/types/apps/src/implementation/storage.d.ts +13 -0
  106. package/types/apps/src/implementation/ui-auth.d.ts +13 -0
  107. package/types/apps/src/implementation/ui-client.d.ts +16 -0
  108. package/types/apps/src/implementation/ui-errors.d.ts +2 -0
  109. package/types/apps/src/implementation/ui-serving.d.ts +16 -0
  110. package/types/apps/src/implementation/ui-watch.d.ts +2 -0
  111. package/types/apps/src/implementation/webhooks.d.ts +29 -0
  112. package/types/apps/src/implementation/workflow-context.d.ts +8 -0
  113. package/types/apps/src/implementation/workflow-rpc.d.ts +5 -0
  114. package/types/apps/src/implementation/workflows.d.ts +27 -0
  115. package/types/apps/src/index.d.ts +58 -0
  116. package/types/apps/src/mcp-stdio.d.ts +8 -0
  117. package/types/apps/src/mcp.d.ts +10 -0
  118. package/types/apps/src/openapi.d.ts +10 -0
  119. package/types/apps/src/react.d.ts +7 -0
  120. package/types/apps/src/ui-auth.d.ts +3 -0
  121. package/types/apps/src/ui-serving.d.ts +3 -0
  122. package/types/telemetry/src/browser-operations.d.ts +16 -0
  123. package/types/telemetry/src/browser-performance.d.ts +11 -0
  124. package/types/telemetry/src/browser-request-timing.d.ts +2 -0
  125. package/types/telemetry/src/browser.d.ts +27 -0
  126. package/types/telemetry/src/config.d.ts +83 -0
  127. package/types/telemetry/src/context.d.ts +14 -0
  128. package/types/telemetry/src/index.d.ts +9 -0
  129. package/types/telemetry/src/layer.d.ts +7 -0
  130. package/types/telemetry/src/measurements.d.ts +8 -0
  131. package/types/telemetry/src/pending-span.d.ts +7 -0
  132. package/types/telemetry/src/relay.d.ts +28 -0
  133. package/types/telemetry/src/span-attributes.d.ts +29 -0
  134. package/types/telemetry/src/trace-context.d.ts +20 -0
  135. package/types/telemetry/src/transport.d.ts +6 -0
@@ -0,0 +1,286 @@
1
+ import {
2
+ appPrivateHeaders
3
+ } from "../chunk-BKVL7XAJ.js";
4
+ import {
5
+ UiForbidden
6
+ } from "../chunk-3ANFZFCV.js";
7
+ import {
8
+ CurrentTelemetryConfig
9
+ } from "../chunk-OWD2YICM.js";
10
+ import "../chunk-VFUZI3NY.js";
11
+ import {
12
+ HttpServerRequest_exports,
13
+ HttpServerResponse_exports
14
+ } from "../chunk-W7Q5EOTS.js";
15
+ import "../chunk-36DNRFZQ.js";
16
+ import {
17
+ Effect_exports
18
+ } from "../chunk-2OTCEKL2.js";
19
+ import "../chunk-MLKGABMK.js";
20
+
21
+ // src/implementation/ui-errors.ts
22
+ var installAppFailureUI = () => {
23
+ let dialogOpen = false;
24
+ let windowStart = Date.now(), reports = 0, dropped = 0;
25
+ const recent = /* @__PURE__ */ new Map();
26
+ const extension = /^(?:chrome|moz|safari-web)-extension:/;
27
+ const errorTypes = /* @__PURE__ */ new Set([
28
+ "Error",
29
+ "TypeError",
30
+ "ReferenceError",
31
+ "SyntaxError",
32
+ "RangeError",
33
+ "URIError",
34
+ "EvalError",
35
+ "AggregateError"
36
+ ]);
37
+ const sourceAttributes = (filename, line = 0, column = 0) => {
38
+ const attributes = [];
39
+ if (!URL.canParse(filename)) return attributes;
40
+ const url = new URL(filename);
41
+ if (url.origin !== location.origin || !url.pathname.startsWith("/_executor/assets/") || !url.pathname.endsWith(".js"))
42
+ return attributes;
43
+ attributes.push({ key: "code.file.path", value: { stringValue: url.pathname } });
44
+ if (Number.isSafeInteger(line) && line > 0)
45
+ attributes.push({ key: "code.line.number", value: { intValue: String(line) } });
46
+ if (Number.isSafeInteger(column) && column > 0)
47
+ attributes.push({ key: "code.column.number", value: { intValue: String(column) } });
48
+ return attributes;
49
+ };
50
+ const fail = (kind, details, attributes = []) => {
51
+ const now = Date.now();
52
+ if (now - windowStart >= 6e4) {
53
+ windowStart = now;
54
+ reports = 0;
55
+ recent.clear();
56
+ }
57
+ const signature = `${kind}:${details.slice(0, 2e3)}`;
58
+ const previous = recent.get(signature);
59
+ if (previous !== void 0 && now - previous < 1e3 || reports >= 20) {
60
+ dropped++;
61
+ return;
62
+ }
63
+ recent.set(signature, now);
64
+ reports++;
65
+ attributes.push({
66
+ key: "executor.ui.failure.suppressed",
67
+ value: { intValue: String(dropped) }
68
+ });
69
+ dropped = 0;
70
+ const traceId = Array.from(
71
+ crypto.getRandomValues(new Uint8Array(16)),
72
+ (byte) => byte.toString(16).padStart(2, "0")
73
+ ).join("");
74
+ const time = `${Date.now()}000000`;
75
+ let status;
76
+ let deliveryMessage = "Sending error report\u2026";
77
+ const show = () => {
78
+ if (dialogOpen) return;
79
+ dialogOpen = true;
80
+ const host = document.createElement("div");
81
+ const root = host.attachShadow({ mode: "open" });
82
+ const dialog = document.createElement("dialog");
83
+ dialog.setAttribute("aria-labelledby", "executor-failure-title");
84
+ const title = document.createElement("h2");
85
+ title.id = "executor-failure-title";
86
+ title.textContent = kind === "script" ? "This app could not load" : "This app stopped working";
87
+ const message = document.createElement("p");
88
+ message.textContent = kind === "script" ? "A file needed by this page did not load. Reload the page to try again." : "The app encountered an unexpected error. Reload the page to try again.";
89
+ const warning = document.createElement("p");
90
+ warning.textContent = "Copy any unsaved work before reloading.";
91
+ const disclosure = document.createElement("details");
92
+ const summary = document.createElement("summary");
93
+ summary.textContent = "Error details";
94
+ const report = document.createElement("textarea");
95
+ report.readOnly = true;
96
+ report.rows = 10;
97
+ report.cols = 36;
98
+ report.setAttribute("aria-label", "Error details");
99
+ report.value = `${details.slice(0, 12e3)}
100
+
101
+ Diagnostic ID: ${traceId}`;
102
+ disclosure.append(summary, report);
103
+ status = document.createElement("p");
104
+ status.setAttribute("role", "status");
105
+ status.textContent = deliveryMessage;
106
+ const reload = document.createElement("button");
107
+ reload.type = "button";
108
+ reload.textContent = "Reload page";
109
+ reload.addEventListener("click", () => location.reload());
110
+ const close = document.createElement("button");
111
+ close.type = "button";
112
+ close.textContent = "Close";
113
+ close.addEventListener("click", () => dialog.close());
114
+ dialog.addEventListener("close", () => {
115
+ dialogOpen = false;
116
+ host.remove();
117
+ });
118
+ dialog.append(title, message, warning, disclosure, status, reload, close);
119
+ root.append(dialog);
120
+ document.documentElement.append(host);
121
+ dialog.showModal();
122
+ };
123
+ if (document.readyState === "loading") {
124
+ document.addEventListener("DOMContentLoaded", show, { once: true });
125
+ } else {
126
+ show();
127
+ }
128
+ void fetch("/_executor/api/telemetry/traces", {
129
+ method: "POST",
130
+ headers: { "content-type": "application/json" },
131
+ credentials: "same-origin",
132
+ keepalive: true,
133
+ body: JSON.stringify({
134
+ resourceSpans: [
135
+ {
136
+ scopeSpans: [
137
+ {
138
+ spans: [
139
+ {
140
+ traceId,
141
+ spanId: traceId.slice(0, 16),
142
+ name: "ui.app.failure",
143
+ kind: 1,
144
+ startTimeUnixNano: time,
145
+ endTimeUnixNano: time,
146
+ status: { code: 2 },
147
+ attributes: [
148
+ { key: "executor.ui.failure.kind", value: { stringValue: kind } },
149
+ ...attributes
150
+ ]
151
+ }
152
+ ]
153
+ }
154
+ ]
155
+ }
156
+ ]
157
+ })
158
+ }).then(
159
+ (response) => {
160
+ deliveryMessage = response.ok ? "Error report sent." : "Could not send the error report. You can copy the error details.";
161
+ if (status) status.textContent = deliveryMessage;
162
+ },
163
+ () => {
164
+ deliveryMessage = "Could not send the error report. You can copy the error details.";
165
+ if (status) status.textContent = deliveryMessage;
166
+ }
167
+ );
168
+ };
169
+ window.addEventListener(
170
+ "error",
171
+ (event) => {
172
+ if (event instanceof ErrorEvent) {
173
+ if (extension.test(event.filename)) return;
174
+ const attributes = sourceAttributes(event.filename, event.lineno, event.colno);
175
+ if (event.error instanceof Error && errorTypes.has(event.error.name))
176
+ attributes.push({ key: "exception.type", value: { stringValue: event.error.name } });
177
+ fail(
178
+ "runtime",
179
+ event.error instanceof Error ? event.error.stack ?? event.message : event.message,
180
+ attributes
181
+ );
182
+ } else if (event.target instanceof HTMLScriptElement) {
183
+ fail(
184
+ "script",
185
+ `Could not load script: ${event.target.src}`,
186
+ sourceAttributes(event.target.src)
187
+ );
188
+ }
189
+ },
190
+ true
191
+ );
192
+ window.addEventListener("unhandledrejection", (event) => {
193
+ const reason = event.reason;
194
+ fail(
195
+ "rejection",
196
+ reason instanceof Error ? reason.stack ?? reason.message : "An app operation failed without handling its error."
197
+ );
198
+ });
199
+ };
200
+ var appFailureBootstrap = `<script>(${installAppFailureUI.toString()})()</script>`;
201
+
202
+ // src/implementation/ui-serving.ts
203
+ var appDocument = (options) => Effect_exports.gen(function* () {
204
+ const request = yield* HttpServerRequest_exports.HttpServerRequest;
205
+ const pathname = yield* Effect_exports.try(() => new URL(request.url, options.origin).pathname).pipe(
206
+ Effect_exports.mapError(() => new UiForbidden())
207
+ );
208
+ const file = pathname === "/" ? void 0 : yield* options.asset(pathname.slice(1));
209
+ if (file !== void 0 && file.contentType !== "text/html")
210
+ return HttpServerResponse_exports.uint8Array(file.body, {
211
+ contentType: file.contentType,
212
+ headers: appPrivateHeaders
213
+ });
214
+ if (pathname.includes(".") && pathname !== "/index.html")
215
+ return HttpServerResponse_exports.empty({ status: 404 });
216
+ const document2 = yield* options.asset("index.html");
217
+ if (document2 === void 0)
218
+ return HttpServerResponse_exports.text("This app has no UI.", {
219
+ status: 404,
220
+ headers: appPrivateHeaders
221
+ });
222
+ const context = JSON.stringify({
223
+ deployment: options.deployment,
224
+ profile: options.profile,
225
+ expectedProfileRevision: options.expectedProfileRevision
226
+ }).replaceAll("<", "\\u003c");
227
+ const telemetry = yield* CurrentTelemetryConfig;
228
+ const attribute = (text) => text.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;");
229
+ const metadata = telemetry === void 0 ? "" : `<meta name="executor-build" content="${attribute(telemetry.version)}"><meta name="executor-environment" content="${attribute(telemetry.environment)}">`;
230
+ const boot = `${metadata}<base href="/_executor/assets/${attribute(options.deployment)}/"><script type="application/json" id="executor-context">${context}</script>${appFailureBootstrap}<script src="/_executor/watch.js" defer></script>`;
231
+ return HttpServerResponse_exports.text(
232
+ new TextDecoder().decode(document2.body).replace("<!--executor-ui-->", boot),
233
+ { contentType: "text/html", headers: appPrivateHeaders }
234
+ );
235
+ });
236
+ var appAsset = (asset, build, path) => Effect_exports.gen(function* () {
237
+ if (asset === void 0 || asset.contentType === "text/html")
238
+ return HttpServerResponse_exports.empty({ status: 404, headers: appPrivateHeaders });
239
+ const request = yield* HttpServerRequest_exports.HttpServerRequest;
240
+ const etag = `W/"${encodeURIComponent(build)}/${encodeURIComponent(path)}"`;
241
+ const headers = {
242
+ ...appPrivateHeaders,
243
+ "cache-control": "private, no-cache, must-revalidate",
244
+ vary: "Cookie",
245
+ etag
246
+ };
247
+ const matches = request.headers["if-none-match"]?.split(",").some(
248
+ (candidate) => candidate.trim() === "*" || candidate.trim().replace(/^W\//, "") === etag.slice(2)
249
+ );
250
+ return matches ? HttpServerResponse_exports.empty({ status: 304, headers }) : HttpServerResponse_exports.uint8Array(asset.body, { contentType: asset.contentType, headers });
251
+ });
252
+
253
+ // src/implementation/ui-watch.ts
254
+ var installAppWatch = () => {
255
+ const context = document.getElementById("executor-context")?.textContent;
256
+ if (!context) return;
257
+ const pinned = JSON.parse(context);
258
+ if (typeof pinned !== "object" || pinned === null || !("deployment" in pinned)) return;
259
+ const deployment = pinned.deployment;
260
+ if (typeof deployment !== "string" || deployment.length === 0) return;
261
+ const stream = new EventSource("/_executor/version");
262
+ let reloading = false;
263
+ const reload = () => {
264
+ if (reloading) return;
265
+ reloading = true;
266
+ stream.close();
267
+ location.reload();
268
+ };
269
+ stream.addEventListener("version", (event) => {
270
+ const current = JSON.parse(event.data);
271
+ if (typeof current === "object" && current !== null && "deployment" in current && (current.deployment === null || typeof current.deployment === "string") && current.deployment !== deployment)
272
+ reload();
273
+ });
274
+ stream.addEventListener("revoked", reload);
275
+ window.addEventListener("executor:deployment-changed", reload);
276
+ window.addEventListener("pagehide", () => stream.close(), { once: true });
277
+ window.addEventListener("pageshow", (event) => {
278
+ if (event.persisted) reload();
279
+ });
280
+ };
281
+ var appWatchScript = `(${installAppWatch.toString()})()`;
282
+ export {
283
+ appAsset,
284
+ appDocument,
285
+ appWatchScript
286
+ };
package/package.json ADDED
@@ -0,0 +1,116 @@
1
+ {
2
+ "name": "apps",
3
+ "version": "0.0.1-beta.0",
4
+ "description": "TypeScript apps with typed tools, accounts, storage, and UI.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "exports": {
8
+ ".": {
9
+ "types": "./types/apps/src/index.d.ts",
10
+ "import": "./js/index.js"
11
+ },
12
+ "./contracts": {
13
+ "types": "./types/apps/src/contracts/host.d.ts",
14
+ "import": "./js/contracts.js"
15
+ },
16
+ "./host": {
17
+ "types": "./types/apps/src/host.d.ts",
18
+ "import": "./js/host.js"
19
+ },
20
+ "./effect": {
21
+ "types": "./types/apps/src/effect.d.ts",
22
+ "import": "./js/effect.js"
23
+ },
24
+ "./operations/approval": {
25
+ "types": "./types/apps/src/approval.d.ts",
26
+ "import": "./js/operations/approval.js"
27
+ },
28
+ "./client": {
29
+ "types": "./types/apps/src/client.d.ts",
30
+ "import": "./js/client.js"
31
+ },
32
+ "./mcp": {
33
+ "types": "./types/apps/src/mcp.d.ts",
34
+ "import": "./js/mcp.js"
35
+ },
36
+ "./mcp/stdio": {
37
+ "types": "./types/apps/src/mcp-stdio.d.ts",
38
+ "import": "./js/mcp/stdio.js"
39
+ },
40
+ "./mcp/effect": {
41
+ "types": "./types/apps/src/implementation/mcp.d.ts",
42
+ "import": "./js/mcp/effect.js"
43
+ },
44
+ "./graphql": {
45
+ "types": "./types/apps/src/graphql.d.ts",
46
+ "import": "./js/graphql.js"
47
+ },
48
+ "./openapi": {
49
+ "types": "./types/apps/src/openapi.d.ts",
50
+ "import": "./js/openapi.js"
51
+ },
52
+ "./ui/contracts": {
53
+ "types": "./types/apps/src/contracts/ui.d.ts",
54
+ "import": "./js/ui/contracts.js"
55
+ },
56
+ "./ui/auth": {
57
+ "types": "./types/apps/src/ui-auth.d.ts",
58
+ "import": "./js/ui/auth.js"
59
+ },
60
+ "./ui/serving": {
61
+ "types": "./types/apps/src/ui-serving.d.ts",
62
+ "import": "./js/ui/serving.js"
63
+ },
64
+ "./ui/auth/contracts": {
65
+ "types": "./types/apps/src/contracts/ui-auth.d.ts",
66
+ "import": "./js/ui/auth/contracts.js"
67
+ },
68
+ "./react": {
69
+ "types": "./types/apps/src/react.d.ts",
70
+ "import": "./js/react.js"
71
+ },
72
+ "./storage/facet": {
73
+ "types": "./types/apps/src/facet.d.ts",
74
+ "import": "./js/storage/facet.js"
75
+ },
76
+ "./package.json": "./package.json",
77
+ "./runtime.json": "./runtime.json",
78
+ "./framework-reference.json": "./framework-reference.json"
79
+ },
80
+ "files": [
81
+ "js",
82
+ "types",
83
+ "runtime.json",
84
+ "framework-reference.json",
85
+ "check-publish.mjs",
86
+ "README.md"
87
+ ],
88
+ "dependencies": {
89
+ "effect": "https://pkg.pr.new/Effect-TS/effect/effect@c7d1ffff31a3e2ae0b0b0796b742bddeb797269d",
90
+ "@effect/sql-sqlite-do": "https://pkg.pr.new/Effect-TS/effect/@effect/sql-sqlite-do@c7d1ffff31a3e2ae0b0b0796b742bddeb797269d",
91
+ "@cloudflare/workers-types": "5.20260729.1"
92
+ },
93
+ "peerDependencies": {
94
+ "@modelcontextprotocol/sdk": "^1.30.0",
95
+ "graphql": "^16.11.0",
96
+ "react": "^19.2.0"
97
+ },
98
+ "peerDependenciesMeta": {
99
+ "@modelcontextprotocol/sdk": {
100
+ "optional": true
101
+ },
102
+ "graphql": {
103
+ "optional": true
104
+ },
105
+ "react": {
106
+ "optional": true
107
+ }
108
+ },
109
+ "publishConfig": {
110
+ "access": "public",
111
+ "tag": "beta"
112
+ },
113
+ "scripts": {
114
+ "prepublishOnly": "node check-publish.mjs"
115
+ }
116
+ }