MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / updateGraph

Function updateGraph

packages/plugins/microsoft/src/sdk/plugin.ts:222–299  ·  view source on GitHub ↗
(rawSlug: string, input?: MicrosoftUpdateInput)

Source from the content-addressed store, hash-verified

220 });
221
222 const updateGraph = (rawSlug: string, input?: MicrosoftUpdateInput) =>
223 Effect.gen(function* () {
224 const slug = IntegrationSlug.make(rawSlug);
225 const record = yield* ctx.core.integrations.get(slug);
226 const current = record ? decodeMicrosoftGraphIntegrationConfig(record.config) : null;
227 if (!record || !current) {
228 return yield* new IntegrationNotFoundError({ slug });
229 }
230
231 const graph = yield* buildMicrosoftGraphOpenApiSpec(
232 {
233 presetIds: input?.presetIds ?? current.microsoftGraphPresetIds,
234 customScopes: input?.customScopes ?? current.microsoftGraphCustomScopes,
235 baseUrl: input?.baseUrl ?? current.baseUrl,
236 specUrl: input?.specUrl ?? current.sourceUrl,
237 authorizationUrl: input?.authorizationUrl ?? current.microsoftGraphAuthorizationUrl,
238 tokenUrl: input?.tokenUrl ?? current.microsoftGraphTokenUrl,
239 clientCredentialsTokenUrl:
240 input?.clientCredentialsTokenUrl ?? current.microsoftGraphClientCredentialsTokenUrl,
241 },
242 httpClientLayer,
243 urlPolicy,
244 );
245 const previousOperations = yield* ctx.storage.listOperations(rawSlug);
246 const previousNames = new Set(previousOperations.map((op) => op.toolName));
247
248 const specHash = yield* sha256Hex(graph.specText);
249 yield* ctx.storage.putSpec(specHash, graph.specText);
250
251 const nextConfig: MicrosoftGraphIntegrationConfig = {
252 ...current,
253 specHash,
254 sourceUrl: graph.specUrl,
255 microsoftGraphPresetIds: graph.presetIds,
256 microsoftGraphCustomScopes: graph.customScopes,
257 microsoftGraphScopes: graph.scopes,
258 microsoftGraphExactPaths: graph.exactPaths,
259 microsoftGraphPathPrefixes: graph.pathPrefixes,
260 microsoftGraphTagPrefixes: graph.tagPrefixes,
261 microsoftGraphCoversFullGraph: graph.coversFullGraph,
262 microsoftGraphAuthorizationUrl: graph.authorizationUrl,
263 microsoftGraphTokenUrl: graph.tokenUrl,
264 microsoftGraphClientCredentialsTokenUrl: graph.clientCredentialsTokenUrl,
265 authenticationTemplate: graph.authenticationTemplate,
266 ...(input?.baseUrl ? { baseUrl: input.baseUrl } : {}),
267 };
268
269 const persisted = yield* ctx.transaction(
270 Effect.gen(function* () {
271 yield* ctx.core.integrations.update(slug, {
272 config: nextConfig satisfies MicrosoftGraphIntegrationConfig as IntegrationConfig,
273 });
274 return yield* persistGraphOperations(graph, rawSlug, specHash);
275 }),
276 );
277 const nextNames = new Set(persisted.toolNames);
278
279 const connections = yield* ctx.connections.list({ integration: slug });

Callers

nothing calls this directly

Calls 8

sha256HexFunction · 0.90
persistGraphOperationsFunction · 0.85
transactionMethod · 0.80
getMethod · 0.65
updateMethod · 0.65
listMethod · 0.65

Tested by

no test coverage detected