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

Function extractEventVariants

java/scripts/codegen/java.ts:695–729  ·  view source on GitHub ↗
(schema: JSONSchema7)

Source from the content-addressed store, hash-verified

693}
694
695function extractEventVariants(schema: JSONSchema7): EventVariant[] {
696 const definitions = schema.definitions as Record<string, JSONSchema7>;
697 const sessionEvent = definitions?.SessionEvent;
698 if (!sessionEvent?.anyOf) throw new Error("Schema must have SessionEvent definition with anyOf");
699
700 return (sessionEvent.anyOf as JSONSchema7[])
701 .map((variant) => {
702 // Resolve $ref if present (1.0.35+ schema uses $ref to named definitions)
703 let resolved = variant;
704 if (variant.$ref) {
705 const refName = variant.$ref.replace(/^#\/definitions\//, "");
706 resolved = definitions[refName];
707 if (!resolved) throw new Error(`Unresolved $ref: ${variant.$ref}`);
708 }
709 const typeSchema = resolved.properties?.type as JSONSchema7;
710 const typeName = typeSchema?.const as string;
711 if (!typeName) throw new Error("Variant must have type.const");
712 const baseName = toJavaClassName(typeName);
713 let dataSchema = resolved.properties?.data as JSONSchema7 | undefined;
714 // Resolve $ref on data schema if present
715 if (dataSchema?.$ref) {
716 const dataRefName = dataSchema.$ref.replace(/^#\/definitions\//, "");
717 dataSchema = definitions[dataRefName];
718 }
719 return {
720 typeName,
721 className: `${baseName}Event`,
722 dataSchema: dataSchema ?? null,
723 description: resolved.description,
724 stability: (variant as unknown as Record<string, unknown>).stability as string | undefined,
725 deprecated: (variant as unknown as Record<string, unknown>).deprecated === true,
726 };
727 })
728 .filter((v) => !EXCLUDED_EVENT_TYPES.has(v.typeName));
729}
730
731async function generateSessionEvents(schemaPath: string): Promise<void> {
732 console.log("\n📋 Generating session event classes...");

Callers 1

generateSessionEventsFunction · 0.70

Calls 1

toJavaClassNameFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…