@osdk/generator-converters.preview 0.1.0-beta.2 → 0.1.0-beta.3

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,18 @@
1
1
  # @osdk/generator-converters.preview
2
2
 
3
+ ## 0.1.0-beta.3
4
+
5
+ ### Minor Changes
6
+
7
+ - 6af21a5: Support python OSDK generation and edit functions discovery
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [6941b4f]
12
+ - @osdk/client.unstable@2.8.0-beta.16
13
+ - @osdk/generator-converters.ontologyir@2.8.0-beta.16
14
+ - @osdk/generator@2.8.0-beta.16
15
+
3
16
  ## 0.1.0-beta.2
4
17
 
5
18
  ### Minor Changes
@@ -116,10 +116,14 @@ function convertSingleRule(irRule, action, objectLookup, interfaceLookup) {
116
116
  const r = irRule.modifyObjectRule;
117
117
  // Validate that the parameter is an objectReference (throws if not)
118
118
  getObjectReferenceType(action, r.objectToModify);
119
+ const modifyPropertyArguments = {};
120
+ for (const [k, v] of Object.entries(r.propertyValues)) {
121
+ modifyPropertyArguments[k] = v;
122
+ }
119
123
  const result = {
120
124
  type: "modifyObject",
121
125
  objectToModify: r.objectToModify,
122
- propertyArguments: {},
126
+ propertyArguments: modifyPropertyArguments,
123
127
  structPropertyArguments: {}
124
128
  };
125
129
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionLogicRuleConverter.js","names":["buildObjectTypeLookup","ir","objectTypes","undefined","byId","Map","byHyphenated","key","value","Object","entries","apiName","objectType","set","replace","buildInterfaceTypeLookup","interfaceTypes","interfaceType","resolveApiName","id","lookup","get","getObjectReferenceType","action","paramKey","param","actionType","metadata","parameters","type","Error","objectReference","convertIrLogicRulesToActionLogicRules","rules","objectLookup","interfaceLookup","map","irRule","convertSingleRule","convertIrLogicRuleToActionLogicRule","r","addObjectRule","propertyArguments","k","v","propertyValues","result","objectTypeApiName","objectTypeId","structPropertyArguments","addOrModifyObjectRuleV2","objRef","objectToModify","modifyObjectRule","deleteObjectRule","objectToDelete","addInterfaceRule","interfaceApiName","interfaceTypeApiName","sharedPropertyArguments","modifyInterfaceRule","interfaceObjectToModify","interfaceObjectToModifyParameter"],"sources":["ActionLogicRuleConverter.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 OntologyIrLogicRule,\n OntologyIrOntologyBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\ninterface ApiNameLookup {\n byId: Map<string, string>;\n byHyphenated: Map<string, string>;\n}\n\nfunction buildObjectTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction buildInterfaceTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction resolveApiName(id: string, lookup: ApiNameLookup | undefined): string {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\n\nfunction getObjectReferenceType(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): { objectTypeId: string } {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(\n `Parameter '${paramKey}' must be an objectReference type`,\n );\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(\n rules: OntologyIrLogicRule[],\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule[] {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n\n return rules.map(irRule =>\n convertSingleRule(irRule, action, objectLookup, interfaceLookup)\n );\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\n\nfunction convertSingleRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n objectLookup: ApiNameLookup | undefined,\n interfaceLookup: ApiNameLookup | undefined,\n): Ontologies.ActionLogicRule {\n switch (irRule.type) {\n case \"addObjectRule\": {\n const r = irRule.addObjectRule;\n const propertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.CreateObjectLogicRule & {\n type: \"createObject\";\n } = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addOrModifyObjectRuleV2\": {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result: Ontologies.CreateOrModifyObjectLogicRule & {\n type: \"createOrModifyObject\";\n } = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyObjectRule\": {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const result: Ontologies.ModifyObjectLogicRule & {\n type: \"modifyObject\";\n } = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"deleteObjectRule\": {\n const r = irRule.deleteObjectRule;\n const result: Ontologies.DeleteObjectLogicRule & {\n type: \"deleteObject\";\n } = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete,\n };\n return result;\n }\n\n case \"addInterfaceRule\": {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(\n r.interfaceApiName,\n interfaceLookup,\n );\n const result: Ontologies.CreateInterfaceLogicRule & {\n type: \"createInterface\";\n } = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyInterfaceRule\": {\n const r = irRule.modifyInterfaceRule;\n const result: Ontologies.ModifyInterfaceLogicRule & {\n type: \"modifyInterface\";\n } = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n\n default:\n throw new Error(\n `Unsupported logic rule type: ${(irRule as { type: string }).type}`,\n );\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA,SAASA,qBAAqBA,CAC5BC,EAA6C,EAClB;EAC3B,IAAI,CAACA,EAAE,EAAEC,WAAW,EAAE;IACpB,OAAOC,SAAS;EAClB;EACA,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAiB,CAAC;EACtC,MAAMC,YAAY,GAAG,IAAID,GAAG,CAAiB,CAAC;EAC9C,KAAK,MAAM,CAACE,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACT,EAAE,CAACC,WAAW,CAAC,EAAE;IACzD,MAAMS,OAAO,GAAGH,KAAK,CAACI,UAAU,CAACD,OAAO;IACxCP,IAAI,CAACS,GAAG,CAACN,GAAG,EAAEI,OAAO,CAAC;IACtBL,YAAY,CAACO,GAAG,CAACF,OAAO,CAACG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAEH,OAAO,CAAC;EACxD;EACA,OAAO;IAAEP,IAAI;IAAEE;EAAa,CAAC;AAC/B;AAEA,SAASS,wBAAwBA,CAC/Bd,EAA6C,EAClB;EAC3B,IAAI,CAACA,EAAE,EAAEe,cAAc,EAAE;IACvB,OAAOb,SAAS;EAClB;EACA,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAiB,CAAC;EACtC,MAAMC,YAAY,GAAG,IAAID,GAAG,CAAiB,CAAC;EAC9C,KAAK,MAAM,CAACE,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACT,EAAE,CAACe,cAAc,CAAC,EAAE;IAC5D,MAAML,OAAO,GAAGH,KAAK,CAACS,aAAa,CAACN,OAAO;IAC3CP,IAAI,CAACS,GAAG,CAACN,GAAG,EAAEI,OAAO,CAAC;IACtBL,YAAY,CAACO,GAAG,CAACF,OAAO,CAACG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAEH,OAAO,CAAC;EACxD;EACA,OAAO;IAAEP,IAAI;IAAEE;EAAa,CAAC;AAC/B;AAEA,SAASY,cAAcA,CAACC,EAAU,EAAEC,MAAiC,EAAU;EAC7E,IAAI,CAACA,MAAM,EAAE;IACX,OAAOD,EAAE;EACX;EACA,OAAOC,MAAM,CAAChB,IAAI,CAACiB,GAAG,CAACF,EAAE,CAAC,IAAIC,MAAM,CAACd,YAAY,CAACe,GAAG,CAACF,EAAE,CAAC,IAAIA,EAAE;AACjE;AAEA,SAASG,sBAAsBA,CAC7BC,MAAuC,EACvCC,QAAgB,EACU;EAC1B,MAAMC,KAAK,GAAGF,MAAM,CAACG,UAAU,CAACC,QAAQ,CAACC,UAAU,CAACJ,QAAQ,CAAC;EAC7D,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACI,IAAI,CAACA,IAAI,KAAK,iBAAiB,EAAE;IACnD,MAAM,IAAIC,KAAK,CACb,cAAcN,QAAQ,mCACxB,CAAC;EACH;EACA,OAAOC,KAAK,CAACI,IAAI,CAACE,eAAe;AACnC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,qCAAqCA,CACnDC,KAA4B,EAC5BV,MAAuC,EACvCtB,EAAkC,EACJ;EAC9B,MAAMiC,YAAY,GAAGlC,qBAAqB,CAACC,EAAE,CAAC;EAC9C,MAAMkC,eAAe,GAAGpB,wBAAwB,CAACd,EAAE,CAAC;EAEpD,OAAOgC,KAAK,CAACG,GAAG,CAACC,MAAM,IACrBC,iBAAiB,CAACD,MAAM,EAAEd,MAAM,EAAEW,YAAY,EAAEC,eAAe,CACjE,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,mCAAmCA,CACjDF,MAA2B,EAC3Bd,MAAuC,EACvCtB,EAAkC,EACN;EAC5B,MAAMiC,YAAY,GAAGlC,qBAAqB,CAACC,EAAE,CAAC;EAC9C,MAAMkC,eAAe,GAAGpB,wBAAwB,CAACd,EAAE,CAAC;EACpD,OAAOqC,iBAAiB,CAACD,MAAM,EAAEd,MAAM,EAAEW,YAAY,EAAEC,eAAe,CAAC;AACzE;AAEA,SAASG,iBAAiBA,CACxBD,MAA2B,EAC3Bd,MAAuC,EACvCW,YAAuC,EACvCC,eAA0C,EACd;EAC5B,QAAQE,MAAM,CAACR,IAAI;IACjB,KAAK,eAAe;MAAE;QACpB,MAAMW,CAAC,GAAGH,MAAM,CAACI,aAAa;QAC9B,MAAMC,iBAGL,GAAG,CAAC,CAAC;QACN,KAAK,MAAM,CAACC,CAAC,EAAEC,CAAC,CAAC,IAAInC,MAAM,CAACC,OAAO,CAAC8B,CAAC,CAACK,cAAc,CAAC,EAAE;UACrDH,iBAAiB,CAACC,CAAC,CAAC,GAAGC,CAAiC;QAC1D;QACA,MAAME,MAEL,GAAG;UACFjB,IAAI,EAAE,cAAc;UACpBkB,iBAAiB,EAAE7B,cAAc,CAACsB,CAAC,CAACQ,YAAY,EAAEd,YAAY,CAAC;UAC/DQ,iBAAiB;UACjBO,uBAAuB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAOH,MAAM;MACf;IAEA,KAAK,yBAAyB;MAAE;QAC9B,MAAMN,CAAC,GAAGH,MAAM,CAACa,uBAAuB;QACxC,MAAMC,MAAM,GAAG7B,sBAAsB,CAACC,MAAM,EAAEiB,CAAC,CAACY,cAAc,CAAC;QAC/D;QACA;QACA;QACA,MAAMN,MAEL,GAAG;UACFjB,IAAI,EAAE,sBAAsB;UAC5BkB,iBAAiB,EAAE7B,cAAc,CAACiC,MAAM,CAACH,YAAY,EAAEd,YAAY,CAAC;UACpEQ,iBAAiB,EAAE,CAAC,CAAC;UACrBO,uBAAuB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAOH,MAAM;MACf;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMN,CAAC,GAAGH,MAAM,CAACgB,gBAAgB;QACjC;QACA/B,sBAAsB,CAACC,MAAM,EAAEiB,CAAC,CAACY,cAAc,CAAC;QAChD,MAAMN,MAEL,GAAG;UACFjB,IAAI,EAAE,cAAc;UACpBuB,cAAc,EAAEZ,CAAC,CAACY,cAAc;UAChCV,iBAAiB,EAAE,CAAC,CAAC;UACrBO,uBAAuB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAOH,MAAM;MACf;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMN,CAAC,GAAGH,MAAM,CAACiB,gBAAgB;QACjC,MAAMR,MAEL,GAAG;UACFjB,IAAI,EAAE,cAAc;UACpB0B,cAAc,EAAEf,CAAC,CAACe;QACpB,CAAC;QACD,OAAOT,MAAM;MACf;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMN,CAAC,GAAGH,MAAM,CAACmB,gBAAgB;QACjC,MAAMC,gBAAgB,GAAGvC,cAAc,CACrCsB,CAAC,CAACiB,gBAAgB,EAClBtB,eACF,CAAC;QAUD,OAPI;UACFN,IAAI,EAAE,iBAAiB;UACvB6B,oBAAoB,EAAED,gBAAgB;UACtC7C,UAAU,EAAE6C,gBAAgB;UAC5BE,uBAAuB,EAAE,CAAC,CAAC;UAC3BV,uBAAuB,EAAE,CAAC;QAC5B,CAAC;MAEH;IAEA,KAAK,qBAAqB;MAAE;QAC1B,MAAMT,CAAC,GAAGH,MAAM,CAACuB,mBAAmB;QACpC,MAAMd,MAEL,GAAG;UACFjB,IAAI,EAAE,iBAAiB;UACvBgC,uBAAuB,EAAErB,CAAC,CAACsB,gCAAgC;UAC3DH,uBAAuB,EAAE,CAAC,CAAC;UAC3BV,uBAAuB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAOH,MAAM;MACf;IAEA,KAAK,aAAa;MAChB,MAAM,IAAIhB,KAAK,CAAC,kDAAkD,CAAC;IAErE,KAAK,gBAAgB;MACnB,MAAM,IAAIA,KAAK,CAAC,qDAAqD,CAAC;IAExE;MACE,MAAM,IAAIA,KAAK,CACb,gCAAiCO,MAAM,CAAsBR,IAAI,EACnE,CAAC;EACL;AACF","ignoreList":[]}
1
+ {"version":3,"file":"ActionLogicRuleConverter.js","names":["buildObjectTypeLookup","ir","objectTypes","undefined","byId","Map","byHyphenated","key","value","Object","entries","apiName","objectType","set","replace","buildInterfaceTypeLookup","interfaceTypes","interfaceType","resolveApiName","id","lookup","get","getObjectReferenceType","action","paramKey","param","actionType","metadata","parameters","type","Error","objectReference","convertIrLogicRulesToActionLogicRules","rules","objectLookup","interfaceLookup","map","irRule","convertSingleRule","convertIrLogicRuleToActionLogicRule","r","addObjectRule","propertyArguments","k","v","propertyValues","result","objectTypeApiName","objectTypeId","structPropertyArguments","addOrModifyObjectRuleV2","objRef","objectToModify","modifyObjectRule","modifyPropertyArguments","deleteObjectRule","objectToDelete","addInterfaceRule","interfaceApiName","interfaceTypeApiName","sharedPropertyArguments","modifyInterfaceRule","interfaceObjectToModify","interfaceObjectToModifyParameter"],"sources":["ActionLogicRuleConverter.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 OntologyIrLogicRule,\n OntologyIrOntologyBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\ninterface ApiNameLookup {\n byId: Map<string, string>;\n byHyphenated: Map<string, string>;\n}\n\nfunction buildObjectTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction buildInterfaceTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction resolveApiName(id: string, lookup: ApiNameLookup | undefined): string {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\n\nfunction getObjectReferenceType(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): { objectTypeId: string } {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(\n `Parameter '${paramKey}' must be an objectReference type`,\n );\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(\n rules: OntologyIrLogicRule[],\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule[] {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n\n return rules.map(irRule =>\n convertSingleRule(irRule, action, objectLookup, interfaceLookup)\n );\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\n\nfunction convertSingleRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n objectLookup: ApiNameLookup | undefined,\n interfaceLookup: ApiNameLookup | undefined,\n): Ontologies.ActionLogicRule {\n switch (irRule.type) {\n case \"addObjectRule\": {\n const r = irRule.addObjectRule;\n const propertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.CreateObjectLogicRule & {\n type: \"createObject\";\n } = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addOrModifyObjectRuleV2\": {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result: Ontologies.CreateOrModifyObjectLogicRule & {\n type: \"createOrModifyObject\";\n } = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyObjectRule\": {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const modifyPropertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n modifyPropertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.ModifyObjectLogicRule & {\n type: \"modifyObject\";\n } = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: modifyPropertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"deleteObjectRule\": {\n const r = irRule.deleteObjectRule;\n const result: Ontologies.DeleteObjectLogicRule & {\n type: \"deleteObject\";\n } = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete,\n };\n return result;\n }\n\n case \"addInterfaceRule\": {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(\n r.interfaceApiName,\n interfaceLookup,\n );\n const result: Ontologies.CreateInterfaceLogicRule & {\n type: \"createInterface\";\n } = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyInterfaceRule\": {\n const r = irRule.modifyInterfaceRule;\n const result: Ontologies.ModifyInterfaceLogicRule & {\n type: \"modifyInterface\";\n } = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n\n default:\n throw new Error(\n `Unsupported logic rule type: ${(irRule as { type: string }).type}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -17,11 +17,93 @@
17
17
  import { generateClientSdkVersionTwoPointZero } from "@osdk/generator";
18
18
  import { OntologyIrToFullMetadataConverter } from "@osdk/generator-converters.ontologyir";
19
19
  import { consola } from "consola";
20
+ import { spawnSync } from "node:child_process";
21
+ import * as fsSync from "node:fs";
20
22
  import * as fs from "node:fs/promises";
23
+ import * as os from "node:os";
21
24
  import * as path from "node:path";
22
25
  import yargs from "yargs";
23
26
  import { hideBin } from "yargs/helpers";
24
27
  import { PreviewOntologyIrConverter } from "../PreviewOntologyIrConverter.js";
28
+ const PYTHON_SDK_PACKAGE_NAME = "ontology_sdk";
29
+
30
+ /**
31
+ * Generates the Python SDK package into the conda environment's site-packages
32
+ * so that Python function discovery can resolve ontology type imports.
33
+ */
34
+ function generatePythonSdk(previewMetadata, pythonBinary) {
35
+ // Build the Python-compatible metadata: unwrap actionTypes and add globalFunctions
36
+ const pythonMetadata = {
37
+ ...previewMetadata,
38
+ actionTypes: Object.fromEntries(Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [key, fullMeta.actionType])),
39
+ globalFunctions: {
40
+ queryTypes: {},
41
+ valueTypes: {}
42
+ }
43
+ };
44
+ const objectTypes = Object.keys(previewMetadata.objectTypes ?? {});
45
+ if (objectTypes.length === 0) {
46
+ consola.info("No object types found, skipping Python SDK generation.");
47
+ return;
48
+ }
49
+ const ontologyApiName = previewMetadata.ontology?.apiName ?? "ontology";
50
+
51
+ // Discover site-packages from the conda environment
52
+ const siteResult = spawnSync(pythonBinary, ["-c", "import site; print(site.getsitepackages()[0])"], {
53
+ encoding: "utf-8"
54
+ });
55
+ if (siteResult.status !== 0 || !siteResult.stdout?.trim()) {
56
+ consola.warn(`Could not discover Python site-packages: ${siteResult.stderr || siteResult.error}`);
57
+ return;
58
+ }
59
+ const sitePackages = siteResult.stdout.trim();
60
+ consola.info(`Python site-packages: ${sitePackages}`);
61
+
62
+ // Write metadata to a temp file for the generator
63
+ const tmpDir = fsSync.mkdtempSync(path.join(os.tmpdir(), "python-sdk-"));
64
+ const tmpMetadata = path.join(tmpDir, "metadata.json");
65
+ fsSync.writeFileSync(tmpMetadata, JSON.stringify(pythonMetadata, null, 2), "utf-8");
66
+
67
+ // Run the Python SDK generator into the temp directory.
68
+ // The generator creates <output-dir>/ontology_sdk/ which is a project
69
+ // directory containing ontology_sdk/ (the actual Python package), setup.py, etc.
70
+ consola.info("Generating Python SDK...");
71
+ const packageName = PYTHON_SDK_PACKAGE_NAME;
72
+ const genResult = spawnSync(pythonBinary, ["-m", "foundry_sdk_generator", "generate_package", "--output-dir", tmpDir, "--package-name", packageName, "--package-version", "0.0.0", "--ontology", ontologyApiName, "--object-types", objectTypes.join(","), "--cache-path", tmpMetadata, "--force"], {
73
+ encoding: "utf-8",
74
+ stdio: "pipe"
75
+ });
76
+ if (genResult.status !== 0) {
77
+ consola.warn(`Python SDK generation failed (non-fatal): ${genResult.stderr || genResult.stdout}`);
78
+ fsSync.rmSync(tmpDir, {
79
+ recursive: true,
80
+ force: true
81
+ });
82
+ return;
83
+ }
84
+
85
+ // The generator creates <tmpDir>/ontology_sdk/ontology_sdk/ (the importable
86
+ // package). Copy just the inner package into site-packages so Python can
87
+ // resolve `import ontology_sdk`.
88
+ const generatedPackage = path.join(tmpDir, packageName, packageName);
89
+ const destPackage = path.join(sitePackages, packageName);
90
+
91
+ // Remove any previous version
92
+ fsSync.rmSync(destPackage, {
93
+ recursive: true,
94
+ force: true
95
+ });
96
+ fsSync.cpSync(generatedPackage, destPackage, {
97
+ recursive: true
98
+ });
99
+
100
+ // Clean up temp directory
101
+ fsSync.rmSync(tmpDir, {
102
+ recursive: true,
103
+ force: true
104
+ });
105
+ consola.info(`Python SDK installed to ${destPackage}`);
106
+ }
25
107
  async function main() {
26
108
  const argv = await yargs(hideBin(process.argv)).strict().help().version(false) // so that we can use --version argument for the package version
27
109
  .usage("$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>").options({
@@ -105,6 +187,13 @@ async function main() {
105
187
  }
106
188
  const previewMetadata = PreviewOntologyIrConverter.getPreviewFullMetadataFromIr(irJson);
107
189
 
190
+ // Generate the Python SDK before function discovery so that Python functions
191
+ // that import ontology types (e.g. `from ontology_sdk.ontology.objects import X`)
192
+ // can be successfully parsed during discovery.
193
+ if (argv.pythonBinary && argv.pythonFunctionsDir) {
194
+ generatePythonSdk(previewMetadata, argv.pythonBinary);
195
+ }
196
+
108
197
  // Function discovery is optional - only run if at least one functions flag is provided
109
198
  if (argv.functionsDir || argv.pythonFunctionsDir) {
110
199
  if (argv.pythonFunctionsDir && !argv.pythonBinary) {
@@ -112,7 +201,7 @@ async function main() {
112
201
  process.exit(1);
113
202
  }
114
203
  const effectivePythonRootDir = argv.pythonRootProjectDir ?? (argv.pythonFunctionsDir ? path.dirname(argv.pythonFunctionsDir) : undefined);
115
- const queryTypes = await OntologyIrToFullMetadataConverter.getOsdkQueryTypes(argv.pythonBinary, argv.functionsDir, argv.nodeModulesPath, argv.pythonFunctionsDir, effectivePythonRootDir);
204
+ const queryTypes = await OntologyIrToFullMetadataConverter.getOsdkQueryTypes(argv.pythonBinary, argv.functionsDir, argv.nodeModulesPath, argv.pythonFunctionsDir, effectivePythonRootDir, previewMetadata);
116
205
  const functionNames = Object.keys(queryTypes);
117
206
  if (functionNames.length > 0) {
118
207
  previewMetadata.queryTypes = queryTypes;
@@ -131,6 +220,17 @@ async function main() {
131
220
  await fs.mkdir(fullOutputDir, {
132
221
  recursive: true
133
222
  });
223
+
224
+ // Clean the output directory before generation. The generator's verifyOutDir
225
+ // requires an empty directory, but a previous SDK build may exist from
226
+ // function discovery (so TypeScript functions can resolve @ontology/sdk imports).
227
+ const existingEntries = await fs.readdir(fullOutputDir);
228
+ for (const entry of existingEntries) {
229
+ await fs.rm(path.join(fullOutputDir, entry), {
230
+ recursive: true,
231
+ force: true
232
+ });
233
+ }
134
234
  consola.info(`Generating SDK to ${fullOutputDir}...`);
135
235
  await generateClientSdkVersionTwoPointZero(metadata, `osdk-generator/${packageVersion} (from-ir)`, {
136
236
  async writeFile(filePath, contents) {
@@ -153,6 +253,67 @@ async function main() {
153
253
  const metadataPath = path.join(fullOutputDir, "ontology-metadata.json");
154
254
  await fs.writeFile(metadataPath, JSON.stringify(previewMetadata, null, 2), "utf-8");
155
255
  consola.info(`Wrote ${metadataPath}`);
256
+
257
+ // Write Python-compatible metadata that the foundry-sdk-generator expects.
258
+ // This uses the unwrapped actionTypes (ActionTypeV2 instead of
259
+ // ActionTypeFullMetadata) and adds the globalFunctions key.
260
+ if (argv.pythonFunctionsDir) {
261
+ const pythonMetadataPath = path.join(fullOutputDir, "python-ontology-metadata.json");
262
+ await fs.writeFile(pythonMetadataPath, JSON.stringify({
263
+ ...metadata,
264
+ globalFunctions: {
265
+ queryTypes: {},
266
+ valueTypes: {}
267
+ }
268
+ }, null, 2), "utf-8");
269
+ consola.info(`Wrote ${pythonMetadataPath}`);
270
+ }
271
+
272
+ // Write runtime metadata.json for the TypeScript functions runtime.
273
+ // The runtime needs entity metadata to resolve ontology types during
274
+ // function discovery. Without this, functions using Client/Osdk.Instance
275
+ // produce diagnostics that block ALL function discovery.
276
+ if (argv.functionsDir) {
277
+ const functionsProjectRoot = path.resolve(argv.functionsDir, "..", "..");
278
+ const runtimeMetadataDir = path.join(functionsProjectRoot, ".dev-server", "var", "conf");
279
+ const runtimeMetadataPath = path.join(runtimeMetadataDir, "metadata.json");
280
+ const ontologyRid = previewMetadata.ontology.rid;
281
+ const objectTypeMetadata = {};
282
+ if (previewMetadata.objectTypes) {
283
+ for (const [apiName, objData] of Object.entries(previewMetadata.objectTypes)) {
284
+ const objType = objData.objectType;
285
+ const propertyTypeMetadata = {};
286
+ if (objType.properties) {
287
+ for (const [propApiName, propDef] of Object.entries(objType.properties)) {
288
+ propertyTypeMetadata[propApiName] = {
289
+ propertyTypeApiName: propApiName,
290
+ type: propDef.dataType
291
+ };
292
+ }
293
+ }
294
+ objectTypeMetadata[apiName] = {
295
+ objectTypeApiName: apiName,
296
+ primaryKeyPropertyTypeId: objType.primaryKey,
297
+ propertyTypeMetadata,
298
+ linkTypeMetadata: {}
299
+ };
300
+ }
301
+ }
302
+ try {
303
+ await fs.mkdir(runtimeMetadataDir, {
304
+ recursive: true
305
+ });
306
+ await fs.writeFile(runtimeMetadataPath, JSON.stringify({
307
+ ontologyRid,
308
+ objectTypeMetadata,
309
+ interfaceTypeMetadata: {},
310
+ magritteSourceMetadata: {}
311
+ }), "utf-8");
312
+ consola.info(`Wrote runtime metadata to ${runtimeMetadataPath}`);
313
+ } catch (e) {
314
+ consola.warn(`Could not write runtime metadata: ${e}`);
315
+ }
316
+ }
156
317
  consola.success("Done!");
157
318
  }
158
319
  main().catch(err => {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-sdk.js","names":["generateClientSdkVersionTwoPointZero","OntologyIrToFullMetadataConverter","consola","fs","path","yargs","hideBin","PreviewOntologyIrConverter","main","argv","process","strict","help","version","usage","options","describe","type","demandOption","coerce","resolve","parse","inputFile","input","packageName","packageVersion","outputDir","access","error","exit","info","fileContent","readFile","irJson","parsed","JSON","ontology","ir","previewMetadata","getPreviewFullMetadataFromIr","functionsDir","pythonFunctionsDir","pythonBinary","effectivePythonRootDir","pythonRootProjectDir","dirname","undefined","queryTypes","getOsdkQueryTypes","nodeModulesPath","functionNames","Object","keys","length","join","metadata","actionTypes","fromEntries","entries","map","key","fullMeta","actionType","fullOutputDir","mkdir","recursive","writeFile","filePath","contents","fullPath","isAbsolute","dirPath","readdir","Map","metadataPath","stringify","success","catch","err","Error","message"],"sources":["generate-sdk.ts"],"sourcesContent":["#!/usr/bin/env node\n/*\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 { generateClientSdkVersionTwoPointZero } from \"@osdk/generator\";\nimport { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { consola } from \"consola\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { PreviewOntologyIrConverter } from \"../PreviewOntologyIrConverter.js\";\n\nasync function main(): Promise<void> {\n const argv = await yargs(hideBin(process.argv))\n .strict()\n .help()\n .version(false) // so that we can use --version argument for the package version\n .usage(\n \"$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>\",\n )\n .options({\n \"input\": {\n describe: \"Path to the OntologyIR JSON file\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"package-name\": {\n describe: \"Name for the generated SDK package\",\n type: \"string\",\n demandOption: true,\n },\n \"version\": {\n describe: \"Version string for the generated SDK\",\n type: \"string\",\n demandOption: true,\n },\n \"output-dir\": {\n describe: \"Directory where the SDK will be generated\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"functions-dir\": {\n describe:\n \"Path to TypeScript functions source directory (enables TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"node-modules-path\": {\n describe:\n \"Path to node_modules containing @foundry packages (for TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-functions-dir\": {\n describe:\n \"Path to Python functions source directory (enables Python function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-root-project-dir\": {\n describe:\n \"Root project directory for Python functions (defaults to parent of python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-binary\": {\n describe:\n \"Path to Python binary (required when using --python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parse();\n\n const inputFile = argv.input;\n const packageName = argv.packageName;\n const packageVersion = argv.version;\n const outputDir = argv.outputDir;\n\n // Validate input file exists\n try {\n await fs.access(inputFile);\n } catch {\n consola.error(`Input file does not exist: ${inputFile}`);\n process.exit(1);\n }\n\n consola.info(`Converting ${inputFile}...`);\n\n const fileContent = await fs.readFile(inputFile, \"utf-8\");\n let irJson: unknown;\n try {\n const parsed = JSON.parse(fileContent);\n // Handle both wrapped (ontology.objectTypes) and unwrapped (objectTypes) formats\n irJson = parsed.ontology ?? parsed;\n } catch {\n consola.error(`Failed to parse JSON from ${inputFile}`);\n process.exit(1);\n }\n\n // Basic structural validation before passing to converter\n const ir = irJson as Record<string, unknown>;\n if (\n !ir\n || typeof ir !== \"object\"\n || !(\"objectTypes\" in ir)\n || !(\"actionTypes\" in ir)\n ) {\n consola.error(\n `Invalid OntologyIR structure in ${inputFile}. Expected objectTypes and actionTypes fields.`,\n );\n process.exit(1);\n }\n\n const previewMetadata = PreviewOntologyIrConverter\n .getPreviewFullMetadataFromIr(\n irJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >[0],\n );\n\n // Function discovery is optional - only run if at least one functions flag is provided\n if (argv.functionsDir || argv.pythonFunctionsDir) {\n if (argv.pythonFunctionsDir && !argv.pythonBinary) {\n consola.error(\n \"--python-binary is required when using --python-functions-dir\",\n );\n process.exit(1);\n }\n\n const effectivePythonRootDir = argv.pythonRootProjectDir\n ?? (argv.pythonFunctionsDir\n ? path.dirname(argv.pythonFunctionsDir)\n : undefined);\n\n const queryTypes = await OntologyIrToFullMetadataConverter\n .getOsdkQueryTypes(\n argv.pythonBinary,\n argv.functionsDir,\n argv.nodeModulesPath,\n argv.pythonFunctionsDir,\n effectivePythonRootDir,\n );\n\n const functionNames = Object.keys(queryTypes);\n if (functionNames.length > 0) {\n previewMetadata.queryTypes = queryTypes;\n consola.info(\n `Discovered ${functionNames.length} function(s): ${\n functionNames.join(\", \")\n }`,\n );\n } else {\n consola.info(\"No functions discovered.\");\n }\n }\n\n // Convert ActionTypeFullMetadata to ActionTypeV2 for generator compatibility\n const metadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n };\n\n const fullOutputDir = path.join(outputDir, packageName);\n await fs.mkdir(fullOutputDir, { recursive: true });\n\n const hostFs = {\n async writeFile(filePath: string, contents: string): Promise<void> {\n const fullPath = path.isAbsolute(filePath)\n ? filePath\n : path.join(fullOutputDir, filePath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, contents, \"utf-8\");\n },\n async mkdir(dirPath: string): Promise<void> {\n const fullPath = path.isAbsolute(dirPath)\n ? dirPath\n : path.join(fullOutputDir, dirPath);\n await fs.mkdir(fullPath, { recursive: true });\n },\n async readdir(dirPath: string): Promise<string[]> {\n return fs.readdir(dirPath);\n },\n };\n\n consola.info(`Generating SDK to ${fullOutputDir}...`);\n\n await generateClientSdkVersionTwoPointZero(\n metadata,\n `osdk-generator/${packageVersion} (from-ir)`,\n hostFs,\n fullOutputDir,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [],\n );\n\n const metadataPath = path.join(fullOutputDir, \"ontology-metadata.json\");\n await fs.writeFile(\n metadataPath,\n JSON.stringify(previewMetadata, null, 2),\n \"utf-8\",\n );\n\n consola.info(`Wrote ${metadataPath}`);\n consola.success(\"Done!\");\n}\n\nmain().catch((err: unknown) => {\n consola.error(err instanceof Error ? err.message : err);\n process.exit(1);\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generate-sdk.js","names":["generateClientSdkVersionTwoPointZero","OntologyIrToFullMetadataConverter","consola","spawnSync","fsSync","fs","os","path","yargs","hideBin","PreviewOntologyIrConverter","PYTHON_SDK_PACKAGE_NAME","generatePythonSdk","previewMetadata","pythonBinary","pythonMetadata","actionTypes","Object","fromEntries","entries","map","key","fullMeta","actionType","globalFunctions","queryTypes","valueTypes","objectTypes","keys","length","info","ontologyApiName","ontology","apiName","siteResult","encoding","status","stdout","trim","warn","stderr","error","sitePackages","tmpDir","mkdtempSync","join","tmpdir","tmpMetadata","writeFileSync","JSON","stringify","packageName","genResult","stdio","rmSync","recursive","force","generatedPackage","destPackage","cpSync","main","argv","process","strict","help","version","usage","options","describe","type","demandOption","coerce","resolve","parse","inputFile","input","packageVersion","outputDir","access","exit","fileContent","readFile","irJson","parsed","ir","getPreviewFullMetadataFromIr","pythonFunctionsDir","functionsDir","effectivePythonRootDir","pythonRootProjectDir","dirname","undefined","getOsdkQueryTypes","nodeModulesPath","functionNames","metadata","fullOutputDir","mkdir","existingEntries","readdir","entry","rm","writeFile","filePath","contents","fullPath","isAbsolute","dirPath","Map","metadataPath","pythonMetadataPath","functionsProjectRoot","runtimeMetadataDir","runtimeMetadataPath","ontologyRid","rid","objectTypeMetadata","objData","objType","objectType","propertyTypeMetadata","properties","propApiName","propDef","propertyTypeApiName","dataType","objectTypeApiName","primaryKeyPropertyTypeId","primaryKey","linkTypeMetadata","interfaceTypeMetadata","magritteSourceMetadata","e","success","catch","err","Error","message"],"sources":["generate-sdk.ts"],"sourcesContent":["#!/usr/bin/env node\n/*\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 { generateClientSdkVersionTwoPointZero } from \"@osdk/generator\";\nimport { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { consola } from \"consola\";\nimport { spawnSync } from \"node:child_process\";\nimport * as fsSync from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { PreviewOntologyIrConverter } from \"../PreviewOntologyIrConverter.js\";\n\nconst PYTHON_SDK_PACKAGE_NAME = \"ontology_sdk\";\n\n/**\n * Generates the Python SDK package into the conda environment's site-packages\n * so that Python function discovery can resolve ontology type imports.\n */\nfunction generatePythonSdk(\n previewMetadata: ReturnType<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >,\n pythonBinary: string,\n): void {\n // Build the Python-compatible metadata: unwrap actionTypes and add globalFunctions\n const pythonMetadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n globalFunctions: { queryTypes: {}, valueTypes: {} },\n };\n\n const objectTypes = Object.keys(previewMetadata.objectTypes ?? {});\n if (objectTypes.length === 0) {\n consola.info(\"No object types found, skipping Python SDK generation.\");\n return;\n }\n\n const ontologyApiName = previewMetadata.ontology?.apiName ?? \"ontology\";\n\n // Discover site-packages from the conda environment\n const siteResult = spawnSync(\n pythonBinary,\n [\"-c\", \"import site; print(site.getsitepackages()[0])\"],\n { encoding: \"utf-8\" },\n );\n if (siteResult.status !== 0 || !siteResult.stdout?.trim()) {\n consola.warn(\n `Could not discover Python site-packages: ${\n siteResult.stderr || siteResult.error\n }`,\n );\n return;\n }\n const sitePackages = siteResult.stdout.trim();\n consola.info(`Python site-packages: ${sitePackages}`);\n\n // Write metadata to a temp file for the generator\n const tmpDir = fsSync.mkdtempSync(path.join(os.tmpdir(), \"python-sdk-\"));\n const tmpMetadata = path.join(tmpDir, \"metadata.json\");\n fsSync.writeFileSync(\n tmpMetadata,\n JSON.stringify(pythonMetadata, null, 2),\n \"utf-8\",\n );\n\n // Run the Python SDK generator into the temp directory.\n // The generator creates <output-dir>/ontology_sdk/ which is a project\n // directory containing ontology_sdk/ (the actual Python package), setup.py, etc.\n consola.info(\"Generating Python SDK...\");\n const packageName = PYTHON_SDK_PACKAGE_NAME;\n const genResult = spawnSync(\n pythonBinary,\n [\n \"-m\",\n \"foundry_sdk_generator\",\n \"generate_package\",\n \"--output-dir\",\n tmpDir,\n \"--package-name\",\n packageName,\n \"--package-version\",\n \"0.0.0\",\n \"--ontology\",\n ontologyApiName,\n \"--object-types\",\n objectTypes.join(\",\"),\n \"--cache-path\",\n tmpMetadata,\n \"--force\",\n ],\n { encoding: \"utf-8\", stdio: \"pipe\" },\n );\n\n if (genResult.status !== 0) {\n consola.warn(\n `Python SDK generation failed (non-fatal): ${\n genResult.stderr || genResult.stdout\n }`,\n );\n fsSync.rmSync(tmpDir, { recursive: true, force: true });\n return;\n }\n\n // The generator creates <tmpDir>/ontology_sdk/ontology_sdk/ (the importable\n // package). Copy just the inner package into site-packages so Python can\n // resolve `import ontology_sdk`.\n const generatedPackage = path.join(tmpDir, packageName, packageName);\n const destPackage = path.join(sitePackages, packageName);\n\n // Remove any previous version\n fsSync.rmSync(destPackage, { recursive: true, force: true });\n fsSync.cpSync(generatedPackage, destPackage, { recursive: true });\n\n // Clean up temp directory\n fsSync.rmSync(tmpDir, { recursive: true, force: true });\n\n consola.info(`Python SDK installed to ${destPackage}`);\n}\n\nasync function main(): Promise<void> {\n const argv = await yargs(hideBin(process.argv))\n .strict()\n .help()\n .version(false) // so that we can use --version argument for the package version\n .usage(\n \"$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>\",\n )\n .options({\n \"input\": {\n describe: \"Path to the OntologyIR JSON file\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"package-name\": {\n describe: \"Name for the generated SDK package\",\n type: \"string\",\n demandOption: true,\n },\n \"version\": {\n describe: \"Version string for the generated SDK\",\n type: \"string\",\n demandOption: true,\n },\n \"output-dir\": {\n describe: \"Directory where the SDK will be generated\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"functions-dir\": {\n describe:\n \"Path to TypeScript functions source directory (enables TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"node-modules-path\": {\n describe:\n \"Path to node_modules containing @foundry packages (for TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-functions-dir\": {\n describe:\n \"Path to Python functions source directory (enables Python function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-root-project-dir\": {\n describe:\n \"Root project directory for Python functions (defaults to parent of python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-binary\": {\n describe:\n \"Path to Python binary (required when using --python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parse();\n\n const inputFile = argv.input;\n const packageName = argv.packageName;\n const packageVersion = argv.version;\n const outputDir = argv.outputDir;\n\n // Validate input file exists\n try {\n await fs.access(inputFile);\n } catch {\n consola.error(`Input file does not exist: ${inputFile}`);\n process.exit(1);\n }\n\n consola.info(`Converting ${inputFile}...`);\n\n const fileContent = await fs.readFile(inputFile, \"utf-8\");\n let irJson: unknown;\n try {\n const parsed = JSON.parse(fileContent);\n // Handle both wrapped (ontology.objectTypes) and unwrapped (objectTypes) formats\n irJson = parsed.ontology ?? parsed;\n } catch {\n consola.error(`Failed to parse JSON from ${inputFile}`);\n process.exit(1);\n }\n\n // Basic structural validation before passing to converter\n const ir = irJson as Record<string, unknown>;\n if (\n !ir\n || typeof ir !== \"object\"\n || !(\"objectTypes\" in ir)\n || !(\"actionTypes\" in ir)\n ) {\n consola.error(\n `Invalid OntologyIR structure in ${inputFile}. Expected objectTypes and actionTypes fields.`,\n );\n process.exit(1);\n }\n\n const previewMetadata = PreviewOntologyIrConverter\n .getPreviewFullMetadataFromIr(\n irJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >[0],\n );\n\n // Generate the Python SDK before function discovery so that Python functions\n // that import ontology types (e.g. `from ontology_sdk.ontology.objects import X`)\n // can be successfully parsed during discovery.\n if (argv.pythonBinary && argv.pythonFunctionsDir) {\n generatePythonSdk(\n previewMetadata,\n argv.pythonBinary,\n );\n }\n\n // Function discovery is optional - only run if at least one functions flag is provided\n if (argv.functionsDir || argv.pythonFunctionsDir) {\n if (argv.pythonFunctionsDir && !argv.pythonBinary) {\n consola.error(\n \"--python-binary is required when using --python-functions-dir\",\n );\n process.exit(1);\n }\n\n const effectivePythonRootDir = argv.pythonRootProjectDir\n ?? (argv.pythonFunctionsDir\n ? path.dirname(argv.pythonFunctionsDir)\n : undefined);\n\n const queryTypes = await OntologyIrToFullMetadataConverter\n .getOsdkQueryTypes(\n argv.pythonBinary,\n argv.functionsDir,\n argv.nodeModulesPath,\n argv.pythonFunctionsDir,\n effectivePythonRootDir,\n previewMetadata,\n );\n\n const functionNames = Object.keys(queryTypes);\n if (functionNames.length > 0) {\n previewMetadata.queryTypes = queryTypes;\n consola.info(\n `Discovered ${functionNames.length} function(s): ${\n functionNames.join(\", \")\n }`,\n );\n } else {\n consola.info(\"No functions discovered.\");\n }\n }\n\n // Convert ActionTypeFullMetadata to ActionTypeV2 for generator compatibility\n const metadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n };\n\n const fullOutputDir = path.join(outputDir, packageName);\n await fs.mkdir(fullOutputDir, { recursive: true });\n\n // Clean the output directory before generation. The generator's verifyOutDir\n // requires an empty directory, but a previous SDK build may exist from\n // function discovery (so TypeScript functions can resolve @ontology/sdk imports).\n const existingEntries = await fs.readdir(fullOutputDir);\n for (const entry of existingEntries) {\n await fs.rm(path.join(fullOutputDir, entry), {\n recursive: true,\n force: true,\n });\n }\n\n const hostFs = {\n async writeFile(filePath: string, contents: string): Promise<void> {\n const fullPath = path.isAbsolute(filePath)\n ? filePath\n : path.join(fullOutputDir, filePath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, contents, \"utf-8\");\n },\n async mkdir(dirPath: string): Promise<void> {\n const fullPath = path.isAbsolute(dirPath)\n ? dirPath\n : path.join(fullOutputDir, dirPath);\n await fs.mkdir(fullPath, { recursive: true });\n },\n async readdir(dirPath: string): Promise<string[]> {\n return fs.readdir(dirPath);\n },\n };\n\n consola.info(`Generating SDK to ${fullOutputDir}...`);\n\n await generateClientSdkVersionTwoPointZero(\n metadata,\n `osdk-generator/${packageVersion} (from-ir)`,\n hostFs,\n fullOutputDir,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [],\n );\n\n const metadataPath = path.join(fullOutputDir, \"ontology-metadata.json\");\n await fs.writeFile(\n metadataPath,\n JSON.stringify(previewMetadata, null, 2),\n \"utf-8\",\n );\n\n consola.info(`Wrote ${metadataPath}`);\n\n // Write Python-compatible metadata that the foundry-sdk-generator expects.\n // This uses the unwrapped actionTypes (ActionTypeV2 instead of\n // ActionTypeFullMetadata) and adds the globalFunctions key.\n if (argv.pythonFunctionsDir) {\n const pythonMetadataPath = path.join(\n fullOutputDir,\n \"python-ontology-metadata.json\",\n );\n await fs.writeFile(\n pythonMetadataPath,\n JSON.stringify(\n { ...metadata, globalFunctions: { queryTypes: {}, valueTypes: {} } },\n null,\n 2,\n ),\n \"utf-8\",\n );\n consola.info(`Wrote ${pythonMetadataPath}`);\n }\n\n // Write runtime metadata.json for the TypeScript functions runtime.\n // The runtime needs entity metadata to resolve ontology types during\n // function discovery. Without this, functions using Client/Osdk.Instance\n // produce diagnostics that block ALL function discovery.\n if (argv.functionsDir) {\n const functionsProjectRoot = path.resolve(argv.functionsDir, \"..\", \"..\");\n const runtimeMetadataDir = path.join(\n functionsProjectRoot,\n \".dev-server\",\n \"var\",\n \"conf\",\n );\n const runtimeMetadataPath = path.join(runtimeMetadataDir, \"metadata.json\");\n\n const ontologyRid = previewMetadata.ontology.rid;\n\n const objectTypeMetadata: Record<string, unknown> = {};\n if (previewMetadata.objectTypes) {\n for (\n const [apiName, objData] of Object.entries(previewMetadata.objectTypes)\n ) {\n const objType = objData.objectType;\n const propertyTypeMetadata: Record<\n string,\n { propertyTypeApiName: string; type?: unknown }\n > = {};\n if (objType.properties) {\n for (\n const [propApiName, propDef] of Object.entries(objType.properties)\n ) {\n propertyTypeMetadata[propApiName] = {\n propertyTypeApiName: propApiName,\n type: propDef.dataType,\n };\n }\n }\n objectTypeMetadata[apiName] = {\n objectTypeApiName: apiName,\n primaryKeyPropertyTypeId: objType.primaryKey,\n propertyTypeMetadata,\n linkTypeMetadata: {},\n };\n }\n }\n\n const runtimeMetadata = {\n ontologyRid,\n objectTypeMetadata,\n interfaceTypeMetadata: {},\n magritteSourceMetadata: {},\n };\n\n try {\n await fs.mkdir(runtimeMetadataDir, { recursive: true });\n await fs.writeFile(\n runtimeMetadataPath,\n JSON.stringify(runtimeMetadata),\n \"utf-8\",\n );\n consola.info(`Wrote runtime metadata to ${runtimeMetadataPath}`);\n } catch (e) {\n consola.warn(`Could not write runtime metadata: ${e}`);\n }\n }\n\n consola.success(\"Done!\");\n}\n\nmain().catch((err: unknown) => {\n consola.error(err instanceof Error ? err.message : err);\n process.exit(1);\n});\n"],"mappings":"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","ignoreList":[]}
@@ -86,10 +86,14 @@ function convertSingleRule(irRule, action, objectLookup, interfaceLookup) {
86
86
  case "modifyObjectRule": {
87
87
  const r = irRule.modifyObjectRule;
88
88
  getObjectReferenceType(action, r.objectToModify);
89
+ const modifyPropertyArguments = {};
90
+ for (const [k, v] of Object.entries(r.propertyValues)) {
91
+ modifyPropertyArguments[k] = v;
92
+ }
89
93
  const result = {
90
94
  type: "modifyObject",
91
95
  objectToModify: r.objectToModify,
92
- propertyArguments: {},
96
+ propertyArguments: modifyPropertyArguments,
93
97
  structPropertyArguments: {}
94
98
  };
95
99
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ActionLogicRuleConverter.ts","../../src/ridUtils.ts","../../src/PreviewOntologyIrConverter.ts"],"names":["createHash","OntologyIrToFullMetadataConverter"],"mappings":"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","file":"index.cjs","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\nfunction buildObjectTypeLookup(ir) {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map();\n const byHyphenated = new Map();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return {\n byId,\n byHyphenated\n };\n}\nfunction buildInterfaceTypeLookup(ir) {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map();\n const byHyphenated = new Map();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return {\n byId,\n byHyphenated\n };\n}\nfunction resolveApiName(id, lookup) {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\nfunction getObjectReferenceType(action, paramKey) {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(`Parameter '${paramKey}' must be an objectReference type`);\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(rules, action, ir) {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return rules.map(irRule => convertSingleRule(irRule, action, objectLookup, interfaceLookup));\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(irRule, action, ir) {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\nfunction convertSingleRule(irRule, action, objectLookup, interfaceLookup) {\n switch (irRule.type) {\n case \"addObjectRule\":\n {\n const r = irRule.addObjectRule;\n const propertyArguments = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v;\n }\n const result = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {}\n };\n return result;\n }\n case \"addOrModifyObjectRuleV2\":\n {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"modifyObjectRule\":\n {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const result = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"deleteObjectRule\":\n {\n const r = irRule.deleteObjectRule;\n const result = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete\n };\n return result;\n }\n case \"addInterfaceRule\":\n {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(r.interfaceApiName, interfaceLookup);\n const result = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"modifyInterfaceRule\":\n {\n const r = irRule.modifyInterfaceRule;\n const result = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n default:\n throw new Error(`Unsupported logic rule type: ${irRule.type}`);\n }\n}","/*\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 { createHash } from \"node:crypto\";\n\n/**\n * Generate a deterministic UUID v5-like identifier from a string.\n * Uses SHA-256 hash truncated to UUID format with version (5) and\n * variant (RFC 4122) bits set for spec compliance.\n */\nexport function toUuid(str) {\n const hashBytes = createHash(\"sha256\").update(str).digest();\n // Set version to 5 (name-based SHA) in byte 6: clear top nibble, set to 0101\n hashBytes[6] = hashBytes[6] & 0x0f | 0x50;\n // Set variant to RFC 4122 in byte 8: clear top 2 bits, set to 10\n hashBytes[8] = hashBytes[8] & 0x3f | 0x80;\n const hex = hashBytes.subarray(0, 16).toString(\"hex\");\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;\n}","/*\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 { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { convertIrLogicRulesToActionLogicRules } from \"./ActionLogicRuleConverter.js\";\nimport { toUuid } from \"./ridUtils.js\";\n\n/**\n * Extended return type that uses ActionTypeFullMetadata instead of ActionTypeV2.\n */\n\n/**\n * Preview converter that extends the base OntologyIrToFullMetadataConverter\n * to return ActionTypeFullMetadata with fullLogicRules instead of ActionTypeV2.\n */\nexport class PreviewOntologyIrConverter {\n /**\n * Main entry point - converts IR to full metadata with enhanced action types.\n * Returns ActionTypeFullMetadata which includes fullLogicRules.\n */\n static getPreviewFullMetadataFromIr(ir) {\n const baseMetadata = OntologyIrToFullMetadataConverter.getFullMetadataFromIr(ir);\n const actionTypes = this.convertActionTypesWithFullLogicRules(Object.values(ir.actionTypes), ir);\n\n // Post-process object types to use UUID-based RIDs\n const objectTypes = this.convertObjectTypesWithUuidRids(baseMetadata.objectTypes);\n return {\n ...baseMetadata,\n objectTypes,\n actionTypes,\n ontology: {\n apiName: \"ontology\",\n rid: \"ri.ontology.main.ontology.0\",\n displayName: \"ontology\",\n description: \"local ontology\"\n }\n };\n }\n\n /**\n * Post-process object types to use UUID-based RIDs for properties.\n */\n static convertObjectTypesWithUuidRids(objectTypes) {\n const result = {};\n for (const [apiName, fullMetadata] of Object.entries(objectTypes)) {\n const objectType = fullMetadata.objectType;\n const properties = {};\n for (const [propKey, prop] of Object.entries(objectType.properties)) {\n properties[propKey] = {\n ...prop,\n rid: `ri.ontology.main.property.${toUuid(apiName + \".\" + propKey)}`\n };\n }\n result[apiName] = {\n ...fullMetadata,\n objectType: {\n ...objectType,\n rid: `ri.ontology.main.object-type.${toUuid(apiName)}`,\n properties\n }\n };\n }\n return result;\n }\n\n /**\n * Convert IR action types to ActionTypeFullMetadata format.\n * Reuses base converter for action type conversion, then process\n * RIDs to use UUID-based format and adds fullLogicRules.\n */\n static convertActionTypesWithFullLogicRules(actions, ir) {\n const baseActionTypes = OntologyIrToFullMetadataConverter.getOsdkActionTypes(actions);\n\n // Build a lookup from apiName to the original IR action for logic rules\n const actionsByApiName = new Map(actions.map(a => [a.actionType.metadata.apiName, a]));\n const result = {};\n for (const [apiName, baseActionType] of Object.entries(baseActionTypes)) {\n const action = actionsByApiName.get(apiName);\n result[apiName] = {\n actionType: {\n ...baseActionType,\n rid: `ri.ontology.main.action-type.${toUuid(apiName)}`\n },\n fullLogicRules: convertIrLogicRulesToActionLogicRules(action.actionType.actionTypeLogic.logic.rules, action, ir)\n };\n }\n return result;\n }\n}"]}
1
+ {"version":3,"sources":["../../src/ActionLogicRuleConverter.ts","../../src/ridUtils.ts","../../src/PreviewOntologyIrConverter.ts"],"names":["createHash","OntologyIrToFullMetadataConverter"],"mappings":"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","file":"index.cjs","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\nfunction buildObjectTypeLookup(ir) {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map();\n const byHyphenated = new Map();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return {\n byId,\n byHyphenated\n };\n}\nfunction buildInterfaceTypeLookup(ir) {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map();\n const byHyphenated = new Map();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return {\n byId,\n byHyphenated\n };\n}\nfunction resolveApiName(id, lookup) {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\nfunction getObjectReferenceType(action, paramKey) {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(`Parameter '${paramKey}' must be an objectReference type`);\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(rules, action, ir) {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return rules.map(irRule => convertSingleRule(irRule, action, objectLookup, interfaceLookup));\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(irRule, action, ir) {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\nfunction convertSingleRule(irRule, action, objectLookup, interfaceLookup) {\n switch (irRule.type) {\n case \"addObjectRule\":\n {\n const r = irRule.addObjectRule;\n const propertyArguments = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v;\n }\n const result = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {}\n };\n return result;\n }\n case \"addOrModifyObjectRuleV2\":\n {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"modifyObjectRule\":\n {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const modifyPropertyArguments = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n modifyPropertyArguments[k] = v;\n }\n const result = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: modifyPropertyArguments,\n structPropertyArguments: {}\n };\n return result;\n }\n case \"deleteObjectRule\":\n {\n const r = irRule.deleteObjectRule;\n const result = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete\n };\n return result;\n }\n case \"addInterfaceRule\":\n {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(r.interfaceApiName, interfaceLookup);\n const result = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"modifyInterfaceRule\":\n {\n const r = irRule.modifyInterfaceRule;\n const result = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {}\n };\n return result;\n }\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n default:\n throw new Error(`Unsupported logic rule type: ${irRule.type}`);\n }\n}","/*\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 { createHash } from \"node:crypto\";\n\n/**\n * Generate a deterministic UUID v5-like identifier from a string.\n * Uses SHA-256 hash truncated to UUID format with version (5) and\n * variant (RFC 4122) bits set for spec compliance.\n */\nexport function toUuid(str) {\n const hashBytes = createHash(\"sha256\").update(str).digest();\n // Set version to 5 (name-based SHA) in byte 6: clear top nibble, set to 0101\n hashBytes[6] = hashBytes[6] & 0x0f | 0x50;\n // Set variant to RFC 4122 in byte 8: clear top 2 bits, set to 10\n hashBytes[8] = hashBytes[8] & 0x3f | 0x80;\n const hex = hashBytes.subarray(0, 16).toString(\"hex\");\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;\n}","/*\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 { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { convertIrLogicRulesToActionLogicRules } from \"./ActionLogicRuleConverter.js\";\nimport { toUuid } from \"./ridUtils.js\";\n\n/**\n * Extended return type that uses ActionTypeFullMetadata instead of ActionTypeV2.\n */\n\n/**\n * Preview converter that extends the base OntologyIrToFullMetadataConverter\n * to return ActionTypeFullMetadata with fullLogicRules instead of ActionTypeV2.\n */\nexport class PreviewOntologyIrConverter {\n /**\n * Main entry point - converts IR to full metadata with enhanced action types.\n * Returns ActionTypeFullMetadata which includes fullLogicRules.\n */\n static getPreviewFullMetadataFromIr(ir) {\n const baseMetadata = OntologyIrToFullMetadataConverter.getFullMetadataFromIr(ir);\n const actionTypes = this.convertActionTypesWithFullLogicRules(Object.values(ir.actionTypes), ir);\n\n // Post-process object types to use UUID-based RIDs\n const objectTypes = this.convertObjectTypesWithUuidRids(baseMetadata.objectTypes);\n return {\n ...baseMetadata,\n objectTypes,\n actionTypes,\n ontology: {\n apiName: \"ontology\",\n rid: \"ri.ontology.main.ontology.0\",\n displayName: \"ontology\",\n description: \"local ontology\"\n }\n };\n }\n\n /**\n * Post-process object types to use UUID-based RIDs for properties.\n */\n static convertObjectTypesWithUuidRids(objectTypes) {\n const result = {};\n for (const [apiName, fullMetadata] of Object.entries(objectTypes)) {\n const objectType = fullMetadata.objectType;\n const properties = {};\n for (const [propKey, prop] of Object.entries(objectType.properties)) {\n properties[propKey] = {\n ...prop,\n rid: `ri.ontology.main.property.${toUuid(apiName + \".\" + propKey)}`\n };\n }\n result[apiName] = {\n ...fullMetadata,\n objectType: {\n ...objectType,\n rid: `ri.ontology.main.object-type.${toUuid(apiName)}`,\n properties\n }\n };\n }\n return result;\n }\n\n /**\n * Convert IR action types to ActionTypeFullMetadata format.\n * Reuses base converter for action type conversion, then process\n * RIDs to use UUID-based format and adds fullLogicRules.\n */\n static convertActionTypesWithFullLogicRules(actions, ir) {\n const baseActionTypes = OntologyIrToFullMetadataConverter.getOsdkActionTypes(actions);\n\n // Build a lookup from apiName to the original IR action for logic rules\n const actionsByApiName = new Map(actions.map(a => [a.actionType.metadata.apiName, a]));\n const result = {};\n for (const [apiName, baseActionType] of Object.entries(baseActionTypes)) {\n const action = actionsByApiName.get(apiName);\n result[apiName] = {\n actionType: {\n ...baseActionType,\n rid: `ri.ontology.main.action-type.${toUuid(apiName)}`\n },\n fullLogicRules: convertIrLogicRulesToActionLogicRules(action.actionType.actionTypeLogic.logic.rules, action, ir)\n };\n }\n return result;\n }\n}"]}
@@ -116,10 +116,14 @@ function convertSingleRule(irRule, action, objectLookup, interfaceLookup) {
116
116
  const r = irRule.modifyObjectRule;
117
117
  // Validate that the parameter is an objectReference (throws if not)
118
118
  getObjectReferenceType(action, r.objectToModify);
119
+ const modifyPropertyArguments = {};
120
+ for (const [k, v] of Object.entries(r.propertyValues)) {
121
+ modifyPropertyArguments[k] = v;
122
+ }
119
123
  const result = {
120
124
  type: "modifyObject",
121
125
  objectToModify: r.objectToModify,
122
- propertyArguments: {},
126
+ propertyArguments: modifyPropertyArguments,
123
127
  structPropertyArguments: {}
124
128
  };
125
129
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionLogicRuleConverter.js","names":["buildObjectTypeLookup","ir","objectTypes","undefined","byId","Map","byHyphenated","key","value","Object","entries","apiName","objectType","set","replace","buildInterfaceTypeLookup","interfaceTypes","interfaceType","resolveApiName","id","lookup","get","getObjectReferenceType","action","paramKey","param","actionType","metadata","parameters","type","Error","objectReference","convertIrLogicRulesToActionLogicRules","rules","objectLookup","interfaceLookup","map","irRule","convertSingleRule","convertIrLogicRuleToActionLogicRule","r","addObjectRule","propertyArguments","k","v","propertyValues","result","objectTypeApiName","objectTypeId","structPropertyArguments","addOrModifyObjectRuleV2","objRef","objectToModify","modifyObjectRule","deleteObjectRule","objectToDelete","addInterfaceRule","interfaceApiName","interfaceTypeApiName","sharedPropertyArguments","modifyInterfaceRule","interfaceObjectToModify","interfaceObjectToModifyParameter"],"sources":["ActionLogicRuleConverter.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 OntologyIrLogicRule,\n OntologyIrOntologyBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\ninterface ApiNameLookup {\n byId: Map<string, string>;\n byHyphenated: Map<string, string>;\n}\n\nfunction buildObjectTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction buildInterfaceTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction resolveApiName(id: string, lookup: ApiNameLookup | undefined): string {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\n\nfunction getObjectReferenceType(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): { objectTypeId: string } {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(\n `Parameter '${paramKey}' must be an objectReference type`,\n );\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(\n rules: OntologyIrLogicRule[],\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule[] {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n\n return rules.map(irRule =>\n convertSingleRule(irRule, action, objectLookup, interfaceLookup)\n );\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\n\nfunction convertSingleRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n objectLookup: ApiNameLookup | undefined,\n interfaceLookup: ApiNameLookup | undefined,\n): Ontologies.ActionLogicRule {\n switch (irRule.type) {\n case \"addObjectRule\": {\n const r = irRule.addObjectRule;\n const propertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.CreateObjectLogicRule & {\n type: \"createObject\";\n } = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addOrModifyObjectRuleV2\": {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result: Ontologies.CreateOrModifyObjectLogicRule & {\n type: \"createOrModifyObject\";\n } = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyObjectRule\": {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const result: Ontologies.ModifyObjectLogicRule & {\n type: \"modifyObject\";\n } = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"deleteObjectRule\": {\n const r = irRule.deleteObjectRule;\n const result: Ontologies.DeleteObjectLogicRule & {\n type: \"deleteObject\";\n } = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete,\n };\n return result;\n }\n\n case \"addInterfaceRule\": {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(\n r.interfaceApiName,\n interfaceLookup,\n );\n const result: Ontologies.CreateInterfaceLogicRule & {\n type: \"createInterface\";\n } = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyInterfaceRule\": {\n const r = irRule.modifyInterfaceRule;\n const result: Ontologies.ModifyInterfaceLogicRule & {\n type: \"modifyInterface\";\n } = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n\n default:\n throw new Error(\n `Unsupported logic rule type: ${(irRule as { type: string }).type}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ActionLogicRuleConverter.js","names":["buildObjectTypeLookup","ir","objectTypes","undefined","byId","Map","byHyphenated","key","value","Object","entries","apiName","objectType","set","replace","buildInterfaceTypeLookup","interfaceTypes","interfaceType","resolveApiName","id","lookup","get","getObjectReferenceType","action","paramKey","param","actionType","metadata","parameters","type","Error","objectReference","convertIrLogicRulesToActionLogicRules","rules","objectLookup","interfaceLookup","map","irRule","convertSingleRule","convertIrLogicRuleToActionLogicRule","r","addObjectRule","propertyArguments","k","v","propertyValues","result","objectTypeApiName","objectTypeId","structPropertyArguments","addOrModifyObjectRuleV2","objRef","objectToModify","modifyObjectRule","modifyPropertyArguments","deleteObjectRule","objectToDelete","addInterfaceRule","interfaceApiName","interfaceTypeApiName","sharedPropertyArguments","modifyInterfaceRule","interfaceObjectToModify","interfaceObjectToModifyParameter"],"sources":["ActionLogicRuleConverter.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 OntologyIrLogicRule,\n OntologyIrOntologyBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport type * as Ontologies from \"@osdk/foundry.ontologies\";\n\ninterface ApiNameLookup {\n byId: Map<string, string>;\n byHyphenated: Map<string, string>;\n}\n\nfunction buildObjectTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.objectTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.objectTypes)) {\n const apiName = value.objectType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction buildInterfaceTypeLookup(\n ir: OntologyIrOntologyBlockDataV2 | undefined,\n): ApiNameLookup | undefined {\n if (!ir?.interfaceTypes) {\n return undefined;\n }\n const byId = new Map<string, string>();\n const byHyphenated = new Map<string, string>();\n for (const [key, value] of Object.entries(ir.interfaceTypes)) {\n const apiName = value.interfaceType.apiName;\n byId.set(key, apiName);\n byHyphenated.set(apiName.replace(/\\./g, \"-\"), apiName);\n }\n return { byId, byHyphenated };\n}\n\nfunction resolveApiName(id: string, lookup: ApiNameLookup | undefined): string {\n if (!lookup) {\n return id;\n }\n return lookup.byId.get(id) ?? lookup.byHyphenated.get(id) ?? id;\n}\n\nfunction getObjectReferenceType(\n action: OntologyIrActionTypeBlockDataV2,\n paramKey: string,\n): { objectTypeId: string } {\n const param = action.actionType.metadata.parameters[paramKey];\n if (!param || param.type.type !== \"objectReference\") {\n throw new Error(\n `Parameter '${paramKey}' must be an objectReference type`,\n );\n }\n return param.type.objectReference;\n}\n\n/**\n * Build lookups once and convert all logic rules for an action.\n * Avoids rebuilding lookup Maps on every rule.\n */\nexport function convertIrLogicRulesToActionLogicRules(\n rules: OntologyIrLogicRule[],\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule[] {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n\n return rules.map(irRule =>\n convertSingleRule(irRule, action, objectLookup, interfaceLookup)\n );\n}\n\n/**\n * Convert a single OntologyIrLogicRule to ActionLogicRule.\n * Kept as a public API for callers that only need a single rule conversion.\n */\nexport function convertIrLogicRuleToActionLogicRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n ir?: OntologyIrOntologyBlockDataV2,\n): Ontologies.ActionLogicRule {\n const objectLookup = buildObjectTypeLookup(ir);\n const interfaceLookup = buildInterfaceTypeLookup(ir);\n return convertSingleRule(irRule, action, objectLookup, interfaceLookup);\n}\n\nfunction convertSingleRule(\n irRule: OntologyIrLogicRule,\n action: OntologyIrActionTypeBlockDataV2,\n objectLookup: ApiNameLookup | undefined,\n interfaceLookup: ApiNameLookup | undefined,\n): Ontologies.ActionLogicRule {\n switch (irRule.type) {\n case \"addObjectRule\": {\n const r = irRule.addObjectRule;\n const propertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n propertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.CreateObjectLogicRule & {\n type: \"createObject\";\n } = {\n type: \"createObject\",\n objectTypeApiName: resolveApiName(r.objectTypeId, objectLookup),\n propertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addOrModifyObjectRuleV2\": {\n const r = irRule.addOrModifyObjectRuleV2;\n const objRef = getObjectReferenceType(action, r.objectToModify);\n // propertyArguments left empty: the downstream generator resolves\n // property mappings from the action parameter configuration rather\n // than from the logic rule itself for createOrModify rules.\n const result: Ontologies.CreateOrModifyObjectLogicRule & {\n type: \"createOrModifyObject\";\n } = {\n type: \"createOrModifyObject\",\n objectTypeApiName: resolveApiName(objRef.objectTypeId, objectLookup),\n propertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyObjectRule\": {\n const r = irRule.modifyObjectRule;\n // Validate that the parameter is an objectReference (throws if not)\n getObjectReferenceType(action, r.objectToModify);\n const modifyPropertyArguments: Record<\n Ontologies.PropertyApiName,\n Ontologies.LogicRuleArgument\n > = {};\n for (const [k, v] of Object.entries(r.propertyValues)) {\n modifyPropertyArguments[k] = v as Ontologies.LogicRuleArgument;\n }\n const result: Ontologies.ModifyObjectLogicRule & {\n type: \"modifyObject\";\n } = {\n type: \"modifyObject\",\n objectToModify: r.objectToModify,\n propertyArguments: modifyPropertyArguments,\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"deleteObjectRule\": {\n const r = irRule.deleteObjectRule;\n const result: Ontologies.DeleteObjectLogicRule & {\n type: \"deleteObject\";\n } = {\n type: \"deleteObject\",\n objectToDelete: r.objectToDelete,\n };\n return result;\n }\n\n case \"addInterfaceRule\": {\n const r = irRule.addInterfaceRule;\n const interfaceApiName = resolveApiName(\n r.interfaceApiName,\n interfaceLookup,\n );\n const result: Ontologies.CreateInterfaceLogicRule & {\n type: \"createInterface\";\n } = {\n type: \"createInterface\",\n interfaceTypeApiName: interfaceApiName,\n objectType: interfaceApiName,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"modifyInterfaceRule\": {\n const r = irRule.modifyInterfaceRule;\n const result: Ontologies.ModifyInterfaceLogicRule & {\n type: \"modifyInterface\";\n } = {\n type: \"modifyInterface\",\n interfaceObjectToModify: r.interfaceObjectToModifyParameter,\n sharedPropertyArguments: {},\n structPropertyArguments: {},\n };\n return result;\n }\n\n case \"addLinkRule\":\n throw new Error(\"addLinkRule is not supported for ActionLogicRule\");\n\n case \"deleteLinkRule\":\n throw new Error(\"deleteLinkRule is not supported for ActionLogicRule\");\n\n default:\n throw new Error(\n `Unsupported logic rule type: ${(irRule as { type: string }).type}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -17,11 +17,93 @@
17
17
  import { generateClientSdkVersionTwoPointZero } from "@osdk/generator";
18
18
  import { OntologyIrToFullMetadataConverter } from "@osdk/generator-converters.ontologyir";
19
19
  import { consola } from "consola";
20
+ import { spawnSync } from "node:child_process";
21
+ import * as fsSync from "node:fs";
20
22
  import * as fs from "node:fs/promises";
23
+ import * as os from "node:os";
21
24
  import * as path from "node:path";
22
25
  import yargs from "yargs";
23
26
  import { hideBin } from "yargs/helpers";
24
27
  import { PreviewOntologyIrConverter } from "../PreviewOntologyIrConverter.js";
28
+ const PYTHON_SDK_PACKAGE_NAME = "ontology_sdk";
29
+
30
+ /**
31
+ * Generates the Python SDK package into the conda environment's site-packages
32
+ * so that Python function discovery can resolve ontology type imports.
33
+ */
34
+ function generatePythonSdk(previewMetadata, pythonBinary) {
35
+ // Build the Python-compatible metadata: unwrap actionTypes and add globalFunctions
36
+ const pythonMetadata = {
37
+ ...previewMetadata,
38
+ actionTypes: Object.fromEntries(Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [key, fullMeta.actionType])),
39
+ globalFunctions: {
40
+ queryTypes: {},
41
+ valueTypes: {}
42
+ }
43
+ };
44
+ const objectTypes = Object.keys(previewMetadata.objectTypes ?? {});
45
+ if (objectTypes.length === 0) {
46
+ consola.info("No object types found, skipping Python SDK generation.");
47
+ return;
48
+ }
49
+ const ontologyApiName = previewMetadata.ontology?.apiName ?? "ontology";
50
+
51
+ // Discover site-packages from the conda environment
52
+ const siteResult = spawnSync(pythonBinary, ["-c", "import site; print(site.getsitepackages()[0])"], {
53
+ encoding: "utf-8"
54
+ });
55
+ if (siteResult.status !== 0 || !siteResult.stdout?.trim()) {
56
+ consola.warn(`Could not discover Python site-packages: ${siteResult.stderr || siteResult.error}`);
57
+ return;
58
+ }
59
+ const sitePackages = siteResult.stdout.trim();
60
+ consola.info(`Python site-packages: ${sitePackages}`);
61
+
62
+ // Write metadata to a temp file for the generator
63
+ const tmpDir = fsSync.mkdtempSync(path.join(os.tmpdir(), "python-sdk-"));
64
+ const tmpMetadata = path.join(tmpDir, "metadata.json");
65
+ fsSync.writeFileSync(tmpMetadata, JSON.stringify(pythonMetadata, null, 2), "utf-8");
66
+
67
+ // Run the Python SDK generator into the temp directory.
68
+ // The generator creates <output-dir>/ontology_sdk/ which is a project
69
+ // directory containing ontology_sdk/ (the actual Python package), setup.py, etc.
70
+ consola.info("Generating Python SDK...");
71
+ const packageName = PYTHON_SDK_PACKAGE_NAME;
72
+ const genResult = spawnSync(pythonBinary, ["-m", "foundry_sdk_generator", "generate_package", "--output-dir", tmpDir, "--package-name", packageName, "--package-version", "0.0.0", "--ontology", ontologyApiName, "--object-types", objectTypes.join(","), "--cache-path", tmpMetadata, "--force"], {
73
+ encoding: "utf-8",
74
+ stdio: "pipe"
75
+ });
76
+ if (genResult.status !== 0) {
77
+ consola.warn(`Python SDK generation failed (non-fatal): ${genResult.stderr || genResult.stdout}`);
78
+ fsSync.rmSync(tmpDir, {
79
+ recursive: true,
80
+ force: true
81
+ });
82
+ return;
83
+ }
84
+
85
+ // The generator creates <tmpDir>/ontology_sdk/ontology_sdk/ (the importable
86
+ // package). Copy just the inner package into site-packages so Python can
87
+ // resolve `import ontology_sdk`.
88
+ const generatedPackage = path.join(tmpDir, packageName, packageName);
89
+ const destPackage = path.join(sitePackages, packageName);
90
+
91
+ // Remove any previous version
92
+ fsSync.rmSync(destPackage, {
93
+ recursive: true,
94
+ force: true
95
+ });
96
+ fsSync.cpSync(generatedPackage, destPackage, {
97
+ recursive: true
98
+ });
99
+
100
+ // Clean up temp directory
101
+ fsSync.rmSync(tmpDir, {
102
+ recursive: true,
103
+ force: true
104
+ });
105
+ consola.info(`Python SDK installed to ${destPackage}`);
106
+ }
25
107
  async function main() {
26
108
  const argv = await yargs(hideBin(process.argv)).strict().help().version(false) // so that we can use --version argument for the package version
27
109
  .usage("$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>").options({
@@ -105,6 +187,13 @@ async function main() {
105
187
  }
106
188
  const previewMetadata = PreviewOntologyIrConverter.getPreviewFullMetadataFromIr(irJson);
107
189
 
190
+ // Generate the Python SDK before function discovery so that Python functions
191
+ // that import ontology types (e.g. `from ontology_sdk.ontology.objects import X`)
192
+ // can be successfully parsed during discovery.
193
+ if (argv.pythonBinary && argv.pythonFunctionsDir) {
194
+ generatePythonSdk(previewMetadata, argv.pythonBinary);
195
+ }
196
+
108
197
  // Function discovery is optional - only run if at least one functions flag is provided
109
198
  if (argv.functionsDir || argv.pythonFunctionsDir) {
110
199
  if (argv.pythonFunctionsDir && !argv.pythonBinary) {
@@ -112,7 +201,7 @@ async function main() {
112
201
  process.exit(1);
113
202
  }
114
203
  const effectivePythonRootDir = argv.pythonRootProjectDir ?? (argv.pythonFunctionsDir ? path.dirname(argv.pythonFunctionsDir) : undefined);
115
- const queryTypes = await OntologyIrToFullMetadataConverter.getOsdkQueryTypes(argv.pythonBinary, argv.functionsDir, argv.nodeModulesPath, argv.pythonFunctionsDir, effectivePythonRootDir);
204
+ const queryTypes = await OntologyIrToFullMetadataConverter.getOsdkQueryTypes(argv.pythonBinary, argv.functionsDir, argv.nodeModulesPath, argv.pythonFunctionsDir, effectivePythonRootDir, previewMetadata);
116
205
  const functionNames = Object.keys(queryTypes);
117
206
  if (functionNames.length > 0) {
118
207
  previewMetadata.queryTypes = queryTypes;
@@ -131,6 +220,17 @@ async function main() {
131
220
  await fs.mkdir(fullOutputDir, {
132
221
  recursive: true
133
222
  });
223
+
224
+ // Clean the output directory before generation. The generator's verifyOutDir
225
+ // requires an empty directory, but a previous SDK build may exist from
226
+ // function discovery (so TypeScript functions can resolve @ontology/sdk imports).
227
+ const existingEntries = await fs.readdir(fullOutputDir);
228
+ for (const entry of existingEntries) {
229
+ await fs.rm(path.join(fullOutputDir, entry), {
230
+ recursive: true,
231
+ force: true
232
+ });
233
+ }
134
234
  consola.info(`Generating SDK to ${fullOutputDir}...`);
135
235
  await generateClientSdkVersionTwoPointZero(metadata, `osdk-generator/${packageVersion} (from-ir)`, {
136
236
  async writeFile(filePath, contents) {
@@ -153,6 +253,67 @@ async function main() {
153
253
  const metadataPath = path.join(fullOutputDir, "ontology-metadata.json");
154
254
  await fs.writeFile(metadataPath, JSON.stringify(previewMetadata, null, 2), "utf-8");
155
255
  consola.info(`Wrote ${metadataPath}`);
256
+
257
+ // Write Python-compatible metadata that the foundry-sdk-generator expects.
258
+ // This uses the unwrapped actionTypes (ActionTypeV2 instead of
259
+ // ActionTypeFullMetadata) and adds the globalFunctions key.
260
+ if (argv.pythonFunctionsDir) {
261
+ const pythonMetadataPath = path.join(fullOutputDir, "python-ontology-metadata.json");
262
+ await fs.writeFile(pythonMetadataPath, JSON.stringify({
263
+ ...metadata,
264
+ globalFunctions: {
265
+ queryTypes: {},
266
+ valueTypes: {}
267
+ }
268
+ }, null, 2), "utf-8");
269
+ consola.info(`Wrote ${pythonMetadataPath}`);
270
+ }
271
+
272
+ // Write runtime metadata.json for the TypeScript functions runtime.
273
+ // The runtime needs entity metadata to resolve ontology types during
274
+ // function discovery. Without this, functions using Client/Osdk.Instance
275
+ // produce diagnostics that block ALL function discovery.
276
+ if (argv.functionsDir) {
277
+ const functionsProjectRoot = path.resolve(argv.functionsDir, "..", "..");
278
+ const runtimeMetadataDir = path.join(functionsProjectRoot, ".dev-server", "var", "conf");
279
+ const runtimeMetadataPath = path.join(runtimeMetadataDir, "metadata.json");
280
+ const ontologyRid = previewMetadata.ontology.rid;
281
+ const objectTypeMetadata = {};
282
+ if (previewMetadata.objectTypes) {
283
+ for (const [apiName, objData] of Object.entries(previewMetadata.objectTypes)) {
284
+ const objType = objData.objectType;
285
+ const propertyTypeMetadata = {};
286
+ if (objType.properties) {
287
+ for (const [propApiName, propDef] of Object.entries(objType.properties)) {
288
+ propertyTypeMetadata[propApiName] = {
289
+ propertyTypeApiName: propApiName,
290
+ type: propDef.dataType
291
+ };
292
+ }
293
+ }
294
+ objectTypeMetadata[apiName] = {
295
+ objectTypeApiName: apiName,
296
+ primaryKeyPropertyTypeId: objType.primaryKey,
297
+ propertyTypeMetadata,
298
+ linkTypeMetadata: {}
299
+ };
300
+ }
301
+ }
302
+ try {
303
+ await fs.mkdir(runtimeMetadataDir, {
304
+ recursive: true
305
+ });
306
+ await fs.writeFile(runtimeMetadataPath, JSON.stringify({
307
+ ontologyRid,
308
+ objectTypeMetadata,
309
+ interfaceTypeMetadata: {},
310
+ magritteSourceMetadata: {}
311
+ }), "utf-8");
312
+ consola.info(`Wrote runtime metadata to ${runtimeMetadataPath}`);
313
+ } catch (e) {
314
+ consola.warn(`Could not write runtime metadata: ${e}`);
315
+ }
316
+ }
156
317
  consola.success("Done!");
157
318
  }
158
319
  main().catch(err => {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-sdk.js","names":["generateClientSdkVersionTwoPointZero","OntologyIrToFullMetadataConverter","consola","fs","path","yargs","hideBin","PreviewOntologyIrConverter","main","argv","process","strict","help","version","usage","options","describe","type","demandOption","coerce","resolve","parse","inputFile","input","packageName","packageVersion","outputDir","access","error","exit","info","fileContent","readFile","irJson","parsed","JSON","ontology","ir","previewMetadata","getPreviewFullMetadataFromIr","functionsDir","pythonFunctionsDir","pythonBinary","effectivePythonRootDir","pythonRootProjectDir","dirname","undefined","queryTypes","getOsdkQueryTypes","nodeModulesPath","functionNames","Object","keys","length","join","metadata","actionTypes","fromEntries","entries","map","key","fullMeta","actionType","fullOutputDir","mkdir","recursive","writeFile","filePath","contents","fullPath","isAbsolute","dirPath","readdir","Map","metadataPath","stringify","success","catch","err","Error","message"],"sources":["generate-sdk.ts"],"sourcesContent":["#!/usr/bin/env node\n/*\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 { generateClientSdkVersionTwoPointZero } from \"@osdk/generator\";\nimport { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { consola } from \"consola\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { PreviewOntologyIrConverter } from \"../PreviewOntologyIrConverter.js\";\n\nasync function main(): Promise<void> {\n const argv = await yargs(hideBin(process.argv))\n .strict()\n .help()\n .version(false) // so that we can use --version argument for the package version\n .usage(\n \"$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>\",\n )\n .options({\n \"input\": {\n describe: \"Path to the OntologyIR JSON file\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"package-name\": {\n describe: \"Name for the generated SDK package\",\n type: \"string\",\n demandOption: true,\n },\n \"version\": {\n describe: \"Version string for the generated SDK\",\n type: \"string\",\n demandOption: true,\n },\n \"output-dir\": {\n describe: \"Directory where the SDK will be generated\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"functions-dir\": {\n describe:\n \"Path to TypeScript functions source directory (enables TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"node-modules-path\": {\n describe:\n \"Path to node_modules containing @foundry packages (for TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-functions-dir\": {\n describe:\n \"Path to Python functions source directory (enables Python function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-root-project-dir\": {\n describe:\n \"Root project directory for Python functions (defaults to parent of python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-binary\": {\n describe:\n \"Path to Python binary (required when using --python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parse();\n\n const inputFile = argv.input;\n const packageName = argv.packageName;\n const packageVersion = argv.version;\n const outputDir = argv.outputDir;\n\n // Validate input file exists\n try {\n await fs.access(inputFile);\n } catch {\n consola.error(`Input file does not exist: ${inputFile}`);\n process.exit(1);\n }\n\n consola.info(`Converting ${inputFile}...`);\n\n const fileContent = await fs.readFile(inputFile, \"utf-8\");\n let irJson: unknown;\n try {\n const parsed = JSON.parse(fileContent);\n // Handle both wrapped (ontology.objectTypes) and unwrapped (objectTypes) formats\n irJson = parsed.ontology ?? parsed;\n } catch {\n consola.error(`Failed to parse JSON from ${inputFile}`);\n process.exit(1);\n }\n\n // Basic structural validation before passing to converter\n const ir = irJson as Record<string, unknown>;\n if (\n !ir\n || typeof ir !== \"object\"\n || !(\"objectTypes\" in ir)\n || !(\"actionTypes\" in ir)\n ) {\n consola.error(\n `Invalid OntologyIR structure in ${inputFile}. Expected objectTypes and actionTypes fields.`,\n );\n process.exit(1);\n }\n\n const previewMetadata = PreviewOntologyIrConverter\n .getPreviewFullMetadataFromIr(\n irJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >[0],\n );\n\n // Function discovery is optional - only run if at least one functions flag is provided\n if (argv.functionsDir || argv.pythonFunctionsDir) {\n if (argv.pythonFunctionsDir && !argv.pythonBinary) {\n consola.error(\n \"--python-binary is required when using --python-functions-dir\",\n );\n process.exit(1);\n }\n\n const effectivePythonRootDir = argv.pythonRootProjectDir\n ?? (argv.pythonFunctionsDir\n ? path.dirname(argv.pythonFunctionsDir)\n : undefined);\n\n const queryTypes = await OntologyIrToFullMetadataConverter\n .getOsdkQueryTypes(\n argv.pythonBinary,\n argv.functionsDir,\n argv.nodeModulesPath,\n argv.pythonFunctionsDir,\n effectivePythonRootDir,\n );\n\n const functionNames = Object.keys(queryTypes);\n if (functionNames.length > 0) {\n previewMetadata.queryTypes = queryTypes;\n consola.info(\n `Discovered ${functionNames.length} function(s): ${\n functionNames.join(\", \")\n }`,\n );\n } else {\n consola.info(\"No functions discovered.\");\n }\n }\n\n // Convert ActionTypeFullMetadata to ActionTypeV2 for generator compatibility\n const metadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n };\n\n const fullOutputDir = path.join(outputDir, packageName);\n await fs.mkdir(fullOutputDir, { recursive: true });\n\n const hostFs = {\n async writeFile(filePath: string, contents: string): Promise<void> {\n const fullPath = path.isAbsolute(filePath)\n ? filePath\n : path.join(fullOutputDir, filePath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, contents, \"utf-8\");\n },\n async mkdir(dirPath: string): Promise<void> {\n const fullPath = path.isAbsolute(dirPath)\n ? dirPath\n : path.join(fullOutputDir, dirPath);\n await fs.mkdir(fullPath, { recursive: true });\n },\n async readdir(dirPath: string): Promise<string[]> {\n return fs.readdir(dirPath);\n },\n };\n\n consola.info(`Generating SDK to ${fullOutputDir}...`);\n\n await generateClientSdkVersionTwoPointZero(\n metadata,\n `osdk-generator/${packageVersion} (from-ir)`,\n hostFs,\n fullOutputDir,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [],\n );\n\n const metadataPath = path.join(fullOutputDir, \"ontology-metadata.json\");\n await fs.writeFile(\n metadataPath,\n JSON.stringify(previewMetadata, null, 2),\n \"utf-8\",\n );\n\n consola.info(`Wrote ${metadataPath}`);\n consola.success(\"Done!\");\n}\n\nmain().catch((err: unknown) => {\n consola.error(err instanceof Error ? err.message : err);\n process.exit(1);\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generate-sdk.js","names":["generateClientSdkVersionTwoPointZero","OntologyIrToFullMetadataConverter","consola","spawnSync","fsSync","fs","os","path","yargs","hideBin","PreviewOntologyIrConverter","PYTHON_SDK_PACKAGE_NAME","generatePythonSdk","previewMetadata","pythonBinary","pythonMetadata","actionTypes","Object","fromEntries","entries","map","key","fullMeta","actionType","globalFunctions","queryTypes","valueTypes","objectTypes","keys","length","info","ontologyApiName","ontology","apiName","siteResult","encoding","status","stdout","trim","warn","stderr","error","sitePackages","tmpDir","mkdtempSync","join","tmpdir","tmpMetadata","writeFileSync","JSON","stringify","packageName","genResult","stdio","rmSync","recursive","force","generatedPackage","destPackage","cpSync","main","argv","process","strict","help","version","usage","options","describe","type","demandOption","coerce","resolve","parse","inputFile","input","packageVersion","outputDir","access","exit","fileContent","readFile","irJson","parsed","ir","getPreviewFullMetadataFromIr","pythonFunctionsDir","functionsDir","effectivePythonRootDir","pythonRootProjectDir","dirname","undefined","getOsdkQueryTypes","nodeModulesPath","functionNames","metadata","fullOutputDir","mkdir","existingEntries","readdir","entry","rm","writeFile","filePath","contents","fullPath","isAbsolute","dirPath","Map","metadataPath","pythonMetadataPath","functionsProjectRoot","runtimeMetadataDir","runtimeMetadataPath","ontologyRid","rid","objectTypeMetadata","objData","objType","objectType","propertyTypeMetadata","properties","propApiName","propDef","propertyTypeApiName","dataType","objectTypeApiName","primaryKeyPropertyTypeId","primaryKey","linkTypeMetadata","interfaceTypeMetadata","magritteSourceMetadata","e","success","catch","err","Error","message"],"sources":["generate-sdk.ts"],"sourcesContent":["#!/usr/bin/env node\n/*\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 { generateClientSdkVersionTwoPointZero } from \"@osdk/generator\";\nimport { OntologyIrToFullMetadataConverter } from \"@osdk/generator-converters.ontologyir\";\nimport { consola } from \"consola\";\nimport { spawnSync } from \"node:child_process\";\nimport * as fsSync from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { PreviewOntologyIrConverter } from \"../PreviewOntologyIrConverter.js\";\n\nconst PYTHON_SDK_PACKAGE_NAME = \"ontology_sdk\";\n\n/**\n * Generates the Python SDK package into the conda environment's site-packages\n * so that Python function discovery can resolve ontology type imports.\n */\nfunction generatePythonSdk(\n previewMetadata: ReturnType<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >,\n pythonBinary: string,\n): void {\n // Build the Python-compatible metadata: unwrap actionTypes and add globalFunctions\n const pythonMetadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n globalFunctions: { queryTypes: {}, valueTypes: {} },\n };\n\n const objectTypes = Object.keys(previewMetadata.objectTypes ?? {});\n if (objectTypes.length === 0) {\n consola.info(\"No object types found, skipping Python SDK generation.\");\n return;\n }\n\n const ontologyApiName = previewMetadata.ontology?.apiName ?? \"ontology\";\n\n // Discover site-packages from the conda environment\n const siteResult = spawnSync(\n pythonBinary,\n [\"-c\", \"import site; print(site.getsitepackages()[0])\"],\n { encoding: \"utf-8\" },\n );\n if (siteResult.status !== 0 || !siteResult.stdout?.trim()) {\n consola.warn(\n `Could not discover Python site-packages: ${\n siteResult.stderr || siteResult.error\n }`,\n );\n return;\n }\n const sitePackages = siteResult.stdout.trim();\n consola.info(`Python site-packages: ${sitePackages}`);\n\n // Write metadata to a temp file for the generator\n const tmpDir = fsSync.mkdtempSync(path.join(os.tmpdir(), \"python-sdk-\"));\n const tmpMetadata = path.join(tmpDir, \"metadata.json\");\n fsSync.writeFileSync(\n tmpMetadata,\n JSON.stringify(pythonMetadata, null, 2),\n \"utf-8\",\n );\n\n // Run the Python SDK generator into the temp directory.\n // The generator creates <output-dir>/ontology_sdk/ which is a project\n // directory containing ontology_sdk/ (the actual Python package), setup.py, etc.\n consola.info(\"Generating Python SDK...\");\n const packageName = PYTHON_SDK_PACKAGE_NAME;\n const genResult = spawnSync(\n pythonBinary,\n [\n \"-m\",\n \"foundry_sdk_generator\",\n \"generate_package\",\n \"--output-dir\",\n tmpDir,\n \"--package-name\",\n packageName,\n \"--package-version\",\n \"0.0.0\",\n \"--ontology\",\n ontologyApiName,\n \"--object-types\",\n objectTypes.join(\",\"),\n \"--cache-path\",\n tmpMetadata,\n \"--force\",\n ],\n { encoding: \"utf-8\", stdio: \"pipe\" },\n );\n\n if (genResult.status !== 0) {\n consola.warn(\n `Python SDK generation failed (non-fatal): ${\n genResult.stderr || genResult.stdout\n }`,\n );\n fsSync.rmSync(tmpDir, { recursive: true, force: true });\n return;\n }\n\n // The generator creates <tmpDir>/ontology_sdk/ontology_sdk/ (the importable\n // package). Copy just the inner package into site-packages so Python can\n // resolve `import ontology_sdk`.\n const generatedPackage = path.join(tmpDir, packageName, packageName);\n const destPackage = path.join(sitePackages, packageName);\n\n // Remove any previous version\n fsSync.rmSync(destPackage, { recursive: true, force: true });\n fsSync.cpSync(generatedPackage, destPackage, { recursive: true });\n\n // Clean up temp directory\n fsSync.rmSync(tmpDir, { recursive: true, force: true });\n\n consola.info(`Python SDK installed to ${destPackage}`);\n}\n\nasync function main(): Promise<void> {\n const argv = await yargs(hideBin(process.argv))\n .strict()\n .help()\n .version(false) // so that we can use --version argument for the package version\n .usage(\n \"$0 --input <path> --package-name <name> --version <ver> --output-dir <dir>\",\n )\n .options({\n \"input\": {\n describe: \"Path to the OntologyIR JSON file\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"package-name\": {\n describe: \"Name for the generated SDK package\",\n type: \"string\",\n demandOption: true,\n },\n \"version\": {\n describe: \"Version string for the generated SDK\",\n type: \"string\",\n demandOption: true,\n },\n \"output-dir\": {\n describe: \"Directory where the SDK will be generated\",\n type: \"string\",\n demandOption: true,\n coerce: path.resolve,\n },\n \"functions-dir\": {\n describe:\n \"Path to TypeScript functions source directory (enables TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"node-modules-path\": {\n describe:\n \"Path to node_modules containing @foundry packages (for TS function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-functions-dir\": {\n describe:\n \"Path to Python functions source directory (enables Python function discovery)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-root-project-dir\": {\n describe:\n \"Root project directory for Python functions (defaults to parent of python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n \"python-binary\": {\n describe:\n \"Path to Python binary (required when using --python-functions-dir)\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parse();\n\n const inputFile = argv.input;\n const packageName = argv.packageName;\n const packageVersion = argv.version;\n const outputDir = argv.outputDir;\n\n // Validate input file exists\n try {\n await fs.access(inputFile);\n } catch {\n consola.error(`Input file does not exist: ${inputFile}`);\n process.exit(1);\n }\n\n consola.info(`Converting ${inputFile}...`);\n\n const fileContent = await fs.readFile(inputFile, \"utf-8\");\n let irJson: unknown;\n try {\n const parsed = JSON.parse(fileContent);\n // Handle both wrapped (ontology.objectTypes) and unwrapped (objectTypes) formats\n irJson = parsed.ontology ?? parsed;\n } catch {\n consola.error(`Failed to parse JSON from ${inputFile}`);\n process.exit(1);\n }\n\n // Basic structural validation before passing to converter\n const ir = irJson as Record<string, unknown>;\n if (\n !ir\n || typeof ir !== \"object\"\n || !(\"objectTypes\" in ir)\n || !(\"actionTypes\" in ir)\n ) {\n consola.error(\n `Invalid OntologyIR structure in ${inputFile}. Expected objectTypes and actionTypes fields.`,\n );\n process.exit(1);\n }\n\n const previewMetadata = PreviewOntologyIrConverter\n .getPreviewFullMetadataFromIr(\n irJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromIr\n >[0],\n );\n\n // Generate the Python SDK before function discovery so that Python functions\n // that import ontology types (e.g. `from ontology_sdk.ontology.objects import X`)\n // can be successfully parsed during discovery.\n if (argv.pythonBinary && argv.pythonFunctionsDir) {\n generatePythonSdk(\n previewMetadata,\n argv.pythonBinary,\n );\n }\n\n // Function discovery is optional - only run if at least one functions flag is provided\n if (argv.functionsDir || argv.pythonFunctionsDir) {\n if (argv.pythonFunctionsDir && !argv.pythonBinary) {\n consola.error(\n \"--python-binary is required when using --python-functions-dir\",\n );\n process.exit(1);\n }\n\n const effectivePythonRootDir = argv.pythonRootProjectDir\n ?? (argv.pythonFunctionsDir\n ? path.dirname(argv.pythonFunctionsDir)\n : undefined);\n\n const queryTypes = await OntologyIrToFullMetadataConverter\n .getOsdkQueryTypes(\n argv.pythonBinary,\n argv.functionsDir,\n argv.nodeModulesPath,\n argv.pythonFunctionsDir,\n effectivePythonRootDir,\n previewMetadata,\n );\n\n const functionNames = Object.keys(queryTypes);\n if (functionNames.length > 0) {\n previewMetadata.queryTypes = queryTypes;\n consola.info(\n `Discovered ${functionNames.length} function(s): ${\n functionNames.join(\", \")\n }`,\n );\n } else {\n consola.info(\"No functions discovered.\");\n }\n }\n\n // Convert ActionTypeFullMetadata to ActionTypeV2 for generator compatibility\n const metadata = {\n ...previewMetadata,\n actionTypes: Object.fromEntries(\n Object.entries(previewMetadata.actionTypes).map(([key, fullMeta]) => [\n key,\n fullMeta.actionType,\n ]),\n ),\n };\n\n const fullOutputDir = path.join(outputDir, packageName);\n await fs.mkdir(fullOutputDir, { recursive: true });\n\n // Clean the output directory before generation. The generator's verifyOutDir\n // requires an empty directory, but a previous SDK build may exist from\n // function discovery (so TypeScript functions can resolve @ontology/sdk imports).\n const existingEntries = await fs.readdir(fullOutputDir);\n for (const entry of existingEntries) {\n await fs.rm(path.join(fullOutputDir, entry), {\n recursive: true,\n force: true,\n });\n }\n\n const hostFs = {\n async writeFile(filePath: string, contents: string): Promise<void> {\n const fullPath = path.isAbsolute(filePath)\n ? filePath\n : path.join(fullOutputDir, filePath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, contents, \"utf-8\");\n },\n async mkdir(dirPath: string): Promise<void> {\n const fullPath = path.isAbsolute(dirPath)\n ? dirPath\n : path.join(fullOutputDir, dirPath);\n await fs.mkdir(fullPath, { recursive: true });\n },\n async readdir(dirPath: string): Promise<string[]> {\n return fs.readdir(dirPath);\n },\n };\n\n consola.info(`Generating SDK to ${fullOutputDir}...`);\n\n await generateClientSdkVersionTwoPointZero(\n metadata,\n `osdk-generator/${packageVersion} (from-ir)`,\n hostFs,\n fullOutputDir,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [],\n );\n\n const metadataPath = path.join(fullOutputDir, \"ontology-metadata.json\");\n await fs.writeFile(\n metadataPath,\n JSON.stringify(previewMetadata, null, 2),\n \"utf-8\",\n );\n\n consola.info(`Wrote ${metadataPath}`);\n\n // Write Python-compatible metadata that the foundry-sdk-generator expects.\n // This uses the unwrapped actionTypes (ActionTypeV2 instead of\n // ActionTypeFullMetadata) and adds the globalFunctions key.\n if (argv.pythonFunctionsDir) {\n const pythonMetadataPath = path.join(\n fullOutputDir,\n \"python-ontology-metadata.json\",\n );\n await fs.writeFile(\n pythonMetadataPath,\n JSON.stringify(\n { ...metadata, globalFunctions: { queryTypes: {}, valueTypes: {} } },\n null,\n 2,\n ),\n \"utf-8\",\n );\n consola.info(`Wrote ${pythonMetadataPath}`);\n }\n\n // Write runtime metadata.json for the TypeScript functions runtime.\n // The runtime needs entity metadata to resolve ontology types during\n // function discovery. Without this, functions using Client/Osdk.Instance\n // produce diagnostics that block ALL function discovery.\n if (argv.functionsDir) {\n const functionsProjectRoot = path.resolve(argv.functionsDir, \"..\", \"..\");\n const runtimeMetadataDir = path.join(\n functionsProjectRoot,\n \".dev-server\",\n \"var\",\n \"conf\",\n );\n const runtimeMetadataPath = path.join(runtimeMetadataDir, \"metadata.json\");\n\n const ontologyRid = previewMetadata.ontology.rid;\n\n const objectTypeMetadata: Record<string, unknown> = {};\n if (previewMetadata.objectTypes) {\n for (\n const [apiName, objData] of Object.entries(previewMetadata.objectTypes)\n ) {\n const objType = objData.objectType;\n const propertyTypeMetadata: Record<\n string,\n { propertyTypeApiName: string; type?: unknown }\n > = {};\n if (objType.properties) {\n for (\n const [propApiName, propDef] of Object.entries(objType.properties)\n ) {\n propertyTypeMetadata[propApiName] = {\n propertyTypeApiName: propApiName,\n type: propDef.dataType,\n };\n }\n }\n objectTypeMetadata[apiName] = {\n objectTypeApiName: apiName,\n primaryKeyPropertyTypeId: objType.primaryKey,\n propertyTypeMetadata,\n linkTypeMetadata: {},\n };\n }\n }\n\n const runtimeMetadata = {\n ontologyRid,\n objectTypeMetadata,\n interfaceTypeMetadata: {},\n magritteSourceMetadata: {},\n };\n\n try {\n await fs.mkdir(runtimeMetadataDir, { recursive: true });\n await fs.writeFile(\n runtimeMetadataPath,\n JSON.stringify(runtimeMetadata),\n \"utf-8\",\n );\n consola.info(`Wrote runtime metadata to ${runtimeMetadataPath}`);\n } catch (e) {\n consola.warn(`Could not write runtime metadata: ${e}`);\n }\n }\n\n consola.success(\"Done!\");\n}\n\nmain().catch((err: unknown) => {\n consola.error(err instanceof Error ? err.message : err);\n process.exit(1);\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,oCAAoC,QAAQ,iBAAiB;AACtE,SAASC,iCAAiC,QAAQ,uCAAuC;AACzF,SAASC,OAAO,QAAQ,SAAS;AACjC,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,OAAO,KAAKC,MAAM,MAAM,SAAS;AACjC,OAAO,KAAKC,EAAE,MAAM,kBAAkB;AACtC,OAAO,KAAKC,EAAE,MAAM,SAAS;AAC7B,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,0BAA0B,QAAQ,kCAAkC;AAE7E,MAAMC,uBAAuB,GAAG,cAAc;;AAE9C;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CACxBC,eAEC,EACDC,YAAoB,EACd;EACN;EACA,MAAMC,cAAc,GAAG;IACrB,GAAGF,eAAe;IAClBG,WAAW,EAAEC,MAAM,CAACC,WAAW,CAC7BD,MAAM,CAACE,OAAO,CAACN,eAAe,CAACG,WAAW,CAAC,CAACI,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEC,QAAQ,CAAC,KAAK,CACnED,GAAG,EACHC,QAAQ,CAACC,UAAU,CACpB,CACH,CAAC;IACDC,eAAe,EAAE;MAAEC,UAAU,EAAE,CAAC,CAAC;MAAEC,UAAU,EAAE,CAAC;IAAE;EACpD,CAAC;EAED,MAAMC,WAAW,GAAGV,MAAM,CAACW,IAAI,CAACf,eAAe,CAACc,WAAW,IAAI,CAAC,CAAC,CAAC;EAClE,IAAIA,WAAW,CAACE,MAAM,KAAK,CAAC,EAAE;IAC5B3B,OAAO,CAAC4B,IAAI,CAAC,wDAAwD,CAAC;IACtE;EACF;EAEA,MAAMC,eAAe,GAAGlB,eAAe,CAACmB,QAAQ,EAAEC,OAAO,IAAI,UAAU;;EAEvE;EACA,MAAMC,UAAU,GAAG/B,SAAS,CAC1BW,YAAY,EACZ,CAAC,IAAI,EAAE,+CAA+C,CAAC,EACvD;IAAEqB,QAAQ,EAAE;EAAQ,CACtB,CAAC;EACD,IAAID,UAAU,CAACE,MAAM,KAAK,CAAC,IAAI,CAACF,UAAU,CAACG,MAAM,EAAEC,IAAI,CAAC,CAAC,EAAE;IACzDpC,OAAO,CAACqC,IAAI,CACV,4CACEL,UAAU,CAACM,MAAM,IAAIN,UAAU,CAACO,KAAK,EAEzC,CAAC;IACD;EACF;EACA,MAAMC,YAAY,GAAGR,UAAU,CAACG,MAAM,CAACC,IAAI,CAAC,CAAC;EAC7CpC,OAAO,CAAC4B,IAAI,CAAC,yBAAyBY,YAAY,EAAE,CAAC;;EAErD;EACA,MAAMC,MAAM,GAAGvC,MAAM,CAACwC,WAAW,CAACrC,IAAI,CAACsC,IAAI,CAACvC,EAAE,CAACwC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;EACxE,MAAMC,WAAW,GAAGxC,IAAI,CAACsC,IAAI,CAACF,MAAM,EAAE,eAAe,CAAC;EACtDvC,MAAM,CAAC4C,aAAa,CAClBD,WAAW,EACXE,IAAI,CAACC,SAAS,CAACnC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EACvC,OACF,CAAC;;EAED;EACA;EACA;EACAb,OAAO,CAAC4B,IAAI,CAAC,0BAA0B,CAAC;EACxC,MAAMqB,WAAW,GAAGxC,uBAAuB;EAC3C,MAAMyC,SAAS,GAAGjD,SAAS,CACzBW,YAAY,EACZ,CACE,IAAI,EACJ,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd6B,MAAM,EACN,gBAAgB,EAChBQ,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZpB,eAAe,EACf,gBAAgB,EAChBJ,WAAW,CAACkB,IAAI,CAAC,GAAG,CAAC,EACrB,cAAc,EACdE,WAAW,EACX,SAAS,CACV,EACD;IAAEZ,QAAQ,EAAE,OAAO;IAAEkB,KAAK,EAAE;EAAO,CACrC,CAAC;EAED,IAAID,SAAS,CAAChB,MAAM,KAAK,CAAC,EAAE;IAC1BlC,OAAO,CAACqC,IAAI,CACV,6CACEa,SAAS,CAACZ,MAAM,IAAIY,SAAS,CAACf,MAAM,EAExC,CAAC;IACDjC,MAAM,CAACkD,MAAM,CAACX,MAAM,EAAE;MAAEY,SAAS,EAAE,IAAI;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IACvD;EACF;;EAEA;EACA;EACA;EACA,MAAMC,gBAAgB,GAAGlD,IAAI,CAACsC,IAAI,CAACF,MAAM,EAAEQ,WAAW,EAAEA,WAAW,CAAC;EACpE,MAAMO,WAAW,GAAGnD,IAAI,CAACsC,IAAI,CAACH,YAAY,EAAES,WAAW,CAAC;;EAExD;EACA/C,MAAM,CAACkD,MAAM,CAACI,WAAW,EAAE;IAAEH,SAAS,EAAE,IAAI;IAAEC,KAAK,EAAE;EAAK,CAAC,CAAC;EAC5DpD,MAAM,CAACuD,MAAM,CAACF,gBAAgB,EAAEC,WAAW,EAAE;IAAEH,SAAS,EAAE;EAAK,CAAC,CAAC;;EAEjE;EACAnD,MAAM,CAACkD,MAAM,CAACX,MAAM,EAAE;IAAEY,SAAS,EAAE,IAAI;IAAEC,KAAK,EAAE;EAAK,CAAC,CAAC;EAEvDtD,OAAO,CAAC4B,IAAI,CAAC,2BAA2B4B,WAAW,EAAE,CAAC;AACxD;AAEA,eAAeE,IAAIA,CAAA,EAAkB;EACnC,MAAMC,IAAI,GAAG,MAAMrD,KAAK,CAACC,OAAO,CAACqD,OAAO,CAACD,IAAI,CAAC,CAAC,CAC5CE,MAAM,CAAC,CAAC,CACRC,IAAI,CAAC,CAAC,CACNC,OAAO,CAAC,KAAK,CAAC,CAAC;EAAA,CACfC,KAAK,CACJ,4EACF,CAAC,CACAC,OAAO,CAAC;IACP,OAAO,EAAE;MACPC,QAAQ,EAAE,kCAAkC;MAC5CC,IAAI,EAAE,QAAQ;MACdC,YAAY,EAAE,IAAI;MAClBC,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,cAAc,EAAE;MACdJ,QAAQ,EAAE,oCAAoC;MAC9CC,IAAI,EAAE,QAAQ;MACdC,YAAY,EAAE;IAChB,CAAC;IACD,SAAS,EAAE;MACTF,QAAQ,EAAE,sCAAsC;MAChDC,IAAI,EAAE,QAAQ;MACdC,YAAY,EAAE;IAChB,CAAC;IACD,YAAY,EAAE;MACZF,QAAQ,EAAE,2CAA2C;MACrDC,IAAI,EAAE,QAAQ;MACdC,YAAY,EAAE,IAAI;MAClBC,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,eAAe,EAAE;MACfJ,QAAQ,EACN,+EAA+E;MACjFC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,mBAAmB,EAAE;MACnBJ,QAAQ,EACN,+EAA+E;MACjFC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,sBAAsB,EAAE;MACtBJ,QAAQ,EACN,+EAA+E;MACjFC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,yBAAyB,EAAE;MACzBJ,QAAQ,EACN,0FAA0F;MAC5FC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEhE,IAAI,CAACiE;IACf,CAAC;IACD,eAAe,EAAE;MACfJ,QAAQ,EACN,oEAAoE;MACtEC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEhE,IAAI,CAACiE;IACf;EACF,CAAC,CAAC,CACDC,KAAK,CAAC,CAAC;EAEV,MAAMC,SAAS,GAAGb,IAAI,CAACc,KAAK;EAC5B,MAAMxB,WAAW,GAAGU,IAAI,CAACV,WAAW;EACpC,MAAMyB,cAAc,GAAGf,IAAI,CAACI,OAAO;EACnC,MAAMY,SAAS,GAAGhB,IAAI,CAACgB,SAAS;;EAEhC;EACA,IAAI;IACF,MAAMxE,EAAE,CAACyE,MAAM,CAACJ,SAAS,CAAC;EAC5B,CAAC,CAAC,MAAM;IACNxE,OAAO,CAACuC,KAAK,CAAC,8BAA8BiC,SAAS,EAAE,CAAC;IACxDZ,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;EACjB;EAEA7E,OAAO,CAAC4B,IAAI,CAAC,cAAc4C,SAAS,KAAK,CAAC;EAE1C,MAAMM,WAAW,GAAG,MAAM3E,EAAE,CAAC4E,QAAQ,CAACP,SAAS,EAAE,OAAO,CAAC;EACzD,IAAIQ,MAAe;EACnB,IAAI;IACF,MAAMC,MAAM,GAAGlC,IAAI,CAACwB,KAAK,CAACO,WAAW,CAAC;IACtC;IACAE,MAAM,GAAGC,MAAM,CAACnD,QAAQ,IAAImD,MAAM;EACpC,CAAC,CAAC,MAAM;IACNjF,OAAO,CAACuC,KAAK,CAAC,6BAA6BiC,SAAS,EAAE,CAAC;IACvDZ,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;EACjB;;EAEA;EACA,MAAMK,EAAE,GAAGF,MAAiC;EAC5C,IACE,CAACE,EAAE,IACA,OAAOA,EAAE,KAAK,QAAQ,IACtB,EAAE,aAAa,IAAIA,EAAE,CAAC,IACtB,EAAE,aAAa,IAAIA,EAAE,CAAC,EACzB;IACAlF,OAAO,CAACuC,KAAK,CACX,mCAAmCiC,SAAS,gDAC9C,CAAC;IACDZ,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;EACjB;EAEA,MAAMlE,eAAe,GAAGH,0BAA0B,CAC/C2E,4BAA4B,CAC3BH,MAGF,CAAC;;EAEH;EACA;EACA;EACA,IAAIrB,IAAI,CAAC/C,YAAY,IAAI+C,IAAI,CAACyB,kBAAkB,EAAE;IAChD1E,iBAAiB,CACfC,eAAe,EACfgD,IAAI,CAAC/C,YACP,CAAC;EACH;;EAEA;EACA,IAAI+C,IAAI,CAAC0B,YAAY,IAAI1B,IAAI,CAACyB,kBAAkB,EAAE;IAChD,IAAIzB,IAAI,CAACyB,kBAAkB,IAAI,CAACzB,IAAI,CAAC/C,YAAY,EAAE;MACjDZ,OAAO,CAACuC,KAAK,CACX,+DACF,CAAC;MACDqB,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;IACjB;IAEA,MAAMS,sBAAsB,GAAG3B,IAAI,CAAC4B,oBAAoB,KAClD5B,IAAI,CAACyB,kBAAkB,GACvB/E,IAAI,CAACmF,OAAO,CAAC7B,IAAI,CAACyB,kBAAkB,CAAC,GACrCK,SAAS,CAAC;IAEhB,MAAMlE,UAAU,GAAG,MAAMxB,iCAAiC,CACvD2F,iBAAiB,CAChB/B,IAAI,CAAC/C,YAAY,EACjB+C,IAAI,CAAC0B,YAAY,EACjB1B,IAAI,CAACgC,eAAe,EACpBhC,IAAI,CAACyB,kBAAkB,EACvBE,sBAAsB,EACtB3E,eACF,CAAC;IAEH,MAAMiF,aAAa,GAAG7E,MAAM,CAACW,IAAI,CAACH,UAAU,CAAC;IAC7C,IAAIqE,aAAa,CAACjE,MAAM,GAAG,CAAC,EAAE;MAC5BhB,eAAe,CAACY,UAAU,GAAGA,UAAU;MACvCvB,OAAO,CAAC4B,IAAI,CACV,cAAcgE,aAAa,CAACjE,MAAM,iBAChCiE,aAAa,CAACjD,IAAI,CAAC,IAAI,CAAC,EAE5B,CAAC;IACH,CAAC,MAAM;MACL3C,OAAO,CAAC4B,IAAI,CAAC,0BAA0B,CAAC;IAC1C;EACF;;EAEA;EACA,MAAMiE,QAAQ,GAAG;IACf,GAAGlF,eAAe;IAClBG,WAAW,EAAEC,MAAM,CAACC,WAAW,CAC7BD,MAAM,CAACE,OAAO,CAACN,eAAe,CAACG,WAAW,CAAC,CAACI,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEC,QAAQ,CAAC,KAAK,CACnED,GAAG,EACHC,QAAQ,CAACC,UAAU,CACpB,CACH;EACF,CAAC;EAED,MAAMyE,aAAa,GAAGzF,IAAI,CAACsC,IAAI,CAACgC,SAAS,EAAE1B,WAAW,CAAC;EACvD,MAAM9C,EAAE,CAAC4F,KAAK,CAACD,aAAa,EAAE;IAAEzC,SAAS,EAAE;EAAK,CAAC,CAAC;;EAElD;EACA;EACA;EACA,MAAM2C,eAAe,GAAG,MAAM7F,EAAE,CAAC8F,OAAO,CAACH,aAAa,CAAC;EACvD,KAAK,MAAMI,KAAK,IAAIF,eAAe,EAAE;IACnC,MAAM7F,EAAE,CAACgG,EAAE,CAAC9F,IAAI,CAACsC,IAAI,CAACmD,aAAa,EAAEI,KAAK,CAAC,EAAE;MAC3C7C,SAAS,EAAE,IAAI;MACfC,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAqBAtD,OAAO,CAAC4B,IAAI,CAAC,qBAAqBkE,aAAa,KAAK,CAAC;EAErD,MAAMhG,oCAAoC,CACxC+F,QAAQ,EACR,kBAAkBnB,cAAc,YAAY,EAvB/B;IACb,MAAM0B,SAASA,CAACC,QAAgB,EAAEC,QAAgB,EAAiB;MACjE,MAAMC,QAAQ,GAAGlG,IAAI,CAACmG,UAAU,CAACH,QAAQ,CAAC,GACtCA,QAAQ,GACRhG,IAAI,CAACsC,IAAI,CAACmD,aAAa,EAAEO,QAAQ,CAAC;MACtC,MAAMlG,EAAE,CAAC4F,KAAK,CAAC1F,IAAI,CAACmF,OAAO,CAACe,QAAQ,CAAC,EAAE;QAAElD,SAAS,EAAE;MAAK,CAAC,CAAC;MAC3D,MAAMlD,EAAE,CAACiG,SAAS,CAACG,QAAQ,EAAED,QAAQ,EAAE,OAAO,CAAC;IACjD,CAAC;IACD,MAAMP,KAAKA,CAACU,OAAe,EAAiB;MAC1C,MAAMF,QAAQ,GAAGlG,IAAI,CAACmG,UAAU,CAACC,OAAO,CAAC,GACrCA,OAAO,GACPpG,IAAI,CAACsC,IAAI,CAACmD,aAAa,EAAEW,OAAO,CAAC;MACrC,MAAMtG,EAAE,CAAC4F,KAAK,CAACQ,QAAQ,EAAE;QAAElD,SAAS,EAAE;MAAK,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM4C,OAAOA,CAACQ,OAAe,EAAqB;MAChD,OAAOtG,EAAE,CAAC8F,OAAO,CAACQ,OAAO,CAAC;IAC5B;EACF,CAAC,EAQCX,aAAa,EACb,QAAQ,EACR,IAAIY,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,KAAK,EACL,EACF,CAAC;EAED,MAAMC,YAAY,GAAGtG,IAAI,CAACsC,IAAI,CAACmD,aAAa,EAAE,wBAAwB,CAAC;EACvE,MAAM3F,EAAE,CAACiG,SAAS,CAChBO,YAAY,EACZ5D,IAAI,CAACC,SAAS,CAACrC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EACxC,OACF,CAAC;EAEDX,OAAO,CAAC4B,IAAI,CAAC,SAAS+E,YAAY,EAAE,CAAC;;EAErC;EACA;EACA;EACA,IAAIhD,IAAI,CAACyB,kBAAkB,EAAE;IAC3B,MAAMwB,kBAAkB,GAAGvG,IAAI,CAACsC,IAAI,CAClCmD,aAAa,EACb,+BACF,CAAC;IACD,MAAM3F,EAAE,CAACiG,SAAS,CAChBQ,kBAAkB,EAClB7D,IAAI,CAACC,SAAS,CACZ;MAAE,GAAG6C,QAAQ;MAAEvE,eAAe,EAAE;QAAEC,UAAU,EAAE,CAAC,CAAC;QAAEC,UAAU,EAAE,CAAC;MAAE;IAAE,CAAC,EACpE,IAAI,EACJ,CACF,CAAC,EACD,OACF,CAAC;IACDxB,OAAO,CAAC4B,IAAI,CAAC,SAASgF,kBAAkB,EAAE,CAAC;EAC7C;;EAEA;EACA;EACA;EACA;EACA,IAAIjD,IAAI,CAAC0B,YAAY,EAAE;IACrB,MAAMwB,oBAAoB,GAAGxG,IAAI,CAACiE,OAAO,CAACX,IAAI,CAAC0B,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;IACxE,MAAMyB,kBAAkB,GAAGzG,IAAI,CAACsC,IAAI,CAClCkE,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,MACF,CAAC;IACD,MAAME,mBAAmB,GAAG1G,IAAI,CAACsC,IAAI,CAACmE,kBAAkB,EAAE,eAAe,CAAC;IAE1E,MAAME,WAAW,GAAGrG,eAAe,CAACmB,QAAQ,CAACmF,GAAG;IAEhD,MAAMC,kBAA2C,GAAG,CAAC,CAAC;IACtD,IAAIvG,eAAe,CAACc,WAAW,EAAE;MAC/B,KACE,MAAM,CAACM,OAAO,EAAEoF,OAAO,CAAC,IAAIpG,MAAM,CAACE,OAAO,CAACN,eAAe,CAACc,WAAW,CAAC,EACvE;QACA,MAAM2F,OAAO,GAAGD,OAAO,CAACE,UAAU;QAClC,MAAMC,oBAGL,GAAG,CAAC,CAAC;QACN,IAAIF,OAAO,CAACG,UAAU,EAAE;UACtB,KACE,MAAM,CAACC,WAAW,EAAEC,OAAO,CAAC,IAAI1G,MAAM,CAACE,OAAO,CAACmG,OAAO,CAACG,UAAU,CAAC,EAClE;YACAD,oBAAoB,CAACE,WAAW,CAAC,GAAG;cAClCE,mBAAmB,EAAEF,WAAW;cAChCrD,IAAI,EAAEsD,OAAO,CAACE;YAChB,CAAC;UACH;QACF;QACAT,kBAAkB,CAACnF,OAAO,CAAC,GAAG;UAC5B6F,iBAAiB,EAAE7F,OAAO;UAC1B8F,wBAAwB,EAAET,OAAO,CAACU,UAAU;UAC5CR,oBAAoB;UACpBS,gBAAgB,EAAE,CAAC;QACrB,CAAC;MACH;IACF;IASA,IAAI;MACF,MAAM5H,EAAE,CAAC4F,KAAK,CAACe,kBAAkB,EAAE;QAAEzD,SAAS,EAAE;MAAK,CAAC,CAAC;MACvD,MAAMlD,EAAE,CAACiG,SAAS,CAChBW,mBAAmB,EACnBhE,IAAI,CAACC,SAAS,CAXM;QACtBgE,WAAW;QACXE,kBAAkB;QAClBc,qBAAqB,EAAE,CAAC,CAAC;QACzBC,sBAAsB,EAAE,CAAC;MAC3B,CAMkC,CAAC,EAC/B,OACF,CAAC;MACDjI,OAAO,CAAC4B,IAAI,CAAC,6BAA6BmF,mBAAmB,EAAE,CAAC;IAClE,CAAC,CAAC,OAAOmB,CAAC,EAAE;MACVlI,OAAO,CAACqC,IAAI,CAAC,qCAAqC6F,CAAC,EAAE,CAAC;IACxD;EACF;EAEAlI,OAAO,CAACmI,OAAO,CAAC,OAAO,CAAC;AAC1B;AAEAzE,IAAI,CAAC,CAAC,CAAC0E,KAAK,CAAEC,GAAY,IAAK;EAC7BrI,OAAO,CAACuC,KAAK,CAAC8F,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAGF,GAAG,CAAC;EACvDzE,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/generator-converters.preview",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.3",
4
4
  "description": "OSDK generator with support for Python and TSv2 discovered functions",
5
5
  "access": "public",
6
6
  "license": "Apache-2.0",
@@ -32,9 +32,9 @@
32
32
  "@osdk/foundry.ontologies": "2.50.0",
33
33
  "consola": "^3.4.2",
34
34
  "yargs": "17.7.2",
35
- "@osdk/client.unstable": "~2.8.0-beta.14",
36
- "@osdk/generator": "~2.8.0-beta.14",
37
- "@osdk/generator-converters.ontologyir": "~2.8.0-beta.14"
35
+ "@osdk/client.unstable": "~2.8.0-beta.16",
36
+ "@osdk/generator-converters.ontologyir": "~2.8.0-beta.16",
37
+ "@osdk/generator": "~2.8.0-beta.16"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^24.3.1",
@@ -1,44 +0,0 @@
1
- /*
2
- * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- import { describe, expect, it } from "vitest";
18
- import { toUuid } from "./ridUtils.js";
19
- describe("ridUtils", () => {
20
- describe("toUuid", () => {
21
- it("returns a valid UUID format with correct version and variant bits", () => {
22
- const result = toUuid("test-string");
23
- // UUID format: xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx // cspell:disable-line
24
- // V = version (5), N = variant (8, 9, a, or b for RFC 4122)
25
- expect(result).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
26
- });
27
- it("is deterministic - same input produces same output", () => {
28
- const input = "my-deterministic-input";
29
- const result1 = toUuid(input);
30
- const result2 = toUuid(input);
31
- expect(result1).toBe(result2);
32
- });
33
- it("produces different outputs for different inputs", () => {
34
- const result1 = toUuid("input-1");
35
- const result2 = toUuid("input-2");
36
- expect(result1).not.toBe(result2);
37
- });
38
- it("handles empty string", () => {
39
- const result = toUuid("");
40
- expect(result).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
41
- });
42
- });
43
- });
44
- //# sourceMappingURL=ridUtils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ridUtils.test.js","names":["describe","expect","it","toUuid","result","toMatch","input","result1","result2","toBe","not"],"sources":["ridUtils.test.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 { describe, expect, it } from \"vitest\";\nimport { toUuid } from \"./ridUtils.js\";\n\ndescribe(\"ridUtils\", () => {\n describe(\"toUuid\", () => {\n it(\"returns a valid UUID format with correct version and variant bits\", () => {\n const result = toUuid(\"test-string\");\n // UUID format: xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx // cspell:disable-line\n // V = version (5), N = variant (8, 9, a, or b for RFC 4122)\n expect(result).toMatch(\n /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n );\n });\n\n it(\"is deterministic - same input produces same output\", () => {\n const input = \"my-deterministic-input\";\n const result1 = toUuid(input);\n const result2 = toUuid(input);\n expect(result1).toBe(result2);\n });\n\n it(\"produces different outputs for different inputs\", () => {\n const result1 = toUuid(\"input-1\");\n const result2 = toUuid(\"input-2\");\n expect(result1).not.toBe(result2);\n });\n\n it(\"handles empty string\", () => {\n const result = toUuid(\"\");\n expect(result).toMatch(\n /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n );\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,MAAM,QAAQ,eAAe;AAEtCH,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzBA,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACvBE,EAAE,CAAC,mEAAmE,EAAE,MAAM;MAC5E,MAAME,MAAM,GAAGD,MAAM,CAAC,aAAa,CAAC;MACpC;MACA;MACAF,MAAM,CAACG,MAAM,CAAC,CAACC,OAAO,CACpB,uEACF,CAAC;IACH,CAAC,CAAC;IAEFH,EAAE,CAAC,oDAAoD,EAAE,MAAM;MAC7D,MAAMI,KAAK,GAAG,wBAAwB;MACtC,MAAMC,OAAO,GAAGJ,MAAM,CAACG,KAAK,CAAC;MAC7B,MAAME,OAAO,GAAGL,MAAM,CAACG,KAAK,CAAC;MAC7BL,MAAM,CAACM,OAAO,CAAC,CAACE,IAAI,CAACD,OAAO,CAAC;IAC/B,CAAC,CAAC;IAEFN,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1D,MAAMK,OAAO,GAAGJ,MAAM,CAAC,SAAS,CAAC;MACjC,MAAMK,OAAO,GAAGL,MAAM,CAAC,SAAS,CAAC;MACjCF,MAAM,CAACM,OAAO,CAAC,CAACG,GAAG,CAACD,IAAI,CAACD,OAAO,CAAC;IACnC,CAAC,CAAC;IAEFN,EAAE,CAAC,sBAAsB,EAAE,MAAM;MAC/B,MAAME,MAAM,GAAGD,MAAM,CAAC,EAAE,CAAC;MACzBF,MAAM,CAACG,MAAM,CAAC,CAACC,OAAO,CACpB,uEACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,44 +0,0 @@
1
- /*
2
- * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- import { describe, expect, it } from "vitest";
18
- import { toUuid } from "./ridUtils.js";
19
- describe("ridUtils", () => {
20
- describe("toUuid", () => {
21
- it("returns a valid UUID format with correct version and variant bits", () => {
22
- const result = toUuid("test-string");
23
- // UUID format: xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx // cspell:disable-line
24
- // V = version (5), N = variant (8, 9, a, or b for RFC 4122)
25
- expect(result).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
26
- });
27
- it("is deterministic - same input produces same output", () => {
28
- const input = "my-deterministic-input";
29
- const result1 = toUuid(input);
30
- const result2 = toUuid(input);
31
- expect(result1).toBe(result2);
32
- });
33
- it("produces different outputs for different inputs", () => {
34
- const result1 = toUuid("input-1");
35
- const result2 = toUuid("input-2");
36
- expect(result1).not.toBe(result2);
37
- });
38
- it("handles empty string", () => {
39
- const result = toUuid("");
40
- expect(result).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
41
- });
42
- });
43
- });
44
- //# sourceMappingURL=ridUtils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ridUtils.test.js","names":["describe","expect","it","toUuid","result","toMatch","input","result1","result2","toBe","not"],"sources":["ridUtils.test.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 { describe, expect, it } from \"vitest\";\nimport { toUuid } from \"./ridUtils.js\";\n\ndescribe(\"ridUtils\", () => {\n describe(\"toUuid\", () => {\n it(\"returns a valid UUID format with correct version and variant bits\", () => {\n const result = toUuid(\"test-string\");\n // UUID format: xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx // cspell:disable-line\n // V = version (5), N = variant (8, 9, a, or b for RFC 4122)\n expect(result).toMatch(\n /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n );\n });\n\n it(\"is deterministic - same input produces same output\", () => {\n const input = \"my-deterministic-input\";\n const result1 = toUuid(input);\n const result2 = toUuid(input);\n expect(result1).toBe(result2);\n });\n\n it(\"produces different outputs for different inputs\", () => {\n const result1 = toUuid(\"input-1\");\n const result2 = toUuid(\"input-2\");\n expect(result1).not.toBe(result2);\n });\n\n it(\"handles empty string\", () => {\n const result = toUuid(\"\");\n expect(result).toMatch(\n /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n );\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,MAAM,QAAQ,eAAe;AAEtCH,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzBA,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACvBE,EAAE,CAAC,mEAAmE,EAAE,MAAM;MAC5E,MAAME,MAAM,GAAGD,MAAM,CAAC,aAAa,CAAC;MACpC;MACA;MACAF,MAAM,CAACG,MAAM,CAAC,CAACC,OAAO,CACpB,uEACF,CAAC;IACH,CAAC,CAAC;IAEFH,EAAE,CAAC,oDAAoD,EAAE,MAAM;MAC7D,MAAMI,KAAK,GAAG,wBAAwB;MACtC,MAAMC,OAAO,GAAGJ,MAAM,CAACG,KAAK,CAAC;MAC7B,MAAME,OAAO,GAAGL,MAAM,CAACG,KAAK,CAAC;MAC7BL,MAAM,CAACM,OAAO,CAAC,CAACE,IAAI,CAACD,OAAO,CAAC;IAC/B,CAAC,CAAC;IAEFN,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1D,MAAMK,OAAO,GAAGJ,MAAM,CAAC,SAAS,CAAC;MACjC,MAAMK,OAAO,GAAGL,MAAM,CAAC,SAAS,CAAC;MACjCF,MAAM,CAACM,OAAO,CAAC,CAACG,GAAG,CAACD,IAAI,CAACD,OAAO,CAAC;IACnC,CAAC,CAAC;IAEFN,EAAE,CAAC,sBAAsB,EAAE,MAAM;MAC/B,MAAME,MAAM,GAAGD,MAAM,CAAC,EAAE,CAAC;MACzBF,MAAM,CAACG,MAAM,CAAC,CAACC,OAAO,CACpB,uEACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- {"mappings":"","names":[],"sources":["../../src/ridUtils.test.ts"],"version":3,"file":"ridUtils.test.d.ts"}