@assistant-ui/react-mcp 0.1.17 → 0.1.19
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/buildHeaders.d.ts +1 -2
- package/dist/auth/buildHeaders.d.ts.map +1 -1
- package/dist/auth/createOAuthProvider.d.ts +5 -6
- package/dist/auth/createOAuthProvider.d.ts.map +1 -1
- package/dist/auth/types.d.ts +1 -2
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/connector.d.ts +1 -2
- package/dist/connector.d.ts.map +1 -1
- package/dist/context/McpConnectorByIndexProvider.d.ts +1 -2
- package/dist/context/McpConnectorByIndexProvider.d.ts.map +1 -1
- package/dist/context/McpCustomServerByIndexProvider.d.ts +1 -2
- package/dist/context/McpCustomServerByIndexProvider.d.ts.map +1 -1
- package/dist/context/McpServerByIdProvider.d.ts +1 -2
- package/dist/context/McpServerByIdProvider.d.ts.map +1 -1
- package/dist/hooks/useMcpOAuthCallback.d.ts +5 -6
- package/dist/hooks/useMcpOAuthCallback.d.ts.map +1 -1
- package/dist/hooks/useMcpOAuthCallback.js +4 -0
- package/dist/hooks/useMcpOAuthCallback.js.map +1 -1
- package/dist/mcp-scope.d.ts +14 -15
- package/dist/mcp-scope.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormAuthFields.d.ts +4 -4
- package/dist/primitives/addForm/McpAddFormAuthFields.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormAuthFields.js +28 -38
- package/dist/primitives/addForm/McpAddFormAuthFields.js.map +1 -1
- package/dist/primitives/addForm/McpAddFormAuthSelect.d.ts +2 -3
- package/dist/primitives/addForm/McpAddFormAuthSelect.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormBearerTokenField.d.ts +10 -0
- package/dist/primitives/addForm/McpAddFormBearerTokenField.d.ts.map +1 -0
- package/dist/primitives/addForm/McpAddFormBearerTokenField.js +50 -0
- package/dist/primitives/addForm/McpAddFormBearerTokenField.js.map +1 -0
- package/dist/primitives/addForm/McpAddFormCancel.d.ts +2 -3
- package/dist/primitives/addForm/McpAddFormCancel.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormError.d.ts +2 -3
- 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.d.ts +2 -3
- package/dist/primitives/addForm/McpAddFormNameField.d.ts.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 +2 -3
- 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/McpAddFormScopesField.d.ts +10 -0
- package/dist/primitives/addForm/McpAddFormScopesField.d.ts.map +1 -0
- package/dist/primitives/addForm/McpAddFormScopesField.js +38 -0
- package/dist/primitives/addForm/McpAddFormScopesField.js.map +1 -0
- package/dist/primitives/addForm/McpAddFormSubmit.d.ts +2 -3
- package/dist/primitives/addForm/McpAddFormSubmit.d.ts.map +1 -1
- package/dist/primitives/addForm/McpAddFormUrlField.d.ts +2 -3
- package/dist/primitives/addForm/McpAddFormUrlField.d.ts.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 +13 -6
- package/dist/primitives/addForm/context.d.ts.map +1 -1
- package/dist/primitives/addForm/context.js.map +1 -1
- package/dist/primitives/addForm.d.ts +4 -2
- package/dist/primitives/addForm.js +5 -1
- package/dist/primitives/addForm.js.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveAccept.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveAccept.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveCancel.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveCancel.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveDecline.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveDecline.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveError.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveError.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveFields.d.ts +3 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveFields.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveItems.d.ts +3 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveItems.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveMessage.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveMessage.d.ts.map +1 -1
- package/dist/primitives/elicitation/McpElicitationPrimitiveRoot.d.ts +2 -3
- package/dist/primitives/elicitation/McpElicitationPrimitiveRoot.d.ts.map +1 -1
- package/dist/primitives/elicitation/context.d.ts +7 -8
- package/dist/primitives/elicitation/context.d.ts.map +1 -1
- package/dist/primitives/elicitation/initialElicitationDraft.d.ts +1 -2
- package/dist/primitives/elicitation/initialElicitationDraft.d.ts.map +1 -1
- package/dist/primitives/elicitation/prepareElicitationContent.d.ts +1 -2
- package/dist/primitives/elicitation/prepareElicitationContent.d.ts.map +1 -1
- package/dist/primitives/elicitation/prepareElicitationContent.js +5 -1
- package/dist/primitives/elicitation/prepareElicitationContent.js.map +1 -1
- package/dist/primitives/manager/McpManagerAddCustomTrigger.d.ts +2 -3
- package/dist/primitives/manager/McpManagerAddCustomTrigger.d.ts.map +1 -1
- package/dist/primitives/manager/McpManagerConnectors.d.ts +2 -3
- package/dist/primitives/manager/McpManagerConnectors.d.ts.map +1 -1
- package/dist/primitives/manager/McpManagerCustomServers.d.ts +2 -3
- package/dist/primitives/manager/McpManagerCustomServers.d.ts.map +1 -1
- package/dist/primitives/manager/McpManagerRoot.d.ts +2 -3
- package/dist/primitives/manager/McpManagerRoot.d.ts.map +1 -1
- package/dist/primitives/server/McpServerConnectButton.d.ts +2 -3
- package/dist/primitives/server/McpServerConnectButton.d.ts.map +1 -1
- package/dist/primitives/server/McpServerDisconnectButton.d.ts +2 -3
- package/dist/primitives/server/McpServerDisconnectButton.d.ts.map +1 -1
- package/dist/primitives/server/McpServerError.d.ts +2 -3
- package/dist/primitives/server/McpServerError.d.ts.map +1 -1
- package/dist/primitives/server/McpServerIcon.d.ts +2 -3
- package/dist/primitives/server/McpServerIcon.d.ts.map +1 -1
- package/dist/primitives/server/McpServerName.d.ts +2 -3
- package/dist/primitives/server/McpServerName.d.ts.map +1 -1
- package/dist/primitives/server/McpServerOAuthLink.d.ts +2 -3
- package/dist/primitives/server/McpServerOAuthLink.d.ts.map +1 -1
- package/dist/primitives/server/McpServerRemoveButton.d.ts +2 -3
- package/dist/primitives/server/McpServerRemoveButton.d.ts.map +1 -1
- package/dist/primitives/server/McpServerRoot.d.ts +2 -3
- package/dist/primitives/server/McpServerRoot.d.ts.map +1 -1
- package/dist/primitives/server/McpServerStatus.d.ts +2 -3
- package/dist/primitives/server/McpServerStatus.d.ts.map +1 -1
- package/dist/primitives/server/McpServerToolName.d.ts +2 -3
- package/dist/primitives/server/McpServerToolName.d.ts.map +1 -1
- package/dist/primitives/server/McpServerTools.d.ts +3 -4
- package/dist/primitives/server/McpServerTools.d.ts.map +1 -1
- package/dist/resources/McpManagerResource.d.ts +2 -3
- package/dist/resources/McpManagerResource.d.ts.map +1 -1
- package/dist/resources/McpManagerResource.js +358 -244
- package/dist/resources/McpManagerResource.js.map +1 -1
- package/dist/resources/McpServerRemovalFence.d.ts +6 -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 +3 -4
- package/dist/resources/McpServerResource.d.ts.map +1 -1
- package/dist/resources/McpServerResource.js +9 -5
- package/dist/resources/McpServerResource.js.map +1 -1
- package/dist/resources/storage/McpCustomStorage.d.ts +1 -2
- package/dist/resources/storage/McpCustomStorage.d.ts.map +1 -1
- package/dist/resources/storage/McpLocalStorage.d.ts +4 -5
- package/dist/resources/storage/McpLocalStorage.d.ts.map +1 -1
- package/dist/resources/storage/McpLocalStorage.js +2 -1
- package/dist/resources/storage/McpLocalStorage.js.map +1 -1
- package/dist/resources/storage/McpMemoryStorage.d.ts +1 -2
- package/dist/resources/storage/McpMemoryStorage.d.ts.map +1 -1
- package/dist/resources/storage/types.d.ts +12 -11
- package/dist/resources/storage/types.d.ts.map +1 -1
- package/dist/resources/validateElicitationContent.d.ts +1 -2
- package/dist/resources/validateElicitationContent.d.ts.map +1 -1
- package/dist/utils/createMcpId.d.ts +1 -2
- package/dist/utils/createMcpId.d.ts.map +1 -1
- package/dist/utils/invokeMcpCallback.d.ts +1 -2
- package/dist/utils/invokeMcpCallback.d.ts.map +1 -1
- package/dist/utils/serverId.d.ts +2 -3
- package/dist/utils/serverId.d.ts.map +1 -1
- package/dist/utils/serverUrl.d.ts +3 -4
- package/dist/utils/serverUrl.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/hooks/useMcpOAuthCallback.test.ts +53 -0
- package/src/hooks/useMcpOAuthCallback.tsx +12 -0
- package/src/index.ts +2 -1
- package/src/primitives/addForm/McpAddFormAccessibility.test.tsx +310 -0
- package/src/primitives/addForm/McpAddFormAuthFields.tsx +26 -16
- package/src/primitives/addForm/McpAddFormBearerTokenField.tsx +46 -0
- package/src/primitives/addForm/McpAddFormError.tsx +17 -3
- package/src/primitives/addForm/McpAddFormNameField.tsx +13 -1
- package/src/primitives/addForm/McpAddFormRoot.test.tsx +65 -0
- package/src/primitives/addForm/McpAddFormRoot.tsx +51 -8
- package/src/primitives/addForm/McpAddFormScopesField.tsx +34 -0
- package/src/primitives/addForm/McpAddFormUrlField.tsx +12 -1
- package/src/primitives/addForm/context.tsx +10 -0
- package/src/primitives/addForm.ts +2 -0
- package/src/primitives/elicitation/prepareElicitationContent.ts +8 -6
- package/src/resources/McpManagerResource.test.ts +797 -9
- package/src/resources/McpManagerResource.ts +242 -60
- package/src/resources/McpServerRemovalFence.ts +21 -0
- package/src/resources/McpServerResource.test.ts +9 -6
- package/src/resources/McpServerResource.ts +11 -6
- package/src/resources/storage/McpLocalStorage.test.ts +2 -0
- package/src/resources/storage/McpLocalStorage.ts +2 -1
- package/src/resources/storage/types.ts +10 -8
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assertUniqueServerIds } from "../utils/serverId.js";
|
|
2
2
|
import { createMcpId } from "../utils/createMcpId.js";
|
|
3
3
|
import { clearOAuthProviderAuthState } from "../auth/createOAuthProvider.js";
|
|
4
|
+
import { withMcpServerRemovalFence } from "./McpServerRemovalFence.js";
|
|
4
5
|
import { McpServerResource } from "./McpServerResource.js";
|
|
5
6
|
import { McpLocalStorage } from "./storage/McpLocalStorage.js";
|
|
6
7
|
import { attachTransformScopes, useAssistantClientRef, useClientLookup } from "@assistant-ui/store";
|
|
@@ -18,6 +19,9 @@ const NO_CONNECTORS = [];
|
|
|
18
19
|
const reportCustomStorageFailure = (operation, error) => {
|
|
19
20
|
console.error(`[assistant-ui/react-mcp] failed to ${operation} custom servers:`, error);
|
|
20
21
|
};
|
|
22
|
+
const reportBlockedCustomServerPersistence = () => {
|
|
23
|
+
console.error("[assistant-ui/react-mcp] custom server changes remain in memory because loading the persisted list failed; remount the manager to retry");
|
|
24
|
+
};
|
|
21
25
|
const persistCustomServers = async (storage, records) => {
|
|
22
26
|
try {
|
|
23
27
|
await storage.saveCustomServers(records);
|
|
@@ -25,8 +29,173 @@ const persistCustomServers = async (storage, records) => {
|
|
|
25
29
|
reportCustomStorageFailure("save", error);
|
|
26
30
|
}
|
|
27
31
|
};
|
|
32
|
+
const enqueueCustomServerTask = (persistenceQueues, scopeKey, task) => {
|
|
33
|
+
const next = (persistenceQueues.get(scopeKey) ?? Promise.resolve()).then(task);
|
|
34
|
+
persistenceQueues.set(scopeKey, next);
|
|
35
|
+
next.then(() => {
|
|
36
|
+
if (persistenceQueues.get(scopeKey) === next) persistenceQueues.delete(scopeKey);
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const enqueueCustomServerPersistence = (persistenceQueues, scopeKey, storage, records) => enqueueCustomServerTask(persistenceQueues, scopeKey, () => persistCustomServers(storage, records));
|
|
40
|
+
const holdCustomServerPersistence = (persistenceQueues, scopeKey) => {
|
|
41
|
+
let release = () => {};
|
|
42
|
+
const gate = new Promise((resolve) => {
|
|
43
|
+
release = resolve;
|
|
44
|
+
});
|
|
45
|
+
enqueueCustomServerTask(persistenceQueues, scopeKey, () => gate);
|
|
46
|
+
return release;
|
|
47
|
+
};
|
|
48
|
+
const deduplicateCustomServers = (records) => {
|
|
49
|
+
const seen = /* @__PURE__ */ new Set();
|
|
50
|
+
return records.filter((record) => {
|
|
51
|
+
if (seen.has(record.id)) {
|
|
52
|
+
console.error(`[assistant-ui/react-mcp] ignored duplicate custom server id "${record.id}" loaded from storage`);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
seen.add(record.id);
|
|
56
|
+
return true;
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const useMcpCustomServersResource = (t0) => {
|
|
60
|
+
const $ = c(22);
|
|
61
|
+
const { storage, scopeKey, persistenceQueues } = t0;
|
|
62
|
+
let t1;
|
|
63
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
64
|
+
t1 = [];
|
|
65
|
+
$[0] = t1;
|
|
66
|
+
} else t1 = $[0];
|
|
67
|
+
const [customServers, setCustomServers] = useState(t1);
|
|
68
|
+
const [isHydrated, setIsHydrated] = useState(false);
|
|
69
|
+
let t2;
|
|
70
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
71
|
+
t2 = [];
|
|
72
|
+
$[1] = t2;
|
|
73
|
+
} else t2 = $[1];
|
|
74
|
+
const customServersRef = useRef(t2);
|
|
75
|
+
const hydrationStateRef = useRef("pending");
|
|
76
|
+
const hasPendingMutationRef = useRef(false);
|
|
77
|
+
const [removedBeforeHydration] = useState(_temp);
|
|
78
|
+
const reportedBlockedPersistenceRef = useRef(false);
|
|
79
|
+
let t3;
|
|
80
|
+
if ($[2] !== persistenceQueues || $[3] !== removedBeforeHydration || $[4] !== scopeKey || $[5] !== storage) {
|
|
81
|
+
t3 = async (signal) => {
|
|
82
|
+
while (true) {
|
|
83
|
+
const pendingPersistence = persistenceQueues.get(scopeKey);
|
|
84
|
+
if (!pendingPersistence) break;
|
|
85
|
+
await pendingPersistence;
|
|
86
|
+
if (signal.cancelled) return;
|
|
87
|
+
if (persistenceQueues.get(scopeKey) === pendingPersistence) break;
|
|
88
|
+
}
|
|
89
|
+
let records;
|
|
90
|
+
try {
|
|
91
|
+
const loadedRecords = await storage.loadCustomServers();
|
|
92
|
+
records = deduplicateCustomServers(loadedRecords);
|
|
93
|
+
} catch (t4) {
|
|
94
|
+
const error = t4;
|
|
95
|
+
if (!signal.cancelled) {
|
|
96
|
+
reportCustomStorageFailure("load", error);
|
|
97
|
+
hydrationStateRef.current = "failed";
|
|
98
|
+
if (hasPendingMutationRef.current) {
|
|
99
|
+
reportBlockedCustomServerPersistence();
|
|
100
|
+
reportedBlockedPersistenceRef.current = true;
|
|
101
|
+
}
|
|
102
|
+
setIsHydrated(true);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const hadPendingMutation = hasPendingMutationRef.current;
|
|
107
|
+
const hydratedRecords = records.filter((record) => !removedBeforeHydration.has(record.id));
|
|
108
|
+
const mergedRecords = (() => {
|
|
109
|
+
const prev = customServersRef.current;
|
|
110
|
+
if (prev.length === 0) return hydratedRecords;
|
|
111
|
+
const persistedIds = new Set(hydratedRecords.map(_temp2));
|
|
112
|
+
return [...hydratedRecords, ...prev.filter((r_0) => !persistedIds.has(r_0.id))];
|
|
113
|
+
})();
|
|
114
|
+
customServersRef.current = mergedRecords;
|
|
115
|
+
hydrationStateRef.current = "succeeded";
|
|
116
|
+
hasPendingMutationRef.current = false;
|
|
117
|
+
if (hadPendingMutation) enqueueCustomServerPersistence(persistenceQueues, scopeKey, storage, mergedRecords);
|
|
118
|
+
if (signal.cancelled) return;
|
|
119
|
+
setCustomServers(mergedRecords);
|
|
120
|
+
setIsHydrated(true);
|
|
121
|
+
};
|
|
122
|
+
$[2] = persistenceQueues;
|
|
123
|
+
$[3] = removedBeforeHydration;
|
|
124
|
+
$[4] = scopeKey;
|
|
125
|
+
$[5] = storage;
|
|
126
|
+
$[6] = t3;
|
|
127
|
+
} else t3 = $[6];
|
|
128
|
+
const hydrate = useEffectEvent(t3);
|
|
129
|
+
let t4;
|
|
130
|
+
if ($[7] !== hydrate) {
|
|
131
|
+
t4 = () => {
|
|
132
|
+
const signal_0 = { cancelled: false };
|
|
133
|
+
hydrate(signal_0);
|
|
134
|
+
return () => {
|
|
135
|
+
signal_0.cancelled = true;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
$[7] = hydrate;
|
|
139
|
+
$[8] = t4;
|
|
140
|
+
} else t4 = $[8];
|
|
141
|
+
let t5;
|
|
142
|
+
if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
|
|
143
|
+
t5 = [];
|
|
144
|
+
$[9] = t5;
|
|
145
|
+
} else t5 = $[9];
|
|
146
|
+
useEffect(t4, t5);
|
|
147
|
+
let t6;
|
|
148
|
+
if ($[10] !== persistenceQueues || $[11] !== scopeKey || $[12] !== storage) {
|
|
149
|
+
t6 = (updater) => {
|
|
150
|
+
const next = updater(customServersRef.current);
|
|
151
|
+
customServersRef.current = next;
|
|
152
|
+
setCustomServers(next);
|
|
153
|
+
if (hydrationStateRef.current === "succeeded") {
|
|
154
|
+
enqueueCustomServerPersistence(persistenceQueues, scopeKey, storage, next);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
hasPendingMutationRef.current = true;
|
|
158
|
+
if (hydrationStateRef.current === "failed" && !reportedBlockedPersistenceRef.current) {
|
|
159
|
+
reportBlockedCustomServerPersistence();
|
|
160
|
+
reportedBlockedPersistenceRef.current = true;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
$[10] = persistenceQueues;
|
|
164
|
+
$[11] = scopeKey;
|
|
165
|
+
$[12] = storage;
|
|
166
|
+
$[13] = t6;
|
|
167
|
+
} else t6 = $[13];
|
|
168
|
+
const updateCustomServers = t6;
|
|
169
|
+
let t7;
|
|
170
|
+
if ($[14] !== removedBeforeHydration || $[15] !== updateCustomServers) {
|
|
171
|
+
t7 = (id) => {
|
|
172
|
+
if (hydrationStateRef.current === "pending") removedBeforeHydration.add(id);
|
|
173
|
+
updateCustomServers((prev_0) => prev_0.filter((record_0) => record_0.id !== id));
|
|
174
|
+
};
|
|
175
|
+
$[14] = removedBeforeHydration;
|
|
176
|
+
$[15] = updateCustomServers;
|
|
177
|
+
$[16] = t7;
|
|
178
|
+
} else t7 = $[16];
|
|
179
|
+
const removeCustomServer = t7;
|
|
180
|
+
let t8;
|
|
181
|
+
if ($[17] !== customServers || $[18] !== isHydrated || $[19] !== removeCustomServer || $[20] !== updateCustomServers) {
|
|
182
|
+
t8 = {
|
|
183
|
+
customServers,
|
|
184
|
+
isHydrated,
|
|
185
|
+
updateCustomServers,
|
|
186
|
+
removeCustomServer
|
|
187
|
+
};
|
|
188
|
+
$[17] = customServers;
|
|
189
|
+
$[18] = isHydrated;
|
|
190
|
+
$[19] = removeCustomServer;
|
|
191
|
+
$[20] = updateCustomServers;
|
|
192
|
+
$[21] = t8;
|
|
193
|
+
} else t8 = $[21];
|
|
194
|
+
return t8;
|
|
195
|
+
};
|
|
196
|
+
const McpCustomServersResource = resource(useMcpCustomServersResource);
|
|
28
197
|
const useMcpManagerResource = (props) => {
|
|
29
|
-
const $ = c(
|
|
198
|
+
const $ = c(75);
|
|
30
199
|
const connectors = props.connectors ?? NO_CONNECTORS;
|
|
31
200
|
const autoConnect = props.autoConnect ?? true;
|
|
32
201
|
let t0;
|
|
@@ -44,107 +213,27 @@ const useMcpManagerResource = (props) => {
|
|
|
44
213
|
$[3] = t1;
|
|
45
214
|
} else t1 = $[3];
|
|
46
215
|
const storage = useResource(t1);
|
|
216
|
+
const [persistenceQueues] = useState(_temp3);
|
|
217
|
+
const storageScopeKey = storage.scopeId === void 0 ? "unscoped" : `scoped:${storage.scopeId}`;
|
|
47
218
|
let t2;
|
|
48
|
-
if ($[4]
|
|
49
|
-
t2 =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
219
|
+
if ($[4] !== persistenceQueues || $[5] !== storage || $[6] !== storageScopeKey) {
|
|
220
|
+
t2 = withKey(storageScopeKey, McpCustomServersResource({
|
|
221
|
+
storage,
|
|
222
|
+
scopeKey: storageScopeKey,
|
|
223
|
+
persistenceQueues
|
|
224
|
+
}));
|
|
225
|
+
$[4] = persistenceQueues;
|
|
226
|
+
$[5] = storage;
|
|
227
|
+
$[6] = storageScopeKey;
|
|
228
|
+
$[7] = t2;
|
|
229
|
+
} else t2 = $[7];
|
|
230
|
+
const { customServers, isHydrated, updateCustomServers, removeCustomServer } = useResource(t2);
|
|
231
|
+
assertUniqueServerIds([...connectors.map(_temp4), ...customServers.map(_temp5)]);
|
|
56
232
|
let t3;
|
|
57
|
-
if ($[
|
|
58
|
-
|
|
59
|
-
$[
|
|
60
|
-
|
|
61
|
-
const persistenceQueueRef = useRef(t3);
|
|
62
|
-
let t4;
|
|
63
|
-
let t5;
|
|
64
|
-
if ($[6] !== storage) {
|
|
65
|
-
t4 = () => {
|
|
66
|
-
storageRef.current = storage;
|
|
67
|
-
};
|
|
68
|
-
t5 = [storage];
|
|
69
|
-
$[6] = storage;
|
|
70
|
-
$[7] = t4;
|
|
71
|
-
$[8] = t5;
|
|
72
|
-
} else {
|
|
73
|
-
t4 = $[7];
|
|
74
|
-
t5 = $[8];
|
|
75
|
-
}
|
|
76
|
-
useEffect(t4, t5);
|
|
77
|
-
let t6;
|
|
78
|
-
if ($[9] !== storage) {
|
|
79
|
-
t6 = async (signal) => {
|
|
80
|
-
const markHydrated = () => {
|
|
81
|
-
if (!signal.cancelled) {
|
|
82
|
-
hydratedRef.current = true;
|
|
83
|
-
setIsHydrated(true);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
let records;
|
|
87
|
-
try {
|
|
88
|
-
records = await storage.loadCustomServers();
|
|
89
|
-
} catch (t7) {
|
|
90
|
-
const error = t7;
|
|
91
|
-
if (!signal.cancelled) reportCustomStorageFailure("load", error);
|
|
92
|
-
markHydrated();
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (signal.cancelled) return;
|
|
96
|
-
setCustomServers((prev) => {
|
|
97
|
-
if (prev.length === 0) return records;
|
|
98
|
-
const persistedIds = new Set(records.map(_temp));
|
|
99
|
-
return [...records, ...prev.filter((r_0) => !persistedIds.has(r_0.id))];
|
|
100
|
-
});
|
|
101
|
-
markHydrated();
|
|
102
|
-
};
|
|
103
|
-
$[9] = storage;
|
|
104
|
-
$[10] = t6;
|
|
105
|
-
} else t6 = $[10];
|
|
106
|
-
const hydrate = useEffectEvent(t6);
|
|
107
|
-
let t7;
|
|
108
|
-
if ($[11] !== hydrate) {
|
|
109
|
-
t7 = () => {
|
|
110
|
-
const signal_0 = { cancelled: false };
|
|
111
|
-
hydrate(signal_0);
|
|
112
|
-
return () => {
|
|
113
|
-
signal_0.cancelled = true;
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
$[11] = hydrate;
|
|
117
|
-
$[12] = t7;
|
|
118
|
-
} else t7 = $[12];
|
|
119
|
-
let t8;
|
|
120
|
-
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
121
|
-
t8 = [];
|
|
122
|
-
$[13] = t8;
|
|
123
|
-
} else t8 = $[13];
|
|
124
|
-
useEffect(t7, t8);
|
|
125
|
-
let t10;
|
|
126
|
-
let t9;
|
|
127
|
-
if ($[14] !== customServers) {
|
|
128
|
-
t9 = () => {
|
|
129
|
-
if (!hydratedRef.current) return;
|
|
130
|
-
const targetStorage = storageRef.current;
|
|
131
|
-
persistenceQueueRef.current = persistenceQueueRef.current.then(() => persistCustomServers(targetStorage, customServers));
|
|
132
|
-
};
|
|
133
|
-
t10 = [customServers];
|
|
134
|
-
$[14] = customServers;
|
|
135
|
-
$[15] = t10;
|
|
136
|
-
$[16] = t9;
|
|
137
|
-
} else {
|
|
138
|
-
t10 = $[15];
|
|
139
|
-
t9 = $[16];
|
|
140
|
-
}
|
|
141
|
-
useEffect(t9, t10);
|
|
142
|
-
assertUniqueServerIds([...connectors.map(_temp2), ...customServers.map(_temp3)]);
|
|
143
|
-
let t11;
|
|
144
|
-
if ($[17] !== autoConnect || $[18] !== connectionTimeout || $[19] !== connectors || $[20] !== customServers || $[21] !== redirectUri || $[22] !== storage) {
|
|
145
|
-
let t12;
|
|
146
|
-
if ($[24] !== autoConnect || $[25] !== connectionTimeout || $[26] !== redirectUri || $[27] !== storage) {
|
|
147
|
-
t12 = (c_0) => withKey(c_0.id, McpServerResource({
|
|
233
|
+
if ($[8] !== autoConnect || $[9] !== connectionTimeout || $[10] !== connectors || $[11] !== customServers || $[12] !== persistenceQueues || $[13] !== redirectUri || $[14] !== removeCustomServer || $[15] !== storage || $[16] !== storageScopeKey) {
|
|
234
|
+
let t4;
|
|
235
|
+
if ($[18] !== autoConnect || $[19] !== connectionTimeout || $[20] !== redirectUri || $[21] !== storage) {
|
|
236
|
+
t4 = (c_0) => withKey(c_0.id, McpServerResource({
|
|
148
237
|
id: c_0.id,
|
|
149
238
|
kind: "connector",
|
|
150
239
|
name: c_0.name,
|
|
@@ -157,18 +246,18 @@ const useMcpManagerResource = (props) => {
|
|
|
157
246
|
connectionTimeout: c_0.connectionTimeout ?? connectionTimeout,
|
|
158
247
|
...c_0.cache !== void 0 ? { cache: c_0.cache } : {},
|
|
159
248
|
...c_0.elicitation !== void 0 ? { elicitation: c_0.elicitation } : {},
|
|
160
|
-
onRemove:
|
|
249
|
+
onRemove: _temp6
|
|
161
250
|
}));
|
|
162
|
-
$[
|
|
163
|
-
$[
|
|
164
|
-
$[
|
|
165
|
-
$[
|
|
166
|
-
$[
|
|
167
|
-
} else
|
|
168
|
-
const connectorElements = connectors.map(
|
|
169
|
-
let
|
|
170
|
-
if ($[
|
|
171
|
-
|
|
251
|
+
$[18] = autoConnect;
|
|
252
|
+
$[19] = connectionTimeout;
|
|
253
|
+
$[20] = redirectUri;
|
|
254
|
+
$[21] = storage;
|
|
255
|
+
$[22] = t4;
|
|
256
|
+
} else t4 = $[22];
|
|
257
|
+
const connectorElements = connectors.map(t4);
|
|
258
|
+
let t5;
|
|
259
|
+
if ($[23] !== autoConnect || $[24] !== connectionTimeout || $[25] !== persistenceQueues || $[26] !== redirectUri || $[27] !== removeCustomServer || $[28] !== storage || $[29] !== storageScopeKey) {
|
|
260
|
+
t5 = (s_0) => withKey(s_0.id, McpServerResource(withMcpServerRemovalFence({
|
|
172
261
|
id: s_0.id,
|
|
173
262
|
kind: "custom",
|
|
174
263
|
name: s_0.name,
|
|
@@ -181,56 +270,62 @@ const useMcpManagerResource = (props) => {
|
|
|
181
270
|
...s_0.cache !== void 0 ? { cache: s_0.cache } : {},
|
|
182
271
|
...s_0.elicitation !== void 0 ? { elicitation: s_0.elicitation } : {},
|
|
183
272
|
onRemove: async () => {
|
|
184
|
-
|
|
273
|
+
removeCustomServer(s_0.id);
|
|
185
274
|
}
|
|
186
|
-
}));
|
|
187
|
-
$[
|
|
188
|
-
$[
|
|
189
|
-
$[
|
|
190
|
-
$[
|
|
191
|
-
$[
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
$[
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
$[
|
|
199
|
-
$[
|
|
200
|
-
$[
|
|
201
|
-
$[
|
|
202
|
-
|
|
203
|
-
|
|
275
|
+
}, () => holdCustomServerPersistence(persistenceQueues, storageScopeKey))));
|
|
276
|
+
$[23] = autoConnect;
|
|
277
|
+
$[24] = connectionTimeout;
|
|
278
|
+
$[25] = persistenceQueues;
|
|
279
|
+
$[26] = redirectUri;
|
|
280
|
+
$[27] = removeCustomServer;
|
|
281
|
+
$[28] = storage;
|
|
282
|
+
$[29] = storageScopeKey;
|
|
283
|
+
$[30] = t5;
|
|
284
|
+
} else t5 = $[30];
|
|
285
|
+
const customElements = customServers.map(t5);
|
|
286
|
+
t3 = [...connectorElements, ...customElements];
|
|
287
|
+
$[8] = autoConnect;
|
|
288
|
+
$[9] = connectionTimeout;
|
|
289
|
+
$[10] = connectors;
|
|
290
|
+
$[11] = customServers;
|
|
291
|
+
$[12] = persistenceQueues;
|
|
292
|
+
$[13] = redirectUri;
|
|
293
|
+
$[14] = removeCustomServer;
|
|
294
|
+
$[15] = storage;
|
|
295
|
+
$[16] = storageScopeKey;
|
|
296
|
+
$[17] = t3;
|
|
297
|
+
} else t3 = $[17];
|
|
298
|
+
const lookup = useClientLookup(t3);
|
|
204
299
|
const all = lookup.state;
|
|
205
|
-
let
|
|
206
|
-
if ($[
|
|
207
|
-
|
|
208
|
-
$[
|
|
209
|
-
$[
|
|
210
|
-
} else
|
|
211
|
-
let
|
|
212
|
-
if ($[
|
|
213
|
-
|
|
214
|
-
$[
|
|
215
|
-
$[
|
|
216
|
-
} else
|
|
217
|
-
let
|
|
218
|
-
if ($[
|
|
219
|
-
|
|
300
|
+
let t4;
|
|
301
|
+
if ($[31] !== all) {
|
|
302
|
+
t4 = all.filter(_temp7);
|
|
303
|
+
$[31] = all;
|
|
304
|
+
$[32] = t4;
|
|
305
|
+
} else t4 = $[32];
|
|
306
|
+
let t5;
|
|
307
|
+
if ($[33] !== all) {
|
|
308
|
+
t5 = all.filter(_temp8);
|
|
309
|
+
$[33] = all;
|
|
310
|
+
$[34] = t5;
|
|
311
|
+
} else t5 = $[34];
|
|
312
|
+
let t6;
|
|
313
|
+
if ($[35] !== all || $[36] !== isHydrated || $[37] !== t4 || $[38] !== t5) {
|
|
314
|
+
t6 = {
|
|
220
315
|
servers: all,
|
|
221
|
-
connectors:
|
|
222
|
-
customServers:
|
|
316
|
+
connectors: t4,
|
|
317
|
+
customServers: t5,
|
|
223
318
|
isHydrated
|
|
224
319
|
};
|
|
225
|
-
$[
|
|
226
|
-
$[
|
|
227
|
-
$[
|
|
228
|
-
$[
|
|
229
|
-
$[
|
|
230
|
-
} else
|
|
231
|
-
const state =
|
|
320
|
+
$[35] = all;
|
|
321
|
+
$[36] = isHydrated;
|
|
322
|
+
$[37] = t4;
|
|
323
|
+
$[38] = t5;
|
|
324
|
+
$[39] = t6;
|
|
325
|
+
} else t6 = $[39];
|
|
326
|
+
const state = t6;
|
|
232
327
|
let out;
|
|
233
|
-
if ($[
|
|
328
|
+
if ($[40] !== lookup || $[41] !== state.servers) {
|
|
234
329
|
out = {};
|
|
235
330
|
for (const server of state.servers) {
|
|
236
331
|
if (server.connectionState !== "connected") continue;
|
|
@@ -244,81 +339,81 @@ const useMcpManagerResource = (props) => {
|
|
|
244
339
|
};
|
|
245
340
|
}
|
|
246
341
|
}
|
|
247
|
-
$[
|
|
248
|
-
$[
|
|
249
|
-
$[
|
|
250
|
-
} else out = $[
|
|
342
|
+
$[40] = lookup;
|
|
343
|
+
$[41] = state.servers;
|
|
344
|
+
$[42] = out;
|
|
345
|
+
} else out = $[42];
|
|
251
346
|
const toolkit = out;
|
|
252
347
|
const clientRef = useAssistantClientRef();
|
|
253
|
-
let
|
|
254
|
-
if ($[
|
|
255
|
-
|
|
348
|
+
let t7;
|
|
349
|
+
if ($[43] !== clientRef || $[44] !== toolkit) {
|
|
350
|
+
t7 = () => {
|
|
256
351
|
const client = clientRef.current;
|
|
257
352
|
if (!client) return;
|
|
258
353
|
return client.modelContext.register({ getModelContext: () => ({ tools: toolkit }) });
|
|
259
354
|
};
|
|
260
|
-
$[
|
|
261
|
-
$[
|
|
262
|
-
$[
|
|
263
|
-
} else
|
|
264
|
-
let
|
|
265
|
-
if ($[
|
|
266
|
-
|
|
267
|
-
$[
|
|
268
|
-
$[
|
|
269
|
-
} else
|
|
270
|
-
useAssistantScopeEffect("modelContext",
|
|
271
|
-
let
|
|
272
|
-
if ($[
|
|
273
|
-
|
|
355
|
+
$[43] = clientRef;
|
|
356
|
+
$[44] = toolkit;
|
|
357
|
+
$[45] = t7;
|
|
358
|
+
} else t7 = $[45];
|
|
359
|
+
let t8;
|
|
360
|
+
if ($[46] !== toolkit) {
|
|
361
|
+
t8 = [toolkit];
|
|
362
|
+
$[46] = toolkit;
|
|
363
|
+
$[47] = t8;
|
|
364
|
+
} else t8 = $[47];
|
|
365
|
+
useAssistantScopeEffect("modelContext", t7, t8);
|
|
366
|
+
let t9;
|
|
367
|
+
if ($[48] !== lookup || $[49] !== state) {
|
|
368
|
+
t9 = (kind, index) => {
|
|
274
369
|
const list = kind === "connector" ? state.connectors : state.customServers;
|
|
275
370
|
const entry = list[index];
|
|
276
371
|
if (!entry) throw new Error(`McpManagerResource: no ${kind} at index ${index} (length ${list.length})`);
|
|
277
372
|
return lookup.get({ key: entry.id });
|
|
278
373
|
};
|
|
279
|
-
$[
|
|
280
|
-
$[
|
|
281
|
-
$[
|
|
282
|
-
} else
|
|
283
|
-
const serverByKind =
|
|
284
|
-
let
|
|
285
|
-
if ($[
|
|
286
|
-
|
|
287
|
-
$[
|
|
288
|
-
$[
|
|
289
|
-
} else
|
|
290
|
-
let
|
|
291
|
-
if ($[
|
|
292
|
-
|
|
374
|
+
$[48] = lookup;
|
|
375
|
+
$[49] = state;
|
|
376
|
+
$[50] = t9;
|
|
377
|
+
} else t9 = $[50];
|
|
378
|
+
const serverByKind = t9;
|
|
379
|
+
let t10;
|
|
380
|
+
if ($[51] !== state) {
|
|
381
|
+
t10 = () => state;
|
|
382
|
+
$[51] = state;
|
|
383
|
+
$[52] = t10;
|
|
384
|
+
} else t10 = $[52];
|
|
385
|
+
let t11;
|
|
386
|
+
if ($[53] !== lookup || $[54] !== serverByKind) {
|
|
387
|
+
t11 = (query) => {
|
|
293
388
|
if ("id" in query) return lookup.get({ key: query.id });
|
|
294
389
|
return serverByKind(query.kind, query.index);
|
|
295
390
|
};
|
|
296
|
-
$[
|
|
297
|
-
$[
|
|
298
|
-
$[
|
|
299
|
-
} else
|
|
300
|
-
let
|
|
301
|
-
let
|
|
302
|
-
if ($[
|
|
303
|
-
|
|
304
|
-
const { index: index_0 } =
|
|
391
|
+
$[53] = lookup;
|
|
392
|
+
$[54] = serverByKind;
|
|
393
|
+
$[55] = t11;
|
|
394
|
+
} else t11 = $[55];
|
|
395
|
+
let t12;
|
|
396
|
+
let t13;
|
|
397
|
+
if ($[56] !== serverByKind) {
|
|
398
|
+
t12 = (t14) => {
|
|
399
|
+
const { index: index_0 } = t14;
|
|
305
400
|
return serverByKind("connector", index_0);
|
|
306
401
|
};
|
|
307
|
-
|
|
308
|
-
const { index: index_1 } =
|
|
402
|
+
t13 = (t15) => {
|
|
403
|
+
const { index: index_1 } = t15;
|
|
309
404
|
return serverByKind("custom", index_1);
|
|
310
405
|
};
|
|
311
|
-
$[
|
|
312
|
-
$[
|
|
313
|
-
$[
|
|
406
|
+
$[56] = serverByKind;
|
|
407
|
+
$[57] = t12;
|
|
408
|
+
$[58] = t13;
|
|
314
409
|
} else {
|
|
315
|
-
|
|
316
|
-
|
|
410
|
+
t12 = $[57];
|
|
411
|
+
t13 = $[58];
|
|
317
412
|
}
|
|
318
|
-
let
|
|
319
|
-
if ($[
|
|
320
|
-
|
|
321
|
-
const { name, url, auth, connectionTimeout: connectionTimeout_0, cache, elicitation } =
|
|
413
|
+
let t14;
|
|
414
|
+
if ($[59] !== updateCustomServers) {
|
|
415
|
+
t14 = async (t15) => {
|
|
416
|
+
const { name, url, auth, connectionTimeout: connectionTimeout_0, cache, elicitation } = t15;
|
|
322
417
|
const record = {
|
|
323
418
|
id: createMcpId(),
|
|
324
419
|
name,
|
|
@@ -329,64 +424,83 @@ const useMcpManagerResource = (props) => {
|
|
|
329
424
|
...elicitation !== void 0 ? { elicitation } : {},
|
|
330
425
|
createdAt: Date.now()
|
|
331
426
|
};
|
|
332
|
-
|
|
427
|
+
updateCustomServers((prev) => [...prev, record]);
|
|
333
428
|
return record.id;
|
|
334
429
|
};
|
|
335
|
-
$[
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
430
|
+
$[59] = updateCustomServers;
|
|
431
|
+
$[60] = t14;
|
|
432
|
+
} else t14 = $[60];
|
|
433
|
+
let t15;
|
|
434
|
+
if ($[61] !== lookup || $[62] !== persistenceQueues || $[63] !== removeCustomServer || $[64] !== state || $[65] !== storage || $[66] !== storageScopeKey) {
|
|
435
|
+
t15 = async (id) => {
|
|
340
436
|
if (state.connectors.some((c_1) => c_1.id === id)) throw new Error(`Cannot remove connector "${id}" — connectors are app-defined and not removable. Use a custom server id instead.`);
|
|
341
437
|
try {
|
|
342
438
|
await lookup.get({ key: id }).remove();
|
|
343
439
|
} catch {
|
|
344
|
-
|
|
345
|
-
|
|
440
|
+
const releasePersistence = holdCustomServerPersistence(persistenceQueues, storageScopeKey);
|
|
441
|
+
try {
|
|
442
|
+
await clearOAuthProviderAuthState(storage, id);
|
|
443
|
+
removeCustomServer(id);
|
|
444
|
+
} catch (t16) {
|
|
445
|
+
const error = t16;
|
|
446
|
+
releasePersistence();
|
|
447
|
+
throw error;
|
|
448
|
+
}
|
|
449
|
+
releasePersistence();
|
|
346
450
|
}
|
|
347
451
|
};
|
|
348
|
-
$[
|
|
452
|
+
$[61] = lookup;
|
|
453
|
+
$[62] = persistenceQueues;
|
|
454
|
+
$[63] = removeCustomServer;
|
|
349
455
|
$[64] = state;
|
|
350
456
|
$[65] = storage;
|
|
351
|
-
$[66] =
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
457
|
+
$[66] = storageScopeKey;
|
|
458
|
+
$[67] = t15;
|
|
459
|
+
} else t15 = $[67];
|
|
460
|
+
let t16;
|
|
461
|
+
if ($[68] !== t10 || $[69] !== t11 || $[70] !== t12 || $[71] !== t13 || $[72] !== t14 || $[73] !== t15) {
|
|
462
|
+
t16 = {
|
|
463
|
+
getState: t10,
|
|
464
|
+
server: t11,
|
|
465
|
+
connector: t12,
|
|
466
|
+
customServer: t13,
|
|
467
|
+
addCustomServer: t14,
|
|
468
|
+
removeServer: t15
|
|
362
469
|
};
|
|
363
|
-
$[
|
|
364
|
-
$[
|
|
365
|
-
$[
|
|
366
|
-
$[
|
|
367
|
-
$[
|
|
368
|
-
$[
|
|
369
|
-
|
|
370
|
-
|
|
470
|
+
$[68] = t10;
|
|
471
|
+
$[69] = t11;
|
|
472
|
+
$[70] = t12;
|
|
473
|
+
$[71] = t13;
|
|
474
|
+
$[72] = t14;
|
|
475
|
+
$[73] = t15;
|
|
476
|
+
$[74] = t16;
|
|
477
|
+
} else t16 = $[74];
|
|
478
|
+
return t16;
|
|
371
479
|
};
|
|
372
480
|
const McpManagerResource = resource(useMcpManagerResource);
|
|
373
481
|
attachTransformScopes(useMcpManagerResource, (scopes, parent) => {
|
|
374
482
|
if (!scopes.modelContext && parent.modelContext.source === null) scopes.modelContext = ModelContext();
|
|
375
483
|
});
|
|
376
|
-
function _temp(
|
|
484
|
+
function _temp() {
|
|
485
|
+
return /* @__PURE__ */ new Set();
|
|
486
|
+
}
|
|
487
|
+
function _temp2(r) {
|
|
377
488
|
return r.id;
|
|
378
489
|
}
|
|
379
|
-
function
|
|
490
|
+
function _temp3() {
|
|
491
|
+
return /* @__PURE__ */ new Map();
|
|
492
|
+
}
|
|
493
|
+
function _temp4(c) {
|
|
380
494
|
return c.id;
|
|
381
495
|
}
|
|
382
|
-
function
|
|
496
|
+
function _temp5(s) {
|
|
383
497
|
return s.id;
|
|
384
498
|
}
|
|
385
|
-
async function
|
|
386
|
-
function
|
|
499
|
+
async function _temp6() {}
|
|
500
|
+
function _temp7(s_1) {
|
|
387
501
|
return s_1.kind === "connector";
|
|
388
502
|
}
|
|
389
|
-
function
|
|
503
|
+
function _temp8(s_2) {
|
|
390
504
|
return s_2.kind === "custom";
|
|
391
505
|
}
|
|
392
506
|
//#endregion
|