MCPcopy Index your code
hub / github.com/github/copilot-sdk / generateRpc

Function generateRpc

scripts/codegen/csharp.ts:2537–2587  ·  view source on GitHub ↗
(schemaPath?: string, sessionEventsSchema?: JSONSchema7)

Source from the content-addressed store, hash-verified

2535}
2536
2537export async function generateRpc(schemaPath?: string, sessionEventsSchema?: JSONSchema7): Promise<void> {
2538 console.log("C#: generating RPC types...");
2539 const resolvedPath = schemaPath ?? (await getApiSchemaPath());
2540 let schema = fixNullableRequiredRefsInApiSchema(cloneSchemaForCodegen((await loadSchemaJson(resolvedPath)) as ApiSchema));
2541 if (sessionEventsSchema) {
2542 const sharedDefinitions = findSharedSchemaDefinitions(
2543 schema as unknown as Record<string, unknown>,
2544 sessionEventsSchema as unknown as Record<string, unknown>
2545 );
2546 const reachableDefinitions = collectReachableDefinitionNames(sessionEventsSchema as unknown as Record<string, unknown>);
2547 for (const name of [...sharedDefinitions]) {
2548 if (!reachableDefinitions.has(name)) {
2549 sharedDefinitions.delete(name);
2550 }
2551 }
2552 schema = rewriteSharedDefinitionReferences(schema, sharedDefinitions, "session-events.schema.json");
2553 }
2554 const externalJsonSerializableRefs = new Map<string, Set<string>>();
2555 const externalValueTypes = new Set<string>();
2556 if (sessionEventsSchema) {
2557 const sessionEventsCode = generateSessionEventsCode(sessionEventsSchema);
2558 const externalRefs = collectExternalSchemaRefNames(schema);
2559 const sessionEventRefs = externalRefs.get("session-events.schema.json");
2560 if (sessionEventRefs && sessionEventRefs.size > 0) {
2561 const reachableDefinitions = collectReachableDefinitionNames(
2562 sessionEventsSchema as unknown as Record<string, unknown>,
2563 sessionEventRefs
2564 );
2565 const emittedDefinitions = new Set<string>();
2566 for (const name of reachableDefinitions) {
2567 const typeName = typeToClassName(name);
2568 const declarationPattern = new RegExp(`\\bpublic\\s+(?:(?:sealed|abstract|partial|readonly)\\s+)*(?:class|struct)\\s+${typeName}\\b`);
2569 if (declarationPattern.test(sessionEventsCode)) {
2570 emittedDefinitions.add(name);
2571 }
2572 const valueTypeDeclarationPattern = new RegExp(`\\bpublic\\s+(?:(?:readonly)\\s+)?struct\\s+${typeName}\\b`);
2573 if (valueTypeDeclarationPattern.test(sessionEventsCode)) {
2574 externalValueTypes.add(name);
2575 }
2576 }
2577 externalJsonSerializableRefs.set(
2578 "session-events.schema.json",
2579 emittedDefinitions
2580 );
2581 }
2582 }
2583 const code = generateRpcCode(schema, externalJsonSerializableRefs, externalValueTypes);
2584 const outPath = await writeGeneratedFile("dotnet/src/Generated/Rpc.cs", code);
2585 console.log(` ✓ ${outPath}`);
2586 await formatCSharpFile(outPath);
2587}
2588
2589// ══════════════════════════════════════════════════════════════════════════════
2590// MAIN

Callers 1

generateFunction · 0.70

Calls 15

cloneSchemaForCodegenFunction · 0.85
loadSchemaJsonFunction · 0.85
typeToClassNameFunction · 0.85
formatCSharpFileFunction · 0.85
getApiSchemaPathFunction · 0.70
generateRpcCodeFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…