@assistant-ui/react-mcp 0.1.16 → 0.1.18
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/dist/auth/createOAuthProvider.d.ts +13 -2
- package/dist/auth/createOAuthProvider.d.ts.map +1 -1
- package/dist/auth/createOAuthProvider.js +109 -31
- package/dist/auth/createOAuthProvider.js.map +1 -1
- package/dist/auth/types.d.ts +5 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormAuthFields.js +71 -28
- package/dist/primitives/addForm/McpAddFormAuthFields.js.map +1 -1
- package/dist/primitives/addForm/McpAddFormError.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormError.js +30 -10
- package/dist/primitives/addForm/McpAddFormError.js.map +1 -1
- package/dist/primitives/addForm/McpAddFormNameField.js +31 -18
- package/dist/primitives/addForm/McpAddFormNameField.js.map +1 -1
- package/dist/primitives/addForm/McpAddFormRoot.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormRoot.js +32 -11
- package/dist/primitives/addForm/McpAddFormRoot.js.map +1 -1
- package/dist/primitives/addForm/McpAddFormUrlField.js +31 -18
- package/dist/primitives/addForm/McpAddFormUrlField.js.map +1 -1
- package/dist/primitives/addForm/context.d.ts +9 -1
- package/dist/primitives/addForm/context.d.ts.map +1 -1
- package/dist/primitives/addForm/context.js.map +1 -1
- package/dist/resources/McpManagerResource.d.ts.map +1 -1
- package/dist/resources/McpManagerResource.js +330 -247
- package/dist/resources/McpManagerResource.js.map +1 -1
- package/dist/resources/McpServerRemovalFence.d.ts +7 -0
- package/dist/resources/McpServerRemovalFence.d.ts.map +1 -0
- package/dist/resources/McpServerRemovalFence.js +11 -0
- package/dist/resources/McpServerRemovalFence.js.map +1 -0
- package/dist/resources/McpServerResource.d.ts.map +1 -1
- package/dist/resources/McpServerResource.js +41 -16
- package/dist/resources/McpServerResource.js.map +1 -1
- package/dist/resources/storage/McpLocalStorage.d.ts.map +1 -1
- package/dist/resources/storage/McpLocalStorage.js +16 -1
- package/dist/resources/storage/McpLocalStorage.js.map +1 -1
- package/dist/resources/storage/types.d.ts +10 -8
- package/dist/resources/storage/types.d.ts.map +1 -1
- package/dist/utils/serverUrl.d.ts +8 -0
- package/dist/utils/serverUrl.d.ts.map +1 -0
- package/dist/utils/serverUrl.js +15 -0
- package/dist/utils/serverUrl.js.map +1 -0
- package/package.json +7 -7
- package/src/auth/createOAuthProvider.test.ts +544 -35
- package/src/auth/createOAuthProvider.ts +201 -46
- package/src/auth/types.ts +5 -1
- package/src/primitives/addForm/McpAddFormAccessibility.test.tsx +261 -0
- package/src/primitives/addForm/McpAddFormAuthFields.tsx +33 -15
- package/src/primitives/addForm/McpAddFormError.tsx +17 -3
- package/src/primitives/addForm/McpAddFormNameField.tsx +13 -1
- package/src/primitives/addForm/McpAddFormRoot.tsx +51 -8
- package/src/primitives/addForm/McpAddFormUrlField.tsx +12 -1
- package/src/primitives/addForm/context.tsx +10 -0
- package/src/resources/McpManagerResource.test.ts +712 -9
- package/src/resources/McpManagerResource.ts +208 -56
- package/src/resources/McpServerRemovalFence.ts +21 -0
- package/src/resources/McpServerResource.test.ts +252 -17
- package/src/resources/McpServerResource.ts +40 -15
- package/src/resources/storage/McpLocalStorage.test.ts +28 -0
- package/src/resources/storage/McpLocalStorage.ts +23 -1
- package/src/resources/storage/types.ts +10 -8
- package/src/utils/serverUrl.test.ts +66 -0
- package/src/utils/serverUrl.ts +23 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAddFormError.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Primitive","useAddForm","McpAddFormPrimitiveError","Element","div","Props","props","ref","$","_c","state","error","
|
|
1
|
+
{"version":3,"file":"McpAddFormError.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","isValidElement","Primitive","useAddForm","McpAddFormPrimitiveError","Element","div","Props","props","ref","$","_c","state","ids","error","childId","asChild","children","id","undefined","customId","needsDescriptionWrapper","t0","t1","role","t2","t3","t4","displayName"],"sources":["../../../src/primitives/addForm/McpAddFormError.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n forwardRef,\n isValidElement,\n} from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useAddForm } from \"./context\";\n\nexport namespace McpAddFormPrimitiveError {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\nexport const McpAddFormPrimitiveError = forwardRef<\n McpAddFormPrimitiveError.Element,\n McpAddFormPrimitiveError.Props\n>((props, ref) => {\n const { state, ids } = useAddForm();\n if (!state.error) return null;\n const childId =\n props.asChild && isValidElement<{ id?: string }>(props.children)\n ? props.children.props.id\n : undefined;\n const customId = childId ?? props.id;\n const needsDescriptionWrapper =\n customId !== undefined && customId !== ids.error;\n const error = (\n <Primitive.div\n {...props}\n id={needsDescriptionWrapper ? props.id : ids.error}\n role={props.role ?? \"alert\"}\n ref={ref}\n >\n {props.children ?? state.error}\n </Primitive.div>\n );\n return needsDescriptionWrapper ? <div id={ids.error}>{error}</div> : error;\n});\n\nMcpAddFormPrimitiveError.displayName = \"McpAddFormPrimitive.Error\";\n"],"mappings":";;;;;;AAcA,MAAaM,2BAA2BJ,YAGtCQ,OAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACA,MAAA,EAAAC,OAAAC,QAAuBV,WAAW;CAClC,IAAI,CAACS,MAAKE,OAAM,OAAS;CAKzB,MAAAM,YAHEZ,MAAKQ,WAAYf,eAAgCO,MAAKS,QAAS,IAC3DT,MAAKS,SAAST,MAAMU,KADxBC,KAAAA,MAG0BX,MAAKU;CACjC,MAAAG,0BACED,aAAaD,KAAAA,KAAaC,aAAaP,IAAGC;CAIpC,MAAAQ,KAAAD,0BAA0Bb,MAAKU,KAAML,IAAGC;CACtC,MAAAS,KAAAf,MAAKgB,QAAL;CAGL,MAAAC,KAAAjB,MAAKS,YAAaL,MAAKE;CAAM,IAAAY;CAAA,IAAAhB,EAAA,OAAAF,SAAAE,EAAA,OAAAD,OAAAC,EAAA,OAAAY,MAAAZ,EAAA,OAAAa,MAAAb,EAAA,OAAAe,IAAA;EANhCC,KAAA,oBAAA,UAAA,KAAA;GAAA,GACMlB;GACA,IAAAc;GACE,MAAAC;GACDd;GAEJgB,UAAAA;EACH,CAAA;EAAgBf,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;EAAAb,EAAA,KAAAe;EAAAf,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CARlB,MAAAI,QACEY;CAQA,IAAAC;CAAA,IAAAjB,EAAA,OAAAI,SAAAJ,EAAA,OAAAG,OAAAH,EAAA,OAAAW,yBAAA;EACKM,KAAAN,0BAA0B,oBAAA,OAAA;GAAS,IAAAR,IAAGC;GAASA,UAAAA;EAAY,CAAA,IAA3DA;EAAmEJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAG;EAAAH,EAAA,KAAAW;EAAAX,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OAAnEiB;AAAmE,CAC3E;AAEDvB,yBAAyBwB,cAAc"}
|
|
@@ -5,31 +5,44 @@ import { Primitive } from "@radix-ui/react-primitive";
|
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/primitives/addForm/McpAddFormNameField.tsx
|
|
7
7
|
const McpAddFormPrimitiveNameField = forwardRef((props, ref) => {
|
|
8
|
-
const $ = c(
|
|
9
|
-
const { state, setField } = useAddForm();
|
|
10
|
-
|
|
11
|
-
if ($[0] !== setField) {
|
|
12
|
-
t0 = (e) => setField("name", e.target.value);
|
|
13
|
-
$[0] = setField;
|
|
14
|
-
$[1] = t0;
|
|
15
|
-
} else t0 = $[1];
|
|
8
|
+
const $ = c(13);
|
|
9
|
+
const { state, ids, setField } = useAddForm();
|
|
10
|
+
const t0 = props["aria-invalid"] ?? (state.errorField === "name" ? true : void 0);
|
|
16
11
|
let t1;
|
|
17
|
-
if ($[
|
|
18
|
-
t1 =
|
|
12
|
+
if ($[0] !== ids || $[1] !== props || $[2] !== state.errorField) {
|
|
13
|
+
t1 = [props["aria-describedby"], state.errorField === "name" ? ids.error : null].filter(Boolean).join(" ") || void 0;
|
|
14
|
+
$[0] = ids;
|
|
15
|
+
$[1] = props;
|
|
16
|
+
$[2] = state.errorField;
|
|
17
|
+
$[3] = t1;
|
|
18
|
+
} else t1 = $[3];
|
|
19
|
+
let t2;
|
|
20
|
+
if ($[4] !== setField) {
|
|
21
|
+
t2 = (e) => setField("name", e.target.value);
|
|
22
|
+
$[4] = setField;
|
|
23
|
+
$[5] = t2;
|
|
24
|
+
} else t2 = $[5];
|
|
25
|
+
let t3;
|
|
26
|
+
if ($[6] !== props || $[7] !== ref || $[8] !== state.name || $[9] !== t0 || $[10] !== t1 || $[11] !== t2) {
|
|
27
|
+
t3 = /* @__PURE__ */ jsx(Primitive.input, {
|
|
19
28
|
type: "text",
|
|
20
29
|
placeholder: "Name",
|
|
21
30
|
...props,
|
|
31
|
+
"aria-invalid": t0,
|
|
32
|
+
"aria-describedby": t1,
|
|
22
33
|
ref,
|
|
23
34
|
value: state.name,
|
|
24
|
-
onChange:
|
|
35
|
+
onChange: t2
|
|
25
36
|
});
|
|
26
|
-
$[
|
|
27
|
-
$[
|
|
28
|
-
$[
|
|
29
|
-
$[
|
|
30
|
-
$[
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
$[6] = props;
|
|
38
|
+
$[7] = ref;
|
|
39
|
+
$[8] = state.name;
|
|
40
|
+
$[9] = t0;
|
|
41
|
+
$[10] = t1;
|
|
42
|
+
$[11] = t2;
|
|
43
|
+
$[12] = t3;
|
|
44
|
+
} else t3 = $[12];
|
|
45
|
+
return t3;
|
|
33
46
|
});
|
|
34
47
|
McpAddFormPrimitiveNameField.displayName = "McpAddFormPrimitive.NameField";
|
|
35
48
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAddFormNameField.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Primitive","useAddForm","McpAddFormPrimitiveNameField","Element","input","Props","Omit","props","ref","$","_c","state","setField","t0","e","target","value","
|
|
1
|
+
{"version":3,"file":"McpAddFormNameField.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Primitive","useAddForm","McpAddFormPrimitiveNameField","Element","input","Props","Omit","props","ref","$","_c","state","ids","setField","t0","errorField","undefined","t1","error","filter","Boolean","join","t2","e","target","value","t3","name","displayName"],"sources":["../../../src/primitives/addForm/McpAddFormNameField.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n forwardRef,\n} from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useAddForm } from \"./context\";\n\nexport namespace McpAddFormPrimitiveNameField {\n export type Element = ComponentRef<typeof Primitive.input>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.input>,\n \"value\" | \"onChange\" | \"type\"\n >;\n}\n\nexport const McpAddFormPrimitiveNameField = forwardRef<\n McpAddFormPrimitiveNameField.Element,\n McpAddFormPrimitiveNameField.Props\n>((props, ref) => {\n const { state, ids, setField } = useAddForm();\n return (\n <Primitive.input\n type=\"text\"\n placeholder=\"Name\"\n {...props}\n aria-invalid={\n props[\"aria-invalid\"] ??\n (state.errorField === \"name\" ? true : undefined)\n }\n aria-describedby={\n [\n props[\"aria-describedby\"],\n state.errorField === \"name\" ? ids.error : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n ref={ref}\n value={state.name}\n onChange={(e) => setField(\"name\", e.target.value)}\n />\n );\n});\n\nMcpAddFormPrimitiveNameField.displayName = \"McpAddFormPrimitive.NameField\";\n"],"mappings":";;;;;;AAgBA,MAAaK,+BAA+BH,YAG1CQ,OAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACA,MAAA,EAAAC,OAAAC,KAAAC,aAAiCZ,WAAW;CAOtC,MAAAa,KAAAP,MAAM,oBACLI,MAAKI,eAAgB,SAArB,OAAAC,KAAAA;CAA+C,IAAAC;CAAA,IAAAR,EAAA,OAAAG,OAAAH,EAAA,OAAAF,SAAAE,EAAA,OAAAE,MAAAI,YAAA;EAGhDE,KAAA,CACEV,MAAM,qBACNI,MAAKI,eAAgB,SAASH,IAAGM,QAAjC,IAA8C,CAC/C,CAAAC,OACSC,OAAO,CAAC,CAAAC,KACV,GAAgB,KALxBL,KAAAA;EAKyBP,EAAA,KAAAG;EAAAH,EAAA,KAAAF;EAAAE,EAAA,KAAAE,MAAAI;EAAAN,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,UAAA;EAIjBS,MAAAC,MAAOV,SAAS,QAAQU,EAACC,OAAOC,KAAM;EAAChB,EAAA,KAAAI;EAAAJ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAF,SAAAE,EAAA,OAAAD,OAAAC,EAAA,OAAAE,MAAAgB,QAAAlB,EAAA,OAAAK,MAAAL,EAAA,QAAAQ,MAAAR,EAAA,QAAAa,IAAA;EAlBnDI,KAAA,oBAAA,UAAA,OAAA;GACO,MAAA;GACO,aAAA;GAAM,GACdnB;GAEF,gBAAAO;GAIA,oBAAAG;GAOGT;GACE,OAAAG,MAAKgB;GACF,UAAAL;EAAuC,CAAA;EACjDb,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAE,MAAAgB;EAAAlB,EAAA,KAAAK;EAAAL,EAAA,MAAAQ;EAAAR,EAAA,MAAAa;EAAAb,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OAnBFiB;AAmBE,CAEL;AAEDxB,6BAA6B0B,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAddFormRoot.d.ts","names":[],"sources":["../../../src/primitives/addForm/McpAddFormRoot.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"McpAddFormRoot.d.ts","names":[],"sources":["../../../src/primitives/addForm/McpAddFormRoot.tsx"],"mappings":";;;kBA8CiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;IAG1C,eAAe;IACf;;;cAIS,yCAAuB,0BAAA,KAAA,qBAAA,gBAAA,mCAAA,mBAAA;;;EALlB,eAAC;EACJ;oBAiIb,cAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AddFormContext } from "./context.js";
|
|
2
2
|
import { invokeMcpCallback } from "../../utils/invokeMcpCallback.js";
|
|
3
3
|
import { useAui } from "@assistant-ui/store";
|
|
4
|
-
import { forwardRef, useCallback, useMemo, useState } from "@assistant-ui/tap/react-shim";
|
|
4
|
+
import { forwardRef, useCallback, useId, useMemo, useState } from "@assistant-ui/tap/react-shim";
|
|
5
5
|
import { Primitive } from "@radix-ui/react-primitive";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
//#region src/primitives/addForm/McpAddFormRoot.tsx
|
|
@@ -12,7 +12,8 @@ const INITIAL = {
|
|
|
12
12
|
bearerToken: "",
|
|
13
13
|
scopes: "",
|
|
14
14
|
submitting: false,
|
|
15
|
-
error: null
|
|
15
|
+
error: null,
|
|
16
|
+
errorField: null
|
|
16
17
|
};
|
|
17
18
|
function validateUrl(raw) {
|
|
18
19
|
const trimmed = raw.trim();
|
|
@@ -28,12 +29,25 @@ function validateUrl(raw) {
|
|
|
28
29
|
}
|
|
29
30
|
const McpAddFormPrimitiveRoot = forwardRef(({ onSubmitted, onCancel, ...props }, ref) => {
|
|
30
31
|
const aui = useAui();
|
|
32
|
+
const formId = useId();
|
|
31
33
|
const [state, setState] = useState(INITIAL);
|
|
34
|
+
const ids = useMemo(() => ({
|
|
35
|
+
bearerToken: `${formId}-bearer-token`,
|
|
36
|
+
scopes: `${formId}-oauth-scopes`,
|
|
37
|
+
error: `${formId}-error`
|
|
38
|
+
}), [formId]);
|
|
32
39
|
const setField = useCallback((key, value) => {
|
|
33
|
-
setState((prev) =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
setState((prev) => {
|
|
41
|
+
const clearsError = prev.errorField === "form" || prev.errorField === key || key === "authType" && prev.errorField === "bearerToken";
|
|
42
|
+
return {
|
|
43
|
+
...prev,
|
|
44
|
+
[key]: value,
|
|
45
|
+
...clearsError ? {
|
|
46
|
+
error: null,
|
|
47
|
+
errorField: null
|
|
48
|
+
} : {}
|
|
49
|
+
};
|
|
50
|
+
});
|
|
37
51
|
}, []);
|
|
38
52
|
const reset = useCallback(() => setState(INITIAL), []);
|
|
39
53
|
const buildAuth = useCallback(() => {
|
|
@@ -61,14 +75,16 @@ const McpAddFormPrimitiveRoot = forwardRef(({ onSubmitted, onCancel, ...props },
|
|
|
61
75
|
if (!state.name.trim()) {
|
|
62
76
|
setState((p) => ({
|
|
63
77
|
...p,
|
|
64
|
-
error: "Name is required"
|
|
78
|
+
error: "Name is required",
|
|
79
|
+
errorField: "name"
|
|
65
80
|
}));
|
|
66
81
|
return;
|
|
67
82
|
}
|
|
68
83
|
if (state.authType === "bearer" && !state.bearerToken.trim()) {
|
|
69
84
|
setState((p_0) => ({
|
|
70
85
|
...p_0,
|
|
71
|
-
error: "Bearer token is required"
|
|
86
|
+
error: "Bearer token is required",
|
|
87
|
+
errorField: "bearerToken"
|
|
72
88
|
}));
|
|
73
89
|
return;
|
|
74
90
|
}
|
|
@@ -76,14 +92,16 @@ const McpAddFormPrimitiveRoot = forwardRef(({ onSubmitted, onCancel, ...props },
|
|
|
76
92
|
if ("error" in urlResult) {
|
|
77
93
|
setState((p_1) => ({
|
|
78
94
|
...p_1,
|
|
79
|
-
error: urlResult.error
|
|
95
|
+
error: urlResult.error,
|
|
96
|
+
errorField: "url"
|
|
80
97
|
}));
|
|
81
98
|
return;
|
|
82
99
|
}
|
|
83
100
|
setState((p_2) => ({
|
|
84
101
|
...p_2,
|
|
85
102
|
submitting: true,
|
|
86
|
-
error: null
|
|
103
|
+
error: null,
|
|
104
|
+
errorField: null
|
|
87
105
|
}));
|
|
88
106
|
try {
|
|
89
107
|
const id = await aui.mcp.addCustomServer({
|
|
@@ -97,7 +115,8 @@ const McpAddFormPrimitiveRoot = forwardRef(({ onSubmitted, onCancel, ...props },
|
|
|
97
115
|
setState((p_3) => ({
|
|
98
116
|
...p_3,
|
|
99
117
|
submitting: false,
|
|
100
|
-
error: err instanceof Error ? err.message : String(err)
|
|
118
|
+
error: err instanceof Error ? err.message : String(err),
|
|
119
|
+
errorField: "form"
|
|
101
120
|
}));
|
|
102
121
|
}
|
|
103
122
|
}, [
|
|
@@ -112,12 +131,14 @@ const McpAddFormPrimitiveRoot = forwardRef(({ onSubmitted, onCancel, ...props },
|
|
|
112
131
|
}, [onCancel]);
|
|
113
132
|
const value_0 = useMemo(() => ({
|
|
114
133
|
state,
|
|
134
|
+
ids,
|
|
115
135
|
setField,
|
|
116
136
|
reset,
|
|
117
137
|
submit,
|
|
118
138
|
cancel
|
|
119
139
|
}), [
|
|
120
140
|
state,
|
|
141
|
+
ids,
|
|
121
142
|
setField,
|
|
122
143
|
reset,
|
|
123
144
|
submit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAddFormRoot.js","names":["ComponentPropsWithoutRef","ComponentRef","FormEventHandler","forwardRef","useCallback","useMemo","useState","Primitive","useAui","AddFormContext","AddFormState","MCPAuthConfig","invokeMcpCallback","INITIAL","name","url","authType","bearerToken","scopes","submitting","error","validateUrl","raw","trimmed","trim","parsed","URL","protocol","McpAddFormPrimitiveRoot","Element","form","Props","Omit","onSubmitted","id","onCancel","props","ref","aui","state","setState","setField","key","K","value","prev","reset","buildAuth","type","token","undefined","scopeList","split","map","s","filter","Boolean","length","submit","p","urlResult","mcp","addCustomServer","auth","err","Error","message","String","cancel","onFormSubmit","HTMLFormElement","e","preventDefault","displayName"],"sources":["../../../src/primitives/addForm/McpAddFormRoot.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n type FormEventHandler,\n forwardRef,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useAui } from \"@assistant-ui/store\";\nimport {
|
|
1
|
+
{"version":3,"file":"McpAddFormRoot.js","names":["ComponentPropsWithoutRef","ComponentRef","FormEventHandler","forwardRef","useCallback","useId","useMemo","useState","Primitive","useAui","AddFormContext","AddFormFieldIds","AddFormState","MCPAuthConfig","invokeMcpCallback","INITIAL","name","url","authType","bearerToken","scopes","submitting","error","errorField","validateUrl","raw","trimmed","trim","parsed","URL","protocol","McpAddFormPrimitiveRoot","Element","form","Props","Omit","onSubmitted","id","onCancel","props","ref","aui","formId","state","setState","ids","setField","key","K","value","prev","clearsError","reset","buildAuth","type","token","undefined","scopeList","split","map","s","filter","Boolean","length","submit","p","urlResult","mcp","addCustomServer","auth","err","Error","message","String","cancel","onFormSubmit","HTMLFormElement","e","preventDefault","displayName"],"sources":["../../../src/primitives/addForm/McpAddFormRoot.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n type FormEventHandler,\n forwardRef,\n useCallback,\n useId,\n useMemo,\n useState,\n} from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useAui } from \"@assistant-ui/store\";\nimport {\n AddFormContext,\n type AddFormFieldIds,\n type AddFormState,\n} from \"./context\";\nimport type { MCPAuthConfig } from \"../../mcp-scope\";\nimport { invokeMcpCallback } from \"../../utils/invokeMcpCallback\";\n\nconst INITIAL: AddFormState = {\n name: \"\",\n url: \"\",\n authType: \"oauth\",\n bearerToken: \"\",\n scopes: \"\",\n submitting: false,\n error: null,\n errorField: null,\n};\n\nfunction validateUrl(raw: string): { url: string } | { error: string } {\n const trimmed = raw.trim();\n if (!trimmed) return { error: \"URL is required\" };\n let parsed: URL;\n try {\n parsed = new URL(trimmed);\n } catch {\n return { error: \"Invalid URL\" };\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return { error: \"URL must be http(s)\" };\n }\n return { url: trimmed };\n}\n\nexport namespace McpAddFormPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.form>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.form>,\n \"onSubmit\"\n > & {\n onSubmitted?: (id: string) => void;\n onCancel?: () => void;\n };\n}\n\nexport const McpAddFormPrimitiveRoot = forwardRef<\n McpAddFormPrimitiveRoot.Element,\n McpAddFormPrimitiveRoot.Props\n>(({ onSubmitted, onCancel, ...props }, ref) => {\n const aui = useAui();\n const formId = useId();\n const [state, setState] = useState<AddFormState>(INITIAL);\n const ids = useMemo<AddFormFieldIds>(\n () => ({\n bearerToken: `${formId}-bearer-token`,\n scopes: `${formId}-oauth-scopes`,\n error: `${formId}-error`,\n }),\n [formId],\n );\n\n const setField = useCallback(\n <K extends keyof AddFormState>(key: K, value: AddFormState[K]) => {\n setState((prev) => {\n const clearsError =\n prev.errorField === \"form\" ||\n prev.errorField === key ||\n (key === \"authType\" && prev.errorField === \"bearerToken\");\n return {\n ...prev,\n [key]: value,\n ...(clearsError ? { error: null, errorField: null } : {}),\n };\n });\n },\n [],\n );\n\n const reset = useCallback(() => setState(INITIAL), []);\n\n const buildAuth = useCallback((): MCPAuthConfig => {\n switch (state.authType) {\n case \"none\":\n return { type: \"none\" };\n case \"bearer\":\n return { type: \"bearer\", token: state.bearerToken || undefined };\n case \"oauth\": {\n const scopeList = state.scopes\n .split(/[\\s,]+/)\n .map((s) => s.trim())\n .filter(Boolean);\n return {\n type: \"oauth\",\n scopes: scopeList.length > 0 ? scopeList : undefined,\n };\n }\n }\n }, [state.authType, state.bearerToken, state.scopes]);\n\n const submit = useCallback(async () => {\n if (state.submitting) return;\n if (!state.name.trim()) {\n setState((p) => ({\n ...p,\n error: \"Name is required\",\n errorField: \"name\",\n }));\n return;\n }\n if (state.authType === \"bearer\" && !state.bearerToken.trim()) {\n setState((p) => ({\n ...p,\n error: \"Bearer token is required\",\n errorField: \"bearerToken\",\n }));\n return;\n }\n const urlResult = validateUrl(state.url);\n if (\"error\" in urlResult) {\n setState((p) => ({\n ...p,\n error: urlResult.error,\n errorField: \"url\",\n }));\n return;\n }\n setState((p) => ({\n ...p,\n submitting: true,\n error: null,\n errorField: null,\n }));\n try {\n const id = await aui.mcp.addCustomServer({\n name: state.name.trim(),\n url: urlResult.url,\n auth: buildAuth(),\n });\n setState(INITIAL);\n invokeMcpCallback(\"onSubmitted\", onSubmitted, id);\n } catch (err) {\n setState((p) => ({\n ...p,\n submitting: false,\n error: err instanceof Error ? err.message : String(err),\n errorField: \"form\",\n }));\n }\n }, [aui, buildAuth, onSubmitted, state]);\n\n const cancel = useCallback(() => {\n setState(INITIAL);\n onCancel?.();\n }, [onCancel]);\n\n const value = useMemo(\n () => ({ state, ids, setField, reset, submit, cancel }),\n [state, ids, setField, reset, submit, cancel],\n );\n\n const onFormSubmit: FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n void submit();\n };\n\n return (\n <AddFormContext.Provider value={value}>\n <Primitive.form {...props} ref={ref} onSubmit={onFormSubmit} />\n </AddFormContext.Provider>\n );\n});\n\nMcpAddFormPrimitiveRoot.displayName = \"McpAddFormPrimitive.Root\";\n"],"mappings":"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"}
|
|
@@ -5,32 +5,45 @@ import { Primitive } from "@radix-ui/react-primitive";
|
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/primitives/addForm/McpAddFormUrlField.tsx
|
|
7
7
|
const McpAddFormPrimitiveUrlField = forwardRef((props, ref) => {
|
|
8
|
-
const $ = c(
|
|
9
|
-
const { state, setField } = useAddForm();
|
|
10
|
-
|
|
11
|
-
if ($[0] !== setField) {
|
|
12
|
-
t0 = (e) => setField("url", e.target.value);
|
|
13
|
-
$[0] = setField;
|
|
14
|
-
$[1] = t0;
|
|
15
|
-
} else t0 = $[1];
|
|
8
|
+
const $ = c(13);
|
|
9
|
+
const { state, ids, setField } = useAddForm();
|
|
10
|
+
const t0 = props["aria-invalid"] ?? (state.errorField === "url" ? true : void 0);
|
|
16
11
|
let t1;
|
|
17
|
-
if ($[
|
|
18
|
-
t1 =
|
|
12
|
+
if ($[0] !== ids || $[1] !== props || $[2] !== state.errorField) {
|
|
13
|
+
t1 = [props["aria-describedby"], state.errorField === "url" ? ids.error : null].filter(Boolean).join(" ") || void 0;
|
|
14
|
+
$[0] = ids;
|
|
15
|
+
$[1] = props;
|
|
16
|
+
$[2] = state.errorField;
|
|
17
|
+
$[3] = t1;
|
|
18
|
+
} else t1 = $[3];
|
|
19
|
+
let t2;
|
|
20
|
+
if ($[4] !== setField) {
|
|
21
|
+
t2 = (e) => setField("url", e.target.value);
|
|
22
|
+
$[4] = setField;
|
|
23
|
+
$[5] = t2;
|
|
24
|
+
} else t2 = $[5];
|
|
25
|
+
let t3;
|
|
26
|
+
if ($[6] !== props || $[7] !== ref || $[8] !== state.url || $[9] !== t0 || $[10] !== t1 || $[11] !== t2) {
|
|
27
|
+
t3 = /* @__PURE__ */ jsx(Primitive.input, {
|
|
19
28
|
type: "url",
|
|
20
29
|
inputMode: "url",
|
|
21
30
|
placeholder: "https://example.com/mcp",
|
|
22
31
|
...props,
|
|
32
|
+
"aria-invalid": t0,
|
|
33
|
+
"aria-describedby": t1,
|
|
23
34
|
ref,
|
|
24
35
|
value: state.url,
|
|
25
|
-
onChange:
|
|
36
|
+
onChange: t2
|
|
26
37
|
});
|
|
27
|
-
$[
|
|
28
|
-
$[
|
|
29
|
-
$[
|
|
30
|
-
$[
|
|
31
|
-
$[
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
$[6] = props;
|
|
39
|
+
$[7] = ref;
|
|
40
|
+
$[8] = state.url;
|
|
41
|
+
$[9] = t0;
|
|
42
|
+
$[10] = t1;
|
|
43
|
+
$[11] = t2;
|
|
44
|
+
$[12] = t3;
|
|
45
|
+
} else t3 = $[12];
|
|
46
|
+
return t3;
|
|
34
47
|
});
|
|
35
48
|
McpAddFormPrimitiveUrlField.displayName = "McpAddFormPrimitive.UrlField";
|
|
36
49
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAddFormUrlField.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Primitive","useAddForm","McpAddFormPrimitiveUrlField","Element","input","Props","Omit","props","ref","$","_c","state","setField","t0","e","target","value","
|
|
1
|
+
{"version":3,"file":"McpAddFormUrlField.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Primitive","useAddForm","McpAddFormPrimitiveUrlField","Element","input","Props","Omit","props","ref","$","_c","state","ids","setField","t0","errorField","undefined","t1","error","filter","Boolean","join","t2","e","target","value","t3","url","displayName"],"sources":["../../../src/primitives/addForm/McpAddFormUrlField.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n forwardRef,\n} from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useAddForm } from \"./context\";\n\nexport namespace McpAddFormPrimitiveUrlField {\n export type Element = ComponentRef<typeof Primitive.input>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.input>,\n \"value\" | \"onChange\" | \"type\"\n >;\n}\n\nexport const McpAddFormPrimitiveUrlField = forwardRef<\n McpAddFormPrimitiveUrlField.Element,\n McpAddFormPrimitiveUrlField.Props\n>((props, ref) => {\n const { state, ids, setField } = useAddForm();\n return (\n <Primitive.input\n type=\"url\"\n inputMode=\"url\"\n placeholder=\"https://example.com/mcp\"\n {...props}\n aria-invalid={\n props[\"aria-invalid\"] ?? (state.errorField === \"url\" ? true : undefined)\n }\n aria-describedby={\n [\n props[\"aria-describedby\"],\n state.errorField === \"url\" ? ids.error : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n ref={ref}\n value={state.url}\n onChange={(e) => setField(\"url\", e.target.value)}\n />\n );\n});\n\nMcpAddFormPrimitiveUrlField.displayName = \"McpAddFormPrimitive.UrlField\";\n"],"mappings":";;;;;;AAgBA,MAAaK,8BAA8BH,YAGzCQ,OAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACA,MAAA,EAAAC,OAAAC,KAAAC,aAAiCZ,WAAW;CAQtC,MAAAa,KAAAP,MAAM,oBAAoBI,MAAKI,eAAgB,QAArB,OAAAC,KAAAA;CAA8C,IAAAC;CAAA,IAAAR,EAAA,OAAAG,OAAAH,EAAA,OAAAF,SAAAE,EAAA,OAAAE,MAAAI,YAAA;EAGxEE,KAAA,CACEV,MAAM,qBACNI,MAAKI,eAAgB,QAAQH,IAAGM,QAAhC,IAA6C,CAC9C,CAAAC,OACSC,OAAO,CAAC,CAAAC,KACV,GAAgB,KALxBL,KAAAA;EAKyBP,EAAA,KAAAG;EAAAH,EAAA,KAAAF;EAAAE,EAAA,KAAAE,MAAAI;EAAAN,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,UAAA;EAIjBS,MAAAC,MAAOV,SAAS,OAAOU,EAACC,OAAOC,KAAM;EAAChB,EAAA,KAAAI;EAAAJ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAF,SAAAE,EAAA,OAAAD,OAAAC,EAAA,OAAAE,MAAAgB,OAAAlB,EAAA,OAAAK,MAAAL,EAAA,QAAAQ,MAAAR,EAAA,QAAAa,IAAA;EAlBlDI,KAAA,oBAAA,UAAA,OAAA;GACO,MAAA;GACK,WAAA;GACE,aAAA;GAAyB,GACjCnB;GAEF,gBAAAO;GAGA,oBAAAG;GAOGT;GACE,OAAAG,MAAKgB;GACF,UAAAL;EAAsC,CAAA;EAChDb,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAE,MAAAgB;EAAAlB,EAAA,KAAAK;EAAAL,EAAA,MAAAQ;EAAAR,EAAA,MAAAa;EAAAb,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OAnBFiB;AAmBE,CAEL;AAEDxB,4BAA4B0B,cAAc"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { MCPAuthConfig } from "../../mcp-scope.js";
|
|
2
2
|
//#region src/primitives/addForm/context.d.ts
|
|
3
3
|
type AddFormAuthType = MCPAuthConfig["type"];
|
|
4
|
+
type AddFormErrorField = "name" | "url" | "bearerToken" | "form" | null;
|
|
5
|
+
type AddFormFieldIds = {
|
|
6
|
+
bearerToken: string;
|
|
7
|
+
scopes: string;
|
|
8
|
+
error: string;
|
|
9
|
+
};
|
|
4
10
|
type AddFormState = {
|
|
5
11
|
name: string;
|
|
6
12
|
url: string;
|
|
@@ -9,9 +15,11 @@ type AddFormState = {
|
|
|
9
15
|
scopes: string;
|
|
10
16
|
submitting: boolean;
|
|
11
17
|
error: string | null;
|
|
18
|
+
errorField: AddFormErrorField;
|
|
12
19
|
};
|
|
13
20
|
type AddFormContextValue = {
|
|
14
21
|
state: AddFormState;
|
|
22
|
+
ids: AddFormFieldIds;
|
|
15
23
|
setField: <K extends keyof AddFormState>(key: K, value: AddFormState[K]) => void;
|
|
16
24
|
reset: () => void;
|
|
17
25
|
submit: () => Promise<void>;
|
|
@@ -20,5 +28,5 @@ type AddFormContextValue = {
|
|
|
20
28
|
declare const AddFormContext: import("react").Context<AddFormContextValue | null>;
|
|
21
29
|
declare const useAddForm: () => AddFormContextValue;
|
|
22
30
|
//#endregion
|
|
23
|
-
export { AddFormAuthType, AddFormContext, AddFormContextValue, AddFormState, useAddForm };
|
|
31
|
+
export { AddFormAuthType, AddFormContext, AddFormContextValue, AddFormErrorField, AddFormFieldIds, AddFormState, useAddForm };
|
|
24
32
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../src/primitives/addForm/context.tsx"],"mappings":";;KAGY,kBAAkB;KAElB;EACV;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;;
|
|
1
|
+
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../src/primitives/addForm/context.tsx"],"mappings":";;KAGY,kBAAkB;KAElB;KAEA;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA,YAAY;;KAGF;EACV,OAAO;EACP,KAAK;EACL,WAAW,gBAAgB,cACzB,KAAK,GACL,OAAO,aAAa;EAEtB;EACA,cAAc;EACd;;cAGW,gCAAc,QAAA;cAEd,kBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["createContext","useContext","MCPAuthConfig","AddFormAuthType","
|
|
1
|
+
{"version":3,"file":"context.js","names":["createContext","useContext","MCPAuthConfig","AddFormAuthType","AddFormErrorField","AddFormFieldIds","bearerToken","scopes","error","AddFormState","name","url","authType","submitting","errorField","AddFormContextValue","state","ids","setField","key","K","value","reset","submit","Promise","cancel","AddFormContext","useAddForm","ctx","Error"],"sources":["../../../src/primitives/addForm/context.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MCPAuthConfig } from \"../../mcp-scope\";\n\nexport type AddFormAuthType = MCPAuthConfig[\"type\"];\n\nexport type AddFormErrorField = \"name\" | \"url\" | \"bearerToken\" | \"form\" | null;\n\nexport type AddFormFieldIds = {\n bearerToken: string;\n scopes: string;\n error: string;\n};\n\nexport type AddFormState = {\n name: string;\n url: string;\n authType: AddFormAuthType;\n bearerToken: string;\n scopes: string;\n submitting: boolean;\n error: string | null;\n errorField: AddFormErrorField;\n};\n\nexport type AddFormContextValue = {\n state: AddFormState;\n ids: AddFormFieldIds;\n setField: <K extends keyof AddFormState>(\n key: K,\n value: AddFormState[K],\n ) => void;\n reset: () => void;\n submit: () => Promise<void>;\n cancel: () => void;\n};\n\nexport const AddFormContext = createContext<AddFormContextValue | null>(null);\n\nexport const useAddForm = (): AddFormContextValue => {\n const ctx = useContext(AddFormContext);\n if (!ctx) {\n throw new Error(\n \"McpAddFormPrimitive.* must be used inside McpAddFormPrimitive.Root\",\n );\n }\n return ctx;\n};\n"],"mappings":";;AAoCA,MAAa0B,iBAAiB1B,cAA0C,IAAI;AAE5E,MAAa2B,mBAAa;CACxB,MAAAC,MAAY3B,WAAWyB,cAAc;CACrC,IAAI,CAACE,KACH,MAAM,IAAIC,MACR,oEACF;CACD,OACMD;AAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpManagerResource.d.ts","names":[],"sources":["../../src/resources/McpManagerResource.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"McpManagerResource.d.ts","names":[],"sources":["../../src/resources/McpManagerResource.ts"],"mappings":";;;;KAgCY;EACV,aAAa;EACb,UAAU;;EAEV;;EAEA;;EAEA;;cAyaW,gDAAkB,SAAA,sBAAA,OAAA"}
|