apps 0.0.1-beta.5 → 0.0.1-beta.55
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.
- package/README.md +68 -44
- package/framework-reference.json +1 -1
- package/js/chunk-47F7VXST.js +221 -0
- package/js/chunk-5FHWNLCI.js +88 -0
- package/js/{chunk-M3B3DE4K.js → chunk-74YVXBKY.js} +463 -218
- package/js/chunk-7UUHJR2Q.js +49 -0
- package/js/{chunk-CYYBFC2K.js → chunk-AQU56EPI.js} +9 -5
- package/js/chunk-BTSIG4NQ.js +1885 -0
- package/js/chunk-CDXQDN7W.js +92 -0
- package/js/{chunk-UK573G7W.js → chunk-EOPQ727L.js} +87 -51
- package/js/{chunk-27F7W2LG.js → chunk-H2CJWXA3.js} +2 -2
- package/js/{chunk-JU7VHODU.js → chunk-H72MEDMN.js} +65 -10
- package/js/{chunk-CDL5PM2Q.js → chunk-IFJU5SYQ.js} +19082 -18402
- package/js/{chunk-UDDE5KOR.js → chunk-JK5S2N2S.js} +148 -34
- package/js/{chunk-RJDDBDSN.js → chunk-JM7LOD2W.js} +628 -85
- package/js/{chunk-VFZKSM3T.js → chunk-JPEUKEV4.js} +3 -3
- package/js/{chunk-FWQC6I3C.js → chunk-KGCTYL2S.js} +523 -63
- package/js/{chunk-KUMBKVJD.js → chunk-KLYSEHUD.js} +2 -2
- package/js/chunk-L4K2K22P.js +42 -0
- package/js/chunk-LTDHQJ2Z.js +171 -0
- package/js/chunk-MWKHKOTL.js +240 -0
- package/js/chunk-OD3KFKZD.js +1617 -0
- package/js/{chunk-57RKNWL2.js → chunk-PD6I2SDG.js} +4 -4
- package/js/chunk-PXXZ6ABC.js +266 -0
- package/js/chunk-QEBRH5AP.js +729 -0
- package/js/chunk-TLWLJ7PD.js +4342 -0
- package/js/{chunk-IJX4CYZO.js → chunk-TUMGL2OC.js} +228 -264
- package/js/{chunk-XHO2ZX6W.js → chunk-UM62MBJQ.js} +96 -41
- package/js/{chunk-IPI4MFSN.js → chunk-XBG7HHXC.js} +2 -2
- package/js/chunk-XCSG7FT7.js +340 -0
- package/js/client.js +142 -94
- package/js/contracts.js +123 -33
- package/js/effect.js +19 -21
- package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
- package/js/graphql.js +63 -60
- package/js/host.js +83 -60
- package/js/index.js +262 -222
- package/js/mcp/effect.js +23 -23
- package/js/mcp/stdio.js +48 -40
- package/js/mcp.js +109 -72
- package/js/openapi.js +4129 -1419
- package/js/react.js +2 -3
- package/js/skills/effect.js +6 -3
- package/js/skills.js +208 -82
- package/js/storage/facet.js +1 -540
- package/js/ui/auth/contracts.js +2 -2
- package/js/ui/auth.js +5 -5
- package/js/ui/contracts.js +5 -4
- package/js/ui/serving.js +8517 -214
- package/package.json +2 -3
- package/runtime.json +1 -1
- package/types/app-cache/src/index.d.ts +10 -1
- package/types/apps/src/contracts/api-response-error.d.ts +4 -0
- package/types/apps/src/contracts/app.d.ts +9 -8
- package/types/apps/src/contracts/cache.d.ts +20 -0
- package/types/apps/src/contracts/context.d.ts +19 -11
- package/types/apps/src/contracts/elicitation.d.ts +6 -6
- package/types/apps/src/contracts/events.d.ts +93 -0
- package/types/apps/src/contracts/failure.d.ts +30 -1
- package/types/apps/src/contracts/graphql.d.ts +2 -1
- package/types/apps/src/contracts/host.d.ts +57 -18
- package/types/apps/src/contracts/live.d.ts +2 -0
- package/types/apps/src/contracts/mcp.d.ts +96 -10
- package/types/apps/src/contracts/network.d.ts +84 -0
- package/types/apps/src/contracts/openapi-compile.d.ts +32 -3
- package/types/apps/src/contracts/openapi.d.ts +45 -9
- package/types/apps/src/contracts/operations.d.ts +8 -9
- package/types/apps/src/contracts/protocol-version.d.ts +2 -2
- package/types/apps/src/contracts/protocols/1.d.ts +733 -81
- package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
- package/types/apps/src/contracts/protocols/2.d.ts +69 -26
- package/types/apps/src/contracts/protocols/3.d.ts +133 -33
- package/types/apps/src/contracts/protocols/4.d.ts +1306 -0
- package/types/apps/src/contracts/protocols/5.d.ts +1200 -0
- package/types/apps/src/contracts/protocols/6.d.ts +1629 -0
- package/types/apps/src/contracts/protocols/7.d.ts +1785 -0
- package/types/apps/src/contracts/protocols/8.d.ts +1182 -0
- package/types/apps/src/contracts/protocols/9.d.ts +1104 -0
- package/types/apps/src/contracts/protocols/current.d.ts +2476 -0
- package/types/apps/src/contracts/protocols/oauth-6.d.ts +74 -0
- package/types/apps/src/contracts/protocols/oauth.d.ts +134 -0
- package/types/apps/src/contracts/provider-error.d.ts +9 -0
- package/types/apps/src/contracts/provider.d.ts +115 -10
- package/types/apps/src/contracts/router.d.ts +59 -0
- package/types/apps/src/contracts/skills.d.ts +50 -13
- package/types/apps/src/contracts/sql.d.ts +58 -0
- package/types/apps/src/contracts/ui.d.ts +19 -1
- package/types/apps/src/contracts/workflows.d.ts +6 -0
- package/types/apps/src/facet.d.ts +4 -5
- package/types/apps/src/graphql.d.ts +1 -3
- package/types/apps/src/host.d.ts +5 -0
- package/types/apps/src/implementation/account-router.d.ts +13 -0
- package/types/apps/src/implementation/app.d.ts +5 -4
- package/types/apps/src/implementation/authoring.d.ts +25 -5
- package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
- package/types/apps/src/implementation/cache.d.ts +4 -0
- package/types/apps/src/implementation/catalog-cache.d.ts +43 -5
- package/types/apps/src/implementation/elicitation.d.ts +18 -15
- package/types/apps/src/implementation/events.d.ts +59 -0
- package/types/apps/src/implementation/failure-detail.d.ts +25 -3
- package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
- package/types/apps/src/implementation/graphql.d.ts +4 -3
- package/types/apps/src/implementation/input-problems.d.ts +6 -2
- package/types/apps/src/implementation/invocation-timing.d.ts +16 -0
- package/types/apps/src/implementation/live.d.ts +2 -2
- package/types/apps/src/implementation/mcp-call.d.ts +6 -5
- package/types/apps/src/implementation/mcp-catalog.d.ts +7 -8
- package/types/apps/src/implementation/mcp-client.d.ts +49 -25
- package/types/apps/src/implementation/mcp-stdio.d.ts +1 -1
- package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
- package/types/apps/src/implementation/mcp.d.ts +52 -25
- package/types/apps/src/implementation/network.d.ts +16 -0
- package/types/apps/src/implementation/openapi-compile.d.ts +27 -6
- package/types/apps/src/implementation/openapi-document.d.ts +46 -19
- package/types/apps/src/implementation/openapi-names.d.ts +9 -4
- package/types/apps/src/implementation/openapi-request.d.ts +10 -2
- package/types/apps/src/implementation/openapi-source.d.ts +8 -6
- package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
- package/types/apps/src/implementation/operations.d.ts +43 -5
- package/types/apps/src/implementation/optimistic.d.ts +1 -1
- package/types/apps/src/implementation/protocol-operations.d.ts +6 -4
- package/types/apps/src/implementation/provider-error.d.ts +28 -1
- package/types/apps/src/implementation/provider.d.ts +19 -5
- package/types/apps/src/implementation/query-commit.d.ts +1 -1
- package/types/apps/src/implementation/router-catalog.d.ts +223 -0
- package/types/apps/src/implementation/router.d.ts +70 -0
- package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
- package/types/apps/src/implementation/schema.d.ts +95 -11
- package/types/apps/src/implementation/skills.d.ts +18 -24
- package/types/apps/src/implementation/sql.d.ts +71 -0
- package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
- package/types/apps/src/implementation/ui-auth.d.ts +1 -1
- package/types/apps/src/implementation/ui-client.d.ts +2 -2
- package/types/apps/src/implementation/ui-document.d.ts +5 -0
- package/types/apps/src/implementation/ui-errors.d.ts +1 -1
- package/types/apps/src/implementation/ui-serving.d.ts +11 -5
- package/types/apps/src/implementation/ui-watch.d.ts +1 -1
- package/types/apps/src/implementation/upstream-error.d.ts +7 -0
- package/types/apps/src/implementation/webhooks.d.ts +1 -1
- package/types/apps/src/implementation/workflow-context.d.ts +1 -1
- package/types/apps/src/implementation/workflows.d.ts +1 -1
- package/types/apps/src/index.d.ts +32 -13
- package/types/apps/src/mcp-stdio.d.ts +2 -5
- package/types/apps/src/mcp.d.ts +25 -5
- package/types/apps/src/openapi.d.ts +6 -6
- package/types/apps/src/react.d.ts +1 -1
- package/types/apps/src/skills.d.ts +10 -8
- package/types/telemetry/src/app-records.d.ts +42 -0
- package/types/telemetry/src/browser-operations.d.ts +7 -4
- package/types/telemetry/src/browser.d.ts +8 -3
- package/types/telemetry/src/config.d.ts +2 -2
- package/types/telemetry/src/index.d.ts +1 -0
- package/types/telemetry/src/layer.d.ts +2 -2
- package/types/telemetry/src/ownership.d.ts +56 -0
- package/types/telemetry/src/recorded-failure.d.ts +29 -0
- package/types/telemetry/src/relay.d.ts +2 -2
- package/types/telemetry/src/transport.d.ts +8 -1
- package/types/utils/src/api-error.d.ts +55 -0
- package/types/utils/src/connection-failure.d.ts +33 -0
- package/types/utils/src/recorded-message.d.ts +18 -0
- package/types/utils/src/user-facing-error.d.ts +83 -0
- package/js/chunk-3XKZDQLM.js +0 -93
- package/js/chunk-4M277YTM.js +0 -136
- package/js/chunk-67EVWIGJ.js +0 -224
- package/js/chunk-C3VAOK5B.js +0 -215
- package/js/chunk-DQAZTA4I.js +0 -2375
- package/js/chunk-G7T27IWB.js +0 -63
- package/js/chunk-LUVSFETN.js +0 -1347
- package/js/chunk-N7YDVXYJ.js +0 -186
- package/js/chunk-PJJ24GU7.js +0 -877
- package/js/chunk-PZB6T6KU.js +0 -19
- package/js/chunk-SB3V4YVR.js +0 -18
- package/js/chunk-TDNYXSIX.js +0 -29
- package/js/chunk-W4DMKWAB.js +0 -35
- package/js/chunk-YEPYT6SD.js +0 -85
- package/js/chunk-ZQINWV4W.js +0 -630
- package/types/app-data/src/implementation/cursor.d.ts +0 -10
- package/types/app-data/src/implementation/index-key.d.ts +0 -7
- package/types/app-data/src/implementation/promise.d.ts +0 -68
- package/types/app-data/src/implementation/range.d.ts +0 -8
- package/types/app-data/src/implementation/schema.d.ts +0 -18
- package/types/app-data/src/implementation/sqlite.d.ts +0 -11
- package/types/app-data/src/index.d.ts +0 -4
- package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
- package/types/apps/src/contracts/storage.d.ts +0 -68
- package/types/apps/src/implementation/account-operations.d.ts +0 -151
- package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
- package/types/apps/src/implementation/storage.d.ts +0 -15
package/README.md
CHANGED
|
@@ -11,22 +11,22 @@ For local testing, install the tarball made by `bun run pack` in this directory.
|
|
|
11
11
|
|
|
12
12
|
```ts
|
|
13
13
|
import { defineApp } from "apps";
|
|
14
|
-
import {
|
|
14
|
+
import { mcpRouter } from "apps/mcp";
|
|
15
15
|
|
|
16
16
|
export default defineApp({ accounts: {} }, async ({ signal }) => ({
|
|
17
|
-
|
|
17
|
+
tools: await mcpRouter({
|
|
18
18
|
url: "https://mcp.deepwiki.com/mcp",
|
|
19
19
|
...(signal === undefined ? {} : { signal }),
|
|
20
|
-
})
|
|
20
|
+
}),
|
|
21
21
|
}));
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
| Import | Helper
|
|
25
|
-
| ---------------- |
|
|
26
|
-
| `apps/mcp` | `
|
|
27
|
-
| `apps/mcp/stdio` | `
|
|
28
|
-
| `apps/graphql` | `
|
|
29
|
-
| `apps/openapi` | `
|
|
24
|
+
| Import | Helper | App dependency |
|
|
25
|
+
| ---------------- | ------------------------ | --------------------------- |
|
|
26
|
+
| `apps/mcp` | `mcpRouter`, `mcpHealth` | `@modelcontextprotocol/sdk` |
|
|
27
|
+
| `apps/mcp/stdio` | `stdioRouter` | `@modelcontextprotocol/sdk` |
|
|
28
|
+
| `apps/graphql` | `graphqlRouter` | `graphql` |
|
|
29
|
+
| `apps/openapi` | `openapiRouter` | None |
|
|
30
30
|
|
|
31
31
|
MCP and GraphQL are optional peers. Subpath imports isolate their module graphs;
|
|
32
32
|
optional peers keep unused libraries out of the dependency installation. The
|
|
@@ -43,18 +43,19 @@ Declare the needed peer in the deployed app's `package.json`, for example:
|
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
Product runtimes compile authored source and declared dependencies inside workerd,
|
|
46
|
-
then retain the executable Worker modules.
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
then retain the executable Worker modules. Every app declares the exact `apps`
|
|
47
|
+
version in `package.json`; it selects the framework for both server and browser
|
|
48
|
+
code and keeps rebuilds repeatable. A build without it fails and names the
|
|
49
|
+
version the host ships.
|
|
49
50
|
In this repository, playground workspaces use `"apps": "workspace:*"` for development;
|
|
50
51
|
replace that workspace reference with a released version before deployment.
|
|
51
52
|
|
|
52
|
-
`
|
|
53
|
+
`liveOpenapiRouter` reads an OpenAPI document through `ctx.cache`. Generated
|
|
53
54
|
imports retain a source URL, allowed origin, and static credential bindings in
|
|
54
55
|
`openapi.json`. The framework compiles a revision on a cache miss. It writes each
|
|
55
56
|
operation and shared schema before publishing the current revision. A warm call
|
|
56
57
|
reads that revision and the requested operation's schema dependencies. It does
|
|
57
|
-
not download, parse, or read the full catalog. `
|
|
58
|
+
not download, parse, or read the full catalog. `openapiRouter` remains the
|
|
58
59
|
lower-level helper for already normalized metadata.
|
|
59
60
|
`parameterDefaults` binds path, query or header values to the selected account.
|
|
60
61
|
Those parameters become optional and publish their value as the schema `default`;
|
|
@@ -68,25 +69,30 @@ Accounts bind at execution time. Live documents cannot change credential
|
|
|
68
69
|
placement or send credentials to another origin. Editing generated source and
|
|
69
70
|
redeploying is required to change those static choices.
|
|
70
71
|
|
|
71
|
-
Authenticated templates use `provider.many()` and `
|
|
72
|
+
Authenticated templates use `provider.many()` and `accountRouter` from `apps`:
|
|
72
73
|
|
|
73
74
|
```ts
|
|
74
|
-
export default defineApp(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
export default defineApp(
|
|
76
|
+
{ accounts: { service: provider.many() } },
|
|
77
|
+
async ({ accounts, signal }) => ({
|
|
78
|
+
tools: await accountRouter(
|
|
79
|
+
accounts.service,
|
|
80
|
+
(account) =>
|
|
81
|
+
mcpRouter({
|
|
82
|
+
url: "https://example.com/mcp",
|
|
83
|
+
account,
|
|
84
|
+
headers: { Authorization: "Bearer " + account.fields.token },
|
|
85
|
+
signal,
|
|
86
|
+
}),
|
|
87
|
+
{ signal },
|
|
88
|
+
),
|
|
89
|
+
}),
|
|
85
90
|
);
|
|
86
91
|
```
|
|
87
92
|
|
|
88
|
-
MCP and GraphQL helpers
|
|
89
|
-
`ctx.cache
|
|
93
|
+
MCP and GraphQL helpers take the account their headers come from, and accept
|
|
94
|
+
`cache: ctx.cache`; an account's catalog is kept in that account's scope and
|
|
95
|
+
credentials never enter its key. They return a dynamic router, cache remote
|
|
90
96
|
metadata, and compile only the selected tool. The defaults are five minutes fresh
|
|
91
97
|
plus five minutes stale. Use `freshFor` / `staleFor` to change the windows, or
|
|
92
98
|
`revalidate: true` to await a refresh. Tool results are never cached.
|
|
@@ -171,7 +177,7 @@ and [hosting notes](../../notes/app-ui.md).
|
|
|
171
177
|
|
|
172
178
|
## Webhooks
|
|
173
179
|
|
|
174
|
-
Expose `webhooks: { issueOpened }` beside
|
|
180
|
+
Expose `webhooks: { issueOpened }` beside `tools`. Each definition
|
|
175
181
|
has an `account` requirement, `config` and `state` schemas, and async `register`,
|
|
176
182
|
`handle`, and `unregister` callbacks. Register and unregister must be idempotent;
|
|
177
183
|
handle must verify the provider signature before acting.
|
|
@@ -243,39 +249,57 @@ errors are explicit. Background refreshes have a 30-second deadline.
|
|
|
243
249
|
bounded JSON batches with a retention duration. These support immutable pieces
|
|
244
250
|
that must be stored before a manifest becomes visible.
|
|
245
251
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
`
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
`
|
|
255
|
-
|
|
252
|
+
## Routers
|
|
253
|
+
|
|
254
|
+
An app's `tools` is a router. Keys form tool paths, and routers nest like tRPC's:
|
|
255
|
+
`router({ health, issues: router({ list, close }, { description }) })` exposes
|
|
256
|
+
`health`, `issues.list` and `issues.close`. Each query or mutation keeps its own
|
|
257
|
+
kind; names carry no `queries.` or `mutations.` prefix. Router options are
|
|
258
|
+
`title`, `description`, `instructions`, `icons` and `tags`. Instructions become a
|
|
259
|
+
skill named `tools` for the root router and `tools-<path>` below it, such as
|
|
260
|
+
`tools-issues`. Paths other than lowercase letters and digits get a slug and a
|
|
261
|
+
hash of the path, so names never collide. An authored skill with the same name
|
|
262
|
+
replaces the generated one. `router(source, options)` overrides a source's
|
|
263
|
+
metadata. Keys `__proto__`, `constructor` and `prototype` are reserved, and an
|
|
264
|
+
mutation can be mounted at only one path.
|
|
265
|
+
|
|
266
|
+
Protocol helpers return routers, so an app mounts several sources under keys.
|
|
267
|
+
`mcpRouter` takes its title, description, icons and instructions from the
|
|
268
|
+
server, and `liveOpenapiRouter` from the document's `info` and tags. `stdioRouter`,
|
|
269
|
+
`openapiRouter` and `graphqlRouter` carry no source metadata. A nested router that fails to load is reported on its own catalog entry;
|
|
270
|
+
the app's other tools still load. The root failing fails discovery.
|
|
271
|
+
|
|
272
|
+
`dynamicRouter({ list, resolve })` separates descriptions from executable
|
|
273
|
+
operations. `list()` returns tool metadata with names relative to the router,
|
|
274
|
+
such as `getProject`; names may contain dots. `resolve(name)` returns a
|
|
275
|
+
query/mutation declaration or `undefined`. The host validates input and applies
|
|
276
|
+
approval policy after resolving an operation. `accountRouter` preserves this
|
|
277
|
+
separation. Static operations run without resolving a source; listings reject
|
|
278
|
+
duplicate names.
|
|
256
279
|
|
|
257
280
|
```ts
|
|
258
281
|
export default defineApp(
|
|
259
282
|
{ accounts: {} },
|
|
260
283
|
{
|
|
261
|
-
|
|
284
|
+
tools: dynamicRouter({
|
|
262
285
|
list: async () => [
|
|
263
286
|
{
|
|
264
|
-
name: "
|
|
287
|
+
name: "ping",
|
|
265
288
|
description: "Return pong",
|
|
266
289
|
inputSchema: { type: "object", properties: {} },
|
|
267
290
|
readOnly: true,
|
|
268
291
|
},
|
|
269
292
|
],
|
|
270
293
|
resolve: async (name) =>
|
|
271
|
-
name === "
|
|
294
|
+
name === "ping" ? query({ input: object({}) }, async () => "pong") : undefined,
|
|
272
295
|
}),
|
|
273
296
|
},
|
|
274
297
|
);
|
|
275
298
|
```
|
|
276
299
|
|
|
277
|
-
|
|
278
|
-
`resolve` returns the matching
|
|
300
|
+
Mark queries with `readOnly: true`; other listed tools are mutations. `list`
|
|
301
|
+
describes available tools; `resolve` returns the matching declaration. An
|
|
302
|
+
optional `meta()` returns the router's title, description and instructions.
|
|
279
303
|
|
|
280
304
|
`ctx.cache.revalidate(options)` takes the same options as `get`, but always
|
|
281
305
|
awaits a refresh. Concurrent refreshes share a load. The previous value stays
|