@assistant-ui/react-mcp 0.1.18 → 0.1.20

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.
Files changed (192) hide show
  1. package/dist/auth/buildHeaders.d.ts +3 -6
  2. package/dist/auth/buildHeaders.d.ts.map +1 -1
  3. package/dist/auth/createOAuthProvider.d.ts +24 -26
  4. package/dist/auth/createOAuthProvider.d.ts.map +1 -1
  5. package/dist/auth/types.d.ts +13 -16
  6. package/dist/auth/types.d.ts.map +1 -1
  7. package/dist/connector.d.ts +2 -5
  8. package/dist/connector.d.ts.map +1 -1
  9. package/dist/context/McpConnectorByIndexProvider.d.ts +3 -6
  10. package/dist/context/McpConnectorByIndexProvider.d.ts.map +1 -1
  11. package/dist/context/McpConnectorByIndexProvider.js +1 -1
  12. package/dist/context/McpCustomServerByIndexProvider.d.ts +3 -6
  13. package/dist/context/McpCustomServerByIndexProvider.d.ts.map +1 -1
  14. package/dist/context/McpCustomServerByIndexProvider.js +1 -1
  15. package/dist/context/McpServerByIdProvider.d.ts +3 -6
  16. package/dist/context/McpServerByIdProvider.d.ts.map +1 -1
  17. package/dist/context/McpServerByIdProvider.js +1 -1
  18. package/dist/hooks/useMcpOAuthCallback.d.ts +14 -17
  19. package/dist/hooks/useMcpOAuthCallback.d.ts.map +1 -1
  20. package/dist/hooks/useMcpOAuthCallback.js +6 -2
  21. package/dist/hooks/useMcpOAuthCallback.js.map +1 -1
  22. package/dist/index.d.ts +19 -18
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +4 -4
  25. package/dist/mcp-scope.d.ts +124 -127
  26. package/dist/mcp-scope.d.ts.map +1 -1
  27. package/dist/primitives/addForm/McpAddFormAuthFields.d.ts +14 -16
  28. package/dist/primitives/addForm/McpAddFormAuthFields.d.ts.map +1 -1
  29. package/dist/primitives/addForm/McpAddFormAuthFields.js +18 -71
  30. package/dist/primitives/addForm/McpAddFormAuthFields.js.map +1 -1
  31. package/dist/primitives/addForm/McpAddFormAuthSelect.d.ts +5 -8
  32. package/dist/primitives/addForm/McpAddFormAuthSelect.d.ts.map +1 -1
  33. package/dist/primitives/addForm/McpAddFormAuthSelect.js +1 -1
  34. package/dist/primitives/addForm/McpAddFormBearerTokenField.d.ts +8 -0
  35. package/dist/primitives/addForm/McpAddFormBearerTokenField.d.ts.map +1 -0
  36. package/dist/primitives/addForm/McpAddFormBearerTokenField.js +50 -0
  37. package/dist/primitives/addForm/McpAddFormBearerTokenField.js.map +1 -0
  38. package/dist/primitives/addForm/McpAddFormCancel.d.ts +6 -9
  39. package/dist/primitives/addForm/McpAddFormCancel.d.ts.map +1 -1
  40. package/dist/primitives/addForm/McpAddFormCancel.js +1 -1
  41. package/dist/primitives/addForm/McpAddFormError.d.ts +6 -9
  42. package/dist/primitives/addForm/McpAddFormError.d.ts.map +1 -1
  43. package/dist/primitives/addForm/McpAddFormError.js +1 -1
  44. package/dist/primitives/addForm/McpAddFormNameField.d.ts +5 -8
  45. package/dist/primitives/addForm/McpAddFormNameField.d.ts.map +1 -1
  46. package/dist/primitives/addForm/McpAddFormNameField.js +1 -1
  47. package/dist/primitives/addForm/McpAddFormRoot.d.ts +11 -14
  48. package/dist/primitives/addForm/McpAddFormRoot.d.ts.map +1 -1
  49. package/dist/primitives/addForm/McpAddFormRoot.js +2 -2
  50. package/dist/primitives/addForm/McpAddFormScopesField.d.ts +8 -0
  51. package/dist/primitives/addForm/McpAddFormScopesField.d.ts.map +1 -0
  52. package/dist/primitives/addForm/McpAddFormScopesField.js +38 -0
  53. package/dist/primitives/addForm/McpAddFormScopesField.js.map +1 -0
  54. package/dist/primitives/addForm/McpAddFormSubmit.d.ts +6 -9
  55. package/dist/primitives/addForm/McpAddFormSubmit.d.ts.map +1 -1
  56. package/dist/primitives/addForm/McpAddFormSubmit.js +1 -1
  57. package/dist/primitives/addForm/McpAddFormUrlField.d.ts +5 -8
  58. package/dist/primitives/addForm/McpAddFormUrlField.d.ts.map +1 -1
  59. package/dist/primitives/addForm/McpAddFormUrlField.js +1 -1
  60. package/dist/primitives/addForm/context.d.ts +25 -28
  61. package/dist/primitives/addForm/context.d.ts.map +1 -1
  62. package/dist/primitives/addForm.d.ts +10 -13
  63. package/dist/primitives/addForm.d.ts.map +1 -1
  64. package/dist/primitives/addForm.js +5 -1
  65. package/dist/primitives/addForm.js.map +1 -1
  66. package/dist/primitives/elicitation/McpElicitationPrimitiveAccept.d.ts +6 -9
  67. package/dist/primitives/elicitation/McpElicitationPrimitiveAccept.d.ts.map +1 -1
  68. package/dist/primitives/elicitation/McpElicitationPrimitiveAccept.js +2 -2
  69. package/dist/primitives/elicitation/McpElicitationPrimitiveCancel.d.ts +6 -9
  70. package/dist/primitives/elicitation/McpElicitationPrimitiveCancel.d.ts.map +1 -1
  71. package/dist/primitives/elicitation/McpElicitationPrimitiveCancel.js +2 -2
  72. package/dist/primitives/elicitation/McpElicitationPrimitiveDecline.d.ts +6 -9
  73. package/dist/primitives/elicitation/McpElicitationPrimitiveDecline.d.ts.map +1 -1
  74. package/dist/primitives/elicitation/McpElicitationPrimitiveDecline.js +2 -2
  75. package/dist/primitives/elicitation/McpElicitationPrimitiveError.d.ts +6 -9
  76. package/dist/primitives/elicitation/McpElicitationPrimitiveError.d.ts.map +1 -1
  77. package/dist/primitives/elicitation/McpElicitationPrimitiveError.js +1 -1
  78. package/dist/primitives/elicitation/McpElicitationPrimitiveFields.d.ts +8 -10
  79. package/dist/primitives/elicitation/McpElicitationPrimitiveFields.d.ts.map +1 -1
  80. package/dist/primitives/elicitation/McpElicitationPrimitiveFields.js +1 -1
  81. package/dist/primitives/elicitation/McpElicitationPrimitiveItems.d.ts +8 -11
  82. package/dist/primitives/elicitation/McpElicitationPrimitiveItems.d.ts.map +1 -1
  83. package/dist/primitives/elicitation/McpElicitationPrimitiveItems.js +2 -2
  84. package/dist/primitives/elicitation/McpElicitationPrimitiveMessage.d.ts +6 -9
  85. package/dist/primitives/elicitation/McpElicitationPrimitiveMessage.d.ts.map +1 -1
  86. package/dist/primitives/elicitation/McpElicitationPrimitiveMessage.js +1 -1
  87. package/dist/primitives/elicitation/McpElicitationPrimitiveRoot.d.ts +6 -9
  88. package/dist/primitives/elicitation/McpElicitationPrimitiveRoot.d.ts.map +1 -1
  89. package/dist/primitives/elicitation/McpElicitationPrimitiveRoot.js +1 -1
  90. package/dist/primitives/elicitation/context.d.ts +15 -18
  91. package/dist/primitives/elicitation/context.d.ts.map +1 -1
  92. package/dist/primitives/elicitation/initialElicitationDraft.d.ts +1 -4
  93. package/dist/primitives/elicitation/initialElicitationDraft.d.ts.map +1 -1
  94. package/dist/primitives/elicitation/prepareElicitationContent.d.ts +4 -7
  95. package/dist/primitives/elicitation/prepareElicitationContent.d.ts.map +1 -1
  96. package/dist/primitives/elicitation/prepareElicitationContent.js +5 -1
  97. package/dist/primitives/elicitation/prepareElicitationContent.js.map +1 -1
  98. package/dist/primitives/elicitation.d.ts +8 -14
  99. package/dist/primitives/elicitation.d.ts.map +1 -1
  100. package/dist/primitives/manager/McpManagerAddCustomTrigger.d.ts +6 -9
  101. package/dist/primitives/manager/McpManagerAddCustomTrigger.d.ts.map +1 -1
  102. package/dist/primitives/manager/McpManagerAddCustomTrigger.js +1 -1
  103. package/dist/primitives/manager/McpManagerConnectors.d.ts +14 -17
  104. package/dist/primitives/manager/McpManagerConnectors.d.ts.map +1 -1
  105. package/dist/primitives/manager/McpManagerConnectors.js +1 -1
  106. package/dist/primitives/manager/McpManagerCustomServers.d.ts +14 -17
  107. package/dist/primitives/manager/McpManagerCustomServers.d.ts.map +1 -1
  108. package/dist/primitives/manager/McpManagerCustomServers.js +1 -1
  109. package/dist/primitives/manager/McpManagerRoot.d.ts +6 -9
  110. package/dist/primitives/manager/McpManagerRoot.d.ts.map +1 -1
  111. package/dist/primitives/manager/McpManagerRoot.js +2 -2
  112. package/dist/primitives/manager.d.ts +4 -9
  113. package/dist/primitives/manager.d.ts.map +1 -1
  114. package/dist/primitives/server/McpServerConnectButton.d.ts +6 -9
  115. package/dist/primitives/server/McpServerConnectButton.d.ts.map +1 -1
  116. package/dist/primitives/server/McpServerConnectButton.js +2 -2
  117. package/dist/primitives/server/McpServerDisconnectButton.d.ts +6 -9
  118. package/dist/primitives/server/McpServerDisconnectButton.d.ts.map +1 -1
  119. package/dist/primitives/server/McpServerDisconnectButton.js +2 -2
  120. package/dist/primitives/server/McpServerError.d.ts +6 -9
  121. package/dist/primitives/server/McpServerError.d.ts.map +1 -1
  122. package/dist/primitives/server/McpServerError.js +2 -2
  123. package/dist/primitives/server/McpServerIcon.d.ts +12 -15
  124. package/dist/primitives/server/McpServerIcon.d.ts.map +1 -1
  125. package/dist/primitives/server/McpServerIcon.js +2 -2
  126. package/dist/primitives/server/McpServerName.d.ts +6 -9
  127. package/dist/primitives/server/McpServerName.d.ts.map +1 -1
  128. package/dist/primitives/server/McpServerName.js +2 -2
  129. package/dist/primitives/server/McpServerOAuthLink.d.ts +11 -14
  130. package/dist/primitives/server/McpServerOAuthLink.d.ts.map +1 -1
  131. package/dist/primitives/server/McpServerOAuthLink.js +2 -2
  132. package/dist/primitives/server/McpServerRemoveButton.d.ts +6 -9
  133. package/dist/primitives/server/McpServerRemoveButton.d.ts.map +1 -1
  134. package/dist/primitives/server/McpServerRemoveButton.js +2 -2
  135. package/dist/primitives/server/McpServerRoot.d.ts +6 -9
  136. package/dist/primitives/server/McpServerRoot.d.ts.map +1 -1
  137. package/dist/primitives/server/McpServerRoot.js +2 -2
  138. package/dist/primitives/server/McpServerStatus.d.ts +6 -9
  139. package/dist/primitives/server/McpServerStatus.d.ts.map +1 -1
  140. package/dist/primitives/server/McpServerStatus.js +2 -2
  141. package/dist/primitives/server/McpServerToolName.d.ts +6 -9
  142. package/dist/primitives/server/McpServerToolName.d.ts.map +1 -1
  143. package/dist/primitives/server/McpServerToolName.js +1 -1
  144. package/dist/primitives/server/McpServerTools.d.ts +8 -11
  145. package/dist/primitives/server/McpServerTools.d.ts.map +1 -1
  146. package/dist/primitives/server/McpServerTools.js +2 -2
  147. package/dist/primitives/server.d.ts +11 -16
  148. package/dist/primitives/server.d.ts.map +1 -1
  149. package/dist/resources/McpManagerResource.d.ts +13 -16
  150. package/dist/resources/McpManagerResource.d.ts.map +1 -1
  151. package/dist/resources/McpManagerResource.js +95 -64
  152. package/dist/resources/McpManagerResource.js.map +1 -1
  153. package/dist/resources/McpServerRemovalFence.d.ts +3 -6
  154. package/dist/resources/McpServerRemovalFence.d.ts.map +1 -1
  155. package/dist/resources/McpServerResource.d.ts +21 -24
  156. package/dist/resources/McpServerResource.d.ts.map +1 -1
  157. package/dist/resources/McpServerResource.js +55 -47
  158. package/dist/resources/McpServerResource.js.map +1 -1
  159. package/dist/resources/storage/McpCustomStorage.d.ts +2 -5
  160. package/dist/resources/storage/McpCustomStorage.d.ts.map +1 -1
  161. package/dist/resources/storage/McpLocalStorage.d.ts +18 -21
  162. package/dist/resources/storage/McpLocalStorage.d.ts.map +1 -1
  163. package/dist/resources/storage/McpLocalStorage.js +1 -1
  164. package/dist/resources/storage/McpMemoryStorage.d.ts +2 -5
  165. package/dist/resources/storage/McpMemoryStorage.d.ts.map +1 -1
  166. package/dist/resources/storage/types.d.ts +24 -27
  167. package/dist/resources/storage/types.d.ts.map +1 -1
  168. package/dist/resources/validateElicitationContent.d.ts +4 -6
  169. package/dist/resources/validateElicitationContent.d.ts.map +1 -1
  170. package/dist/utils/createMcpId.d.ts +1 -4
  171. package/dist/utils/createMcpId.d.ts.map +1 -1
  172. package/dist/utils/invokeMcpCallback.d.ts +1 -4
  173. package/dist/utils/invokeMcpCallback.d.ts.map +1 -1
  174. package/dist/utils/serverId.d.ts +2 -5
  175. package/dist/utils/serverId.d.ts.map +1 -1
  176. package/dist/utils/serverUrl.d.ts +4 -7
  177. package/dist/utils/serverUrl.d.ts.map +1 -1
  178. package/package.json +11 -10
  179. package/src/hooks/useMcpOAuthCallback.test.ts +53 -0
  180. package/src/hooks/useMcpOAuthCallback.tsx +12 -0
  181. package/src/index.ts +2 -1
  182. package/src/primitives/addForm/McpAddFormAccessibility.test.tsx +49 -0
  183. package/src/primitives/addForm/McpAddFormAuthFields.tsx +7 -15
  184. package/src/primitives/addForm/McpAddFormBearerTokenField.tsx +46 -0
  185. package/src/primitives/addForm/McpAddFormRoot.test.tsx +65 -0
  186. package/src/primitives/addForm/McpAddFormScopesField.tsx +34 -0
  187. package/src/primitives/addForm.ts +2 -0
  188. package/src/primitives/elicitation/prepareElicitationContent.ts +8 -6
  189. package/src/resources/McpManagerResource.test.ts +85 -0
  190. package/src/resources/McpManagerResource.ts +56 -23
  191. package/src/resources/McpServerResource.test.ts +121 -6
  192. package/src/resources/McpServerResource.ts +28 -12
@@ -1,12 +1,9 @@
1
- import { MCPAuthConfig } from "../mcp-scope.js";
2
- import { MCPPersistedAuthState } from "./types.js";
3
- //#region src/auth/buildHeaders.d.ts
1
+ import type { MCPAuthConfig } from "../mcp-scope.js";
2
+ import type { MCPPersistedAuthState } from "./types.js";
4
3
  /**
5
4
  * Build request headers for the bearer/none flows. For bearer, prefer a token
6
5
  * stored at add-form time (persisted), falling back to a static token on the
7
6
  * config (used by connectors that hardcode a token, rare in practice).
8
7
  */
9
- declare function buildHeaders(auth: MCPAuthConfig, persisted: MCPPersistedAuthState | null): Record<string, string> | undefined;
10
- //#endregion
11
- export { buildHeaders };
8
+ export declare function buildHeaders(auth: MCPAuthConfig, persisted: MCPPersistedAuthState | null): Record<string, string> | undefined;
12
9
  //# sourceMappingURL=buildHeaders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildHeaders.d.ts","names":[],"sources":["../../src/auth/buildHeaders.ts"],"mappings":";;;;;;;;iBAQgB,aACd,MAAM,eACN,WAAW,+BACV"}
1
+ {"version":3,"file":"buildHeaders.d.ts","sourceRoot":"","sources":["../../src/auth/buildHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAqB;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAgB;AAErD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,qBAAqB,GAAG,IAAI,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC"}
@@ -1,42 +1,40 @@
1
- import { MCPAuthConfig } from "../mcp-scope.js";
2
- import { MCPStorage } from "../resources/storage/types.js";
3
- import { OAuthClientInformationFull, OAuthClientProvider, OAuthTokens } from "@modelcontextprotocol/client";
4
- //#region src/auth/createOAuthProvider.d.ts
5
- declare function decodeServerIdFromState(state: string): string | null;
6
- type CreateOAuthProviderOptions = {
7
- serverId: string;
8
- serverUrl: string;
9
- /** Must be `auth.type === "oauth"`. */
10
- config: Extract<MCPAuthConfig, {
11
- type: "oauth";
12
- }>;
13
- storage: MCPStorage;
14
- redirectUri: string;
15
- /** Called by the SDK to start the authorization redirect. */
16
- onAuthorizationUrl: (url: URL) => void;
1
+ import type { OAuthClientProvider, OAuthClientInformationFull, OAuthTokens } from "@modelcontextprotocol/client";
2
+ import type { MCPStorage } from "../resources/storage/types.js";
3
+ import type { MCPAuthConfig } from "../mcp-scope.js";
4
+ export declare function decodeServerIdFromState(state: string): string | null;
5
+ export type CreateOAuthProviderOptions = {
6
+ serverId: string;
7
+ serverUrl: string;
8
+ /** Must be `auth.type === "oauth"`. */
9
+ config: Extract<MCPAuthConfig, {
10
+ type: "oauth";
11
+ }>;
12
+ storage: MCPStorage;
13
+ redirectUri: string;
14
+ /** Called by the SDK to start the authorization redirect. */
15
+ onAuthorizationUrl: (url: URL) => void;
17
16
  };
18
17
  type OAuthConfig = Extract<MCPAuthConfig, {
19
- type: "oauth";
18
+ type: "oauth";
20
19
  }>;
21
20
  type OAuthCredentialState = {
22
- tokens?: OAuthTokens | undefined;
23
- tokensClientId?: string | undefined;
24
- clientInformation?: OAuthClientInformationFull | undefined;
25
- clientInformationSource?: "registered" | undefined;
21
+ tokens?: OAuthTokens | undefined;
22
+ tokensClientId?: string | undefined;
23
+ clientInformation?: OAuthClientInformationFull | undefined;
24
+ clientInformationSource?: "registered" | undefined;
26
25
  };
27
- declare const hasUsableOAuthTokens: (state: OAuthCredentialState | null | undefined, config: OAuthConfig) => boolean;
26
+ export declare const hasUsableOAuthTokens: (state: OAuthCredentialState | null | undefined, config: OAuthConfig) => boolean;
28
27
  /**
29
28
  * Clears persisted OAuth state after the in-flight load and every queued write
30
29
  * for that server have settled, so a discarded provider cannot recreate the
31
30
  * record it was mid-save on.
32
31
  */
33
- declare const clearOAuthProviderAuthState: (storage: MCPStorage, serverId: string) => Promise<void>;
32
+ export declare const clearOAuthProviderAuthState: (storage: MCPStorage, serverId: string) => Promise<void>;
34
33
  /**
35
34
  * Builds an OAuthClientProvider for the MCP SDK, backed by MCPStorage.
36
35
  * Token refresh and DCR are handled by the SDK; this provider only mediates
37
36
  * load/save and the redirect step.
38
37
  */
39
- declare function createOAuthProvider(opts: CreateOAuthProviderOptions): OAuthClientProvider;
40
- //#endregion
41
- export { CreateOAuthProviderOptions, clearOAuthProviderAuthState, createOAuthProvider, decodeServerIdFromState, hasUsableOAuthTokens };
38
+ export declare function createOAuthProvider(opts: CreateOAuthProviderOptions): OAuthClientProvider;
39
+ export {};
42
40
  //# sourceMappingURL=createOAuthProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOAuthProvider.d.ts","names":[],"sources":["../../src/auth/createOAuthProvider.ts"],"mappings":";;;;iBAsCgB,wBAAwB;KAgB5B;EACV;EACA;;EAEA,QAAQ,QAAQ;IAAiB;;EACjC,SAAS;EACT;;EAEA,qBAAqB,KAAK;;KAcvB,cAAc,QAAQ;EAAiB;;KAEvC;EACH,SAAS;EACT;EACA,oBAAoB;EACpB;;cAUW,uBACX,OAAO,yCACP,QAAQ;;;;;;cAkHG,8BACX,SAAS,YACT,qBACC;;;;;;iBA2Ba,oBACd,MAAM,6BACL"}
1
+ {"version":3,"file":"createOAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/createOAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,0BAA0B,EAG1B,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,sCAAmC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAqB;AA8BlD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcpE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClD,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC,CAAC;AAaF,KAAK,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE7D,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC3D,uBAAuB,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACpD,CAAC;AASF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC9C,QAAQ,WAAW,KAClB,OAOF,CAAC;AAqGF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,UAAU,EACnB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAoBd,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,0BAA0B,GAC/B,mBAAmB,CAwOrB"}
@@ -1,18 +1,15 @@
1
- import { OAuthClientInformationFull, OAuthDiscoveryState, OAuthTokens } from "@modelcontextprotocol/client";
2
- //#region src/auth/types.d.ts
3
- type MCPPersistedAuthState = {
4
- /** MCP server URL this authentication state belongs to. Required with credentials. */
5
- serverUrl?: string;
6
- tokens?: OAuthTokens;
7
- tokensClientId?: string;
8
- clientInformation?: OAuthClientInformationFull;
9
- clientInformationSource?: "registered";
10
- codeVerifier?: string;
11
- state?: string;
12
- discoveryState?: OAuthDiscoveryState;
13
- /** Host-persisted bearer token. Must be paired with serverUrl. */
14
- token?: string;
1
+ import type { OAuthTokens, OAuthClientInformationFull, OAuthDiscoveryState } from "@modelcontextprotocol/client";
2
+ export type MCPPersistedAuthState = {
3
+ /** MCP server URL this authentication state belongs to. Required with credentials. */
4
+ serverUrl?: string;
5
+ tokens?: OAuthTokens;
6
+ tokensClientId?: string;
7
+ clientInformation?: OAuthClientInformationFull;
8
+ clientInformationSource?: "registered";
9
+ codeVerifier?: string;
10
+ state?: string;
11
+ discoveryState?: OAuthDiscoveryState;
12
+ /** Host-persisted bearer token. Must be paired with serverUrl. */
13
+ token?: string;
15
14
  };
16
- //#endregion
17
- export { MCPPersistedAuthState };
18
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/auth/types.ts"],"mappings":";;KAMY;;EAEV;EACA,SAAS;EACT;EACA,oBAAoB;EACpB;EACA;EACA;EACA,iBAAiB;;EAEjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,uBAAuB,CAAC,EAAE,YAAY,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1,6 +1,3 @@
1
- import { MCPConnector } from "./mcp-scope.js";
2
- //#region src/connector.d.ts
3
- declare function defineConnector(connector: MCPConnector): MCPConnector;
4
- //#endregion
5
- export { defineConnector };
1
+ import type { MCPConnector } from "./mcp-scope.js";
2
+ export declare function defineConnector(connector: MCPConnector): MCPConnector;
6
3
  //# sourceMappingURL=connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","names":[],"sources":["../src/connector.ts"],"mappings":";;iBAGgB,gBAAgB,WAAW,eAAe"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAoB;AAGhD,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,CAGrE"}
@@ -1,8 +1,5 @@
1
- import { FC, PropsWithChildren } from "react";
2
- //#region src/context/McpConnectorByIndexProvider.d.ts
3
- declare const McpConnectorByIndexProvider: FC<PropsWithChildren<{
4
- index: number;
1
+ import type { FC, PropsWithChildren } from "react";
2
+ export declare const McpConnectorByIndexProvider: FC<PropsWithChildren<{
3
+ index: number;
5
4
  }>>;
6
- //#endregion
7
- export { McpConnectorByIndexProvider };
8
5
  //# sourceMappingURL=McpConnectorByIndexProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpConnectorByIndexProvider.d.ts","names":[],"sources":["../../src/context/McpConnectorByIndexProvider.tsx"],"mappings":";;cAGa,6BAA6B,GACxC;EAAoB"}
1
+ {"version":3,"file":"McpConnectorByIndexProvider.d.ts","sourceRoot":"","sources":["../../src/context/McpConnectorByIndexProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAC1C,iBAAiB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAerC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
2
1
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/context/McpConnectorByIndexProvider.tsx
5
5
  const McpConnectorByIndexProvider = (t0) => {
@@ -1,8 +1,5 @@
1
- import { FC, PropsWithChildren } from "react";
2
- //#region src/context/McpCustomServerByIndexProvider.d.ts
3
- declare const McpCustomServerByIndexProvider: FC<PropsWithChildren<{
4
- index: number;
1
+ import type { FC, PropsWithChildren } from "react";
2
+ export declare const McpCustomServerByIndexProvider: FC<PropsWithChildren<{
3
+ index: number;
5
4
  }>>;
6
- //#endregion
7
- export { McpCustomServerByIndexProvider };
8
5
  //# sourceMappingURL=McpCustomServerByIndexProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpCustomServerByIndexProvider.d.ts","names":[],"sources":["../../src/context/McpCustomServerByIndexProvider.tsx"],"mappings":";;cAGa,gCAAgC,GAC3C;EAAoB"}
1
+ {"version":3,"file":"McpCustomServerByIndexProvider.d.ts","sourceRoot":"","sources":["../../src/context/McpCustomServerByIndexProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAC7C,iBAAiB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAerC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
2
1
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/context/McpCustomServerByIndexProvider.tsx
5
5
  const McpCustomServerByIndexProvider = (t0) => {
@@ -1,8 +1,5 @@
1
- import { FC, PropsWithChildren } from "react";
2
- //#region src/context/McpServerByIdProvider.d.ts
3
- declare const McpServerByIdProvider: FC<PropsWithChildren<{
4
- id: string;
1
+ import type { FC, PropsWithChildren } from "react";
2
+ export declare const McpServerByIdProvider: FC<PropsWithChildren<{
3
+ id: string;
5
4
  }>>;
6
- //#endregion
7
- export { McpServerByIdProvider };
8
5
  //# sourceMappingURL=McpServerByIdProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpServerByIdProvider.d.ts","names":[],"sources":["../../src/context/McpServerByIdProvider.tsx"],"mappings":";;cAGa,uBAAuB,GAAG;EAAoB"}
1
+ {"version":3,"file":"McpServerByIdProvider.d.ts","sourceRoot":"","sources":["../../src/context/McpServerByIdProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBvE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
2
1
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { AuiConfig, AuiProvider, Derived, useAui } from "@assistant-ui/store";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/context/McpServerByIdProvider.tsx
5
5
  const McpServerByIdProvider = (t0) => {
@@ -1,21 +1,18 @@
1
- import { FC, ReactNode } from "react";
2
- //#region src/hooks/useMcpOAuthCallback.d.ts
3
- declare const createMcpOAuthCallbackError: (err: unknown, serverId: string | null) => Error;
4
- type UseMcpOAuthCallbackOptions = {
5
- /** Defaults to `window.location.href`. */
6
- url?: string;
7
- onComplete?: (serverId: string) => void;
8
- onError?: (err: Error) => void;
1
+ import { type FC, type ReactNode } from "react";
2
+ export declare const createMcpOAuthCallbackError: (err: unknown, serverId: string | null) => Error;
3
+ export type UseMcpOAuthCallbackOptions = {
4
+ /** Defaults to `window.location.href`. */
5
+ url?: string;
6
+ onComplete?: (serverId: string) => void;
7
+ onError?: (err: Error) => void;
9
8
  };
10
- type UseMcpOAuthCallbackResult = {
11
- status: "idle" | "running" | "done" | "error";
12
- serverId: string | null;
13
- error: Error | null;
9
+ export type UseMcpOAuthCallbackResult = {
10
+ status: "idle" | "running" | "done" | "error";
11
+ serverId: string | null;
12
+ error: Error | null;
14
13
  };
15
- declare function useMcpOAuthCallback(opts?: UseMcpOAuthCallbackOptions): UseMcpOAuthCallbackResult;
16
- declare const McpOAuthCallback: FC<UseMcpOAuthCallbackOptions & {
17
- children?: (result: UseMcpOAuthCallbackResult) => ReactNode;
14
+ export declare function useMcpOAuthCallback(opts?: UseMcpOAuthCallbackOptions): UseMcpOAuthCallbackResult;
15
+ export declare const McpOAuthCallback: FC<UseMcpOAuthCallbackOptions & {
16
+ children?: (result: UseMcpOAuthCallbackResult) => ReactNode;
18
17
  }>;
19
- //#endregion
20
- export { McpOAuthCallback, UseMcpOAuthCallbackOptions, UseMcpOAuthCallbackResult, createMcpOAuthCallbackError, useMcpOAuthCallback };
21
18
  //# sourceMappingURL=useMcpOAuthCallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMcpOAuthCallback.d.ts","names":[],"sources":["../../src/hooks/useMcpOAuthCallback.tsx"],"mappings":";;cAYa,8BACX,cACA,4BACC;KAWS;;EAEV;EACA,cAAc;EACd,WAAW,KAAK;;KAGN;EACV;EACA;EACA,OAAO;;iBAGO,oBACd,OAAM,6BACL;cAkDU,kBAAkB,GAC7B;EACE,YAAY,QAAQ,8BAA8B"}
1
+ {"version":3,"file":"useMcpOAuthCallback.d.ts","sourceRoot":"","sources":["../../src/hooks/useMcpOAuthCallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAAE,EACP,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAKf,eAAO,MAAM,2BAA2B,GACtC,KAAK,OAAO,EACZ,UAAU,MAAM,GAAG,IAAI,KACtB,KASF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,GAAE,0BAA+B,GACpC,yBAAyB,CA4D3B;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAC/B,0BAA0B,GAAG;IAC3B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,SAAS,CAAC;CAC7D,CAKF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { decodeServerIdFromState } from "../auth/createOAuthProvider.js";
2
2
  import { invokeMcpCallback } from "../utils/invokeMcpCallback.js";
3
- import { useAui } from "@assistant-ui/store";
4
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
- import { useEffect, useInsertionEffect, useRef, useState } from "@assistant-ui/tap/react-shim";
4
+ import { useAui } from "@assistant-ui/store";
6
5
  import { Fragment, jsx } from "react/jsx-runtime";
6
+ import { useEffect, useInsertionEffect, useRef, useState } from "@assistant-ui/tap/react-shim";
7
7
  //#region src/hooks/useMcpOAuthCallback.tsx
8
8
  const createMcpOAuthCallbackError = (err, serverId) => {
9
9
  const message = err instanceof Error ? err.message : String(err);
@@ -27,6 +27,7 @@ function useMcpOAuthCallback(opts = {}) {
27
27
  if (!url) return;
28
28
  if (startedRef.current === url) return;
29
29
  startedRef.current = url;
30
+ const superseded = () => startedRef.current !== url;
30
31
  (async () => {
31
32
  let serverId = null;
32
33
  try {
@@ -34,18 +35,21 @@ function useMcpOAuthCallback(opts = {}) {
34
35
  if (state) serverId = decodeServerIdFromState(state);
35
36
  if (!state) throw new Error("missing \"state\" parameter");
36
37
  if (!serverId) throw new Error("state was not created by assistant-ui MCP");
38
+ if (superseded()) return;
37
39
  setResult({
38
40
  status: "running",
39
41
  serverId,
40
42
  error: null
41
43
  });
42
44
  await aui.mcp.server({ id: serverId }).completeAuth(url);
45
+ if (superseded()) return;
43
46
  setResult({
44
47
  status: "done",
45
48
  serverId,
46
49
  error: null
47
50
  });
48
51
  } catch (err) {
52
+ if (superseded()) return;
49
53
  const error = createMcpOAuthCallbackError(err, serverId);
50
54
  setResult({
51
55
  status: "error",
@@ -1 +1 @@
1
- {"version":3,"file":"useMcpOAuthCallback.js","names":["FC","ReactNode","useEffect","useInsertionEffect","useRef","useState","useAui","decodeServerIdFromState","invokeMcpCallback","createMcpOAuthCallbackError","err","serverId","Error","message","String","cause","UseMcpOAuthCallbackOptions","url","onComplete","onError","UseMcpOAuthCallbackResult","status","error","useMcpOAuthCallback","opts","aui","result","setResult","startedRef","optsRef","current","window","location","href","parsed","URL","state","searchParams","get","mcp","server","id","completeAuth","McpOAuthCallback","children","t0","$","_c","t1","t2"],"sources":["../../src/hooks/useMcpOAuthCallback.tsx"],"sourcesContent":["import {\n type FC,\n type ReactNode,\n useEffect,\n useInsertionEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { decodeServerIdFromState } from \"../auth/createOAuthProvider\";\nimport { invokeMcpCallback } from \"../utils/invokeMcpCallback\";\n\nexport const createMcpOAuthCallbackError = (\n err: unknown,\n serverId: string | null,\n): Error => {\n const message = err instanceof Error ? err.message : String(err);\n if (serverId) {\n return new Error(\n `MCP OAuth callback for server \"${serverId}\" failed: ${message}`,\n { cause: err },\n );\n }\n return new Error(`MCP OAuth callback failed: ${message}`, { cause: err });\n};\n\nexport type UseMcpOAuthCallbackOptions = {\n /** Defaults to `window.location.href`. */\n url?: string;\n onComplete?: (serverId: string) => void;\n onError?: (err: Error) => void;\n};\n\nexport type UseMcpOAuthCallbackResult = {\n status: \"idle\" | \"running\" | \"done\" | \"error\";\n serverId: string | null;\n error: Error | null;\n};\n\nexport function useMcpOAuthCallback(\n opts: UseMcpOAuthCallbackOptions = {},\n): UseMcpOAuthCallbackResult {\n const aui = useAui();\n const [result, setResult] = useState<UseMcpOAuthCallbackResult>({\n status: \"idle\",\n serverId: null,\n error: null,\n });\n // Guard against React 18 Strict Mode's mount-unmount-remount: the effect\n // body must not run completeAuth twice for the same URL, otherwise the\n // single-use OAuth code is double-redeemed and the second attempt 4xxs.\n const startedRef = useRef<string | null>(null);\n const optsRef = useRef(opts);\n useInsertionEffect(() => {\n optsRef.current = opts;\n });\n\n useEffect(() => {\n const url =\n opts.url ?? (typeof window !== \"undefined\" ? window.location.href : null);\n if (!url) return;\n if (startedRef.current === url) return;\n startedRef.current = url;\n\n void (async () => {\n let serverId: string | null = null;\n try {\n const parsed = new URL(url);\n const state = parsed.searchParams.get(\"state\");\n if (state) serverId = decodeServerIdFromState(state);\n if (!state) throw new Error('missing \"state\" parameter');\n if (!serverId) {\n throw new Error(\"state was not created by assistant-ui MCP\");\n }\n setResult({ status: \"running\", serverId, error: null });\n await aui.mcp.server({ id: serverId }).completeAuth(url);\n setResult({ status: \"done\", serverId, error: null });\n } catch (err) {\n const error = createMcpOAuthCallbackError(err, serverId);\n setResult({ status: \"error\", serverId, error });\n invokeMcpCallback(\"onError\", optsRef.current.onError, error);\n return;\n }\n\n invokeMcpCallback(\"onComplete\", optsRef.current.onComplete, serverId);\n })();\n }, [aui, opts.url]);\n\n return result;\n}\n\nexport const McpOAuthCallback: FC<\n UseMcpOAuthCallbackOptions & {\n children?: (result: UseMcpOAuthCallbackResult) => ReactNode;\n }\n> = ({ children, ...opts }) => {\n const result = useMcpOAuthCallback(opts);\n if (children) return <>{children(result)}</>;\n return null;\n};\n"],"mappings":";;;;;;;AAYA,MAAaS,+BACXC,KACAC,aACU;CACV,MAAME,UAAUH,eAAeE,QAAQF,IAAIG,UAAUC,OAAOJ,GAAG;CAC/D,IAAIC,UACF,OAAO,IAAIC,MACT,kCAAkCD,SAAQ,YAAaE,WACvD,EAAEE,OAAOL,IAAI,CACf;CAEF,OAAO,IAAIE,MAAM,8BAA8BC,WAAW,EAAEE,OAAOL,IAAI,CAAC;AAC1E;AAeA,SAAgBa,oBACdC,OAAmC,CAAC,GACT;CAC3B,MAAMC,MAAMnB,OAAO;CACnB,MAAM,CAACoB,QAAQC,aAAatB,SAAoC;EAC9DgB,QAAQ;EACRV,UAAU;EACVW,OAAO;CACT,CAAC;CAID,MAAMM,aAAaxB,OAAsB,IAAI;CAC7C,MAAMyB,UAAUzB,OAAOoB,IAAI;CAC3BrB,yBAAyB;EACvB0B,QAAQC,UAAUN;CACpB,CAAC;CAEDtB,gBAAgB;EACd,MAAMe,MACJO,KAAKP,QAAQ,OAAOc,WAAW,cAAcA,OAAOC,SAASC,OAAO;EACtE,IAAI,CAAChB,KAAK;EACV,IAAIW,WAAWE,YAAYb,KAAK;EAChCW,WAAWE,UAAUb;EAErB,CAAM,YAAY;GAChB,IAAIN,WAA0B;GAC9B,IAAI;IAEF,MAAMyB,QAAQF,IADKC,IAAIlB,GACTiB,CAAM,CAACG,aAAaC,IAAI,OAAO;IAC7C,IAAIF,OAAOzB,WAAWJ,wBAAwB6B,KAAK;IACnD,IAAI,CAACA,OAAO,MAAM,IAAIxB,MAAM,6BAA2B;IACvD,IAAI,CAACD,UACH,MAAM,IAAIC,MAAM,2CAA2C;IAE7De,UAAU;KAAEN,QAAQ;KAAWV;KAAUW,OAAO;IAAK,CAAC;IACtD,MAAMG,IAAIc,IAAIC,OAAO,EAAEC,IAAI9B,SAAS,CAAC,CAAC,CAAC+B,aAAazB,GAAG;IACvDU,UAAU;KAAEN,QAAQ;KAAQV;KAAUW,OAAO;IAAK,CAAC;GACrD,SAASZ,KAAK;IACZ,MAAMY,QAAQb,4BAA4BC,KAAKC,QAAQ;IACvDgB,UAAU;KAAEN,QAAQ;KAASV;KAAUW;IAAM,CAAC;IAC9Cd,kBAAkB,WAAWqB,QAAQC,QAAQX,SAASG,KAAK;IAC3D;GACF;GAEAd,kBAAkB,cAAcqB,QAAQC,QAAQZ,YAAYP,QAAQ;EACtE,EAAA,CAAG;CACL,GAAG,CAACc,KAAKD,KAAKP,GAAG,CAAC;CAElB,OAAOS;AACT;AAEA,MAAaiB,oBAITE,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAH;CAAA,IAAApB;CAAA,IAAAsB,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAD,UAAA,GAAApB,QAAAqB;EAAqBC,EAAA,KAAAD;EAAAC,EAAA,KAAAF;EAAAE,EAAA,KAAAtB;CAAA,OAAA;EAAAoB,WAAAE,EAAA;EAAAtB,OAAAsB,EAAA;CAAA;CACxB,MAAApB,SAAeH,oBAAoBC,IAAI;CACvC,IAAIoB,UAAQ;EAAA,IAAAI;EAAA,IAAAF,EAAA,OAAAF,YAAAE,EAAA,OAAApB,QAAA;GAAYsB,KAAAJ,SAASlB,MAAM;GAACoB,EAAA,KAAAF;GAAAE,EAAA,KAAApB;GAAAoB,EAAA,KAAAE;EAAA,OAAAA,KAAAF,EAAA;EAAA,IAAAG;EAAA,IAAAH,EAAA,OAAAE,IAAA;GAAnBC,KAAA,oBAAA,UAAA,EAAA,UAAGD,GAAgB,CAAA;GAAIF,EAAA,KAAAE;GAAAF,EAAA,KAAAG;EAAA,OAAAA,KAAAH,EAAA;EAAA,OAAvBG;CAAuB;CAAC,OACtC;AAAI"}
1
+ {"version":3,"file":"useMcpOAuthCallback.js","names":["FC","ReactNode","useEffect","useInsertionEffect","useRef","useState","useAui","decodeServerIdFromState","invokeMcpCallback","createMcpOAuthCallbackError","err","serverId","Error","message","String","cause","UseMcpOAuthCallbackOptions","url","onComplete","onError","UseMcpOAuthCallbackResult","status","error","useMcpOAuthCallback","opts","aui","result","setResult","startedRef","optsRef","current","window","location","href","superseded","parsed","URL","state","searchParams","get","mcp","server","id","completeAuth","McpOAuthCallback","children","t0","$","_c","t1","t2"],"sources":["../../src/hooks/useMcpOAuthCallback.tsx"],"sourcesContent":["import {\n type FC,\n type ReactNode,\n useEffect,\n useInsertionEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { decodeServerIdFromState } from \"../auth/createOAuthProvider\";\nimport { invokeMcpCallback } from \"../utils/invokeMcpCallback\";\n\nexport const createMcpOAuthCallbackError = (\n err: unknown,\n serverId: string | null,\n): Error => {\n const message = err instanceof Error ? err.message : String(err);\n if (serverId) {\n return new Error(\n `MCP OAuth callback for server \"${serverId}\" failed: ${message}`,\n { cause: err },\n );\n }\n return new Error(`MCP OAuth callback failed: ${message}`, { cause: err });\n};\n\nexport type UseMcpOAuthCallbackOptions = {\n /** Defaults to `window.location.href`. */\n url?: string;\n onComplete?: (serverId: string) => void;\n onError?: (err: Error) => void;\n};\n\nexport type UseMcpOAuthCallbackResult = {\n status: \"idle\" | \"running\" | \"done\" | \"error\";\n serverId: string | null;\n error: Error | null;\n};\n\nexport function useMcpOAuthCallback(\n opts: UseMcpOAuthCallbackOptions = {},\n): UseMcpOAuthCallbackResult {\n const aui = useAui();\n const [result, setResult] = useState<UseMcpOAuthCallbackResult>({\n status: \"idle\",\n serverId: null,\n error: null,\n });\n // Guard against React 18 Strict Mode's mount-unmount-remount: the effect\n // body must not run completeAuth twice for the same URL, otherwise the\n // single-use OAuth code is double-redeemed and the second attempt 4xxs.\n const startedRef = useRef<string | null>(null);\n const optsRef = useRef(opts);\n useInsertionEffect(() => {\n optsRef.current = opts;\n });\n\n useEffect(() => {\n const url =\n opts.url ?? (typeof window !== \"undefined\" ? window.location.href : null);\n if (!url) return;\n if (startedRef.current === url) return;\n startedRef.current = url;\n\n // A callback page can be handed a second login URL while the first\n // completeAuth is still in flight. That attempt keeps running, so it\n // publishes only while its own URL is still the one being attempted;\n // otherwise an older failure would overwrite the newer attempt's success.\n // The check is against `startedRef` rather than a teardown flag so that\n // Strict Mode's unmount-remount, which starts no new attempt, still\n // publishes the result of the one already running.\n const superseded = () => startedRef.current !== url;\n\n void (async () => {\n let serverId: string | null = null;\n try {\n const parsed = new URL(url);\n const state = parsed.searchParams.get(\"state\");\n if (state) serverId = decodeServerIdFromState(state);\n if (!state) throw new Error('missing \"state\" parameter');\n if (!serverId) {\n throw new Error(\"state was not created by assistant-ui MCP\");\n }\n if (superseded()) return;\n setResult({ status: \"running\", serverId, error: null });\n await aui.mcp.server({ id: serverId }).completeAuth(url);\n if (superseded()) return;\n setResult({ status: \"done\", serverId, error: null });\n } catch (err) {\n if (superseded()) return;\n const error = createMcpOAuthCallbackError(err, serverId);\n setResult({ status: \"error\", serverId, error });\n invokeMcpCallback(\"onError\", optsRef.current.onError, error);\n return;\n }\n\n invokeMcpCallback(\"onComplete\", optsRef.current.onComplete, serverId);\n })();\n }, [aui, opts.url]);\n\n return result;\n}\n\nexport const McpOAuthCallback: FC<\n UseMcpOAuthCallbackOptions & {\n children?: (result: UseMcpOAuthCallbackResult) => ReactNode;\n }\n> = ({ children, ...opts }) => {\n const result = useMcpOAuthCallback(opts);\n if (children) return <>{children(result)}</>;\n return null;\n};\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,19 @@
1
- import { MCPAuthConfig, MCPConnectionState, MCPConnector, MCPCustomServerRecord, MCPElicitation, MCPElicitationResponse, MCPManagerMethods, MCPManagerState, MCPResponseCacheConfig, MCPServerKind, MCPServerMethods, MCPServerQuery, MCPServerState, MCPToolInfo } from "./mcp-scope.js";
2
- import { MCPPersistedAuthState } from "./auth/types.js";
3
- import { MCPStorage, MCPStorageElement } from "./resources/storage/types.js";
4
- import { defineConnector } from "./connector.js";
5
- import { McpConnectorByIndexProvider } from "./context/McpConnectorByIndexProvider.js";
6
- import { McpCustomServerByIndexProvider } from "./context/McpCustomServerByIndexProvider.js";
7
- import { McpServerByIdProvider } from "./context/McpServerByIdProvider.js";
8
- import { McpOAuthCallback, UseMcpOAuthCallbackOptions, UseMcpOAuthCallbackResult, useMcpOAuthCallback } from "./hooks/useMcpOAuthCallback.js";
9
- import { McpManagerResource, McpManagerResourceProps } from "./resources/McpManagerResource.js";
10
- import { McpServerResource, McpServerResourceProps } from "./resources/McpServerResource.js";
11
- import { McpLocalStorage, McpLocalStorageOptions } from "./resources/storage/McpLocalStorage.js";
12
- import { McpMemoryStorage } from "./resources/storage/McpMemoryStorage.js";
13
- import { McpCustomStorage } from "./resources/storage/McpCustomStorage.js";
14
- import { manager_d_exports } from "./primitives/manager.js";
15
- import { server_d_exports } from "./primitives/server.js";
16
- import { addForm_d_exports } from "./primitives/addForm.js";
17
- import { elicitation_d_exports } from "./primitives/elicitation.js";
18
- export { type MCPAuthConfig, type MCPConnectionState, type MCPConnector, type MCPCustomServerRecord, type MCPElicitation, type MCPElicitationResponse, type MCPManagerMethods, type MCPManagerState, type MCPPersistedAuthState, type MCPResponseCacheConfig, type MCPServerKind, type MCPServerMethods, type MCPServerQuery, type MCPServerState, type MCPStorage, type MCPStorageElement, type MCPToolInfo, addForm_d_exports as McpAddFormPrimitive, McpConnectorByIndexProvider, McpCustomServerByIndexProvider, McpCustomStorage, elicitation_d_exports as McpElicitationPrimitive, McpLocalStorage, type McpLocalStorageOptions, manager_d_exports as McpManagerPrimitive, McpManagerResource, type McpManagerResourceProps, McpMemoryStorage, McpOAuthCallback, McpServerByIdProvider, server_d_exports as McpServerPrimitive, McpServerResource, type McpServerResourceProps, type UseMcpOAuthCallbackOptions, type UseMcpOAuthCallbackResult, defineConnector, useMcpOAuthCallback };
1
+ import "./mcp-scope.js";
2
+ export { McpManagerResource, type McpManagerResourceProps, } from "./resources/McpManagerResource.js";
3
+ export { McpServerResource, type McpServerResourceProps, } from "./resources/McpServerResource.js";
4
+ export { defineConnector } from "./connector.js";
5
+ export { McpLocalStorage, type McpLocalStorageOptions, } from "./resources/storage/McpLocalStorage.js";
6
+ export { McpMemoryStorage } from "./resources/storage/McpMemoryStorage.js";
7
+ export { McpCustomStorage } from "./resources/storage/McpCustomStorage.js";
8
+ export type { MCPStorage, MCPStorageElement } from "./resources/storage/types.js";
9
+ export * as McpManagerPrimitive from "./primitives/manager.js";
10
+ export * as McpServerPrimitive from "./primitives/server.js";
11
+ export * as McpAddFormPrimitive from "./primitives/addForm.js";
12
+ export * as McpElicitationPrimitive from "./primitives/elicitation.js";
13
+ export { McpServerByIdProvider } from "./context/McpServerByIdProvider.js";
14
+ export { McpConnectorByIndexProvider } from "./context/McpConnectorByIndexProvider.js";
15
+ export { McpCustomServerByIndexProvider } from "./context/McpCustomServerByIndexProvider.js";
16
+ export { useMcpOAuthCallback, McpOAuthCallback, type UseMcpOAuthCallbackOptions, type UseMcpOAuthCallbackResult, } from "./hooks/useMcpOAuthCallback.js";
17
+ export type { MCPPersistedAuthState } from "./auth/types.js";
18
+ export type { MCPAuthConfig, MCPResponseCacheConfig, MCPConnector, MCPCustomServerRecord, MCPServerKind, MCPConnectionState, MCPToolInfo, MCPElicitation, MCPElicitationResponse, MCPServerState, MCPManagerState, MCPServerMethods, MCPManagerMethods, MCPServerQuery, } from "./mcp-scope.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,wBAAqB;AAKrB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,0CAAuC;AAGxC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,yCAAsC;AAGvC,OAAO,EAAE,eAAe,EAAE,uBAAoB;AAG9C,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,+CAA4C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gDAA6C;AACxE,OAAO,EAAE,gBAAgB,EAAE,gDAA6C;AACxE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,qCAAkC;AAG/E,OAAO,KAAK,mBAAmB,gCAA6B;AAC5D,OAAO,KAAK,kBAAkB,+BAA4B;AAC1D,OAAO,KAAK,mBAAmB,gCAA6B;AAC5D,OAAO,KAAK,uBAAuB,oCAAiC;AAKpE,OAAO,EAAE,qBAAqB,EAAE,2CAAwC;AACxE,OAAO,EAAE,2BAA2B,EAAE,iDAA8C;AACpF,OAAO,EAAE,8BAA8B,EAAE,oDAAiD;AAG1F,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,uCAAoC;AAGrC,YAAY,EAAE,qBAAqB,EAAE,wBAAqB;AAG1D,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,uBAAoB"}
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { defineConnector } from "./connector.js";
2
+ import { McpConnectorByIndexProvider } from "./context/McpConnectorByIndexProvider.js";
3
+ import { McpCustomServerByIndexProvider } from "./context/McpCustomServerByIndexProvider.js";
4
+ import { McpServerByIdProvider } from "./context/McpServerByIdProvider.js";
5
+ import { McpOAuthCallback, useMcpOAuthCallback } from "./hooks/useMcpOAuthCallback.js";
2
6
  import { McpServerResource } from "./resources/McpServerResource.js";
3
7
  import { McpLocalStorage } from "./resources/storage/McpLocalStorage.js";
4
8
  import { McpManagerResource } from "./resources/McpManagerResource.js";
5
9
  import { McpMemoryStorage } from "./resources/storage/McpMemoryStorage.js";
6
10
  import { McpCustomStorage } from "./resources/storage/McpCustomStorage.js";
7
- import { McpConnectorByIndexProvider } from "./context/McpConnectorByIndexProvider.js";
8
- import { McpCustomServerByIndexProvider } from "./context/McpCustomServerByIndexProvider.js";
9
11
  import { manager_exports } from "./primitives/manager.js";
10
12
  import { server_exports } from "./primitives/server.js";
11
13
  import { addForm_exports } from "./primitives/addForm.js";
12
14
  import { elicitation_exports } from "./primitives/elicitation.js";
13
- import { McpServerByIdProvider } from "./context/McpServerByIdProvider.js";
14
- import { McpOAuthCallback, useMcpOAuthCallback } from "./hooks/useMcpOAuthCallback.js";
15
15
  export { addForm_exports as McpAddFormPrimitive, McpConnectorByIndexProvider, McpCustomServerByIndexProvider, McpCustomStorage, elicitation_exports as McpElicitationPrimitive, McpLocalStorage, manager_exports as McpManagerPrimitive, McpManagerResource, McpMemoryStorage, McpOAuthCallback, McpServerByIdProvider, server_exports as McpServerPrimitive, McpServerResource, defineConnector, useMcpOAuthCallback };