@osdk/generator-converters.ontologyir 2.23.0 → 2.23.1-beta.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @osdk/generator-converters.ontologyir
2
2
 
3
+ ## 2.23.1-beta.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 60aff19: Bump `@osdk/foundry.*` and `@osdk/internal.foundry.*` catalog entries from `2.57.0` to `2.61.0`. Includes type-fixups for the new `applyScenario` / `scenarioReference` discriminated-union variants and the now-required `QueryParameterV2.required` field.
8
+ - @osdk/client.unstable@2.23.1-beta.2
9
+
3
10
  ## 2.23.0
4
11
 
5
12
  ### Patch Changes
@@ -247,7 +247,8 @@ export class OntologyIrToFullMetadataConverter {
247
247
  version: "0.0.0",
248
248
  parameters: func.inputs.reduce((acc, input) => {
249
249
  acc[input.name] = {
250
- dataType: convertDataType(input.dataType, func.customTypes)
250
+ dataType: convertDataType(input.dataType, func.customTypes),
251
+ required: true
251
252
  };
252
253
  return acc;
253
254
  }, {}),
@@ -373,7 +374,8 @@ export class OntologyIrToFullMetadataConverter {
373
374
  version: "0.0.0",
374
375
  parameters: resolvedInputs.reduce((acc, input) => {
375
376
  acc[input.name] = {
376
- dataType: convertDataType(input.dataType, customTypes, input.required)
377
+ dataType: convertDataType(input.dataType, customTypes, input.required),
378
+ required: input.required ?? true
377
379
  };
378
380
  return acc;
379
381
  }, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"OntologyIrToFullMetadataConverter.js","names":["consola","fs","spawnSync","hash","accessSync","constants","createRequire","path","pathToFileURL","invariant","ts","convertDataType","discoverPythonFunctions","srcDir","rootProjectDir","pythonBinary","pythonPath","process","platform","R_OK","X_OK","Error","result","cwd","encoding","maxBuffer","error","warn","message","status","stderr","stdout","lines","split","i","length","line","trimStart","startsWith","candidate","slice","join","parsed","JSON","parse","e","discoveryModulesCache","Map","loadFunctionDiscoverer","nodeModulesPath","cached","get","modules","requireFromPath","href","module","FunctionDiscoverer","typescript","set","String","OntologyIrToFullMetadataConverter","getFullMetadataFromIr","ir","interfaceTypes","getOsdkInterfaceTypes","Object","values","sharedPropertyTypes","getOsdkSharedPropertyTypes","objectTypes","getOsdkObjectTypes","linkTypes","actionTypes","getOsdkActionTypes","queryTypes","ontology","apiName","rid","displayName","description","valueTypes","getOsdkQueryTypes","functionsDir","pythonFunctionsDir","pythonRootProjectDir","irOutputFile","previewMetadata","queries","tsQueries","discoverTypeScriptFunctions","push","pyQueries","discoverPythonQueryTypes","reduce","acc","query","info","discoveryModules","discoveryTs","tsConfigPath","projectDir","discoverComponentRoot","program","createProgram","entityMetadataMapping","ontologyRid","objectTypesMap","objData","entries","linkTypesMap","lt","linkTypeId","linkTypeRid","objectTypeId","interfaceTypesMap","keys","interfaceTypeRid","ontologies","normalizedFunctionsDir","replace","fd","functions","discover","mkdirSync","dirname","recursive","writeFileSync","stringify","tsFunctions","discoveredFunctions","filter","func","locator","type","map","f","functionName","version","parameters","inputs","input","name","dataType","customTypes","output","single","typeReferences","pythonResult","python3","objectSetTypes","resolveDataType","dt","object","objectApiName","objectSet","listData","list","elementsType","resolved","setData","optData","optionalType","wrappedType","typeId","functionCustomType","customType","fields","changed","resolvedFields","key","fieldDt","resolvedInputs","resolvedOutput","queryType","required","tsConfigFilePath","configFile","readConfigFile","sys","readFile","flattenDiagnosticMessageText","messageText","options","fileNames","errors","parseJsonConfigFileContent","config","messages","d","rootNames","configFileParsingDiagnostics","objects","links","linkMappings","getLinkMappings","fullObject","objectType","icon","displayMetadata","primaryKeys","propRidToApiName","propRid","prop","propertyTypes","primaryKeyRid","primaryKey","titlePropertyRid","titlePropertyTypeRid","titleProperty","properties","propApiName","visibility","visibilityEnum","getOsdkPropertyType","undefined","typeClasses","objectTypeV2","pluralDisplayName","color","blueprint","convertObjectTypeStatus","sharedPropertyTypeMappings","implementsInterfaces2","ii","interfaceApiName","interfaceTypeApiName","propertyMappings","sharedPropKey","propMapping","propertyApiName","propertyTypeRid","propertiesV2","implementsInterfaces","sharedPropertyTypeMapping","link","linkType","linkStatus","convertLinkTypeStatus","mappings","definition","linkDef","manyToMany","sideA","objectTypeAToBLinkMetadata","cardinality","objectTypeApiName","objectTypeRidB","objectTypeRidA","id","sideB","objectTypeBToALinkMetadata","oneToMany","oneSidePrimaryKeyToManySidePropertyMapping","env","NODE_ENV","common","objectTypeRidOneSide","objectTypeRidManySide","manySide","oneToManyLinkMetadata","foreignKeyPropertyApiName","to","oneSide","manyToOneLinkMetadata","linkSide","actions","action","metadata","actionType","getOsdkActionParameters","operations","getOsdkActionOperations","convertActionTypeStatus","actionTypeLogic","logic","rules","irLogic","r","addInterfaceRule","addObjectRule","addOrModifyObjectRuleV2","modifyParamType","objectToModify","objectReference","deleteObjectRule","ontologyIrParameter","objectToDelete","modifyInterfaceRule","parameter","interfaceObjectToModifyParameter","interfaceReference","interfaceReferenceList","modifyObjectRule","paramKey","irParameter","subType","t","objectReferenceList","isParameterRequired","interfaces","interfaceData","interfaceType","propKey","propValue","spt","sharedPropertyType","result_interfaceType","allProperties","allPropertiesV2","extendsInterfaces","val","allExtendsInterfaces","implementedByObjectTypes","getOsdkInterfaceLinkTypes","allLinks","ilts","ilt","linkedEntityApiName","linkedEntityTypeId","interfaceLinkType","spts","value","array","subtype","reducers","struct","ridBase","structFieldTypes","structFields","field","fieldDataType","fieldType","configResult","validation","parameterValidations","defaultValidation"],"sources":["OntologyIrToFullMetadataConverter.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n OntologyIrActionTypeBlockDataV2,\n OntologyIrActionTypeStatus,\n OntologyIrInterfaceTypeBlockDataV2,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrLinkTypeStatus,\n OntologyIrMarketplaceInterfaceLinkType,\n OntologyIrObjectTypeBlockDataV2,\n OntologyIrObjectTypeStatus,\n OntologyIrOntologyBlockDataV2,\n OntologyIrSharedPropertyTypeBlockDataV2,\n OntologyIrType,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\nimport { consola } from \"consola\";\nimport * as fs from \"fs\";\nimport { spawnSync } from \"node:child_process\";\nimport { hash } from \"node:crypto\";\nimport { accessSync, constants } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport * as path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport invariant from \"tiny-invariant\";\nimport * as ts from \"typescript\";\nimport type { ApiName } from \"./ApiName.js\";\nimport { convertDataType } from \"./convertDataType.js\";\n\n// Type definitions for optional function discovery dependencies\n// These are declared inline to avoid compile-time dependency on optional packages\nexport interface IDataType {\n type: string;\n [key: string]: unknown;\n}\n\nexport interface IDiscoveredFunction {\n locator: { type: string; typescript?: { functionName: string } };\n inputs: Array<{ name: string; dataType: IDataType }>;\n output: { single: { dataType: IDataType } };\n customTypes: Record<string, unknown>;\n ontologyProvenance?: {\n editedLinks: Record<string, {}>;\n editedObjects: Record<string, {}>;\n editedInterfaces: Record<string, {}>;\n };\n}\n\ninterface IFunctionDiscoverer {\n discover(): { discoveredFunctions: IDiscoveredFunction[] };\n}\n\ninterface IFunctionDiscovererConstructor {\n new(\n program: ts.Program,\n entryPointPath: string,\n fullFilePath: string,\n entityMetadataMapping?: unknown,\n ): IFunctionDiscoverer;\n}\n\n// Python discovery output uses the same format as IDataType with type field at top level\ninterface IPythonDiscoveredFunction {\n locator: {\n type: \"python3\";\n python3: { moduleName: string; functionName: string };\n };\n inputs: Array<{ name: string; dataType: IDataType; required?: boolean }>;\n output: { type: \"single\"; single: { dataType: IDataType } };\n customTypes?: Record<string, IPythonCustomType>;\n objectTypes?: Record<string, { objectApiName: string }>;\n objectSetTypes?: Record<string, { objectApiName: string }>;\n}\n\ninterface IPythonCustomType {\n fieldMetadata: Record<string, { required?: boolean }>;\n fields: Record<string, IDataType>;\n}\n\ninterface IPythonDiscoveryResult {\n functions: IPythonDiscoveredFunction[];\n errors?: Array<unknown>;\n}\n\nfunction discoverPythonFunctions(\n srcDir: string,\n rootProjectDir: string,\n pythonBinary: string,\n): IPythonDiscoveryResult | null {\n const pythonPath = pythonBinary;\n try {\n accessSync(\n pythonPath,\n process.platform === \"win32\" ? constants.R_OK : constants.X_OK,\n );\n } catch {\n throw new Error(\n `Python binary not found or not executable at ${pythonPath}`,\n );\n }\n\n const result = spawnSync(\n pythonPath,\n [\n \"-m\",\n \"functions.bin\",\n \"parse\",\n \"--src-dir\",\n srcDir,\n \"--root-project-dir\",\n rootProjectDir,\n \"--handle-errors\",\n ],\n {\n cwd: rootProjectDir,\n encoding: \"utf-8\",\n maxBuffer: 50 * 1024 * 1024, // 50MB buffer - function discovery can produce large JSON output\n },\n );\n\n if (result.error) {\n consola.warn(\n `Python function discovery spawn error: ${result.error.message}`,\n );\n return null;\n }\n\n if (result.status !== 0) {\n // Parse error - could log stderr but return null for now\n consola.error(\n `Python function discovery failed: ${result.stderr || result.stdout}`,\n );\n return null;\n }\n\n try {\n // The Python command may output log lines before the JSON on stdout.\n // Try parsing JSON from each line boundary starting from the end,\n // which is more robust than matching a specific marker string.\n // Use a regex split to handle both \\n (Unix) and \\r\\n (Windows) line endings.\n const stdout = result.stdout;\n const lines = stdout.split(/\\r?\\n/);\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i].trimStart();\n if (line.startsWith(\"{\")) {\n const candidate = lines.slice(i).join(\"\\n\");\n try {\n const parsed = JSON.parse(candidate) as IPythonDiscoveryResult;\n if (\"functions\" in parsed) {\n return parsed;\n }\n } catch {\n // Not valid JSON from this line, try earlier\n }\n }\n }\n consola.error(\n `No valid JSON found in Python discovery output: ${stdout.slice(0, 500)}`,\n );\n return null;\n } catch (e: unknown) {\n consola.error(\n `Failed to parse Python discovery output: ${\n e instanceof Error ? e.message : e\n }`,\n );\n return null;\n }\n}\n\ninterface FunctionDiscoveryModules {\n FunctionDiscoverer: IFunctionDiscovererConstructor;\n typescript: typeof ts;\n}\n\n// Lazy-loaded function discovery modules, keyed by nodeModulesPath\nconst discoveryModulesCache = new Map<\n string | undefined,\n FunctionDiscoveryModules\n>();\n\nasync function loadFunctionDiscoverer(\n nodeModulesPath?: string,\n): Promise<FunctionDiscoveryModules> {\n const cached = discoveryModulesCache.get(nodeModulesPath);\n if (cached) {\n return cached;\n }\n try {\n let modules: FunctionDiscoveryModules;\n if (nodeModulesPath) {\n // Use createRequire to load from the specified node_modules path\n // Both FunctionDiscoverer and TypeScript must be from the same node_modules\n // to ensure version compatibility (TypeScript versions must match for\n // program/typechecker interoperability)\n const requireFromPath = createRequire(\n pathToFileURL(path.join(nodeModulesPath, \"package.json\")).href,\n );\n const module = requireFromPath(\n \"@foundry/functions-typescript-osdk-discovery\",\n );\n modules = {\n FunctionDiscoverer: module.FunctionDiscoverer,\n typescript: requireFromPath(\"typescript\"),\n };\n } else {\n // Use dynamic import to avoid compile-time dependency on optional package\n const modulePath = \"@foundry/functions-typescript-osdk-discovery\";\n const module = await import(/* @vite-ignore */ modulePath);\n modules = {\n FunctionDiscoverer: module.FunctionDiscoverer,\n typescript: ts, // Use the bundled TypeScript\n };\n }\n discoveryModulesCache.set(nodeModulesPath, modules);\n return modules;\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n consola.error(\n `Failed to load TypeScript function discovery modules: ${message}\\n`\n + `Ensure @foundry/functions-typescript-osdk-discovery is installed in ${\n nodeModulesPath ?? \"node_modules\"\n }`,\n );\n throw e;\n }\n}\n\n/**\n * TypeScript equivalent of OntologyIrToFullMetadataConverter.java\n * Converts ontology IR data to full metadata format for OSDK generation\n */\nexport class OntologyIrToFullMetadataConverter {\n /**\n * Main entry point - converts IR to full metadata\n */\n static getFullMetadataFromIr(\n ir: OntologyIrOntologyBlockDataV2,\n ): Ontologies.OntologyFullMetadata {\n const interfaceTypes = this.getOsdkInterfaceTypes(\n Object.values(ir.interfaceTypes),\n );\n const sharedPropertyTypes = this.getOsdkSharedPropertyTypes(\n Object.values(ir.sharedPropertyTypes),\n );\n const objectTypes = this.getOsdkObjectTypes(\n Object.values(ir.objectTypes),\n Object.values(ir.linkTypes),\n );\n const actionTypes = this.getOsdkActionTypes(Object.values(ir.actionTypes));\n\n return {\n interfaceTypes,\n sharedPropertyTypes,\n objectTypes,\n queryTypes: {},\n actionTypes,\n ontology: {\n apiName: \"ontology\",\n rid: `ri.00000`,\n displayName: \"ontology\",\n description: \"\",\n },\n valueTypes: {},\n };\n }\n\n static async getOsdkQueryTypes(\n pythonBinary?: string,\n functionsDir?: string,\n nodeModulesPath?: string,\n pythonFunctionsDir?: string,\n pythonRootProjectDir?: string,\n irOutputFile?: string,\n previewMetadata?: Pick<\n Ontologies.OntologyFullMetadata,\n \"ontology\" | \"objectTypes\" | \"interfaceTypes\"\n >,\n ): Promise<\n Record<Ontologies.VersionedQueryTypeApiName, Ontologies.QueryTypeV2>\n > {\n const queries: Ontologies.QueryTypeV2[] = [];\n\n if (functionsDir) {\n const tsQueries = await this.discoverTypeScriptFunctions(\n functionsDir,\n nodeModulesPath,\n irOutputFile,\n previewMetadata,\n );\n queries.push(...tsQueries);\n }\n\n if (pythonFunctionsDir && pythonRootProjectDir) {\n if (!pythonBinary) {\n throw new Error(\n \"pythonBinary is required when pythonFunctionsDir is specified\",\n );\n }\n const pyQueries = this.discoverPythonQueryTypes(\n pythonFunctionsDir,\n pythonRootProjectDir,\n pythonBinary,\n );\n queries.push(...pyQueries);\n }\n\n return queries.reduce<\n Record<\n Ontologies.VersionedQueryTypeApiName,\n Ontologies.QueryTypeV2\n >\n >(\n (acc, query) => {\n acc[query.apiName as string] = query;\n return acc;\n },\n {},\n );\n }\n\n static async discoverTypeScriptFunctions(\n functionsDir: string,\n nodeModulesPath?: string,\n irOutputFile?: string,\n previewMetadata?: Pick<\n Ontologies.OntologyFullMetadata,\n \"ontology\" | \"objectTypes\" | \"interfaceTypes\"\n >,\n ): Promise<Ontologies.QueryTypeV2[]> {\n consola.info(`Discovering TypeScript functions in ${functionsDir}...`);\n const discoveryModules = await loadFunctionDiscoverer(nodeModulesPath);\n\n const { FunctionDiscoverer, typescript: discoveryTs } = discoveryModules;\n const { tsConfigPath, projectDir } = discoverComponentRoot(\n discoveryTs,\n functionsDir,\n );\n\n const program = this.createProgram(\n tsConfigPath,\n projectDir,\n discoveryTs,\n );\n\n // Construct entity metadata mapping from preview metadata so FunctionDiscoverer\n // can resolve ontology types (Client, Osdk.Instance, ontology edits, etc.)\n let entityMetadataMapping: unknown;\n if (previewMetadata) {\n if (!previewMetadata.ontology?.rid) {\n throw new Error(\"previewMetadata.ontology.rid is required\");\n }\n const ontologyRid = previewMetadata.ontology.rid;\n const objectTypesMap: Record<\n string,\n {\n objectTypeId: string;\n linkTypes: Record<string, { linkTypeId: string }>;\n }\n > = {};\n if (previewMetadata.objectTypes) {\n for (\n const [apiName, objData] of Object.entries(\n previewMetadata.objectTypes,\n )\n ) {\n const linkTypesMap: Record<string, { linkTypeId: string }> = {};\n if (objData.linkTypes) {\n for (const lt of objData.linkTypes) {\n linkTypesMap[lt.apiName] = {\n linkTypeId: lt.linkTypeRid || lt.apiName,\n };\n }\n }\n objectTypesMap[apiName] = {\n objectTypeId: apiName,\n linkTypes: linkTypesMap,\n };\n }\n }\n const interfaceTypesMap: Record<\n string,\n { interfaceTypeRid: string }\n > = {};\n if (previewMetadata.interfaceTypes) {\n for (const apiName of Object.keys(previewMetadata.interfaceTypes)) {\n interfaceTypesMap[apiName] = { interfaceTypeRid: apiName };\n }\n }\n entityMetadataMapping = {\n ontologies: {\n [ontologyRid]: {\n objectTypes: objectTypesMap,\n interfaceTypes: interfaceTypesMap,\n },\n },\n };\n }\n\n // Normalize to forward slashes to match TypeScript's internal path format\n const normalizedFunctionsDir = functionsDir.replace(/\\\\/g, \"/\");\n const fd = new FunctionDiscoverer(\n program,\n projectDir,\n normalizedFunctionsDir,\n entityMetadataMapping,\n );\n const functions = fd.discover();\n\n if (irOutputFile) {\n fs.mkdirSync(path.dirname(irOutputFile), { recursive: true });\n fs.writeFileSync(irOutputFile, JSON.stringify(functions));\n }\n\n const tsFunctions = functions.discoveredFunctions.filter(\n (func: IDiscoveredFunction) => func.locator.type === \"typescript\",\n );\n\n if (tsFunctions.length === 0) {\n consola.warn(\n `No TypeScript OSDK functions discovered in ${functionsDir}. `\n + `Found ${functions.discoveredFunctions.length} total function(s) `\n + `but none with locator type \"typescript\".`,\n );\n } else {\n consola.info(\n `Discovered ${tsFunctions.length} TypeScript function(s): ${\n tsFunctions\n .map(\n (f: IDiscoveredFunction) => f.locator.typescript!.functionName,\n )\n .join(\", \")\n }`,\n );\n }\n\n if (irOutputFile) {\n fs.writeFileSync(irOutputFile, JSON.stringify(functions));\n }\n\n return tsFunctions.map((func: IDiscoveredFunction) => {\n const functionName = func.locator.typescript!.functionName;\n return {\n apiName: functionName,\n rid: `ri.function-registry.main.function.${functionName}`,\n version: \"0.0.0\",\n parameters: func.inputs.reduce<\n Record<ApiName, Ontologies.QueryParameterV2>\n >((acc, input) => {\n acc[input.name] = {\n dataType: convertDataType(input.dataType, func.customTypes),\n };\n return acc;\n }, {}),\n output: convertDataType(\n func.output.single.dataType,\n func.customTypes,\n ),\n typeReferences: {},\n } satisfies Ontologies.QueryTypeV2;\n });\n }\n\n private static discoverPythonQueryTypes(\n pythonFunctionsDir: string,\n pythonRootProjectDir: string,\n pythonBinary: string,\n ): Ontologies.QueryTypeV2[] {\n const pythonResult = discoverPythonFunctions(\n pythonFunctionsDir,\n pythonRootProjectDir,\n pythonBinary,\n );\n\n if (!pythonResult) {\n return [];\n }\n\n const queries: Ontologies.QueryTypeV2[] = [];\n for (const func of pythonResult.functions) {\n const functionName = func.locator.python3.functionName;\n const customTypes = func.customTypes ?? {};\n const objectTypes = func.objectTypes;\n const objectSetTypes = func.objectSetTypes;\n\n // Resolve Python discovery UUID references to the format expected by\n // convertDataType. Python discovery returns:\n // - object params as {type: \"object\", object: \"<uuid>\"}\n // - objectSet params as {type: \"objectSet\", objectSet: \"<uuid>\"}\n // These UUIDs map to the function's objectTypes / objectSetTypes fields\n // which carry the actual objectApiName. The resolution must be recursive\n // to handle nested types (e.g. list[seller] produces\n // {type: \"list\", list: {elementsType: {type: \"object\", object: \"<uuid>\"}}}).\n function resolveDataType(dt: IDataType): IDataType {\n if (dt.type === \"object\" && typeof dt.object === \"string\") {\n if (!objectTypes?.[dt.object]) {\n throw new Error(\n `Could not resolve object UUID \"${dt.object}\" — not present in objectTypes map`,\n );\n }\n return {\n ...dt,\n object: {\n objectTypeId: objectTypes[dt.object].objectApiName,\n },\n };\n }\n if (dt.type === \"objectSet\" && typeof dt.objectSet === \"string\") {\n if (!objectSetTypes?.[dt.objectSet]) {\n throw new Error(\n `Could not resolve objectSet UUID \"${dt.objectSet}\" — not present in objectSetTypes map`,\n );\n }\n return {\n ...dt,\n objectSet: {\n objectTypeId: objectSetTypes[dt.objectSet].objectApiName,\n },\n };\n }\n if (dt.type === \"list\") {\n const listData = dt.list as { elementsType: IDataType } | undefined;\n if (listData?.elementsType) {\n const resolved = resolveDataType(listData.elementsType);\n if (resolved !== listData.elementsType) {\n return { ...dt, list: { elementsType: resolved } };\n }\n }\n }\n if (dt.type === \"set\") {\n const setData = dt.set as { elementsType: IDataType } | undefined;\n if (setData?.elementsType) {\n const resolved = resolveDataType(setData.elementsType);\n if (resolved !== setData.elementsType) {\n return { ...dt, set: { elementsType: resolved } };\n }\n }\n }\n if (dt.type === \"optionalType\") {\n const optData = dt.optionalType as\n | { wrappedType: IDataType }\n | undefined;\n if (optData?.wrappedType) {\n const resolved = resolveDataType(optData.wrappedType);\n if (resolved !== optData.wrappedType) {\n return { ...dt, optionalType: { wrappedType: resolved } };\n }\n }\n }\n if (dt.type === \"functionCustomType\") {\n const typeId = dt.functionCustomType as string;\n const customType = customTypes[typeId] as\n | IPythonCustomType\n | undefined;\n if (customType?.fields) {\n let changed = false;\n const resolvedFields: Record<string, IDataType> = {};\n for (const [key, fieldDt] of Object.entries(customType.fields)) {\n const resolved = resolveDataType(fieldDt);\n if (resolved !== fieldDt) changed = true;\n resolvedFields[key] = resolved;\n }\n if (changed) {\n customTypes[typeId] = {\n ...customType,\n fields: resolvedFields,\n };\n }\n }\n }\n return dt;\n }\n\n const resolvedInputs = func.inputs.map((input) => ({\n ...input,\n dataType: resolveDataType(input.dataType),\n }));\n\n const resolvedOutput = resolveDataType(func.output.single.dataType);\n\n const queryType: Ontologies.QueryTypeV2 = {\n apiName: functionName,\n rid: `ri.function-registry.main.function.${functionName}`,\n version: \"0.0.0\",\n parameters: resolvedInputs.reduce<\n Record<ApiName, Ontologies.QueryParameterV2>\n >((acc, input) => {\n acc[input.name] = {\n dataType: convertDataType(\n input.dataType,\n customTypes,\n input.required,\n ),\n };\n return acc;\n }, {}),\n output: convertDataType(\n resolvedOutput,\n customTypes,\n ),\n typeReferences: {},\n };\n queries.push(queryType);\n }\n return queries;\n }\n\n static createProgram(\n tsConfigFilePath: string,\n projectDir: string,\n typescript: typeof ts = ts,\n ): ts.Program {\n const configFile = typescript.readConfigFile(\n tsConfigFilePath,\n typescript.sys.readFile,\n );\n if (configFile.error) {\n throw new Error(\n `Failed to read tsconfig at ${tsConfigFilePath}: ${\n typescript.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n )\n }`,\n );\n }\n const { options, fileNames, errors } = typescript\n .parseJsonConfigFileContent(\n configFile.config,\n typescript.sys,\n projectDir,\n );\n if (errors.length > 0) {\n const messages = errors\n .map((d) =>\n typescript.flattenDiagnosticMessageText(d.messageText, \"\\n\")\n )\n .join(\"\\n\");\n consola.warn(`tsconfig diagnostics in ${projectDir}:\\n${messages}`);\n }\n if (fileNames.length === 0) {\n consola.warn(\n `tsconfig at ${tsConfigFilePath} resolved 0 files `\n + `(projectDir: ${projectDir}). TypeScript function discovery will find nothing.`,\n );\n }\n return typescript.createProgram({\n options,\n rootNames: fileNames,\n configFileParsingDiagnostics: errors,\n });\n }\n\n /**\n * Convert IR object types to OSDK format\n */\n static getOsdkObjectTypes(\n objects: OntologyIrObjectTypeBlockDataV2[],\n links: OntologyIrLinkTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.ObjectTypeFullMetadata> {\n const linkMappings = this.getLinkMappings(links);\n\n const result: Record<ApiName, Ontologies.ObjectTypeFullMetadata> = {};\n\n for (const fullObject of objects) {\n const object = fullObject.objectType;\n const icon = object.displayMetadata.icon;\n\n if (icon.type !== \"blueprint\") {\n throw new Error(\"Only blueprint icons are supported\");\n }\n\n // Ensure we have exactly one primary key\n if (object.primaryKeys.length !== 1) {\n throw new Error(\"Object must have exactly 1 primary key\");\n }\n\n // Build a mapping from property RID to apiName for resolving references\n const propRidToApiName: Record<string, string> = {};\n for (const [propRid, prop] of Object.entries(object.propertyTypes)) {\n propRidToApiName[propRid] = prop.apiName;\n }\n\n // Resolve primaryKey and titleProperty from RID to apiName\n const primaryKeyRid = object.primaryKeys[0];\n const primaryKey = propRidToApiName[primaryKeyRid] ?? primaryKeyRid;\n const titlePropertyRid = object.titlePropertyTypeRid;\n const titleProperty = propRidToApiName[titlePropertyRid]\n ?? titlePropertyRid;\n\n const properties: Record<ApiName, Ontologies.PropertyV2> = {};\n for (const [propRid, prop] of Object.entries(object.propertyTypes)) {\n const propApiName = prop.apiName;\n const visibility = prop.displayMetadata.visibility;\n let visibilityEnum: \"NORMAL\" | \"PROMINENT\" | \"HIDDEN\" = \"NORMAL\";\n\n if (!visibility) {\n visibilityEnum = \"NORMAL\";\n } else {\n switch (visibility) {\n case \"PROMINENT\":\n visibilityEnum = \"PROMINENT\";\n break;\n case \"NORMAL\":\n visibilityEnum = \"NORMAL\";\n break;\n case \"HIDDEN\":\n visibilityEnum = \"HIDDEN\";\n break;\n default:\n visibilityEnum = \"NORMAL\";\n }\n }\n\n const dataType = this.getOsdkPropertyType(prop.type);\n if (dataType) {\n const status = {\n type: prop.status.type,\n ...((prop.status as unknown as Record<string, unknown>)[\n prop.status.type\n ] ?? {}),\n } as unknown as Ontologies.PropertyTypeStatus;\n\n properties[propApiName] = {\n displayName: prop.displayMetadata.displayName,\n rid: `ri.${object.apiName}.${propApiName}`,\n status,\n description: prop.displayMetadata.description ?? undefined,\n visibility: visibilityEnum,\n dataType,\n typeClasses: [],\n };\n }\n }\n\n const objectTypeV2: Ontologies.ObjectTypeV2 = {\n apiName: object.apiName,\n description: object.displayMetadata.description ?? undefined,\n displayName: object.displayMetadata.displayName,\n pluralDisplayName: \"\", // Not available in IR\n primaryKey,\n titleProperty,\n icon: {\n type: \"blueprint\",\n color: icon.blueprint.color,\n name: icon.blueprint.locator,\n },\n status: this.convertObjectTypeStatus(object.status),\n properties,\n rid: `ri.${object.apiName}`,\n };\n\n const sharedPropertyTypeMappings: Record<ApiName, ApiName> = {};\n const implementsInterfaces2: Record<\n ApiName,\n Ontologies.ObjectTypeInterfaceImplementation\n > = {};\n\n for (const ii of object.implementsInterfaces2) {\n const interfaceApiName = ii.interfaceTypeApiName;\n const propertyMappings: Record<ApiName, ApiName> = {};\n\n for (\n const [sharedPropKey, propMapping] of Object.entries(ii.properties)\n ) {\n const propertyApiName = propMapping.propertyTypeRid;\n propertyMappings[sharedPropKey] = propertyApiName;\n sharedPropertyTypeMappings[sharedPropKey] = propertyApiName;\n }\n\n implementsInterfaces2[interfaceApiName] = {\n properties: propertyMappings,\n propertiesV2: {},\n links: {},\n };\n }\n\n const objectApiName = object.apiName;\n result[objectApiName] = {\n objectType: objectTypeV2,\n implementsInterfaces: [], // Empty for now - legacy field\n implementsInterfaces2,\n sharedPropertyTypeMapping: sharedPropertyTypeMappings,\n linkTypes: linkMappings[objectApiName] || [],\n };\n }\n\n return result;\n }\n\n /**\n * Create link mappings from IR link types\n */\n static getLinkMappings(\n links: OntologyIrLinkTypeBlockDataV2[],\n ): Record<string, Ontologies.LinkTypeSideV2[]> {\n const result: Record<string, Ontologies.LinkTypeSideV2[]> = {};\n\n for (const link of links) {\n const linkType = link.linkType;\n const linkStatus = this.convertLinkTypeStatus(linkType.status);\n\n let mappings: Record<string, Ontologies.LinkTypeSideV2>;\n switch (linkType.definition.type) {\n case \"manyToMany\": {\n const linkDef = linkType.definition.manyToMany;\n const sideA: Ontologies.LinkTypeSideV2 = {\n apiName: linkDef.objectTypeAToBLinkMetadata.apiName ?? \"\",\n displayName: linkDef.objectTypeAToBLinkMetadata\n .displayMetadata.displayName,\n cardinality: \"MANY\",\n objectTypeApiName: linkDef.objectTypeRidB,\n linkTypeRid:\n `ri.${linkDef.objectTypeRidA}.${linkType.id}.${linkDef.objectTypeRidB}`,\n status: linkStatus,\n };\n\n const sideB: Ontologies.LinkTypeSideV2 = {\n ...sideA,\n apiName: linkDef.objectTypeBToALinkMetadata.apiName\n ?? \"\",\n objectTypeApiName: linkDef.objectTypeRidA,\n };\n\n mappings = {\n [linkDef.objectTypeRidA]: sideA,\n [linkDef.objectTypeRidB]: sideB,\n };\n break;\n }\n case \"oneToMany\": {\n const linkDef = linkType.definition.oneToMany;\n\n invariant(\n linkDef.oneSidePrimaryKeyToManySidePropertyMapping.length === 1,\n );\n\n const common = {\n linkTypeRid:\n `ri.${linkDef.objectTypeRidOneSide}.${linkType.id}.${linkDef.objectTypeRidManySide}`,\n status: linkStatus,\n };\n\n const manySide: Ontologies.LinkTypeSideV2 = {\n ...common,\n apiName: linkDef.oneToManyLinkMetadata.apiName ?? \"\",\n displayName:\n linkDef.oneToManyLinkMetadata.displayMetadata.displayName,\n objectTypeApiName: linkDef.objectTypeRidOneSide,\n cardinality: \"ONE\",\n // This should only exist on the one side and it should be the property on this object\n // that points to the PK on the other object\n foreignKeyPropertyApiName:\n linkDef.oneSidePrimaryKeyToManySidePropertyMapping[0].to\n .apiName,\n };\n\n const oneSide: Ontologies.LinkTypeSideV2 = {\n ...common,\n cardinality: \"MANY\",\n apiName: linkDef.manyToOneLinkMetadata.apiName ?? \"\",\n displayName:\n linkDef.manyToOneLinkMetadata.displayMetadata.displayName,\n objectTypeApiName: linkDef.objectTypeRidManySide,\n };\n\n mappings = {\n [linkDef.objectTypeRidOneSide]: oneSide,\n [linkDef.objectTypeRidManySide]: manySide,\n };\n break;\n }\n default:\n throw new Error(\"Unknown link definition type\");\n }\n\n // Add mappings to result\n for (const [objectTypeApiName, linkSide] of Object.entries(mappings)) {\n if (!result[objectTypeApiName]) {\n result[objectTypeApiName] = [];\n }\n result[objectTypeApiName].push(linkSide);\n }\n }\n\n return result;\n }\n\n /**\n * Convert IR action types to OSDK format\n */\n static getOsdkActionTypes(\n actions: OntologyIrActionTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.ActionTypeV2> {\n const result: Record<ApiName, Ontologies.ActionTypeV2> = {};\n\n for (const action of actions) {\n const metadata = action.actionType.metadata;\n const actionType: Ontologies.ActionTypeV2 = {\n rid: `ri.action.${metadata.apiName}`,\n apiName: metadata.apiName,\n displayName: metadata.displayMetadata.displayName,\n description: metadata.displayMetadata.description,\n parameters: this.getOsdkActionParameters(action),\n operations: this.getOsdkActionOperations(action),\n status: this.convertActionTypeStatus(metadata.status),\n };\n\n result[actionType.apiName] = actionType;\n }\n\n return result;\n }\n\n /**\n * Convert action operations from IR\n */\n static getOsdkActionOperations(\n action: OntologyIrActionTypeBlockDataV2,\n ): Ontologies.LogicRule[] {\n return action.actionType.actionTypeLogic.logic.rules.map(irLogic => {\n switch (irLogic.type) {\n case \"addInterfaceRule\": {\n const r = irLogic.addInterfaceRule;\n return {\n type: \"createInterfaceObject\",\n interfaceTypeApiName: r.interfaceApiName,\n } satisfies Ontologies.LogicRule;\n }\n case \"addLinkRule\":\n throw new Error(\"Add link rule not supported\");\n case \"addObjectRule\": {\n const r = irLogic.addObjectRule;\n return {\n type: \"createObject\",\n objectTypeApiName: r.objectTypeId,\n } satisfies Ontologies.LogicRule;\n }\n case \"addOrModifyObjectRuleV2\": {\n const r = irLogic.addOrModifyObjectRuleV2;\n\n const modifyParamType =\n action.actionType.metadata.parameters[r.objectToModify].type;\n if (modifyParamType.type === \"objectReference\") {\n return {\n type: \"modifyObject\",\n objectTypeApiName: modifyParamType.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n } else {\n throw new Error(\n \"Unable to convert modifyAction because parameter does not exist\",\n );\n }\n }\n case \"deleteLinkRule\":\n throw new Error(\"Delete link rule not supported\");\n case \"deleteObjectRule\": {\n const r = irLogic.deleteObjectRule;\n const ontologyIrParameter =\n action.actionType.metadata.parameters[r.objectToDelete];\n if (ontologyIrParameter.type.type !== \"objectReference\") {\n throw new Error(\"invalid parameter type\");\n }\n\n return {\n type: \"deleteObject\",\n objectTypeApiName:\n ontologyIrParameter.type.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n }\n case \"modifyInterfaceRule\": {\n const r = irLogic.modifyInterfaceRule;\n const parameter = action.actionType.metadata\n .parameters[r.interfaceObjectToModifyParameter];\n if (!parameter) {\n throw new Error(\"Could not find interface type api name\");\n }\n\n let interfaceTypeApiName: string | null = null;\n switch (parameter.type.type) {\n case \"interfaceReference\":\n interfaceTypeApiName =\n parameter.type.interfaceReference.interfaceTypeRid;\n break;\n case \"interfaceReferenceList\":\n interfaceTypeApiName =\n parameter.type.interfaceReferenceList.interfaceTypeRid;\n break;\n default:\n interfaceTypeApiName = null;\n }\n\n if (!interfaceTypeApiName) {\n throw new Error(\"Could not find interface type api name\");\n }\n\n return {\n type: \"modifyInterfaceObject\",\n interfaceTypeApiName,\n } satisfies Ontologies.LogicRule;\n }\n case \"modifyObjectRule\": {\n const r = irLogic.modifyObjectRule;\n\n const modifyParamType =\n action.actionType.metadata.parameters[r.objectToModify].type;\n if (modifyParamType.type === \"objectReference\") {\n return {\n type: \"modifyObject\",\n objectTypeApiName: modifyParamType.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n } else {\n throw new Error(\n \"Unable to convert modifyAction because parameter does not exist\",\n );\n }\n }\n default:\n throw new Error(\"Unknown logic rule type\");\n }\n });\n }\n\n /**\n * Convert action parameters from IR\n */\n static getOsdkActionParameters(\n action: OntologyIrActionTypeBlockDataV2,\n ): Record<string, Ontologies.ActionParameterV2> {\n const result: Record<string, Ontologies.ActionParameterV2> = {};\n\n for (\n const [paramKey, irParameter] of Object.entries(\n action.actionType.metadata.parameters,\n )\n ) {\n let dataType: Ontologies.ActionParameterType;\n switch (irParameter.type.type) {\n case \"attachment\":\n dataType = { type: \"attachment\" };\n break;\n case \"attachmentList\":\n dataType = {\n type: \"array\",\n subType: { type: \"attachment\" },\n };\n break;\n case \"boolean\":\n dataType = { type: \"boolean\" };\n break;\n case \"booleanList\":\n dataType = {\n type: \"array\",\n subType: { type: \"boolean\" },\n };\n break;\n case \"date\":\n dataType = { type: \"date\" };\n break;\n case \"dateList\":\n dataType = {\n type: \"array\",\n subType: { type: \"date\" },\n };\n break;\n case \"decimal\":\n throw new Error(\"Decimal type not supported\");\n case \"decimalList\":\n throw new Error(\"Decimal list type not supported\");\n case \"double\":\n dataType = { type: \"double\" };\n break;\n case \"doubleList\":\n dataType = {\n type: \"array\",\n subType: { type: \"double\" },\n };\n break;\n case \"geohash\":\n dataType = { type: \"geohash\" };\n break;\n case \"geohashList\":\n dataType = {\n type: \"array\",\n subType: { type: \"geohash\" },\n };\n break;\n case \"geoshape\":\n dataType = { type: \"geoshape\" };\n break;\n case \"geoshapeList\":\n dataType = {\n type: \"array\",\n subType: { type: \"geoshape\" },\n };\n break;\n case \"geotimeSeriesReference\":\n throw new Error(\"Geotime series reference type not supported\");\n case \"geotimeSeriesReferenceList\":\n throw new Error(\"Geotime series reference list type not supported\");\n case \"integer\":\n dataType = { type: \"integer\" };\n break;\n case \"integerList\":\n dataType = {\n type: \"array\",\n subType: { type: \"integer\" },\n };\n break;\n case \"long\":\n dataType = { type: \"long\" };\n break;\n case \"longList\":\n dataType = {\n type: \"array\",\n subType: { type: \"long\" },\n };\n break;\n case \"marking\":\n dataType = { type: \"marking\" };\n break;\n case \"markingList\":\n dataType = {\n type: \"array\",\n subType: { type: \"marking\" },\n };\n break;\n case \"mediaReference\":\n dataType = { type: \"mediaReference\" };\n break;\n case \"mediaReferenceList\":\n dataType = {\n type: \"array\",\n subType: { type: \"mediaReference\" },\n };\n break;\n case \"interfaceReference\": {\n const t = irParameter.type.interfaceReference;\n dataType = {\n type: \"interfaceObject\",\n interfaceTypeApiName: t.interfaceTypeRid,\n };\n break;\n }\n case \"interfaceReferenceList\": {\n const t = irParameter.type.interfaceReferenceList;\n dataType = {\n type: \"array\",\n subType: {\n type: \"interfaceObject\",\n interfaceTypeApiName: t.interfaceTypeRid,\n },\n };\n break;\n }\n case \"objectReference\": {\n const t = irParameter.type.objectReference;\n dataType = {\n type: \"object\",\n objectTypeApiName: t.objectTypeId,\n objectApiName: t.objectTypeId,\n };\n break;\n }\n case \"objectReferenceList\": {\n const t = irParameter.type.objectReferenceList;\n dataType = {\n type: \"array\",\n subType: {\n type: \"object\",\n objectTypeApiName: t.objectTypeId,\n objectApiName: t.objectTypeId,\n },\n };\n break;\n }\n case \"objectSetRid\":\n dataType = { type: \"objectSet\" };\n break;\n case \"objectTypeReference\":\n dataType = { type: \"objectType\" };\n break;\n case \"string\":\n dataType = { type: \"string\" };\n break;\n case \"stringList\":\n dataType = {\n type: \"array\",\n subType: { type: \"string\" },\n };\n break;\n case \"struct\":\n throw new Error(\"Struct type not supported (lazy implementation)\");\n case \"structList\":\n throw new Error(\"Struct list type not supported\");\n case \"timeSeriesReference\":\n throw new Error(\"Time series reference type not supported\");\n case \"timestamp\":\n dataType = { type: \"timestamp\" };\n break;\n case \"timestampList\":\n dataType = {\n type: \"array\",\n subType: { type: \"timestamp\" },\n };\n break;\n default:\n throw new Error(\"Unknown parameter type\");\n }\n\n result[paramKey] = {\n displayName: irParameter.displayMetadata.displayName,\n description: irParameter.displayMetadata.description,\n required: isParameterRequired(action, paramKey),\n dataType,\n typeClasses: [],\n };\n }\n\n return result;\n }\n\n /**\n * Convert interface types from IR\n */\n static getOsdkInterfaceTypes(\n interfaces: OntologyIrInterfaceTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.InterfaceType> {\n const result: Record<ApiName, Ontologies.InterfaceType> = {};\n\n for (const interfaceData of interfaces) {\n const interfaceType = interfaceData.interfaceType;\n\n // Convert shared properties to interface shared properties\n const properties: Record<\n ApiName,\n Ontologies.InterfaceSharedPropertyType\n > = {};\n for (\n const [propKey, propValue] of Object.entries(interfaceType.propertiesV2)\n ) {\n const spt = propValue.sharedPropertyType;\n const dataType = this.getOsdkPropertyType(spt.type);\n if (dataType) {\n properties[propKey] = {\n rid: `ri.interface.${interfaceType.apiName}.${spt.apiName}`,\n apiName: spt.apiName,\n displayName: spt.displayMetadata.displayName,\n description: spt.displayMetadata.description ?? undefined,\n dataType,\n required: false, // Default to false for now - this should come from IR if available\n typeClasses: [],\n };\n }\n }\n\n const result_interfaceType: Ontologies.InterfaceType = {\n apiName: interfaceType.apiName,\n rid: `ri.interface.${interfaceType.apiName}`,\n properties,\n allProperties: properties, // Same as properties for now\n propertiesV2: {},\n allPropertiesV2: {},\n extendsInterfaces: interfaceType.extendsInterfaces.map(val => val),\n allExtendsInterfaces: interfaceType.extendsInterfaces.map(val => val), // Same as extendsInterfaces for now\n implementedByObjectTypes: [], // Empty for now\n displayName: interfaceType.displayMetadata.displayName,\n description: interfaceType.displayMetadata.description ?? undefined,\n links: this.getOsdkInterfaceLinkTypes(interfaceType.links),\n allLinks: this.getOsdkInterfaceLinkTypes(interfaceType.links), // Same as links for now\n };\n\n result[result_interfaceType.apiName] = result_interfaceType;\n }\n\n return result;\n }\n\n /**\n * Convert interface link types from IR\n */\n static getOsdkInterfaceLinkTypes(\n ilts: OntologyIrMarketplaceInterfaceLinkType[],\n ): Record<ApiName, Ontologies.InterfaceLinkType> {\n const result: Record<ApiName, Ontologies.InterfaceLinkType> = {};\n\n for (const ilt of ilts) {\n let linkedEntityApiName: {\n type: \"interfaceTypeApiName\";\n apiName: string;\n };\n switch (ilt.linkedEntityTypeId.type) {\n case \"interfaceType\": {\n const interfaceType = ilt.linkedEntityTypeId.interfaceType;\n linkedEntityApiName = {\n type: \"interfaceTypeApiName\" as const,\n apiName: interfaceType,\n };\n break;\n }\n case \"objectType\":\n throw new Error(\n \"Interface links to object types should not be possible in ontology as code yet\",\n );\n default:\n throw new Error(\"Unknown linked entity type\");\n }\n\n let cardinality: Ontologies.InterfaceLinkTypeCardinality;\n switch (ilt.cardinality) {\n case \"SINGLE\":\n cardinality = \"ONE\";\n break;\n case \"MANY\":\n cardinality = \"MANY\";\n break;\n default:\n throw new Error(\"Unknown cardinality type\");\n }\n\n const interfaceLinkType: Ontologies.InterfaceLinkType = {\n rid:\n `ri.interfacelink.${linkedEntityApiName.apiName}.${ilt.metadata.apiName}`,\n apiName: ilt.metadata.apiName,\n displayName: ilt.metadata.displayName,\n description: ilt.metadata.description,\n linkedEntityApiName,\n cardinality,\n required: ilt.required,\n };\n\n result[interfaceLinkType.apiName] = interfaceLinkType;\n }\n\n return result;\n }\n\n /**\n * Convert shared property types from IR\n */\n static getOsdkSharedPropertyTypes(\n spts: OntologyIrSharedPropertyTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.SharedPropertyType> {\n const result: Record<ApiName, Ontologies.SharedPropertyType> = {};\n\n for (const spt of spts) {\n const dataType = this.getOsdkPropertyType(spt.sharedPropertyType.type);\n if (dataType) {\n const sharedPropertyType: Ontologies.SharedPropertyType = {\n rid: `ri.spt.${spt.sharedPropertyType.apiName}`,\n apiName: spt.sharedPropertyType.apiName,\n displayName: spt.sharedPropertyType.displayMetadata.displayName,\n description: spt.sharedPropertyType.displayMetadata.description\n ?? undefined,\n dataType,\n typeClasses: [],\n };\n\n result[sharedPropertyType.apiName] = sharedPropertyType;\n } else {\n throw new Error(\n `Unsupported property type '${\n JSON.stringify(spt.sharedPropertyType.type)\n }' for spt '${spt.sharedPropertyType.apiName}'`,\n );\n }\n }\n\n return result;\n }\n\n /**\n * Convert property types from IR to OSDK format\n */\n static getOsdkPropertyType(\n type: OntologyIrType,\n ): Ontologies.ObjectPropertyType | null {\n switch (type.type) {\n case \"array\": {\n const value = type.array;\n const subType = this.getOsdkPropertyType(value.subtype);\n return subType ? { type: \"array\", subType, reducers: [] } : null;\n }\n case \"boolean\":\n return { type: \"boolean\" };\n case \"byte\":\n return { type: \"byte\" };\n case \"date\":\n return { type: \"date\" };\n case \"decimal\":\n return { type: \"decimal\" };\n case \"double\":\n return { type: \"double\" };\n case \"float\":\n return { type: \"float\" };\n case \"geohash\":\n return { type: \"geopoint\" };\n case \"geoshape\":\n return { type: \"geoshape\" };\n case \"integer\":\n return { type: \"integer\" };\n case \"long\":\n return { type: \"long\" };\n case \"short\":\n return { type: \"short\" };\n case \"string\":\n return { type: \"string\" };\n case \"experimentalTimeDependentV1\":\n return null;\n case \"timestamp\":\n return { type: \"timestamp\" };\n case \"attachment\":\n return { type: \"attachment\" };\n case \"marking\":\n return { type: \"marking\" };\n case \"cipherText\":\n return { type: \"cipherText\" };\n case \"mediaReference\":\n return { type: \"mediaReference\" };\n case \"vector\":\n return null;\n case \"geotimeSeriesReference\":\n return { type: \"geotimeSeriesReference\" };\n case \"struct\": {\n const value = type.struct;\n const ridBase = `ri.struct.${\n hash(\"sha256\", JSON.stringify(type)).slice(0, 10)\n }`;\n return {\n type: \"struct\",\n structFieldTypes: value.structFields.map(field => {\n const fieldDataType = this.getOsdkPropertyType(field.fieldType);\n if (!fieldDataType) {\n throw new Error(\n `Unsupported field type in struct: ${field.apiName}`,\n );\n }\n return {\n apiName: field.apiName,\n rid: `${ridBase}.${field.apiName}`,\n dataType: fieldDataType,\n typeClasses: [],\n };\n }),\n };\n }\n default:\n return null;\n }\n }\n\n private static convertObjectTypeStatus(\n status: OntologyIrObjectTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"endorsed\":\n throw new Error(\"Endorsed status is not supported yet\");\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown object type status: ${status}`);\n }\n }\n\n private static convertActionTypeStatus(\n status: OntologyIrActionTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown action type status: ${status}`);\n }\n }\n\n private static convertLinkTypeStatus(\n status: OntologyIrLinkTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown link type status: ${status}`);\n }\n }\n}\n\nfunction discoverComponentRoot(\n typescript: typeof ts,\n functionsDir: string,\n): { tsConfigPath: string; projectDir: string } {\n // Find tsconfig.json - try functionsDir first, then parent directory\n let tsConfigPath = path.join(functionsDir, \"tsconfig.json\");\n let projectDir = functionsDir;\n const configResult = typescript.readConfigFile(\n tsConfigPath,\n typescript.sys.readFile,\n );\n if (configResult.error) {\n tsConfigPath = path.join(path.dirname(functionsDir), \"tsconfig.json\");\n projectDir = path.dirname(functionsDir);\n }\n // Normalize to forward slashes for cross-platform consistency with\n // TypeScript's internal path representation (which always uses '/').\n return {\n tsConfigPath: tsConfigPath.replace(/\\\\/g, \"/\"),\n projectDir: projectDir.replace(/\\\\/g, \"/\"),\n };\n}\n\nfunction isParameterRequired(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): boolean {\n return action.actionType.actionTypeLogic.validation\n .parameterValidations[paramKey].defaultValidation.validation.required.type\n === \"required\";\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OntologyIrToFullMetadataConverter.js","names":["consola","fs","spawnSync","hash","accessSync","constants","createRequire","path","pathToFileURL","invariant","ts","convertDataType","discoverPythonFunctions","srcDir","rootProjectDir","pythonBinary","pythonPath","process","platform","R_OK","X_OK","Error","result","cwd","encoding","maxBuffer","error","warn","message","status","stderr","stdout","lines","split","i","length","line","trimStart","startsWith","candidate","slice","join","parsed","JSON","parse","e","discoveryModulesCache","Map","loadFunctionDiscoverer","nodeModulesPath","cached","get","modules","requireFromPath","href","module","FunctionDiscoverer","typescript","set","String","OntologyIrToFullMetadataConverter","getFullMetadataFromIr","ir","interfaceTypes","getOsdkInterfaceTypes","Object","values","sharedPropertyTypes","getOsdkSharedPropertyTypes","objectTypes","getOsdkObjectTypes","linkTypes","actionTypes","getOsdkActionTypes","queryTypes","ontology","apiName","rid","displayName","description","valueTypes","getOsdkQueryTypes","functionsDir","pythonFunctionsDir","pythonRootProjectDir","irOutputFile","previewMetadata","queries","tsQueries","discoverTypeScriptFunctions","push","pyQueries","discoverPythonQueryTypes","reduce","acc","query","info","discoveryModules","discoveryTs","tsConfigPath","projectDir","discoverComponentRoot","program","createProgram","entityMetadataMapping","ontologyRid","objectTypesMap","objData","entries","linkTypesMap","lt","linkTypeId","linkTypeRid","objectTypeId","interfaceTypesMap","keys","interfaceTypeRid","ontologies","normalizedFunctionsDir","replace","fd","functions","discover","mkdirSync","dirname","recursive","writeFileSync","stringify","tsFunctions","discoveredFunctions","filter","func","locator","type","map","f","functionName","version","parameters","inputs","input","name","dataType","customTypes","required","output","single","typeReferences","pythonResult","python3","objectSetTypes","resolveDataType","dt","object","objectApiName","objectSet","listData","list","elementsType","resolved","setData","optData","optionalType","wrappedType","typeId","functionCustomType","customType","fields","changed","resolvedFields","key","fieldDt","resolvedInputs","resolvedOutput","queryType","tsConfigFilePath","configFile","readConfigFile","sys","readFile","flattenDiagnosticMessageText","messageText","options","fileNames","errors","parseJsonConfigFileContent","config","messages","d","rootNames","configFileParsingDiagnostics","objects","links","linkMappings","getLinkMappings","fullObject","objectType","icon","displayMetadata","primaryKeys","propRidToApiName","propRid","prop","propertyTypes","primaryKeyRid","primaryKey","titlePropertyRid","titlePropertyTypeRid","titleProperty","properties","propApiName","visibility","visibilityEnum","getOsdkPropertyType","undefined","typeClasses","objectTypeV2","pluralDisplayName","color","blueprint","convertObjectTypeStatus","sharedPropertyTypeMappings","implementsInterfaces2","ii","interfaceApiName","interfaceTypeApiName","propertyMappings","sharedPropKey","propMapping","propertyApiName","propertyTypeRid","propertiesV2","implementsInterfaces","sharedPropertyTypeMapping","link","linkType","linkStatus","convertLinkTypeStatus","mappings","definition","linkDef","manyToMany","sideA","objectTypeAToBLinkMetadata","cardinality","objectTypeApiName","objectTypeRidB","objectTypeRidA","id","sideB","objectTypeBToALinkMetadata","oneToMany","oneSidePrimaryKeyToManySidePropertyMapping","env","NODE_ENV","common","objectTypeRidOneSide","objectTypeRidManySide","manySide","oneToManyLinkMetadata","foreignKeyPropertyApiName","to","oneSide","manyToOneLinkMetadata","linkSide","actions","action","metadata","actionType","getOsdkActionParameters","operations","getOsdkActionOperations","convertActionTypeStatus","actionTypeLogic","logic","rules","irLogic","r","addInterfaceRule","addObjectRule","addOrModifyObjectRuleV2","modifyParamType","objectToModify","objectReference","deleteObjectRule","ontologyIrParameter","objectToDelete","modifyInterfaceRule","parameter","interfaceObjectToModifyParameter","interfaceReference","interfaceReferenceList","modifyObjectRule","paramKey","irParameter","subType","t","objectReferenceList","isParameterRequired","interfaces","interfaceData","interfaceType","propKey","propValue","spt","sharedPropertyType","result_interfaceType","allProperties","allPropertiesV2","extendsInterfaces","val","allExtendsInterfaces","implementedByObjectTypes","getOsdkInterfaceLinkTypes","allLinks","ilts","ilt","linkedEntityApiName","linkedEntityTypeId","interfaceLinkType","spts","value","array","subtype","reducers","struct","ridBase","structFieldTypes","structFields","field","fieldDataType","fieldType","configResult","validation","parameterValidations","defaultValidation"],"sources":["OntologyIrToFullMetadataConverter.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n OntologyIrActionTypeBlockDataV2,\n OntologyIrActionTypeStatus,\n OntologyIrInterfaceTypeBlockDataV2,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrLinkTypeStatus,\n OntologyIrMarketplaceInterfaceLinkType,\n OntologyIrObjectTypeBlockDataV2,\n OntologyIrObjectTypeStatus,\n OntologyIrOntologyBlockDataV2,\n OntologyIrSharedPropertyTypeBlockDataV2,\n OntologyIrType,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\nimport { consola } from \"consola\";\nimport * as fs from \"fs\";\nimport { spawnSync } from \"node:child_process\";\nimport { hash } from \"node:crypto\";\nimport { accessSync, constants } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport * as path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport invariant from \"tiny-invariant\";\nimport * as ts from \"typescript\";\nimport type { ApiName } from \"./ApiName.js\";\nimport { convertDataType } from \"./convertDataType.js\";\n\n// Type definitions for optional function discovery dependencies\n// These are declared inline to avoid compile-time dependency on optional packages\nexport interface IDataType {\n type: string;\n [key: string]: unknown;\n}\n\nexport interface IDiscoveredFunction {\n locator: { type: string; typescript?: { functionName: string } };\n inputs: Array<{ name: string; dataType: IDataType }>;\n output: { single: { dataType: IDataType } };\n customTypes: Record<string, unknown>;\n ontologyProvenance?: {\n editedLinks: Record<string, {}>;\n editedObjects: Record<string, {}>;\n editedInterfaces: Record<string, {}>;\n };\n}\n\ninterface IFunctionDiscoverer {\n discover(): { discoveredFunctions: IDiscoveredFunction[] };\n}\n\ninterface IFunctionDiscovererConstructor {\n new(\n program: ts.Program,\n entryPointPath: string,\n fullFilePath: string,\n entityMetadataMapping?: unknown,\n ): IFunctionDiscoverer;\n}\n\n// Python discovery output uses the same format as IDataType with type field at top level\ninterface IPythonDiscoveredFunction {\n locator: {\n type: \"python3\";\n python3: { moduleName: string; functionName: string };\n };\n inputs: Array<{ name: string; dataType: IDataType; required?: boolean }>;\n output: { type: \"single\"; single: { dataType: IDataType } };\n customTypes?: Record<string, IPythonCustomType>;\n objectTypes?: Record<string, { objectApiName: string }>;\n objectSetTypes?: Record<string, { objectApiName: string }>;\n}\n\ninterface IPythonCustomType {\n fieldMetadata: Record<string, { required?: boolean }>;\n fields: Record<string, IDataType>;\n}\n\ninterface IPythonDiscoveryResult {\n functions: IPythonDiscoveredFunction[];\n errors?: Array<unknown>;\n}\n\nfunction discoverPythonFunctions(\n srcDir: string,\n rootProjectDir: string,\n pythonBinary: string,\n): IPythonDiscoveryResult | null {\n const pythonPath = pythonBinary;\n try {\n accessSync(\n pythonPath,\n process.platform === \"win32\" ? constants.R_OK : constants.X_OK,\n );\n } catch {\n throw new Error(\n `Python binary not found or not executable at ${pythonPath}`,\n );\n }\n\n const result = spawnSync(\n pythonPath,\n [\n \"-m\",\n \"functions.bin\",\n \"parse\",\n \"--src-dir\",\n srcDir,\n \"--root-project-dir\",\n rootProjectDir,\n \"--handle-errors\",\n ],\n {\n cwd: rootProjectDir,\n encoding: \"utf-8\",\n maxBuffer: 50 * 1024 * 1024, // 50MB buffer - function discovery can produce large JSON output\n },\n );\n\n if (result.error) {\n consola.warn(\n `Python function discovery spawn error: ${result.error.message}`,\n );\n return null;\n }\n\n if (result.status !== 0) {\n // Parse error - could log stderr but return null for now\n consola.error(\n `Python function discovery failed: ${result.stderr || result.stdout}`,\n );\n return null;\n }\n\n try {\n // The Python command may output log lines before the JSON on stdout.\n // Try parsing JSON from each line boundary starting from the end,\n // which is more robust than matching a specific marker string.\n // Use a regex split to handle both \\n (Unix) and \\r\\n (Windows) line endings.\n const stdout = result.stdout;\n const lines = stdout.split(/\\r?\\n/);\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i].trimStart();\n if (line.startsWith(\"{\")) {\n const candidate = lines.slice(i).join(\"\\n\");\n try {\n const parsed = JSON.parse(candidate) as IPythonDiscoveryResult;\n if (\"functions\" in parsed) {\n return parsed;\n }\n } catch {\n // Not valid JSON from this line, try earlier\n }\n }\n }\n consola.error(\n `No valid JSON found in Python discovery output: ${stdout.slice(0, 500)}`,\n );\n return null;\n } catch (e: unknown) {\n consola.error(\n `Failed to parse Python discovery output: ${\n e instanceof Error ? e.message : e\n }`,\n );\n return null;\n }\n}\n\ninterface FunctionDiscoveryModules {\n FunctionDiscoverer: IFunctionDiscovererConstructor;\n typescript: typeof ts;\n}\n\n// Lazy-loaded function discovery modules, keyed by nodeModulesPath\nconst discoveryModulesCache = new Map<\n string | undefined,\n FunctionDiscoveryModules\n>();\n\nasync function loadFunctionDiscoverer(\n nodeModulesPath?: string,\n): Promise<FunctionDiscoveryModules> {\n const cached = discoveryModulesCache.get(nodeModulesPath);\n if (cached) {\n return cached;\n }\n try {\n let modules: FunctionDiscoveryModules;\n if (nodeModulesPath) {\n // Use createRequire to load from the specified node_modules path\n // Both FunctionDiscoverer and TypeScript must be from the same node_modules\n // to ensure version compatibility (TypeScript versions must match for\n // program/typechecker interoperability)\n const requireFromPath = createRequire(\n pathToFileURL(path.join(nodeModulesPath, \"package.json\")).href,\n );\n const module = requireFromPath(\n \"@foundry/functions-typescript-osdk-discovery\",\n );\n modules = {\n FunctionDiscoverer: module.FunctionDiscoverer,\n typescript: requireFromPath(\"typescript\"),\n };\n } else {\n // Use dynamic import to avoid compile-time dependency on optional package\n const modulePath = \"@foundry/functions-typescript-osdk-discovery\";\n const module = await import(/* @vite-ignore */ modulePath);\n modules = {\n FunctionDiscoverer: module.FunctionDiscoverer,\n typescript: ts, // Use the bundled TypeScript\n };\n }\n discoveryModulesCache.set(nodeModulesPath, modules);\n return modules;\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n consola.error(\n `Failed to load TypeScript function discovery modules: ${message}\\n`\n + `Ensure @foundry/functions-typescript-osdk-discovery is installed in ${\n nodeModulesPath ?? \"node_modules\"\n }`,\n );\n throw e;\n }\n}\n\n/**\n * TypeScript equivalent of OntologyIrToFullMetadataConverter.java\n * Converts ontology IR data to full metadata format for OSDK generation\n */\nexport class OntologyIrToFullMetadataConverter {\n /**\n * Main entry point - converts IR to full metadata\n */\n static getFullMetadataFromIr(\n ir: OntologyIrOntologyBlockDataV2,\n ): Ontologies.OntologyFullMetadata {\n const interfaceTypes = this.getOsdkInterfaceTypes(\n Object.values(ir.interfaceTypes),\n );\n const sharedPropertyTypes = this.getOsdkSharedPropertyTypes(\n Object.values(ir.sharedPropertyTypes),\n );\n const objectTypes = this.getOsdkObjectTypes(\n Object.values(ir.objectTypes),\n Object.values(ir.linkTypes),\n );\n const actionTypes = this.getOsdkActionTypes(Object.values(ir.actionTypes));\n\n return {\n interfaceTypes,\n sharedPropertyTypes,\n objectTypes,\n queryTypes: {},\n actionTypes,\n ontology: {\n apiName: \"ontology\",\n rid: `ri.00000`,\n displayName: \"ontology\",\n description: \"\",\n },\n valueTypes: {},\n };\n }\n\n static async getOsdkQueryTypes(\n pythonBinary?: string,\n functionsDir?: string,\n nodeModulesPath?: string,\n pythonFunctionsDir?: string,\n pythonRootProjectDir?: string,\n irOutputFile?: string,\n previewMetadata?: Pick<\n Ontologies.OntologyFullMetadata,\n \"ontology\" | \"objectTypes\" | \"interfaceTypes\"\n >,\n ): Promise<\n Record<Ontologies.VersionedQueryTypeApiName, Ontologies.QueryTypeV2>\n > {\n const queries: Ontologies.QueryTypeV2[] = [];\n\n if (functionsDir) {\n const tsQueries = await this.discoverTypeScriptFunctions(\n functionsDir,\n nodeModulesPath,\n irOutputFile,\n previewMetadata,\n );\n queries.push(...tsQueries);\n }\n\n if (pythonFunctionsDir && pythonRootProjectDir) {\n if (!pythonBinary) {\n throw new Error(\n \"pythonBinary is required when pythonFunctionsDir is specified\",\n );\n }\n const pyQueries = this.discoverPythonQueryTypes(\n pythonFunctionsDir,\n pythonRootProjectDir,\n pythonBinary,\n );\n queries.push(...pyQueries);\n }\n\n return queries.reduce<\n Record<\n Ontologies.VersionedQueryTypeApiName,\n Ontologies.QueryTypeV2\n >\n >(\n (acc, query) => {\n acc[query.apiName as string] = query;\n return acc;\n },\n {},\n );\n }\n\n static async discoverTypeScriptFunctions(\n functionsDir: string,\n nodeModulesPath?: string,\n irOutputFile?: string,\n previewMetadata?: Pick<\n Ontologies.OntologyFullMetadata,\n \"ontology\" | \"objectTypes\" | \"interfaceTypes\"\n >,\n ): Promise<Ontologies.QueryTypeV2[]> {\n consola.info(`Discovering TypeScript functions in ${functionsDir}...`);\n const discoveryModules = await loadFunctionDiscoverer(nodeModulesPath);\n\n const { FunctionDiscoverer, typescript: discoveryTs } = discoveryModules;\n const { tsConfigPath, projectDir } = discoverComponentRoot(\n discoveryTs,\n functionsDir,\n );\n\n const program = this.createProgram(\n tsConfigPath,\n projectDir,\n discoveryTs,\n );\n\n // Construct entity metadata mapping from preview metadata so FunctionDiscoverer\n // can resolve ontology types (Client, Osdk.Instance, ontology edits, etc.)\n let entityMetadataMapping: unknown;\n if (previewMetadata) {\n if (!previewMetadata.ontology?.rid) {\n throw new Error(\"previewMetadata.ontology.rid is required\");\n }\n const ontologyRid = previewMetadata.ontology.rid;\n const objectTypesMap: Record<\n string,\n {\n objectTypeId: string;\n linkTypes: Record<string, { linkTypeId: string }>;\n }\n > = {};\n if (previewMetadata.objectTypes) {\n for (\n const [apiName, objData] of Object.entries(\n previewMetadata.objectTypes,\n )\n ) {\n const linkTypesMap: Record<string, { linkTypeId: string }> = {};\n if (objData.linkTypes) {\n for (const lt of objData.linkTypes) {\n linkTypesMap[lt.apiName] = {\n linkTypeId: lt.linkTypeRid || lt.apiName,\n };\n }\n }\n objectTypesMap[apiName] = {\n objectTypeId: apiName,\n linkTypes: linkTypesMap,\n };\n }\n }\n const interfaceTypesMap: Record<\n string,\n { interfaceTypeRid: string }\n > = {};\n if (previewMetadata.interfaceTypes) {\n for (const apiName of Object.keys(previewMetadata.interfaceTypes)) {\n interfaceTypesMap[apiName] = { interfaceTypeRid: apiName };\n }\n }\n entityMetadataMapping = {\n ontologies: {\n [ontologyRid]: {\n objectTypes: objectTypesMap,\n interfaceTypes: interfaceTypesMap,\n },\n },\n };\n }\n\n // Normalize to forward slashes to match TypeScript's internal path format\n const normalizedFunctionsDir = functionsDir.replace(/\\\\/g, \"/\");\n const fd = new FunctionDiscoverer(\n program,\n projectDir,\n normalizedFunctionsDir,\n entityMetadataMapping,\n );\n const functions = fd.discover();\n\n if (irOutputFile) {\n fs.mkdirSync(path.dirname(irOutputFile), { recursive: true });\n fs.writeFileSync(irOutputFile, JSON.stringify(functions));\n }\n\n const tsFunctions = functions.discoveredFunctions.filter(\n (func: IDiscoveredFunction) => func.locator.type === \"typescript\",\n );\n\n if (tsFunctions.length === 0) {\n consola.warn(\n `No TypeScript OSDK functions discovered in ${functionsDir}. `\n + `Found ${functions.discoveredFunctions.length} total function(s) `\n + `but none with locator type \"typescript\".`,\n );\n } else {\n consola.info(\n `Discovered ${tsFunctions.length} TypeScript function(s): ${\n tsFunctions\n .map(\n (f: IDiscoveredFunction) => f.locator.typescript!.functionName,\n )\n .join(\", \")\n }`,\n );\n }\n\n if (irOutputFile) {\n fs.writeFileSync(irOutputFile, JSON.stringify(functions));\n }\n\n return tsFunctions.map((func: IDiscoveredFunction) => {\n const functionName = func.locator.typescript!.functionName;\n return {\n apiName: functionName,\n rid: `ri.function-registry.main.function.${functionName}`,\n version: \"0.0.0\",\n parameters: func.inputs.reduce<\n Record<ApiName, Ontologies.QueryParameterV2>\n >((acc, input) => {\n acc[input.name] = {\n dataType: convertDataType(input.dataType, func.customTypes),\n required: true,\n };\n return acc;\n }, {}),\n output: convertDataType(\n func.output.single.dataType,\n func.customTypes,\n ),\n typeReferences: {},\n } satisfies Ontologies.QueryTypeV2;\n });\n }\n\n private static discoverPythonQueryTypes(\n pythonFunctionsDir: string,\n pythonRootProjectDir: string,\n pythonBinary: string,\n ): Ontologies.QueryTypeV2[] {\n const pythonResult = discoverPythonFunctions(\n pythonFunctionsDir,\n pythonRootProjectDir,\n pythonBinary,\n );\n\n if (!pythonResult) {\n return [];\n }\n\n const queries: Ontologies.QueryTypeV2[] = [];\n for (const func of pythonResult.functions) {\n const functionName = func.locator.python3.functionName;\n const customTypes = func.customTypes ?? {};\n const objectTypes = func.objectTypes;\n const objectSetTypes = func.objectSetTypes;\n\n // Resolve Python discovery UUID references to the format expected by\n // convertDataType. Python discovery returns:\n // - object params as {type: \"object\", object: \"<uuid>\"}\n // - objectSet params as {type: \"objectSet\", objectSet: \"<uuid>\"}\n // These UUIDs map to the function's objectTypes / objectSetTypes fields\n // which carry the actual objectApiName. The resolution must be recursive\n // to handle nested types (e.g. list[seller] produces\n // {type: \"list\", list: {elementsType: {type: \"object\", object: \"<uuid>\"}}}).\n function resolveDataType(dt: IDataType): IDataType {\n if (dt.type === \"object\" && typeof dt.object === \"string\") {\n if (!objectTypes?.[dt.object]) {\n throw new Error(\n `Could not resolve object UUID \"${dt.object}\" — not present in objectTypes map`,\n );\n }\n return {\n ...dt,\n object: {\n objectTypeId: objectTypes[dt.object].objectApiName,\n },\n };\n }\n if (dt.type === \"objectSet\" && typeof dt.objectSet === \"string\") {\n if (!objectSetTypes?.[dt.objectSet]) {\n throw new Error(\n `Could not resolve objectSet UUID \"${dt.objectSet}\" — not present in objectSetTypes map`,\n );\n }\n return {\n ...dt,\n objectSet: {\n objectTypeId: objectSetTypes[dt.objectSet].objectApiName,\n },\n };\n }\n if (dt.type === \"list\") {\n const listData = dt.list as { elementsType: IDataType } | undefined;\n if (listData?.elementsType) {\n const resolved = resolveDataType(listData.elementsType);\n if (resolved !== listData.elementsType) {\n return { ...dt, list: { elementsType: resolved } };\n }\n }\n }\n if (dt.type === \"set\") {\n const setData = dt.set as { elementsType: IDataType } | undefined;\n if (setData?.elementsType) {\n const resolved = resolveDataType(setData.elementsType);\n if (resolved !== setData.elementsType) {\n return { ...dt, set: { elementsType: resolved } };\n }\n }\n }\n if (dt.type === \"optionalType\") {\n const optData = dt.optionalType as\n | { wrappedType: IDataType }\n | undefined;\n if (optData?.wrappedType) {\n const resolved = resolveDataType(optData.wrappedType);\n if (resolved !== optData.wrappedType) {\n return { ...dt, optionalType: { wrappedType: resolved } };\n }\n }\n }\n if (dt.type === \"functionCustomType\") {\n const typeId = dt.functionCustomType as string;\n const customType = customTypes[typeId] as\n | IPythonCustomType\n | undefined;\n if (customType?.fields) {\n let changed = false;\n const resolvedFields: Record<string, IDataType> = {};\n for (const [key, fieldDt] of Object.entries(customType.fields)) {\n const resolved = resolveDataType(fieldDt);\n if (resolved !== fieldDt) changed = true;\n resolvedFields[key] = resolved;\n }\n if (changed) {\n customTypes[typeId] = {\n ...customType,\n fields: resolvedFields,\n };\n }\n }\n }\n return dt;\n }\n\n const resolvedInputs = func.inputs.map((input) => ({\n ...input,\n dataType: resolveDataType(input.dataType),\n }));\n\n const resolvedOutput = resolveDataType(func.output.single.dataType);\n\n const queryType: Ontologies.QueryTypeV2 = {\n apiName: functionName,\n rid: `ri.function-registry.main.function.${functionName}`,\n version: \"0.0.0\",\n parameters: resolvedInputs.reduce<\n Record<ApiName, Ontologies.QueryParameterV2>\n >((acc, input) => {\n acc[input.name] = {\n dataType: convertDataType(\n input.dataType,\n customTypes,\n input.required,\n ),\n required: input.required ?? true,\n };\n return acc;\n }, {}),\n output: convertDataType(\n resolvedOutput,\n customTypes,\n ),\n typeReferences: {},\n };\n queries.push(queryType);\n }\n return queries;\n }\n\n static createProgram(\n tsConfigFilePath: string,\n projectDir: string,\n typescript: typeof ts = ts,\n ): ts.Program {\n const configFile = typescript.readConfigFile(\n tsConfigFilePath,\n typescript.sys.readFile,\n );\n if (configFile.error) {\n throw new Error(\n `Failed to read tsconfig at ${tsConfigFilePath}: ${\n typescript.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n )\n }`,\n );\n }\n const { options, fileNames, errors } = typescript\n .parseJsonConfigFileContent(\n configFile.config,\n typescript.sys,\n projectDir,\n );\n if (errors.length > 0) {\n const messages = errors\n .map((d) =>\n typescript.flattenDiagnosticMessageText(d.messageText, \"\\n\")\n )\n .join(\"\\n\");\n consola.warn(`tsconfig diagnostics in ${projectDir}:\\n${messages}`);\n }\n if (fileNames.length === 0) {\n consola.warn(\n `tsconfig at ${tsConfigFilePath} resolved 0 files `\n + `(projectDir: ${projectDir}). TypeScript function discovery will find nothing.`,\n );\n }\n return typescript.createProgram({\n options,\n rootNames: fileNames,\n configFileParsingDiagnostics: errors,\n });\n }\n\n /**\n * Convert IR object types to OSDK format\n */\n static getOsdkObjectTypes(\n objects: OntologyIrObjectTypeBlockDataV2[],\n links: OntologyIrLinkTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.ObjectTypeFullMetadata> {\n const linkMappings = this.getLinkMappings(links);\n\n const result: Record<ApiName, Ontologies.ObjectTypeFullMetadata> = {};\n\n for (const fullObject of objects) {\n const object = fullObject.objectType;\n const icon = object.displayMetadata.icon;\n\n if (icon.type !== \"blueprint\") {\n throw new Error(\"Only blueprint icons are supported\");\n }\n\n // Ensure we have exactly one primary key\n if (object.primaryKeys.length !== 1) {\n throw new Error(\"Object must have exactly 1 primary key\");\n }\n\n // Build a mapping from property RID to apiName for resolving references\n const propRidToApiName: Record<string, string> = {};\n for (const [propRid, prop] of Object.entries(object.propertyTypes)) {\n propRidToApiName[propRid] = prop.apiName;\n }\n\n // Resolve primaryKey and titleProperty from RID to apiName\n const primaryKeyRid = object.primaryKeys[0];\n const primaryKey = propRidToApiName[primaryKeyRid] ?? primaryKeyRid;\n const titlePropertyRid = object.titlePropertyTypeRid;\n const titleProperty = propRidToApiName[titlePropertyRid]\n ?? titlePropertyRid;\n\n const properties: Record<ApiName, Ontologies.PropertyV2> = {};\n for (const [propRid, prop] of Object.entries(object.propertyTypes)) {\n const propApiName = prop.apiName;\n const visibility = prop.displayMetadata.visibility;\n let visibilityEnum: \"NORMAL\" | \"PROMINENT\" | \"HIDDEN\" = \"NORMAL\";\n\n if (!visibility) {\n visibilityEnum = \"NORMAL\";\n } else {\n switch (visibility) {\n case \"PROMINENT\":\n visibilityEnum = \"PROMINENT\";\n break;\n case \"NORMAL\":\n visibilityEnum = \"NORMAL\";\n break;\n case \"HIDDEN\":\n visibilityEnum = \"HIDDEN\";\n break;\n default:\n visibilityEnum = \"NORMAL\";\n }\n }\n\n const dataType = this.getOsdkPropertyType(prop.type);\n if (dataType) {\n const status = {\n type: prop.status.type,\n ...((prop.status as unknown as Record<string, unknown>)[\n prop.status.type\n ] ?? {}),\n } as unknown as Ontologies.PropertyTypeStatus;\n\n properties[propApiName] = {\n displayName: prop.displayMetadata.displayName,\n rid: `ri.${object.apiName}.${propApiName}`,\n status,\n description: prop.displayMetadata.description ?? undefined,\n visibility: visibilityEnum,\n dataType,\n typeClasses: [],\n };\n }\n }\n\n const objectTypeV2: Ontologies.ObjectTypeV2 = {\n apiName: object.apiName,\n description: object.displayMetadata.description ?? undefined,\n displayName: object.displayMetadata.displayName,\n pluralDisplayName: \"\", // Not available in IR\n primaryKey,\n titleProperty,\n icon: {\n type: \"blueprint\",\n color: icon.blueprint.color,\n name: icon.blueprint.locator,\n },\n status: this.convertObjectTypeStatus(object.status),\n properties,\n rid: `ri.${object.apiName}`,\n };\n\n const sharedPropertyTypeMappings: Record<ApiName, ApiName> = {};\n const implementsInterfaces2: Record<\n ApiName,\n Ontologies.ObjectTypeInterfaceImplementation\n > = {};\n\n for (const ii of object.implementsInterfaces2) {\n const interfaceApiName = ii.interfaceTypeApiName;\n const propertyMappings: Record<ApiName, ApiName> = {};\n\n for (\n const [sharedPropKey, propMapping] of Object.entries(ii.properties)\n ) {\n const propertyApiName = propMapping.propertyTypeRid;\n propertyMappings[sharedPropKey] = propertyApiName;\n sharedPropertyTypeMappings[sharedPropKey] = propertyApiName;\n }\n\n implementsInterfaces2[interfaceApiName] = {\n properties: propertyMappings,\n propertiesV2: {},\n links: {},\n };\n }\n\n const objectApiName = object.apiName;\n result[objectApiName] = {\n objectType: objectTypeV2,\n implementsInterfaces: [], // Empty for now - legacy field\n implementsInterfaces2,\n sharedPropertyTypeMapping: sharedPropertyTypeMappings,\n linkTypes: linkMappings[objectApiName] || [],\n };\n }\n\n return result;\n }\n\n /**\n * Create link mappings from IR link types\n */\n static getLinkMappings(\n links: OntologyIrLinkTypeBlockDataV2[],\n ): Record<string, Ontologies.LinkTypeSideV2[]> {\n const result: Record<string, Ontologies.LinkTypeSideV2[]> = {};\n\n for (const link of links) {\n const linkType = link.linkType;\n const linkStatus = this.convertLinkTypeStatus(linkType.status);\n\n let mappings: Record<string, Ontologies.LinkTypeSideV2>;\n switch (linkType.definition.type) {\n case \"manyToMany\": {\n const linkDef = linkType.definition.manyToMany;\n const sideA: Ontologies.LinkTypeSideV2 = {\n apiName: linkDef.objectTypeAToBLinkMetadata.apiName ?? \"\",\n displayName: linkDef.objectTypeAToBLinkMetadata\n .displayMetadata.displayName,\n cardinality: \"MANY\",\n objectTypeApiName: linkDef.objectTypeRidB,\n linkTypeRid:\n `ri.${linkDef.objectTypeRidA}.${linkType.id}.${linkDef.objectTypeRidB}`,\n status: linkStatus,\n };\n\n const sideB: Ontologies.LinkTypeSideV2 = {\n ...sideA,\n apiName: linkDef.objectTypeBToALinkMetadata.apiName\n ?? \"\",\n objectTypeApiName: linkDef.objectTypeRidA,\n };\n\n mappings = {\n [linkDef.objectTypeRidA]: sideA,\n [linkDef.objectTypeRidB]: sideB,\n };\n break;\n }\n case \"oneToMany\": {\n const linkDef = linkType.definition.oneToMany;\n\n invariant(\n linkDef.oneSidePrimaryKeyToManySidePropertyMapping.length === 1,\n );\n\n const common = {\n linkTypeRid:\n `ri.${linkDef.objectTypeRidOneSide}.${linkType.id}.${linkDef.objectTypeRidManySide}`,\n status: linkStatus,\n };\n\n const manySide: Ontologies.LinkTypeSideV2 = {\n ...common,\n apiName: linkDef.oneToManyLinkMetadata.apiName ?? \"\",\n displayName:\n linkDef.oneToManyLinkMetadata.displayMetadata.displayName,\n objectTypeApiName: linkDef.objectTypeRidOneSide,\n cardinality: \"ONE\",\n // This should only exist on the one side and it should be the property on this object\n // that points to the PK on the other object\n foreignKeyPropertyApiName:\n linkDef.oneSidePrimaryKeyToManySidePropertyMapping[0].to\n .apiName,\n };\n\n const oneSide: Ontologies.LinkTypeSideV2 = {\n ...common,\n cardinality: \"MANY\",\n apiName: linkDef.manyToOneLinkMetadata.apiName ?? \"\",\n displayName:\n linkDef.manyToOneLinkMetadata.displayMetadata.displayName,\n objectTypeApiName: linkDef.objectTypeRidManySide,\n };\n\n mappings = {\n [linkDef.objectTypeRidOneSide]: oneSide,\n [linkDef.objectTypeRidManySide]: manySide,\n };\n break;\n }\n default:\n throw new Error(\"Unknown link definition type\");\n }\n\n // Add mappings to result\n for (const [objectTypeApiName, linkSide] of Object.entries(mappings)) {\n if (!result[objectTypeApiName]) {\n result[objectTypeApiName] = [];\n }\n result[objectTypeApiName].push(linkSide);\n }\n }\n\n return result;\n }\n\n /**\n * Convert IR action types to OSDK format\n */\n static getOsdkActionTypes(\n actions: OntologyIrActionTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.ActionTypeV2> {\n const result: Record<ApiName, Ontologies.ActionTypeV2> = {};\n\n for (const action of actions) {\n const metadata = action.actionType.metadata;\n const actionType: Ontologies.ActionTypeV2 = {\n rid: `ri.action.${metadata.apiName}`,\n apiName: metadata.apiName,\n displayName: metadata.displayMetadata.displayName,\n description: metadata.displayMetadata.description,\n parameters: this.getOsdkActionParameters(action),\n operations: this.getOsdkActionOperations(action),\n status: this.convertActionTypeStatus(metadata.status),\n };\n\n result[actionType.apiName] = actionType;\n }\n\n return result;\n }\n\n /**\n * Convert action operations from IR\n */\n static getOsdkActionOperations(\n action: OntologyIrActionTypeBlockDataV2,\n ): Ontologies.LogicRule[] {\n return action.actionType.actionTypeLogic.logic.rules.map(irLogic => {\n switch (irLogic.type) {\n case \"addInterfaceRule\": {\n const r = irLogic.addInterfaceRule;\n return {\n type: \"createInterfaceObject\",\n interfaceTypeApiName: r.interfaceApiName,\n } satisfies Ontologies.LogicRule;\n }\n case \"addLinkRule\":\n throw new Error(\"Add link rule not supported\");\n case \"addObjectRule\": {\n const r = irLogic.addObjectRule;\n return {\n type: \"createObject\",\n objectTypeApiName: r.objectTypeId,\n } satisfies Ontologies.LogicRule;\n }\n case \"addOrModifyObjectRuleV2\": {\n const r = irLogic.addOrModifyObjectRuleV2;\n\n const modifyParamType =\n action.actionType.metadata.parameters[r.objectToModify].type;\n if (modifyParamType.type === \"objectReference\") {\n return {\n type: \"modifyObject\",\n objectTypeApiName: modifyParamType.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n } else {\n throw new Error(\n \"Unable to convert modifyAction because parameter does not exist\",\n );\n }\n }\n case \"deleteLinkRule\":\n throw new Error(\"Delete link rule not supported\");\n case \"deleteObjectRule\": {\n const r = irLogic.deleteObjectRule;\n const ontologyIrParameter =\n action.actionType.metadata.parameters[r.objectToDelete];\n if (ontologyIrParameter.type.type !== \"objectReference\") {\n throw new Error(\"invalid parameter type\");\n }\n\n return {\n type: \"deleteObject\",\n objectTypeApiName:\n ontologyIrParameter.type.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n }\n case \"modifyInterfaceRule\": {\n const r = irLogic.modifyInterfaceRule;\n const parameter = action.actionType.metadata\n .parameters[r.interfaceObjectToModifyParameter];\n if (!parameter) {\n throw new Error(\"Could not find interface type api name\");\n }\n\n let interfaceTypeApiName: string | null = null;\n switch (parameter.type.type) {\n case \"interfaceReference\":\n interfaceTypeApiName =\n parameter.type.interfaceReference.interfaceTypeRid;\n break;\n case \"interfaceReferenceList\":\n interfaceTypeApiName =\n parameter.type.interfaceReferenceList.interfaceTypeRid;\n break;\n default:\n interfaceTypeApiName = null;\n }\n\n if (!interfaceTypeApiName) {\n throw new Error(\"Could not find interface type api name\");\n }\n\n return {\n type: \"modifyInterfaceObject\",\n interfaceTypeApiName,\n } satisfies Ontologies.LogicRule;\n }\n case \"modifyObjectRule\": {\n const r = irLogic.modifyObjectRule;\n\n const modifyParamType =\n action.actionType.metadata.parameters[r.objectToModify].type;\n if (modifyParamType.type === \"objectReference\") {\n return {\n type: \"modifyObject\",\n objectTypeApiName: modifyParamType.objectReference.objectTypeId,\n } satisfies Ontologies.LogicRule;\n } else {\n throw new Error(\n \"Unable to convert modifyAction because parameter does not exist\",\n );\n }\n }\n default:\n throw new Error(\"Unknown logic rule type\");\n }\n });\n }\n\n /**\n * Convert action parameters from IR\n */\n static getOsdkActionParameters(\n action: OntologyIrActionTypeBlockDataV2,\n ): Record<string, Ontologies.ActionParameterV2> {\n const result: Record<string, Ontologies.ActionParameterV2> = {};\n\n for (\n const [paramKey, irParameter] of Object.entries(\n action.actionType.metadata.parameters,\n )\n ) {\n let dataType: Ontologies.ActionParameterType;\n switch (irParameter.type.type) {\n case \"attachment\":\n dataType = { type: \"attachment\" };\n break;\n case \"attachmentList\":\n dataType = {\n type: \"array\",\n subType: { type: \"attachment\" },\n };\n break;\n case \"boolean\":\n dataType = { type: \"boolean\" };\n break;\n case \"booleanList\":\n dataType = {\n type: \"array\",\n subType: { type: \"boolean\" },\n };\n break;\n case \"date\":\n dataType = { type: \"date\" };\n break;\n case \"dateList\":\n dataType = {\n type: \"array\",\n subType: { type: \"date\" },\n };\n break;\n case \"decimal\":\n throw new Error(\"Decimal type not supported\");\n case \"decimalList\":\n throw new Error(\"Decimal list type not supported\");\n case \"double\":\n dataType = { type: \"double\" };\n break;\n case \"doubleList\":\n dataType = {\n type: \"array\",\n subType: { type: \"double\" },\n };\n break;\n case \"geohash\":\n dataType = { type: \"geohash\" };\n break;\n case \"geohashList\":\n dataType = {\n type: \"array\",\n subType: { type: \"geohash\" },\n };\n break;\n case \"geoshape\":\n dataType = { type: \"geoshape\" };\n break;\n case \"geoshapeList\":\n dataType = {\n type: \"array\",\n subType: { type: \"geoshape\" },\n };\n break;\n case \"geotimeSeriesReference\":\n throw new Error(\"Geotime series reference type not supported\");\n case \"geotimeSeriesReferenceList\":\n throw new Error(\"Geotime series reference list type not supported\");\n case \"integer\":\n dataType = { type: \"integer\" };\n break;\n case \"integerList\":\n dataType = {\n type: \"array\",\n subType: { type: \"integer\" },\n };\n break;\n case \"long\":\n dataType = { type: \"long\" };\n break;\n case \"longList\":\n dataType = {\n type: \"array\",\n subType: { type: \"long\" },\n };\n break;\n case \"marking\":\n dataType = { type: \"marking\" };\n break;\n case \"markingList\":\n dataType = {\n type: \"array\",\n subType: { type: \"marking\" },\n };\n break;\n case \"mediaReference\":\n dataType = { type: \"mediaReference\" };\n break;\n case \"mediaReferenceList\":\n dataType = {\n type: \"array\",\n subType: { type: \"mediaReference\" },\n };\n break;\n case \"interfaceReference\": {\n const t = irParameter.type.interfaceReference;\n dataType = {\n type: \"interfaceObject\",\n interfaceTypeApiName: t.interfaceTypeRid,\n };\n break;\n }\n case \"interfaceReferenceList\": {\n const t = irParameter.type.interfaceReferenceList;\n dataType = {\n type: \"array\",\n subType: {\n type: \"interfaceObject\",\n interfaceTypeApiName: t.interfaceTypeRid,\n },\n };\n break;\n }\n case \"objectReference\": {\n const t = irParameter.type.objectReference;\n dataType = {\n type: \"object\",\n objectTypeApiName: t.objectTypeId,\n objectApiName: t.objectTypeId,\n };\n break;\n }\n case \"objectReferenceList\": {\n const t = irParameter.type.objectReferenceList;\n dataType = {\n type: \"array\",\n subType: {\n type: \"object\",\n objectTypeApiName: t.objectTypeId,\n objectApiName: t.objectTypeId,\n },\n };\n break;\n }\n case \"objectSetRid\":\n dataType = { type: \"objectSet\" };\n break;\n case \"objectTypeReference\":\n dataType = { type: \"objectType\" };\n break;\n case \"string\":\n dataType = { type: \"string\" };\n break;\n case \"stringList\":\n dataType = {\n type: \"array\",\n subType: { type: \"string\" },\n };\n break;\n case \"struct\":\n throw new Error(\"Struct type not supported (lazy implementation)\");\n case \"structList\":\n throw new Error(\"Struct list type not supported\");\n case \"timeSeriesReference\":\n throw new Error(\"Time series reference type not supported\");\n case \"timestamp\":\n dataType = { type: \"timestamp\" };\n break;\n case \"timestampList\":\n dataType = {\n type: \"array\",\n subType: { type: \"timestamp\" },\n };\n break;\n default:\n throw new Error(\"Unknown parameter type\");\n }\n\n result[paramKey] = {\n displayName: irParameter.displayMetadata.displayName,\n description: irParameter.displayMetadata.description,\n required: isParameterRequired(action, paramKey),\n dataType,\n typeClasses: [],\n };\n }\n\n return result;\n }\n\n /**\n * Convert interface types from IR\n */\n static getOsdkInterfaceTypes(\n interfaces: OntologyIrInterfaceTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.InterfaceType> {\n const result: Record<ApiName, Ontologies.InterfaceType> = {};\n\n for (const interfaceData of interfaces) {\n const interfaceType = interfaceData.interfaceType;\n\n // Convert shared properties to interface shared properties\n const properties: Record<\n ApiName,\n Ontologies.InterfaceSharedPropertyType\n > = {};\n for (\n const [propKey, propValue] of Object.entries(interfaceType.propertiesV2)\n ) {\n const spt = propValue.sharedPropertyType;\n const dataType = this.getOsdkPropertyType(spt.type);\n if (dataType) {\n properties[propKey] = {\n rid: `ri.interface.${interfaceType.apiName}.${spt.apiName}`,\n apiName: spt.apiName,\n displayName: spt.displayMetadata.displayName,\n description: spt.displayMetadata.description ?? undefined,\n dataType,\n required: false, // Default to false for now - this should come from IR if available\n typeClasses: [],\n };\n }\n }\n\n const result_interfaceType: Ontologies.InterfaceType = {\n apiName: interfaceType.apiName,\n rid: `ri.interface.${interfaceType.apiName}`,\n properties,\n allProperties: properties, // Same as properties for now\n propertiesV2: {},\n allPropertiesV2: {},\n extendsInterfaces: interfaceType.extendsInterfaces.map(val => val),\n allExtendsInterfaces: interfaceType.extendsInterfaces.map(val => val), // Same as extendsInterfaces for now\n implementedByObjectTypes: [], // Empty for now\n displayName: interfaceType.displayMetadata.displayName,\n description: interfaceType.displayMetadata.description ?? undefined,\n links: this.getOsdkInterfaceLinkTypes(interfaceType.links),\n allLinks: this.getOsdkInterfaceLinkTypes(interfaceType.links), // Same as links for now\n };\n\n result[result_interfaceType.apiName] = result_interfaceType;\n }\n\n return result;\n }\n\n /**\n * Convert interface link types from IR\n */\n static getOsdkInterfaceLinkTypes(\n ilts: OntologyIrMarketplaceInterfaceLinkType[],\n ): Record<ApiName, Ontologies.InterfaceLinkType> {\n const result: Record<ApiName, Ontologies.InterfaceLinkType> = {};\n\n for (const ilt of ilts) {\n let linkedEntityApiName: {\n type: \"interfaceTypeApiName\";\n apiName: string;\n };\n switch (ilt.linkedEntityTypeId.type) {\n case \"interfaceType\": {\n const interfaceType = ilt.linkedEntityTypeId.interfaceType;\n linkedEntityApiName = {\n type: \"interfaceTypeApiName\" as const,\n apiName: interfaceType,\n };\n break;\n }\n case \"objectType\":\n throw new Error(\n \"Interface links to object types should not be possible in ontology as code yet\",\n );\n default:\n throw new Error(\"Unknown linked entity type\");\n }\n\n let cardinality: Ontologies.InterfaceLinkTypeCardinality;\n switch (ilt.cardinality) {\n case \"SINGLE\":\n cardinality = \"ONE\";\n break;\n case \"MANY\":\n cardinality = \"MANY\";\n break;\n default:\n throw new Error(\"Unknown cardinality type\");\n }\n\n const interfaceLinkType: Ontologies.InterfaceLinkType = {\n rid:\n `ri.interfacelink.${linkedEntityApiName.apiName}.${ilt.metadata.apiName}`,\n apiName: ilt.metadata.apiName,\n displayName: ilt.metadata.displayName,\n description: ilt.metadata.description,\n linkedEntityApiName,\n cardinality,\n required: ilt.required,\n };\n\n result[interfaceLinkType.apiName] = interfaceLinkType;\n }\n\n return result;\n }\n\n /**\n * Convert shared property types from IR\n */\n static getOsdkSharedPropertyTypes(\n spts: OntologyIrSharedPropertyTypeBlockDataV2[],\n ): Record<ApiName, Ontologies.SharedPropertyType> {\n const result: Record<ApiName, Ontologies.SharedPropertyType> = {};\n\n for (const spt of spts) {\n const dataType = this.getOsdkPropertyType(spt.sharedPropertyType.type);\n if (dataType) {\n const sharedPropertyType: Ontologies.SharedPropertyType = {\n rid: `ri.spt.${spt.sharedPropertyType.apiName}`,\n apiName: spt.sharedPropertyType.apiName,\n displayName: spt.sharedPropertyType.displayMetadata.displayName,\n description: spt.sharedPropertyType.displayMetadata.description\n ?? undefined,\n dataType,\n typeClasses: [],\n };\n\n result[sharedPropertyType.apiName] = sharedPropertyType;\n } else {\n throw new Error(\n `Unsupported property type '${\n JSON.stringify(spt.sharedPropertyType.type)\n }' for spt '${spt.sharedPropertyType.apiName}'`,\n );\n }\n }\n\n return result;\n }\n\n /**\n * Convert property types from IR to OSDK format\n */\n static getOsdkPropertyType(\n type: OntologyIrType,\n ): Ontologies.ObjectPropertyType | null {\n switch (type.type) {\n case \"array\": {\n const value = type.array;\n const subType = this.getOsdkPropertyType(value.subtype);\n return subType ? { type: \"array\", subType, reducers: [] } : null;\n }\n case \"boolean\":\n return { type: \"boolean\" };\n case \"byte\":\n return { type: \"byte\" };\n case \"date\":\n return { type: \"date\" };\n case \"decimal\":\n return { type: \"decimal\" };\n case \"double\":\n return { type: \"double\" };\n case \"float\":\n return { type: \"float\" };\n case \"geohash\":\n return { type: \"geopoint\" };\n case \"geoshape\":\n return { type: \"geoshape\" };\n case \"integer\":\n return { type: \"integer\" };\n case \"long\":\n return { type: \"long\" };\n case \"short\":\n return { type: \"short\" };\n case \"string\":\n return { type: \"string\" };\n case \"experimentalTimeDependentV1\":\n return null;\n case \"timestamp\":\n return { type: \"timestamp\" };\n case \"attachment\":\n return { type: \"attachment\" };\n case \"marking\":\n return { type: \"marking\" };\n case \"cipherText\":\n return { type: \"cipherText\" };\n case \"mediaReference\":\n return { type: \"mediaReference\" };\n case \"vector\":\n return null;\n case \"geotimeSeriesReference\":\n return { type: \"geotimeSeriesReference\" };\n case \"struct\": {\n const value = type.struct;\n const ridBase = `ri.struct.${\n hash(\"sha256\", JSON.stringify(type)).slice(0, 10)\n }`;\n return {\n type: \"struct\",\n structFieldTypes: value.structFields.map(field => {\n const fieldDataType = this.getOsdkPropertyType(field.fieldType);\n if (!fieldDataType) {\n throw new Error(\n `Unsupported field type in struct: ${field.apiName}`,\n );\n }\n return {\n apiName: field.apiName,\n rid: `${ridBase}.${field.apiName}`,\n dataType: fieldDataType,\n typeClasses: [],\n };\n }),\n };\n }\n default:\n return null;\n }\n }\n\n private static convertObjectTypeStatus(\n status: OntologyIrObjectTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"endorsed\":\n throw new Error(\"Endorsed status is not supported yet\");\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown object type status: ${status}`);\n }\n }\n\n private static convertActionTypeStatus(\n status: OntologyIrActionTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown action type status: ${status}`);\n }\n }\n\n private static convertLinkTypeStatus(\n status: OntologyIrLinkTypeStatus,\n ): \"ACTIVE\" | \"DEPRECATED\" | \"EXPERIMENTAL\" {\n switch (status.type) {\n case \"active\":\n return \"ACTIVE\";\n case \"deprecated\":\n return \"DEPRECATED\";\n case \"example\":\n throw new Error(\"Example status has no mapping\");\n case \"experimental\":\n return \"EXPERIMENTAL\";\n default:\n throw new Error(`Unknown link type status: ${status}`);\n }\n }\n}\n\nfunction discoverComponentRoot(\n typescript: typeof ts,\n functionsDir: string,\n): { tsConfigPath: string; projectDir: string } {\n // Find tsconfig.json - try functionsDir first, then parent directory\n let tsConfigPath = path.join(functionsDir, \"tsconfig.json\");\n let projectDir = functionsDir;\n const configResult = typescript.readConfigFile(\n tsConfigPath,\n typescript.sys.readFile,\n );\n if (configResult.error) {\n tsConfigPath = path.join(path.dirname(functionsDir), \"tsconfig.json\");\n projectDir = path.dirname(functionsDir);\n }\n // Normalize to forward slashes for cross-platform consistency with\n // TypeScript's internal path representation (which always uses '/').\n return {\n tsConfigPath: tsConfigPath.replace(/\\\\/g, \"/\"),\n projectDir: projectDir.replace(/\\\\/g, \"/\"),\n };\n}\n\nfunction isParameterRequired(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): boolean {\n return action.actionType.actionTypeLogic.validation\n .parameterValidations[paramKey].defaultValidation.validation.required.type\n === \"required\";\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1238,7 +1238,8 @@ var OntologyIrToFullMetadataConverter = class {
1238
1238
  version: "0.0.0",
1239
1239
  parameters: func.inputs.reduce((acc, input) => {
1240
1240
  acc[input.name] = {
1241
- dataType: convertDataType(input.dataType, func.customTypes)
1241
+ dataType: convertDataType(input.dataType, func.customTypes),
1242
+ required: true
1242
1243
  };
1243
1244
  return acc;
1244
1245
  }, {}),
@@ -1355,7 +1356,8 @@ var OntologyIrToFullMetadataConverter = class {
1355
1356
  version: "0.0.0",
1356
1357
  parameters: resolvedInputs.reduce((acc, input) => {
1357
1358
  acc[input.name] = {
1358
- dataType: convertDataType(input.dataType, customTypes, input.required)
1359
+ dataType: convertDataType(input.dataType, customTypes, input.required),
1360
+ required: input.required ?? true
1359
1361
  };
1360
1362
  return acc;
1361
1363
  }, {}),