apps 0.0.1-beta.4 → 0.0.1-beta.6
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 +65 -43
- package/framework-reference.json +1 -1
- package/js/{chunk-SATWJKN6.js → chunk-27F7W2LG.js} +1 -1
- package/js/{chunk-HDJH3RPR.js → chunk-57RKNWL2.js} +2 -2
- package/js/{chunk-WFSQXYUT.js → chunk-5T57N25Q.js} +15 -3
- package/js/{chunk-EQB7JMAL.js → chunk-6BSSI67S.js} +8 -8
- package/js/{chunk-3M2MEDNL.js → chunk-B3EOZTK3.js} +351 -33
- package/js/{chunk-FW5HBOIK.js → chunk-CDL5PM2Q.js} +307 -169
- package/js/{chunk-Z5NMEGJN.js → chunk-ECQFRCH4.js} +21 -9
- package/js/{chunk-G7ZIRKMK.js → chunk-IJX4CYZO.js} +3 -3
- package/js/{chunk-FDNTX5QJ.js → chunk-IPI4MFSN.js} +2 -2
- package/js/{chunk-2VPJHFOU.js → chunk-ITM77QPO.js} +28 -9
- package/js/{chunk-YEJOQEII.js → chunk-JU7VHODU.js} +1 -1
- package/js/{chunk-NQ3OMCA5.js → chunk-KUMBKVJD.js} +2 -2
- package/js/{chunk-EVJUVWN2.js → chunk-M3B3DE4K.js} +2 -2
- package/js/{chunk-ZJWDMTE3.js → chunk-MKWZPDR6.js} +3 -3
- package/js/chunk-MNMNLXBL.js +507 -0
- package/js/{chunk-BMOIAIVR.js → chunk-N7YDVXYJ.js} +49 -1
- package/js/{chunk-D47C7KG5.js → chunk-NKLWZJLE.js} +2 -2
- package/js/{chunk-DHUDODG5.js → chunk-OE3QQTSB.js} +41 -32
- package/js/{chunk-M6ZRRIBI.js → chunk-PJJ24GU7.js} +1 -1
- package/js/{chunk-FZJOYIZO.js → chunk-PZB6T6KU.js} +1 -1
- package/js/{chunk-LGIYBDWA.js → chunk-R3EV5FTO.js} +13 -1
- package/js/{chunk-5MQZEB6Y.js → chunk-RFVIONFX.js} +29 -12
- package/js/{chunk-ZCAMUXSG.js → chunk-RJDDBDSN.js} +3 -3
- package/js/{chunk-6VRYO2BG.js → chunk-SB4HEPNJ.js} +191 -170
- package/js/chunk-T7GKZBLP.js +209 -0
- package/js/{chunk-QKHR7BMF.js → chunk-UK573G7W.js} +1 -1
- package/js/{chunk-T2LAZCAD.js → chunk-VFZKSM3T.js} +1 -1
- package/js/{chunk-PLCMJREA.js → chunk-ZQINWV4W.js} +60 -20
- package/js/client.js +10 -10
- package/js/contracts.js +52 -16
- package/js/effect.js +19 -20
- package/js/graphql.js +34 -40
- package/js/host.js +19 -20
- package/js/index.js +189 -178
- package/js/mcp/effect.js +21 -22
- package/js/mcp/stdio.js +25 -26
- package/js/mcp.js +60 -45
- package/js/openapi.js +182 -224
- package/js/react.js +3 -3
- package/js/skills/effect.js +3 -3
- package/js/skills.js +12 -13
- package/js/storage/facet.js +4 -4
- package/js/ui/auth/contracts.js +2 -2
- package/js/ui/auth.js +5 -5
- package/js/ui/contracts.js +4 -4
- package/js/ui/serving.js +8 -8
- package/package.json +1 -1
- package/runtime.json +1 -1
- package/types/app-data/src/contracts/database.d.ts +33 -6
- package/types/app-data/src/implementation/schema.d.ts +2 -17
- package/types/apps/src/contracts/app.d.ts +2 -5
- package/types/apps/src/contracts/failure.d.ts +25 -0
- package/types/apps/src/contracts/host.d.ts +18 -9
- package/types/apps/src/contracts/mcp.d.ts +16 -0
- package/types/apps/src/contracts/openapi.d.ts +5 -1
- package/types/apps/src/contracts/operations.d.ts +0 -5
- package/types/apps/src/contracts/protocol-version.d.ts +2 -2
- package/types/apps/src/contracts/protocols/1.d.ts +15 -1
- package/types/apps/src/contracts/protocols/2.d.ts +2 -2
- package/types/apps/src/contracts/protocols/3.d.ts +676 -0
- package/types/apps/src/contracts/protocols/4.d.ts +1229 -0
- package/types/apps/src/contracts/router.d.ts +59 -0
- package/types/apps/src/contracts/storage.d.ts +3 -3
- package/types/apps/src/contracts/workflows.d.ts +34 -3
- package/types/apps/src/graphql.d.ts +1 -3
- package/types/apps/src/implementation/account-router.d.ts +12 -0
- package/types/apps/src/implementation/app.d.ts +5 -4
- package/types/apps/src/implementation/catalog-cache.d.ts +9 -2
- package/types/apps/src/implementation/elicitation.d.ts +1 -1
- package/types/apps/src/implementation/failure-detail.d.ts +25 -0
- package/types/apps/src/implementation/graphql-catalog.d.ts +1 -4
- package/types/apps/src/implementation/mcp-catalog.d.ts +1 -4
- package/types/apps/src/implementation/mcp-client.d.ts +35 -19
- package/types/apps/src/implementation/mcp.d.ts +35 -19
- package/types/apps/src/implementation/openapi-compile.d.ts +2 -1
- package/types/apps/src/implementation/openapi-source.d.ts +2 -6
- package/types/apps/src/implementation/operations.d.ts +26 -3
- package/types/apps/src/implementation/protocol-operations.d.ts +3 -4
- package/types/apps/src/implementation/router-catalog.d.ts +225 -0
- package/types/apps/src/implementation/router.d.ts +59 -0
- package/types/apps/src/implementation/schema.d.ts +5 -1
- package/types/apps/src/implementation/storage.d.ts +5 -3
- package/types/apps/src/implementation/webhooks.d.ts +1 -1
- package/types/apps/src/implementation/workflow-context.d.ts +11 -3
- package/types/apps/src/index.d.ts +3 -2
- package/types/apps/src/mcp-stdio.d.ts +2 -5
- package/types/apps/src/mcp.d.ts +5 -4
- package/types/apps/src/openapi.d.ts +6 -6
- package/js/chunk-PYUYJRSK.js +0 -93
- package/js/chunk-SWPD52J7.js +0 -35
- package/js/chunk-W7D7WVSY.js +0 -18
- package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
- package/types/apps/src/implementation/account-operations.d.ts +0 -151
- package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
package/js/mcp.js
CHANGED
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mcpClientEffect
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6BSSI67S.js";
|
|
4
4
|
import {
|
|
5
5
|
catalogCache
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RFVIONFX.js";
|
|
7
7
|
import {
|
|
8
8
|
adaptMcpTool
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ITM77QPO.js";
|
|
10
10
|
import {
|
|
11
11
|
protocolOperations
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ECQFRCH4.js";
|
|
13
13
|
import "./chunk-BCSNKUAC.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-SB4HEPNJ.js";
|
|
15
15
|
import {
|
|
16
16
|
cacheKey
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-NKLWZJLE.js";
|
|
18
|
+
import "./chunk-MNMNLXBL.js";
|
|
19
|
+
import "./chunk-IPI4MFSN.js";
|
|
20
|
+
import "./chunk-OE3QQTSB.js";
|
|
21
|
+
import "./chunk-ZQINWV4W.js";
|
|
21
22
|
import {
|
|
22
|
-
nativeOperation
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
nativeOperation,
|
|
24
|
+
routerDeclaration
|
|
25
|
+
} from "./chunk-T7GKZBLP.js";
|
|
26
|
+
import "./chunk-MKWZPDR6.js";
|
|
25
27
|
import {
|
|
26
28
|
McpError,
|
|
29
|
+
McpServerHeader,
|
|
27
30
|
McpToolMetadata,
|
|
28
31
|
McpToolsOptions
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-FZJOYIZO.js";
|
|
40
|
-
import "./chunk-SATWJKN6.js";
|
|
32
|
+
} from "./chunk-B3EOZTK3.js";
|
|
33
|
+
import "./chunk-N7YDVXYJ.js";
|
|
34
|
+
import "./chunk-R3EV5FTO.js";
|
|
35
|
+
import "./chunk-JU7VHODU.js";
|
|
36
|
+
import "./chunk-RJDDBDSN.js";
|
|
37
|
+
import "./chunk-57RKNWL2.js";
|
|
38
|
+
import "./chunk-UK573G7W.js";
|
|
39
|
+
import "./chunk-5T57N25Q.js";
|
|
40
|
+
import "./chunk-PZB6T6KU.js";
|
|
41
|
+
import "./chunk-27F7W2LG.js";
|
|
41
42
|
import {
|
|
42
43
|
Effect_exports,
|
|
43
44
|
Schema_exports
|
|
44
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-CDL5PM2Q.js";
|
|
45
46
|
import "./chunk-CZ7CSFO4.js";
|
|
46
47
|
|
|
47
48
|
// src/implementation/mcp-catalog.ts
|
|
@@ -49,6 +50,15 @@ var McpToolSummary = McpToolMetadata.mapFields(
|
|
|
49
50
|
({ inputSchema: _input, outputSchema: _output, _meta, ...fields }) => fields
|
|
50
51
|
);
|
|
51
52
|
var invoke = (work) => Effect_exports.tryPromise({ try: work, catch: (error) => error });
|
|
53
|
+
var serverMeta = (server) => {
|
|
54
|
+
const title = server.title ?? server.name;
|
|
55
|
+
return {
|
|
56
|
+
...title === void 0 ? {} : { title },
|
|
57
|
+
...server.description === void 0 ? {} : { description: server.description },
|
|
58
|
+
...server.instructions === void 0 ? {} : { instructions: server.instructions },
|
|
59
|
+
...server.icons === void 0 ? {} : { icons: server.icons }
|
|
60
|
+
};
|
|
61
|
+
};
|
|
52
62
|
var mcpCatalog = (options, kinds) => Effect_exports.gen(function* () {
|
|
53
63
|
const parsed = yield* Schema_exports.decodeUnknownEffect(McpToolsOptions)(options).pipe(
|
|
54
64
|
Effect_exports.mapError(() => new McpError({ phase: "connect", reason: "invalid_input" }))
|
|
@@ -58,27 +68,32 @@ var mcpCatalog = (options, kinds) => Effect_exports.gen(function* () {
|
|
|
58
68
|
headers[name] = value;
|
|
59
69
|
});
|
|
60
70
|
const id = yield* cacheKey({ url: parsed.url, headers, accountId: parsed.accountId ?? null });
|
|
61
|
-
const key = ["mcp-catalog-
|
|
71
|
+
const key = ["mcp-catalog-v3", id, "current"];
|
|
62
72
|
const cache = options.cache;
|
|
63
73
|
const changed = cache === void 0 ? void 0 : invoke(() => cache.invalidate(key));
|
|
64
74
|
const client = yield* mcpClientEffect(options, changed);
|
|
65
75
|
const catalog = yield* catalogCache({
|
|
66
76
|
...options,
|
|
67
|
-
prefix: ["mcp-catalog-
|
|
77
|
+
prefix: ["mcp-catalog-v3", id],
|
|
68
78
|
schema: McpToolMetadata,
|
|
69
79
|
summary: {
|
|
70
80
|
schema: McpToolSummary,
|
|
71
81
|
of: ({ inputSchema: _input, outputSchema: _output, _meta, ...summary }) => summary
|
|
72
82
|
},
|
|
73
|
-
load: (context) => context === void 0 ? client.list : mcpClientEffect(
|
|
83
|
+
load: (context) => (context === void 0 ? client.list : mcpClientEffect(
|
|
74
84
|
{ ...parsed, signal: context.signal },
|
|
75
85
|
invoke(() => context.cache.invalidate(key))
|
|
76
|
-
).pipe(Effect_exports.flatMap((source) => source.list))
|
|
86
|
+
).pipe(Effect_exports.flatMap((source) => source.list))).pipe(
|
|
87
|
+
Effect_exports.flatMap(
|
|
88
|
+
({ tools, server }) => Schema_exports.encodeEffect(McpServerHeader)(server).pipe(
|
|
89
|
+
Effect_exports.map((header) => ({ tools, header }))
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
)
|
|
77
93
|
});
|
|
78
94
|
const kindOf = (tool) => Object.hasOwn(kinds, tool.name) ? kinds[tool.name] ?? "mutation" : tool.annotations?.readOnlyHint === true ? "query" : "mutation";
|
|
79
|
-
const qualified = (tool) => `${kindOf(tool) === "query" ? "queries" : "mutations"}.${tool.name}`;
|
|
80
95
|
const summarize = (tool) => ({
|
|
81
|
-
name:
|
|
96
|
+
name: tool.name,
|
|
82
97
|
description: tool.description ?? tool.title ?? tool.name,
|
|
83
98
|
readOnly: kindOf(tool) === "query",
|
|
84
99
|
...tool.title === void 0 ? {} : { title: tool.title },
|
|
@@ -90,34 +105,34 @@ var mcpCatalog = (options, kinds) => Effect_exports.gen(function* () {
|
|
|
90
105
|
...tool.outputSchema === void 0 ? {} : { outputSchema: tool.outputSchema },
|
|
91
106
|
...tool._meta === void 0 ? {} : { _meta: tool._meta }
|
|
92
107
|
});
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
const router = {
|
|
109
|
+
kind: "dynamic",
|
|
110
|
+
meta: () => catalog.header().pipe(
|
|
111
|
+
Effect_exports.flatMap(
|
|
112
|
+
(header) => header === void 0 ? Effect_exports.succeed({}) : Schema_exports.decodeUnknownEffect(McpServerHeader)(header)
|
|
113
|
+
),
|
|
114
|
+
Effect_exports.map(serverMeta)
|
|
115
|
+
),
|
|
99
116
|
list: () => catalog.list().pipe(Effect_exports.map((tools) => tools.map(describe))),
|
|
100
117
|
summaries: () => catalog.summaries().pipe(Effect_exports.map((tools) => tools.map(summarize))),
|
|
101
|
-
describe: (name) =>
|
|
102
|
-
Effect_exports.map((tool) => tool === void 0 ? void 0 : describe(tool))
|
|
103
|
-
),
|
|
118
|
+
describe: (name) => catalog.resolve(name).pipe(Effect_exports.map((tool) => tool === void 0 ? void 0 : describe(tool))),
|
|
104
119
|
resolve: (name) => Effect_exports.gen(function* () {
|
|
105
|
-
const tool = yield*
|
|
120
|
+
const tool = yield* catalog.resolve(name);
|
|
106
121
|
if (tool === void 0) return void 0;
|
|
107
122
|
const adapted = yield* adaptMcpTool(client, tool);
|
|
108
123
|
const operations = protocolOperations({ selected: adapted }, { selected: kindOf(tool) });
|
|
109
|
-
return nativeOperation(operations.
|
|
124
|
+
return nativeOperation(operations.selected);
|
|
110
125
|
})
|
|
111
126
|
};
|
|
112
|
-
return
|
|
127
|
+
return routerDeclaration(router);
|
|
113
128
|
});
|
|
114
129
|
|
|
115
130
|
// src/mcp.ts
|
|
116
|
-
var
|
|
131
|
+
var mcpRouter = (options, kinds = {}) => Effect_exports.runPromise(
|
|
117
132
|
mcpCatalog(options, kinds),
|
|
118
133
|
options.signal === void 0 ? {} : { signal: options.signal }
|
|
119
134
|
);
|
|
120
135
|
export {
|
|
121
136
|
McpError,
|
|
122
|
-
|
|
137
|
+
mcpRouter
|
|
123
138
|
};
|