@gradio/core 1.0.0-dev.0 → 1.0.0-dev.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/CHANGELOG.md +79 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/src/Blocks.svelte +518 -1001
- package/dist/src/Blocks.svelte.d.ts +31 -45
- package/dist/src/Embed.svelte +82 -55
- package/dist/src/Embed.svelte.d.ts +39 -30
- package/dist/src/Login.svelte +33 -29
- package/dist/src/Login.svelte.d.ts +21 -19
- package/dist/src/MountComponents.svelte +19 -25
- package/dist/src/MountComponents.svelte.d.ts +5 -28
- package/dist/src/{init.d.ts → _init.d.ts} +5 -4
- package/dist/src/{init.js → _init.js} +31 -108
- package/dist/src/api_docs/ApiBanner.svelte +12 -8
- package/dist/src/api_docs/ApiBanner.svelte.d.ts +22 -20
- package/dist/src/api_docs/ApiDocs.svelte +337 -245
- package/dist/src/api_docs/ApiDocs.svelte.d.ts +26 -24
- package/dist/src/api_docs/ApiRecorder.svelte +9 -3
- package/dist/src/api_docs/ApiRecorder.svelte.d.ts +19 -17
- package/dist/src/api_docs/CodeSnippet.svelte +60 -30
- package/dist/src/api_docs/CodeSnippet.svelte.d.ts +27 -24
- package/dist/src/api_docs/CopyButton.svelte +69 -13
- package/dist/src/api_docs/CopyButton.svelte.d.ts +18 -16
- package/dist/src/api_docs/CopyMarkdown.svelte +734 -0
- package/dist/src/api_docs/CopyMarkdown.svelte.d.ts +37 -0
- package/dist/src/api_docs/EndpointDetail.svelte +8 -6
- package/dist/src/api_docs/EndpointDetail.svelte.d.ts +20 -18
- package/dist/src/api_docs/IconArrowUpRight.svelte +34 -0
- package/dist/src/api_docs/IconArrowUpRight.svelte.d.ts +20 -0
- package/dist/src/api_docs/IconCaret.svelte +39 -0
- package/dist/src/api_docs/IconCaret.svelte.d.ts +20 -0
- package/dist/src/api_docs/IconHuggingChat.svelte +62 -0
- package/dist/src/api_docs/IconHuggingChat.svelte.d.ts +20 -0
- package/dist/src/api_docs/InputPayload.svelte +17 -11
- package/dist/src/api_docs/InputPayload.svelte.d.ts +25 -23
- package/dist/src/api_docs/InstallSnippet.svelte +9 -6
- package/dist/src/api_docs/InstallSnippet.svelte.d.ts +18 -16
- package/dist/src/api_docs/MCPSnippet.svelte +119 -99
- package/dist/src/api_docs/MCPSnippet.svelte.d.ts +59 -58
- package/dist/src/api_docs/NoApi.svelte +7 -4
- package/dist/src/api_docs/NoApi.svelte.d.ts +20 -18
- package/dist/src/api_docs/ParametersSnippet.svelte +8 -6
- package/dist/src/api_docs/ParametersSnippet.svelte.d.ts +21 -19
- package/dist/src/api_docs/RecordingSnippet.svelte +124 -110
- package/dist/src/api_docs/RecordingSnippet.svelte.d.ts +24 -22
- package/dist/src/api_docs/ResponseSnippet.svelte +7 -5
- package/dist/src/api_docs/ResponseSnippet.svelte.d.ts +21 -19
- package/dist/src/api_docs/Settings.svelte +73 -62
- package/dist/src/api_docs/Settings.svelte.d.ts +25 -23
- package/dist/src/api_docs/SettingsBanner.svelte +11 -8
- package/dist/src/api_docs/SettingsBanner.svelte.d.ts +20 -18
- package/dist/src/api_docs/TryButton.svelte +5 -3
- package/dist/src/api_docs/TryButton.svelte.d.ts +19 -17
- package/dist/src/api_docs/img/IconCheck.svelte +33 -0
- package/dist/src/api_docs/img/IconCheck.svelte.d.ts +26 -0
- package/dist/src/api_docs/img/IconCopy.svelte +40 -0
- package/dist/src/api_docs/img/IconCopy.svelte.d.ts +26 -0
- package/dist/src/api_docs/img/clear.svelte.d.ts +22 -21
- package/dist/src/dependency.d.ts +142 -0
- package/dist/src/dependency.js +653 -0
- package/dist/src/init.svelte.d.ts +78 -0
- package/dist/src/init.svelte.js +469 -0
- package/dist/src/init_utils.d.ts +32 -0
- package/dist/src/init_utils.js +73 -0
- package/dist/src/lang/en.json +10 -1
- package/dist/src/lang/get_lang_names.js +0 -3
- package/dist/src/lang/ru.json +10 -1
- package/dist/src/stores.d.ts +0 -21
- package/dist/src/stories/I18nMultiLanguageTestComponent.svelte +5 -3
- package/dist/src/stories/I18nMultiLanguageTestComponent.svelte.d.ts +16 -14
- package/dist/src/stories/I18nTestSetup.svelte +14 -10
- package/dist/src/stories/I18nTestSetup.svelte.d.ts +18 -16
- package/dist/src/types.d.ts +30 -26
- package/index.ts +1 -1
- package/package.json +59 -59
- package/src/Blocks.svelte +344 -1063
- package/src/MountComponents.svelte +17 -27
- package/src/{init.ts → _init.ts} +49 -126
- package/src/api_docs/ApiDocs.svelte +65 -60
- package/src/api_docs/ApiRecorder.svelte +3 -0
- package/src/api_docs/CodeSnippet.svelte +20 -5
- package/src/api_docs/CopyButton.svelte +61 -7
- package/src/api_docs/CopyMarkdown.svelte +734 -0
- package/src/api_docs/IconArrowUpRight.svelte +34 -0
- package/src/api_docs/IconCaret.svelte +39 -0
- package/src/api_docs/IconHuggingChat.svelte +62 -0
- package/src/api_docs/MCPSnippet.svelte +24 -46
- package/src/api_docs/ParametersSnippet.svelte +1 -1
- package/src/api_docs/ResponseSnippet.svelte +1 -1
- package/src/api_docs/Settings.svelte +11 -11
- package/src/api_docs/img/IconCheck.svelte +33 -0
- package/src/api_docs/img/IconCopy.svelte +40 -0
- package/src/dependency.ts +880 -0
- package/src/init.svelte.ts +717 -0
- package/src/init_utils.ts +99 -0
- package/src/lang/en.json +10 -1
- package/src/lang/get_lang_names.js +0 -3
- package/src/lang/ru.json +10 -1
- package/src/stores.ts +22 -22
- package/src/types.ts +54 -43
- package/dist/src/Render.svelte +0 -105
- package/dist/src/Render.svelte.d.ts +0 -31
- package/dist/src/RenderComponent.svelte +0 -72
- package/dist/src/RenderComponent.svelte.d.ts +0 -33
- package/src/Render.svelte +0 -126
- package/src/RenderComponent.svelte +0 -91
|
@@ -1,230 +1,294 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
let
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
let
|
|
103
|
-
let
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
import { onMount, createEventDispatcher } from "svelte";
|
|
4
|
+
import type { ComponentMeta, Dependency } from "../types";
|
|
5
|
+
import NoApi from "./NoApi.svelte";
|
|
6
|
+
import type { Client } from "@gradio/client";
|
|
7
|
+
import type { Payload } from "../types";
|
|
8
|
+
|
|
9
|
+
import ApiBanner from "./ApiBanner.svelte";
|
|
10
|
+
import { BaseButton as Button } from "@gradio/button";
|
|
11
|
+
import ParametersSnippet from "./ParametersSnippet.svelte";
|
|
12
|
+
import InstallSnippet from "./InstallSnippet.svelte";
|
|
13
|
+
import CodeSnippet from "./CodeSnippet.svelte";
|
|
14
|
+
import RecordingSnippet from "./RecordingSnippet.svelte";
|
|
15
|
+
import CopyButton from "./CopyButton.svelte";
|
|
16
|
+
import { Block } from "@gradio/atoms";
|
|
17
|
+
|
|
18
|
+
import python from "./img/python.svg";
|
|
19
|
+
import javascript from "./img/javascript.svg";
|
|
20
|
+
import bash from "./img/bash.svg";
|
|
21
|
+
import ResponseSnippet from "./ResponseSnippet.svelte";
|
|
22
|
+
import mcp from "./img/mcp.svg";
|
|
23
|
+
import MCPSnippet from "./MCPSnippet.svelte";
|
|
24
|
+
import CopyMarkdown from "./CopyMarkdown.svelte";
|
|
25
|
+
|
|
26
|
+
export let dependencies: Dependency[];
|
|
27
|
+
export let root: string;
|
|
28
|
+
export let app: Awaited<ReturnType<typeof Client.connect>>;
|
|
29
|
+
export let space_id: string | null;
|
|
30
|
+
export let root_node: ComponentMeta;
|
|
31
|
+
export let username: string | null;
|
|
32
|
+
|
|
33
|
+
const js_docs =
|
|
34
|
+
"https://www.gradio.app/guides/getting-started-with-the-js-client";
|
|
35
|
+
const py_docs =
|
|
36
|
+
"https://www.gradio.app/guides/getting-started-with-the-python-client";
|
|
37
|
+
const bash_docs =
|
|
38
|
+
"https://www.gradio.app/guides/querying-gradio-apps-with-curl";
|
|
39
|
+
const spaces_docs_suffix = "#connecting-to-a-hugging-face-space";
|
|
40
|
+
const mcp_docs =
|
|
41
|
+
"https://www.gradio.app/guides/building-mcp-server-with-gradio";
|
|
42
|
+
|
|
43
|
+
let api_count = dependencies.filter(
|
|
44
|
+
(dependency) => dependency.api_visibility === "public"
|
|
45
|
+
).length;
|
|
46
|
+
|
|
47
|
+
if (root === "") {
|
|
48
|
+
root = location.protocol + "//" + location.host + location.pathname;
|
|
49
|
+
}
|
|
50
|
+
if (!root.endsWith("/")) {
|
|
51
|
+
root += "/";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export let api_calls: Payload[] = [];
|
|
55
|
+
let current_language: "python" | "javascript" | "bash" | "mcp" = "python";
|
|
56
|
+
|
|
57
|
+
function set_query_param(key: string, value: string) {
|
|
58
|
+
const url = new URL(window.location.href);
|
|
59
|
+
url.searchParams.set(key, value);
|
|
60
|
+
history.replaceState(null, "", url.toString());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function get_query_param(key: string): string | null {
|
|
64
|
+
const url = new URL(window.location.href);
|
|
65
|
+
return url.searchParams.get(key);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function is_valid_language(lang: string | null): boolean {
|
|
69
|
+
return ["python", "javascript", "bash", "mcp"].includes(lang ?? "");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const langs = [
|
|
73
|
+
["python", "Python", python],
|
|
74
|
+
["javascript", "JavaScript", javascript],
|
|
75
|
+
["bash", "cURL", bash],
|
|
76
|
+
["mcp", "MCP", mcp]
|
|
77
|
+
] as const;
|
|
78
|
+
|
|
79
|
+
let is_running = false;
|
|
80
|
+
let mcp_server_active = false;
|
|
81
|
+
|
|
82
|
+
async function get_info(): Promise<{
|
|
83
|
+
named_endpoints: any;
|
|
84
|
+
unnamed_endpoints: any;
|
|
85
|
+
}> {
|
|
86
|
+
let response = await fetch(
|
|
87
|
+
root.replace(/\/$/, "") + app.api_prefix + "/info"
|
|
88
|
+
);
|
|
89
|
+
let data = await response.json();
|
|
90
|
+
return data;
|
|
91
|
+
}
|
|
92
|
+
async function get_js_info(): Promise<Record<string, any>> {
|
|
93
|
+
let js_api_info = await app.view_api();
|
|
94
|
+
return js_api_info;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
let info: {
|
|
98
|
+
named_endpoints: any;
|
|
99
|
+
unnamed_endpoints: any;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
let js_info: Record<string, any>;
|
|
103
|
+
let analytics: Record<string, any>;
|
|
104
|
+
|
|
105
|
+
get_info().then((data) => {
|
|
106
|
+
info = data;
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
get_js_info().then((js_api_info) => {
|
|
110
|
+
js_info = js_api_info;
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
async function get_summary(): Promise<{
|
|
114
|
+
functions: any;
|
|
115
|
+
}> {
|
|
116
|
+
let response = await fetch(root.replace(/\/$/, "") + "/monitoring/summary");
|
|
117
|
+
let data = await response.json();
|
|
118
|
+
return data;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
get_summary().then((summary) => {
|
|
122
|
+
analytics = summary.functions;
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const dispatch = createEventDispatcher();
|
|
126
|
+
|
|
127
|
+
$: selected_tools_array = Array.from(selected_tools);
|
|
128
|
+
$: selected_tools_without_prefix =
|
|
129
|
+
selected_tools_array.map(remove_tool_prefix);
|
|
130
|
+
$: mcp_server_url_streamable =
|
|
131
|
+
selected_tools_array.length > 0 &&
|
|
132
|
+
selected_tools_array.length < tools.length
|
|
133
|
+
? `${root}gradio_api/mcp/?tools=${selected_tools_without_prefix.join(",")}`
|
|
134
|
+
: `${root}gradio_api/mcp/`;
|
|
135
|
+
|
|
136
|
+
interface ToolParameter {
|
|
137
|
+
title?: string;
|
|
138
|
+
type: string;
|
|
139
|
+
description: string;
|
|
140
|
+
format?: string;
|
|
141
|
+
default?: any;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface Tool {
|
|
145
|
+
name: string;
|
|
146
|
+
description: string;
|
|
147
|
+
parameters: Record<string, ToolParameter>;
|
|
148
|
+
expanded?: boolean;
|
|
149
|
+
meta: {
|
|
150
|
+
mcp_type: "tool" | "resource" | "prompt";
|
|
151
|
+
file_data_present: boolean;
|
|
152
|
+
endpoint_name: string;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
let tools: Tool[] = [];
|
|
157
|
+
let headers: string[] = [];
|
|
158
|
+
let mcp_json_stdio: any;
|
|
159
|
+
let file_data_present = false;
|
|
160
|
+
let selected_tools: Set<string> = new Set();
|
|
161
|
+
let tool_prefix = space_id ? space_id.split("/").pop() + "_" : "";
|
|
162
|
+
|
|
163
|
+
function remove_tool_prefix(toolName: string): string {
|
|
164
|
+
if (tool_prefix && toolName.startsWith(tool_prefix)) {
|
|
165
|
+
return toolName.slice(tool_prefix.length);
|
|
166
|
+
}
|
|
167
|
+
return toolName;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const upload_file_mcp_server = {
|
|
171
|
+
command: "uvx",
|
|
172
|
+
args: [
|
|
173
|
+
"--from",
|
|
174
|
+
"gradio[mcp]",
|
|
175
|
+
"gradio",
|
|
176
|
+
"upload-mcp",
|
|
177
|
+
root,
|
|
178
|
+
"<UPLOAD_DIRECTORY>"
|
|
179
|
+
]
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
async function fetch_mcp_tools() {
|
|
183
|
+
try {
|
|
184
|
+
let schema_url = `${root}gradio_api/mcp/schema`;
|
|
185
|
+
const response = await fetch(schema_url);
|
|
186
|
+
const schema = await response.json();
|
|
187
|
+
file_data_present = schema
|
|
188
|
+
.map((tool: any) => tool.meta?.file_data_present)
|
|
189
|
+
.some((present: boolean) => present);
|
|
190
|
+
|
|
191
|
+
tools = schema.map((tool: any) => ({
|
|
192
|
+
name: tool.name,
|
|
193
|
+
description: tool.description || "",
|
|
194
|
+
parameters: tool.inputSchema?.properties || {},
|
|
195
|
+
meta: tool.meta,
|
|
196
|
+
expanded: false,
|
|
197
|
+
endpoint_name: tool.endpoint_name
|
|
198
|
+
}));
|
|
199
|
+
selected_tools = new Set(tools.map((tool) => tool.name));
|
|
200
|
+
headers = schema.map((tool: any) => tool.meta?.headers || []).flat();
|
|
201
|
+
if (headers.length > 0) {
|
|
202
|
+
mcp_json_stdio = {
|
|
203
|
+
mcpServers: {
|
|
204
|
+
gradio: {
|
|
205
|
+
command: "npx",
|
|
206
|
+
args: [
|
|
207
|
+
"mcp-remote",
|
|
208
|
+
mcp_server_url_streamable,
|
|
209
|
+
"--transport",
|
|
210
|
+
"streamable-http",
|
|
211
|
+
...headers
|
|
212
|
+
.map((header) => [
|
|
213
|
+
"--header",
|
|
214
|
+
`${header}: <YOUR_HEADER_VALUE>`
|
|
215
|
+
])
|
|
216
|
+
.flat()
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
} else {
|
|
222
|
+
mcp_json_stdio = {
|
|
223
|
+
mcpServers: {
|
|
224
|
+
gradio: {
|
|
225
|
+
command: "npx",
|
|
226
|
+
args: [
|
|
227
|
+
"mcp-remote",
|
|
228
|
+
mcp_server_url_streamable,
|
|
229
|
+
"--transport",
|
|
230
|
+
"streamable-http"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
if (file_data_present) {
|
|
236
|
+
mcp_json_stdio.mcpServers.upload_files_to_gradio =
|
|
237
|
+
upload_file_mcp_server;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
} catch (error) {
|
|
241
|
+
console.error("Failed to fetch MCP tools:", error);
|
|
242
|
+
tools = [];
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
let markdown_code_snippets: Record<string, Record<string, string>> = {};
|
|
247
|
+
|
|
248
|
+
$: markdown_code_snippets;
|
|
249
|
+
|
|
250
|
+
let config_snippets: Record<string, string> = {};
|
|
251
|
+
|
|
252
|
+
$: config_snippets;
|
|
253
|
+
|
|
254
|
+
onMount(() => {
|
|
255
|
+
const controller = new AbortController();
|
|
256
|
+
const signal = controller.signal;
|
|
257
|
+
|
|
258
|
+
document.body.style.overflow = "hidden";
|
|
259
|
+
if ("parentIFrame" in window) {
|
|
260
|
+
window.parentIFrame?.scrollTo(0, 0);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const lang_param = get_query_param("lang");
|
|
264
|
+
if (is_valid_language(lang_param)) {
|
|
265
|
+
current_language = lang_param as "python" | "javascript" | "bash" | "mcp";
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const mcp_schema_url = `${root}gradio_api/mcp/schema`;
|
|
269
|
+
fetch(mcp_schema_url, { signal: signal })
|
|
270
|
+
.then((response) => {
|
|
271
|
+
mcp_server_active = response.ok;
|
|
272
|
+
if (mcp_server_active) {
|
|
273
|
+
fetch_mcp_tools();
|
|
274
|
+
if (!is_valid_language(lang_param)) {
|
|
275
|
+
current_language = "mcp";
|
|
276
|
+
}
|
|
277
|
+
} else {
|
|
278
|
+
if (!is_valid_language(lang_param)) {
|
|
279
|
+
current_language = "python";
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
controller.abort();
|
|
283
|
+
})
|
|
284
|
+
.catch(() => {
|
|
285
|
+
mcp_server_active = false;
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
return () => {
|
|
289
|
+
document.body.style.overflow = "auto";
|
|
290
|
+
};
|
|
291
|
+
});
|
|
228
292
|
</script>
|
|
229
293
|
|
|
230
294
|
{#if info && analytics}
|
|
@@ -239,10 +303,32 @@ onMount(() => {
|
|
|
239
303
|
</div>
|
|
240
304
|
|
|
241
305
|
<div class="docs-wrap">
|
|
242
|
-
<div
|
|
306
|
+
<div
|
|
307
|
+
class="client-doc"
|
|
308
|
+
style="display: flex; align-items: center; justify-content: space-between;"
|
|
309
|
+
>
|
|
243
310
|
<p style="font-size: var(--text-lg);">
|
|
244
311
|
Choose one of the following ways to interact with the API.
|
|
245
312
|
</p>
|
|
313
|
+
<CopyMarkdown
|
|
314
|
+
{current_language}
|
|
315
|
+
{space_id}
|
|
316
|
+
{root}
|
|
317
|
+
{api_count}
|
|
318
|
+
{tools}
|
|
319
|
+
{py_docs}
|
|
320
|
+
{js_docs}
|
|
321
|
+
{bash_docs}
|
|
322
|
+
{mcp_docs}
|
|
323
|
+
{spaces_docs_suffix}
|
|
324
|
+
{mcp_server_active}
|
|
325
|
+
{mcp_server_url_streamable}
|
|
326
|
+
{config_snippets}
|
|
327
|
+
{markdown_code_snippets}
|
|
328
|
+
{dependencies}
|
|
329
|
+
{info}
|
|
330
|
+
{js_info}
|
|
331
|
+
/>
|
|
246
332
|
</div>
|
|
247
333
|
<div class="endpoint">
|
|
248
334
|
<div class="snippets">
|
|
@@ -305,25 +391,26 @@ onMount(() => {
|
|
|
305
391
|
href={current_language == "python" ? py_docs : js_docs}
|
|
306
392
|
target="_blank">docs</a
|
|
307
393
|
>) if you don't already have it installed.
|
|
308
|
-
{:else if current_language == "
|
|
309
|
-
<MCPSnippet
|
|
310
|
-
{mcp_server_active}
|
|
311
|
-
{mcp_server_url}
|
|
312
|
-
{mcp_server_url_streamable}
|
|
313
|
-
tools={tools.filter((tool) => selected_tools.has(tool.name))}
|
|
314
|
-
all_tools={tools}
|
|
315
|
-
bind:selected_tools
|
|
316
|
-
{mcp_json_sse}
|
|
317
|
-
{mcp_json_stdio}
|
|
318
|
-
{file_data_present}
|
|
319
|
-
{mcp_docs}
|
|
320
|
-
{analytics}
|
|
321
|
-
/>
|
|
322
|
-
{:else}
|
|
394
|
+
{:else if current_language == "bash"}
|
|
323
395
|
1. Confirm that you have cURL installed on your system.
|
|
324
396
|
{/if}
|
|
325
397
|
</p>
|
|
326
398
|
|
|
399
|
+
<div class:hidden={current_language !== "mcp"}>
|
|
400
|
+
<MCPSnippet
|
|
401
|
+
{mcp_server_active}
|
|
402
|
+
{mcp_server_url_streamable}
|
|
403
|
+
tools={tools.filter((tool) => selected_tools.has(tool.name))}
|
|
404
|
+
all_tools={tools}
|
|
405
|
+
bind:selected_tools
|
|
406
|
+
{mcp_json_stdio}
|
|
407
|
+
{file_data_present}
|
|
408
|
+
{mcp_docs}
|
|
409
|
+
{analytics}
|
|
410
|
+
bind:config_snippets
|
|
411
|
+
/>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
327
414
|
{#if current_language !== "mcp"}
|
|
328
415
|
<InstallSnippet {current_language} />
|
|
329
416
|
|
|
@@ -377,7 +464,7 @@ onMount(() => {
|
|
|
377
464
|
{/if}
|
|
378
465
|
{/if}
|
|
379
466
|
|
|
380
|
-
{
|
|
467
|
+
<div class:hidden={current_language === "mcp"}>
|
|
381
468
|
{#each dependencies as dependency}
|
|
382
469
|
{#if dependency.api_visibility === "public" && info.named_endpoints["/" + dependency.api_name]}
|
|
383
470
|
<div class="endpoint-container">
|
|
@@ -395,6 +482,7 @@ onMount(() => {
|
|
|
395
482
|
"/" + dependency.api_name
|
|
396
483
|
].description}
|
|
397
484
|
{analytics}
|
|
485
|
+
bind:markdown_code_snippets
|
|
398
486
|
/>
|
|
399
487
|
|
|
400
488
|
<ParametersSnippet
|
|
@@ -419,7 +507,7 @@ onMount(() => {
|
|
|
419
507
|
</div>
|
|
420
508
|
{/if}
|
|
421
509
|
{/each}
|
|
422
|
-
|
|
510
|
+
</div>
|
|
423
511
|
</div>
|
|
424
512
|
</div>
|
|
425
513
|
{:else}
|
|
@@ -614,4 +702,8 @@ onMount(() => {
|
|
|
614
702
|
.api-name {
|
|
615
703
|
color: var(--color-accent);
|
|
616
704
|
}
|
|
705
|
+
|
|
706
|
+
.hidden {
|
|
707
|
+
display: none;
|
|
708
|
+
}
|
|
617
709
|
</style>
|