@fragno-dev/mcp-fragment 0.0.0-stage → 0.0.3
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/LICENSE.md +16 -0
- package/README.md +312 -2
- package/bin/run.js +7 -0
- package/dist/browser/client/react.d.ts +253 -0
- package/dist/browser/client/react.d.ts.map +1 -0
- package/dist/browser/client/react.js +194 -0
- package/dist/browser/client/react.js.map +1 -0
- package/dist/browser/client/solid.d.ts +256 -0
- package/dist/browser/client/solid.d.ts.map +1 -0
- package/dist/browser/client/solid.js +129 -0
- package/dist/browser/client/solid.js.map +1 -0
- package/dist/browser/client/svelte.d.ts +256 -0
- package/dist/browser/client/svelte.d.ts.map +1 -0
- package/dist/browser/client/svelte.js +131 -0
- package/dist/browser/client/svelte.js.map +1 -0
- package/dist/browser/client/vanilla.d.ts +283 -0
- package/dist/browser/client/vanilla.d.ts.map +1 -0
- package/dist/browser/client/vanilla.js +159 -0
- package/dist/browser/client/vanilla.js.map +1 -0
- package/dist/browser/client/vue.d.ts +256 -0
- package/dist/browser/client/vue.d.ts.map +1 -0
- package/dist/browser/client/vue.js +127 -0
- package/dist/browser/client/vue.js.map +1 -0
- package/dist/browser/client-BCzNDSlW.d.ts +711 -0
- package/dist/browser/client-BCzNDSlW.d.ts.map +1 -0
- package/dist/browser/index.d.ts +813 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +1 -0
- package/dist/browser/src-B6dHZXqB.js +2303 -0
- package/dist/browser/src-B6dHZXqB.js.map +1 -0
- package/dist/cli/cli.d.ts +6 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +227 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/definition.js +330 -0
- package/dist/cli/definition.js.map +1 -0
- package/dist/cli/diagnostics.js +93 -0
- package/dist/cli/diagnostics.js.map +1 -0
- package/dist/cli/index.js +13 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/mcp-api.js +87 -0
- package/dist/cli/mcp-api.js.map +1 -0
- package/dist/cli/mcp-types.js +100 -0
- package/dist/cli/mcp-types.js.map +1 -0
- package/dist/cli/oauth-provider.js +113 -0
- package/dist/cli/oauth-provider.js.map +1 -0
- package/dist/cli/routes.js +743 -0
- package/dist/cli/routes.js.map +1 -0
- package/dist/cli/schema.js +13 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/cli/services.js +330 -0
- package/dist/cli/services.js.map +1 -0
- package/dist/node/definition.d.ts +260 -0
- package/dist/node/definition.d.ts.map +1 -0
- package/dist/node/definition.js +330 -0
- package/dist/node/definition.js.map +1 -0
- package/dist/node/diagnostics.js +93 -0
- package/dist/node/diagnostics.js.map +1 -0
- package/dist/node/index.d.ts +694 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +26 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/mcp-api.d.ts +2 -0
- package/dist/node/mcp-api.js +87 -0
- package/dist/node/mcp-api.js.map +1 -0
- package/dist/node/mcp-types.d.ts +146 -0
- package/dist/node/mcp-types.d.ts.map +1 -0
- package/dist/node/mcp-types.js +100 -0
- package/dist/node/mcp-types.js.map +1 -0
- package/dist/node/oauth-provider.d.ts +24 -0
- package/dist/node/oauth-provider.d.ts.map +1 -0
- package/dist/node/oauth-provider.js +113 -0
- package/dist/node/oauth-provider.js.map +1 -0
- package/dist/node/routes.d.ts +466 -0
- package/dist/node/routes.d.ts.map +1 -0
- package/dist/node/routes.js +743 -0
- package/dist/node/routes.js.map +1 -0
- package/dist/node/schema.d.ts +9 -0
- package/dist/node/schema.d.ts.map +1 -0
- package/dist/node/schema.js +13 -0
- package/dist/node/schema.js.map +1 -0
- package/dist/node/services.d.ts +40 -0
- package/dist/node/services.d.ts.map +1 -0
- package/dist/node/services.js +330 -0
- package/dist/node/services.js.map +1 -0
- package/dist/node/testing/mcp-test-server.d.ts +42 -0
- package/dist/node/testing/mcp-test-server.d.ts.map +1 -0
- package/dist/node/testing/mcp-test-server.js +218 -0
- package/dist/node/testing/mcp-test-server.js.map +1 -0
- package/package.json +130 -3
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { a as FragnoClientRequestError, c as InferOr, d as MaybeExtractPathParamsOrWiden, f as QueryParamsHint, i as ReadableAtom, o as NonGetHTTPMethod, s as FragnoPublicClientConfig } from "../client-BCzNDSlW.js";
|
|
2
|
+
import { Ref } from "vue";
|
|
3
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
|
+
//#region ../fragno/dist/client/vue.d.ts
|
|
5
|
+
//#region src/client/vue.d.ts
|
|
6
|
+
type FragnoVueHook<_TMethod extends "GET", TPath extends string, TOutputSchema extends StandardSchemaV1, TErrorCode extends string, TQueryParameters extends string> = (args?: {
|
|
7
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string | Ref<string> | ReadableAtom<string>>;
|
|
8
|
+
query?: QueryParamsHint<TQueryParameters, string | Ref<string> | ReadableAtom<string>>;
|
|
9
|
+
}) => {
|
|
10
|
+
data: Ref<InferOr<TOutputSchema, undefined>>;
|
|
11
|
+
loading: Ref<boolean>;
|
|
12
|
+
error: Ref<FragnoClientRequestError<TErrorCode[number]> | undefined>;
|
|
13
|
+
};
|
|
14
|
+
type FragnoVueMutator<_TMethod extends NonGetHTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string, TQueryParameters extends string> = () => {
|
|
15
|
+
mutate: (args: {
|
|
16
|
+
body?: InferOr<TInputSchema, undefined>;
|
|
17
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string | Ref<string> | ReadableAtom<string>>;
|
|
18
|
+
query?: QueryParamsHint<TQueryParameters, string | Ref<string> | ReadableAtom<string>>;
|
|
19
|
+
}) => Promise<InferOr<TOutputSchema, undefined>>;
|
|
20
|
+
loading: Ref<boolean | undefined>;
|
|
21
|
+
error: Ref<FragnoClientRequestError<TErrorCode[number]> | undefined>;
|
|
22
|
+
data: Ref<InferOr<TOutputSchema, undefined>>;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/client/vue.d.ts
|
|
26
|
+
export declare function createMcpFragmentClient(config?: FragnoPublicClientConfig): {
|
|
27
|
+
useServers: FragnoVueHook<"GET", "/servers", import("zod").ZodObject<{
|
|
28
|
+
servers: import("zod").ZodArray<import("zod").ZodObject<{
|
|
29
|
+
slug: import("zod").ZodString;
|
|
30
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
31
|
+
endpointUrl: import("zod").ZodString;
|
|
32
|
+
authMode: import("zod").ZodString;
|
|
33
|
+
cache: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
34
|
+
protocolVersion: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
35
|
+
serverInfo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
36
|
+
capabilities: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
37
|
+
tools: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
38
|
+
name: import("zod").ZodString;
|
|
39
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
40
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
41
|
+
inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
42
|
+
outputSchema: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
43
|
+
annotations: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
44
|
+
_meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
45
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
46
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodDate]>>;
|
|
47
|
+
}, import("zod/v4/core").$strip>>>;
|
|
48
|
+
}, import("zod/v4/core").$strip>>;
|
|
49
|
+
}, import("zod/v4/core").$strip>, string, string>;
|
|
50
|
+
useServer: FragnoVueHook<"GET", "/servers/:slug", import("zod").ZodObject<{
|
|
51
|
+
slug: import("zod").ZodString;
|
|
52
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
53
|
+
endpointUrl: import("zod").ZodString;
|
|
54
|
+
authMode: import("zod").ZodString;
|
|
55
|
+
cache: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
56
|
+
protocolVersion: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
57
|
+
serverInfo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
58
|
+
capabilities: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
59
|
+
tools: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
60
|
+
name: import("zod").ZodString;
|
|
61
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
62
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
63
|
+
inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
64
|
+
outputSchema: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
65
|
+
annotations: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
66
|
+
_meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
67
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
68
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodDate]>>;
|
|
69
|
+
}, import("zod/v4/core").$strip>>>;
|
|
70
|
+
}, import("zod/v4/core").$strip>, "SERVER_NOT_FOUND", string>;
|
|
71
|
+
createServer: FragnoVueMutator<NonGetHTTPMethod, "/servers", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | import("zod").ZodObject<{
|
|
72
|
+
slug: import("zod").ZodString;
|
|
73
|
+
name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
74
|
+
endpointUrl: import("zod").ZodURL;
|
|
75
|
+
auth: import("zod").ZodDefault<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
76
|
+
type: import("zod").ZodLiteral<"none">;
|
|
77
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
78
|
+
type: import("zod").ZodLiteral<"bearer">;
|
|
79
|
+
token: import("zod").ZodString;
|
|
80
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
81
|
+
type: import("zod").ZodLiteral<"client_credentials">;
|
|
82
|
+
clientId: import("zod").ZodString;
|
|
83
|
+
clientSecret: import("zod").ZodString;
|
|
84
|
+
scopes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
85
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
86
|
+
type: import("zod").ZodLiteral<"oauth">;
|
|
87
|
+
clientId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
88
|
+
clientSecret: import("zod").ZodOptional<import("zod").ZodString>;
|
|
89
|
+
scopes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
90
|
+
}, import("zod/v4/core").$strip>], "type">>;
|
|
91
|
+
}, import("zod/v4/core").$strip> | undefined, import("zod").ZodObject<{
|
|
92
|
+
slug: import("zod").ZodString;
|
|
93
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
94
|
+
endpointUrl: import("zod").ZodString;
|
|
95
|
+
authMode: import("zod").ZodString;
|
|
96
|
+
cache: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
97
|
+
protocolVersion: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
98
|
+
serverInfo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
99
|
+
capabilities: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
100
|
+
tools: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
101
|
+
name: import("zod").ZodString;
|
|
102
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
103
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
104
|
+
inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
105
|
+
outputSchema: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
106
|
+
annotations: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
107
|
+
_meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
108
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
109
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodDate]>>;
|
|
110
|
+
}, import("zod/v4/core").$strip>>>;
|
|
111
|
+
}, import("zod/v4/core").$strip> | import("zod").ZodObject<{
|
|
112
|
+
servers: import("zod").ZodArray<import("zod").ZodObject<{
|
|
113
|
+
slug: import("zod").ZodString;
|
|
114
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
115
|
+
endpointUrl: import("zod").ZodString;
|
|
116
|
+
authMode: import("zod").ZodString;
|
|
117
|
+
cache: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
118
|
+
protocolVersion: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
119
|
+
serverInfo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
120
|
+
capabilities: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnknown>>;
|
|
121
|
+
tools: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
122
|
+
name: import("zod").ZodString;
|
|
123
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
124
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
125
|
+
inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
126
|
+
outputSchema: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
127
|
+
annotations: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
128
|
+
_meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
129
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
130
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodDate]>>;
|
|
131
|
+
}, import("zod/v4/core").$strip>>>;
|
|
132
|
+
}, import("zod/v4/core").$strip>>;
|
|
133
|
+
}, import("zod/v4/core").$strip> | undefined, string, string>;
|
|
134
|
+
refreshServer: FragnoVueMutator<NonGetHTTPMethod, "/servers/:slug/refresh", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
|
|
135
|
+
ok: import("zod").ZodBoolean;
|
|
136
|
+
tools: import("zod").ZodArray<import("zod").ZodObject<{
|
|
137
|
+
name: import("zod").ZodString;
|
|
138
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
139
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
140
|
+
inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
141
|
+
outputSchema: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
142
|
+
annotations: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
143
|
+
_meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
144
|
+
}, import("zod/v4/core").$loose>>;
|
|
145
|
+
stage: import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
146
|
+
auth: "auth";
|
|
147
|
+
list_tools: "list_tools";
|
|
148
|
+
}>>;
|
|
149
|
+
checkedAt: import("zod").ZodString;
|
|
150
|
+
server: import("zod").ZodObject<{
|
|
151
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
152
|
+
endpointUrl: import("zod").ZodString;
|
|
153
|
+
authMode: import("zod").ZodString;
|
|
154
|
+
slug: import("zod").ZodString;
|
|
155
|
+
}, import("zod/v4/core").$strip>;
|
|
156
|
+
auth: import("zod").ZodObject<{
|
|
157
|
+
authenticated: import("zod").ZodBoolean;
|
|
158
|
+
mode: import("zod").ZodString;
|
|
159
|
+
tokenPresent: import("zod").ZodBoolean;
|
|
160
|
+
expiresAt: import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodDate]>>;
|
|
161
|
+
expired: import("zod").ZodNullable<import("zod").ZodBoolean>;
|
|
162
|
+
scopes: import("zod").ZodObject<{
|
|
163
|
+
requested: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
|
|
164
|
+
granted: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
|
|
165
|
+
missing: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
|
|
166
|
+
raw: import("zod").ZodNullable<import("zod").ZodString>;
|
|
167
|
+
}, import("zod/v4/core").$strip>;
|
|
168
|
+
}, import("zod/v4/core").$strip>;
|
|
169
|
+
live: import("zod").ZodObject<{
|
|
170
|
+
reachable: import("zod").ZodBoolean;
|
|
171
|
+
listToolsOk: import("zod").ZodBoolean;
|
|
172
|
+
toolCount: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
173
|
+
protocolVersion: import("zod").ZodNullable<import("zod").ZodString>;
|
|
174
|
+
serverInfo: import("zod").ZodNullable<import("zod").ZodUnknown>;
|
|
175
|
+
capabilities: import("zod").ZodNullable<import("zod").ZodUnknown>;
|
|
176
|
+
}, import("zod/v4/core").$strip>;
|
|
177
|
+
cache: import("zod").ZodObject<{
|
|
178
|
+
presentBeforeCheck: import("zod").ZodBoolean;
|
|
179
|
+
previousToolCount: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
180
|
+
updatedToolCount: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
181
|
+
}, import("zod/v4/core").$strip>;
|
|
182
|
+
error: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
183
|
+
code: import("zod").ZodString;
|
|
184
|
+
message: import("zod").ZodString;
|
|
185
|
+
}, import("zod/v4/core").$strip>>;
|
|
186
|
+
}, import("zod/v4/core").$strip> | undefined, "SERVER_NOT_FOUND", string>;
|
|
187
|
+
callTool: FragnoVueMutator<NonGetHTTPMethod, "/servers/:slug/tools/execute", import("zod").ZodObject<{
|
|
188
|
+
name: import("zod").ZodString;
|
|
189
|
+
arguments: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
190
|
+
timeoutMs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
191
|
+
}, import("zod/v4/core").$strip> | undefined, import("zod").ZodObject<{
|
|
192
|
+
isError: import("zod").ZodBoolean;
|
|
193
|
+
content: import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
194
|
+
structuredContent: import("zod").ZodUnknown;
|
|
195
|
+
}, import("zod/v4/core").$strip> | undefined, "SERVER_NOT_FOUND" | "MCP_ERROR", string>;
|
|
196
|
+
setToken: FragnoVueMutator<NonGetHTTPMethod, "/servers/:slug/auth/token", import("zod").ZodObject<{
|
|
197
|
+
token: import("zod").ZodString;
|
|
198
|
+
}, import("zod/v4/core").$strip> | undefined, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
199
|
+
mode: import("zod").ZodLiteral<"none">;
|
|
200
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
201
|
+
mode: import("zod").ZodLiteral<"bearer">;
|
|
202
|
+
credentials: import("zod").ZodEnum<{
|
|
203
|
+
present: "present";
|
|
204
|
+
missing: "missing";
|
|
205
|
+
}>;
|
|
206
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
207
|
+
mode: import("zod").ZodLiteral<"client_credentials">;
|
|
208
|
+
credentials: import("zod").ZodEnum<{
|
|
209
|
+
present: "present";
|
|
210
|
+
missing: "missing";
|
|
211
|
+
}>;
|
|
212
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
213
|
+
mode: import("zod").ZodLiteral<"oauth">;
|
|
214
|
+
state: import("zod").ZodEnum<{
|
|
215
|
+
"consent-required": "consent-required";
|
|
216
|
+
"consent-pending": "consent-pending";
|
|
217
|
+
authorized: "authorized";
|
|
218
|
+
expired: "expired";
|
|
219
|
+
}>;
|
|
220
|
+
}, import("zod/v4/core").$strip>], "mode"> | undefined, "SERVER_NOT_FOUND", string>;
|
|
221
|
+
startOAuth: FragnoVueMutator<NonGetHTTPMethod, "/servers/:slug/auth/start", import("zod").ZodObject<{
|
|
222
|
+
scope: import("zod").ZodOptional<import("zod").ZodString>;
|
|
223
|
+
clientId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
224
|
+
clientSecret: import("zod").ZodOptional<import("zod").ZodString>;
|
|
225
|
+
discardTokens: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
226
|
+
}, import("zod/v4/core").$strip> | undefined, import("zod").ZodObject<{
|
|
227
|
+
authorizationUrl: import("zod").ZodString;
|
|
228
|
+
state: import("zod").ZodString;
|
|
229
|
+
}, import("zod/v4/core").$strip> | undefined, "SERVER_NOT_FOUND" | "INVALID_OAUTH_REDIRECT_URI" | "OAUTH_REDIRECT_URI_NOT_ALLOWED" | "OAUTH_ERROR", string>;
|
|
230
|
+
deleteAuth: FragnoVueMutator<NonGetHTTPMethod, "/servers/:slug/auth", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
231
|
+
mode: import("zod").ZodLiteral<"none">;
|
|
232
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
233
|
+
mode: import("zod").ZodLiteral<"bearer">;
|
|
234
|
+
credentials: import("zod").ZodEnum<{
|
|
235
|
+
present: "present";
|
|
236
|
+
missing: "missing";
|
|
237
|
+
}>;
|
|
238
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
239
|
+
mode: import("zod").ZodLiteral<"client_credentials">;
|
|
240
|
+
credentials: import("zod").ZodEnum<{
|
|
241
|
+
present: "present";
|
|
242
|
+
missing: "missing";
|
|
243
|
+
}>;
|
|
244
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
245
|
+
mode: import("zod").ZodLiteral<"oauth">;
|
|
246
|
+
state: import("zod").ZodEnum<{
|
|
247
|
+
"consent-required": "consent-required";
|
|
248
|
+
"consent-pending": "consent-pending";
|
|
249
|
+
authorized: "authorized";
|
|
250
|
+
expired: "expired";
|
|
251
|
+
}>;
|
|
252
|
+
}, import("zod/v4/core").$strip>], "mode"> | undefined, "SERVER_NOT_FOUND", string>;
|
|
253
|
+
};
|
|
254
|
+
//#endregion
|
|
255
|
+
export {};
|
|
256
|
+
//# sourceMappingURL=vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.d.ts","names":["_$_fragno_dev_core_vue0.FragnoVueHook","_$_fragno_dev_core_api0.NonGetHTTPMethod","_$_fragno_dev_core_vue0.FragnoVueMutator"],"sources":["../../../../fragno/dist/client/vue.d.ts","../../../src/client/vue.ts"],"mappings":";;;;;KASK,cAAc,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACtK,OAAO,8BAA8B,gBAAgB,cAAc;EACnE,QAAQ,gBAAgB,2BAA2B,cAAc;;EAEjE,MAAM,IAAI,QAAQ;EAClB,SAAS;EACT,OAAO,IAAI,yBAAyB;;KAEjC,iBAAiB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EAC/M,SAAS;IACP,OAAO,QAAQ;IACf,OAAO,8BAA8B,gBAAgB,cAAc;IACnE,QAAQ,gBAAgB,2BAA2B,cAAc;QAC7D,QAAQ,QAAQ;EACtB,SAAS;EACT,OAAO,IAAI,yBAAyB;EACpC,MAAM,IAAI,QAAQ;;;;wBCpBJ,wBAAwB,SAAQ;cAAAA"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { a as isStore, i as isMutatorHook, n as createMcpFragmentClients, o as atom, r as isGetHook, s as isReadableAtom } from "../src-B6dHZXqB.js";
|
|
2
|
+
import { computed, getCurrentScope, isRef, onScopeDispose, ref, shallowRef, watch } from "vue";
|
|
3
|
+
//#region ../fragno/dist/client/vue.js
|
|
4
|
+
/**
|
|
5
|
+
* Converts a Vue Ref to a NanoStore Atom.
|
|
6
|
+
*
|
|
7
|
+
* This is used to convert Vue refs to atoms, so that we can use them in the store.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
function refToAtom(ref) {
|
|
12
|
+
const a = /* @__PURE__ */ atom(ref.value);
|
|
13
|
+
watch(ref, (newVal) => {
|
|
14
|
+
a.set(newVal);
|
|
15
|
+
});
|
|
16
|
+
return a;
|
|
17
|
+
}
|
|
18
|
+
function createVueHook(hook) {
|
|
19
|
+
return ({ path, query } = {}) => {
|
|
20
|
+
const pathParams = {};
|
|
21
|
+
const queryParams = {};
|
|
22
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
23
|
+
const v = value;
|
|
24
|
+
pathParams[key] = isRef(v) ? refToAtom(v) : v;
|
|
25
|
+
}
|
|
26
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
27
|
+
const v = value;
|
|
28
|
+
queryParams[key] = isRef(v) ? refToAtom(v) : v;
|
|
29
|
+
}
|
|
30
|
+
const store = hook.store({
|
|
31
|
+
path: pathParams,
|
|
32
|
+
query: queryParams
|
|
33
|
+
});
|
|
34
|
+
const data = ref();
|
|
35
|
+
const loading = ref();
|
|
36
|
+
const error = ref();
|
|
37
|
+
const unsubscribe = store.subscribe((updatedStoreValue) => {
|
|
38
|
+
data.value = updatedStoreValue.data;
|
|
39
|
+
loading.value = updatedStoreValue.loading;
|
|
40
|
+
error.value = updatedStoreValue.error;
|
|
41
|
+
});
|
|
42
|
+
if (getCurrentScope()) onScopeDispose(() => {
|
|
43
|
+
unsubscribe();
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
data,
|
|
47
|
+
loading,
|
|
48
|
+
error
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createVueMutator(hook) {
|
|
53
|
+
return () => {
|
|
54
|
+
const store = useStore(hook.mutatorStore);
|
|
55
|
+
const mutate = async (args) => {
|
|
56
|
+
const { body, path, query } = args;
|
|
57
|
+
const pathParams = {};
|
|
58
|
+
const queryParams = {};
|
|
59
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
60
|
+
const v = value;
|
|
61
|
+
pathParams[key] = isRef(v) ? v.value : v;
|
|
62
|
+
}
|
|
63
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
64
|
+
const v = value;
|
|
65
|
+
queryParams[key] = isRef(v) ? v.value : v;
|
|
66
|
+
}
|
|
67
|
+
return store.value.mutate({
|
|
68
|
+
body,
|
|
69
|
+
path: pathParams,
|
|
70
|
+
query: queryParams
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
mutate,
|
|
75
|
+
loading: computed(() => store.value.loading),
|
|
76
|
+
error: computed(() => store.value.error),
|
|
77
|
+
data: computed(() => store.value.data)
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function unwrapVueStoreValue(value) {
|
|
82
|
+
if (isReadableAtom(value)) return useStore(value);
|
|
83
|
+
const entries = Object.keys(value).map((key) => {
|
|
84
|
+
const fieldValue = value[key];
|
|
85
|
+
return [key, isReadableAtom(fieldValue) ? useStore(fieldValue) : fieldValue];
|
|
86
|
+
});
|
|
87
|
+
return Object.fromEntries(entries);
|
|
88
|
+
}
|
|
89
|
+
function createVueStore(hook) {
|
|
90
|
+
return (...args) => {
|
|
91
|
+
const value = "factory" in hook ? hook.factory(...args) : hook.obj;
|
|
92
|
+
const disposer = value[Symbol.dispose];
|
|
93
|
+
if (typeof disposer === "function" && getCurrentScope()) onScopeDispose(() => {
|
|
94
|
+
disposer.call(value);
|
|
95
|
+
});
|
|
96
|
+
return unwrapVueStoreValue(value);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function useFragno(clientObj) {
|
|
100
|
+
const result = {};
|
|
101
|
+
for (const key in clientObj) {
|
|
102
|
+
if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
|
|
103
|
+
const hook = clientObj[key];
|
|
104
|
+
if (isGetHook(hook)) result[key] = createVueHook(hook);
|
|
105
|
+
else if (isMutatorHook(hook)) result[key] = createVueMutator(hook);
|
|
106
|
+
else if (isStore(hook)) result[key] = createVueStore(hook);
|
|
107
|
+
else result[key] = hook;
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
function useStore(store) {
|
|
112
|
+
const state = shallowRef();
|
|
113
|
+
const unsubscribe = store.subscribe((value) => {
|
|
114
|
+
state.value = value;
|
|
115
|
+
});
|
|
116
|
+
if (getCurrentScope()) onScopeDispose(unsubscribe);
|
|
117
|
+
return state;
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/client/vue.ts
|
|
121
|
+
function createMcpFragmentClient(config = {}) {
|
|
122
|
+
return useFragno(createMcpFragmentClients(config));
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { createMcpFragmentClient };
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.js","names":["isReadableAtom","isGetHook","isMutatorHook","isStore","atom","computed","computed$1","getCurrentScope","isRef","onScopeDispose","ref","shallowRef","watch","refToAtom","a","value","newVal","set","createVueHook","hook","path","query","pathParams","queryParams","key","Object","entries","v","store","data","loading","error","unsubscribe","subscribe","updatedStoreValue","createVueMutator","useStore","mutatorStore","mutate","args","body","unwrapVueStoreValue","keys","map","fieldValue","fromEntries","createVueStore","factory","obj","disposer","Symbol","dispose","call","useFragno","clientObj","result","prototype","hasOwnProperty","state","computed$1","FragnoPublicClientConfig","useFragno","createMcpFragmentClients","createMcpFragmentClient","config"],"sources":["../../../../fragno/dist/client/vue.js","../../../src/client/vue.ts"],"sourcesContent":["import { isReadableAtom } from \"../util/nanostores.js\";\nimport { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { atom } from \"nanostores\";\nimport { computed as computed$1, getCurrentScope, isRef, onScopeDispose, ref, shallowRef, watch } from \"vue\";\n//#region src/client/vue.ts\n/**\n* Converts a Vue Ref to a NanoStore Atom.\n*\n* This is used to convert Vue refs to atoms, so that we can use them in the store.\n*\n* @private\n*/\nfunction refToAtom(ref) {\n\tconst a = atom(ref.value);\n\twatch(ref, (newVal) => {\n\t\ta.set(newVal);\n\t});\n\treturn a;\n}\nfunction createVueHook(hook) {\n\treturn ({ path, query } = {}) => {\n\t\tconst pathParams = {};\n\t\tconst queryParams = {};\n\t\tfor (const [key, value] of Object.entries(path ?? {})) {\n\t\t\tconst v = value;\n\t\t\tpathParams[key] = isRef(v) ? refToAtom(v) : v;\n\t\t}\n\t\tfor (const [key, value] of Object.entries(query ?? {})) {\n\t\t\tconst v = value;\n\t\t\tqueryParams[key] = isRef(v) ? refToAtom(v) : v;\n\t\t}\n\t\tconst store = hook.store({\n\t\t\tpath: pathParams,\n\t\t\tquery: queryParams\n\t\t});\n\t\tconst data = ref();\n\t\tconst loading = ref();\n\t\tconst error = ref();\n\t\tconst unsubscribe = store.subscribe((updatedStoreValue) => {\n\t\t\tdata.value = updatedStoreValue.data;\n\t\t\tloading.value = updatedStoreValue.loading;\n\t\t\terror.value = updatedStoreValue.error;\n\t\t});\n\t\tif (getCurrentScope()) onScopeDispose(() => {\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn {\n\t\t\tdata,\n\t\t\tloading,\n\t\t\terror\n\t\t};\n\t};\n}\nfunction createVueMutator(hook) {\n\treturn () => {\n\t\tconst store = useStore(hook.mutatorStore);\n\t\tconst mutate = async (args) => {\n\t\t\tconst { body, path, query } = args;\n\t\t\tconst pathParams = {};\n\t\t\tconst queryParams = {};\n\t\t\tfor (const [key, value] of Object.entries(path ?? {})) {\n\t\t\t\tconst v = value;\n\t\t\t\tpathParams[key] = isRef(v) ? v.value : v;\n\t\t\t}\n\t\t\tfor (const [key, value] of Object.entries(query ?? {})) {\n\t\t\t\tconst v = value;\n\t\t\t\tqueryParams[key] = isRef(v) ? v.value : v;\n\t\t\t}\n\t\t\treturn store.value.mutate({\n\t\t\t\tbody,\n\t\t\t\tpath: pathParams,\n\t\t\t\tquery: queryParams\n\t\t\t});\n\t\t};\n\t\treturn {\n\t\t\tmutate,\n\t\t\tloading: computed$1(() => store.value.loading),\n\t\t\terror: computed$1(() => store.value.error),\n\t\t\tdata: computed$1(() => store.value.data)\n\t\t};\n\t};\n}\nfunction unwrapVueStoreValue(value) {\n\tif (isReadableAtom(value)) return useStore(value);\n\tconst entries = Object.keys(value).map((key) => {\n\t\tconst fieldValue = value[key];\n\t\treturn [key, isReadableAtom(fieldValue) ? useStore(fieldValue) : fieldValue];\n\t});\n\treturn Object.fromEntries(entries);\n}\nfunction createVueStore(hook) {\n\treturn ((...args) => {\n\t\tconst value = \"factory\" in hook ? hook.factory(...args) : hook.obj;\n\t\tconst disposer = value[Symbol.dispose];\n\t\tif (typeof disposer === \"function\" && getCurrentScope()) onScopeDispose(() => {\n\t\t\tdisposer.call(value);\n\t\t});\n\t\treturn unwrapVueStoreValue(value);\n\t});\n}\nfunction useFragno(clientObj) {\n\tconst result = {};\n\tfor (const key in clientObj) {\n\t\tif (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;\n\t\tconst hook = clientObj[key];\n\t\tif (isGetHook(hook)) result[key] = createVueHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createVueMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createVueStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\nfunction useStore(store) {\n\tconst state = shallowRef();\n\tconst unsubscribe = store.subscribe((value) => {\n\t\tstate.value = value;\n\t});\n\tif (getCurrentScope()) onScopeDispose(unsubscribe);\n\treturn state;\n}\n//#endregion\nexport { refToAtom, useFragno, useStore };\n\n//# sourceMappingURL=vue.js.map","import type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\nimport { useFragno } from \"@fragno-dev/core/vue\";\n\nimport { createMcpFragmentClients } from \"..\";\n\nexport function createMcpFragmentClient(config: FragnoPublicClientConfig = {}) {\n return useFragno(createMcpFragmentClients(config));\n}\n"],"mappings":"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"}
|