@voxgig/sdkgen 1.3.14 → 1.3.18

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.
Files changed (549) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/action.js.map +1 -1
  3. package/dist/action/feature.js.map +1 -1
  4. package/dist/action/target.js.map +1 -1
  5. package/dist/cmp/AgentGuide.js.map +1 -1
  6. package/dist/cmp/AgentGuideContent.js.map +1 -1
  7. package/dist/cmp/AgentGuideFeature.js.map +1 -1
  8. package/dist/cmp/AgentGuideTop.js.map +1 -1
  9. package/dist/cmp/Changelog.js.map +1 -1
  10. package/dist/cmp/Deploy.js.map +1 -1
  11. package/dist/cmp/Entity.js +5 -1
  12. package/dist/cmp/Entity.js.map +1 -1
  13. package/dist/cmp/Feature.js +2 -1
  14. package/dist/cmp/Feature.js.map +1 -1
  15. package/dist/cmp/FeatureHook.js.map +1 -1
  16. package/dist/cmp/License.js.map +1 -1
  17. package/dist/cmp/Main.js.map +1 -1
  18. package/dist/cmp/Readme.js.map +1 -1
  19. package/dist/cmp/ReadmeEntity.js.map +1 -1
  20. package/dist/cmp/ReadmeErrors.js +1 -1
  21. package/dist/cmp/ReadmeErrors.js.map +1 -1
  22. package/dist/cmp/ReadmeExplanation.js +2 -2
  23. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  24. package/dist/cmp/ReadmeHowto.js.map +1 -1
  25. package/dist/cmp/ReadmeInstall.js.map +1 -1
  26. package/dist/cmp/ReadmeIntro.js.map +1 -1
  27. package/dist/cmp/ReadmeModel.js.map +1 -1
  28. package/dist/cmp/ReadmeOptions.js.map +1 -1
  29. package/dist/cmp/ReadmeQuick.js.map +1 -1
  30. package/dist/cmp/ReadmeRef.js.map +1 -1
  31. package/dist/cmp/ReadmeTop.js +1 -1
  32. package/dist/cmp/ReadmeTop.js.map +1 -1
  33. package/dist/cmp/Security.js.map +1 -1
  34. package/dist/cmp/Test.js.map +1 -1
  35. package/dist/helpers/buildIdNames.js.map +1 -1
  36. package/dist/helpers/canonType.d.ts +3 -2
  37. package/dist/helpers/canonType.js +112 -24
  38. package/dist/helpers/canonType.js.map +1 -1
  39. package/dist/helpers/collectDeps.d.ts +1 -1
  40. package/dist/helpers/collectDeps.js +36 -13
  41. package/dist/helpers/collectDeps.js.map +1 -1
  42. package/dist/helpers/getMatchEntries.js.map +1 -1
  43. package/dist/helpers/naming.d.ts +7 -1
  44. package/dist/helpers/naming.js +90 -0
  45. package/dist/helpers/naming.js.map +1 -1
  46. package/dist/helpers/opExample.d.ts +1 -1
  47. package/dist/helpers/opExample.js +37 -20
  48. package/dist/helpers/opExample.js.map +1 -1
  49. package/dist/helpers/opShape.d.ts +5 -1
  50. package/dist/helpers/opShape.js +174 -7
  51. package/dist/helpers/opShape.js.map +1 -1
  52. package/dist/helpers/packageMeta.js.map +1 -1
  53. package/dist/sdkgen.d.ts +3 -3
  54. package/dist/sdkgen.js +12 -2
  55. package/dist/sdkgen.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/utility.js.map +1 -1
  59. package/package.json +20 -14
  60. package/project/.sdk/model/target/cpp.aontu +4 -4
  61. package/project/.sdk/model/target/go-cli.aontu +17 -17
  62. package/project/.sdk/model/target/go-mcp.aontu +11 -11
  63. package/project/.sdk/model/target/go.aontu +1 -1
  64. package/project/.sdk/model/target/haskell.aontu +6 -3
  65. package/project/.sdk/model/target/java.aontu +4 -4
  66. package/project/.sdk/model/target/kotlin.aontu +4 -4
  67. package/project/.sdk/model/target/lean.aontu +51 -0
  68. package/project/.sdk/model/target/scala.aontu +4 -4
  69. package/project/.sdk/model/target/zig.aontu +12 -2
  70. package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
  71. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +167 -0
  72. package/project/.sdk/src/cmp/c/Entity_c.ts +3 -3
  73. package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
  74. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
  75. package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +169 -0
  76. package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
  77. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
  78. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
  79. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
  80. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
  81. package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
  82. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
  83. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
  84. package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
  85. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
  86. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
  87. package/project/.sdk/src/cmp/c/TestDirect_c.ts +3 -3
  88. package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
  89. package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
  90. package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
  91. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
  92. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
  93. package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +65 -0
  94. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
  95. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
  96. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
  97. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
  98. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
  99. package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
  100. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
  101. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
  102. package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
  103. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
  104. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
  105. package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
  106. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
  107. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
  108. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
  109. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +3 -3
  110. package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +2 -2
  111. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
  112. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
  113. package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +136 -0
  114. package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
  115. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
  116. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
  117. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
  118. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
  119. package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
  120. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
  121. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
  122. package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
  123. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
  124. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
  125. package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +3 -3
  126. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
  127. package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -0
  128. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +195 -0
  129. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +3 -3
  130. package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +2 -2
  131. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
  132. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
  133. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
  134. package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +210 -0
  135. package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
  136. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
  137. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
  138. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
  139. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
  140. package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
  141. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
  142. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
  143. package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
  144. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
  145. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
  146. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
  147. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
  148. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -30
  149. package/project/.sdk/src/cmp/dart/Entity_dart.ts +11 -3
  150. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +2 -2
  151. package/project/.sdk/src/cmp/dart/Main_dart.ts +3 -3
  152. package/project/.sdk/src/cmp/dart/Package_dart.ts +1 -1
  153. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
  154. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  155. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  156. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
  157. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  158. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  159. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  160. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  161. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
  162. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
  163. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  164. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
  165. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  166. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +4 -4
  167. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
  168. package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
  169. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
  170. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
  171. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
  172. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +164 -0
  173. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +1 -1
  174. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
  175. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  176. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
  177. package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +144 -0
  178. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
  179. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
  180. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
  181. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
  182. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
  183. package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
  184. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
  185. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
  186. package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
  187. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
  188. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
  189. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
  190. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
  191. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
  192. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
  193. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
  194. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
  195. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
  196. package/project/.sdk/src/cmp/go/Config_go.ts +4 -1
  197. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +121 -20
  198. package/project/.sdk/src/cmp/go/Entity_go.ts +3 -3
  199. package/project/.sdk/src/cmp/go/Main_go.ts +7 -6
  200. package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
  201. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
  202. package/project/.sdk/src/cmp/go/TestDirect_go.ts +3 -3
  203. package/project/.sdk/src/cmp/go/TestEntity_go.ts +11 -4
  204. package/project/.sdk/src/cmp/go/utility_go.ts +28 -2
  205. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +249 -44
  206. package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
  207. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +200 -31
  208. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
  209. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
  210. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  211. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  212. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  213. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  214. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
  215. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  216. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
  217. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
  218. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  219. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  220. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  221. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
  222. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +206 -0
  223. package/project/.sdk/src/cmp/java/Entity_java.ts +3 -3
  224. package/project/.sdk/src/cmp/java/MainEntity_java.ts +2 -2
  225. package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
  226. package/project/.sdk/src/cmp/java/Package_java.ts +1 -1
  227. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
  228. package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +208 -0
  229. package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
  230. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
  231. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
  232. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
  233. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
  234. package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
  235. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
  236. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
  237. package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
  238. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
  239. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
  240. package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
  241. package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
  242. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -9
  243. package/project/.sdk/src/cmp/js/Entity_js.ts +3 -3
  244. package/project/.sdk/src/cmp/js/MainEntity_js.ts +6 -4
  245. package/project/.sdk/src/cmp/js/Main_js.ts +2 -2
  246. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
  247. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
  248. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
  249. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  250. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
  251. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
  252. package/project/.sdk/src/cmp/js/TestDirect_js.ts +10 -9
  253. package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
  254. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
  255. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +200 -0
  256. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +3 -3
  257. package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +2 -2
  258. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
  259. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +1 -1
  260. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
  261. package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +198 -0
  262. package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
  263. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
  264. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
  265. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
  266. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
  267. package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
  268. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
  269. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
  270. package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
  271. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
  272. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
  273. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
  274. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
  275. package/project/.sdk/src/cmp/lean/Config_lean.ts +88 -0
  276. package/project/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
  277. package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
  278. package/project/.sdk/src/cmp/lean/Main_lean.ts +120 -0
  279. package/project/.sdk/src/cmp/lean/Package_lean.ts +68 -0
  280. package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
  281. package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
  282. package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
  283. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +38 -0
  284. package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
  285. package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
  286. package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
  287. package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
  288. package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +16 -0
  289. package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
  290. package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
  291. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +18 -0
  292. package/project/.sdk/src/cmp/lean/Test_lean.ts +207 -0
  293. package/project/.sdk/src/cmp/lean/utility_lean.ts +78 -0
  294. package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
  295. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -6
  296. package/project/.sdk/src/cmp/lua/Entity_lua.ts +3 -3
  297. package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
  298. package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -1
  299. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  300. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
  301. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
  302. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  303. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  304. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
  305. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +8 -3
  306. package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
  307. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
  308. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
  309. package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +126 -0
  310. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
  311. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
  312. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
  313. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
  314. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
  315. package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
  316. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
  317. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
  318. package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
  319. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
  320. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
  321. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
  322. package/project/.sdk/src/cmp/perl/Entity_perl.ts +3 -3
  323. package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +2 -2
  324. package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
  325. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
  326. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
  327. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
  328. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
  329. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
  330. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
  331. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
  332. package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
  333. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
  334. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
  335. package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
  336. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
  337. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
  338. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
  339. package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
  340. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -7
  341. package/project/.sdk/src/cmp/php/Entity_php.ts +3 -3
  342. package/project/.sdk/src/cmp/php/MainEntity_php.ts +2 -2
  343. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  344. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
  345. package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
  346. package/project/.sdk/src/cmp/php/TestEntity_php.ts +8 -3
  347. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -8
  348. package/project/.sdk/src/cmp/py/Entity_py.ts +4 -12
  349. package/project/.sdk/src/cmp/py/MainEntity_py.ts +2 -2
  350. package/project/.sdk/src/cmp/py/Main_py.ts +2 -2
  351. package/project/.sdk/src/cmp/py/Package_py.ts +1 -1
  352. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  353. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
  354. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
  355. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  356. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  357. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  358. package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
  359. package/project/.sdk/src/cmp/py/TestEntity_py.ts +8 -3
  360. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +32 -8
  361. package/project/.sdk/src/cmp/rb/Entity_rb.ts +3 -3
  362. package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +2 -2
  363. package/project/.sdk/src/cmp/rb/Package_rb.ts +2 -2
  364. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  365. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
  366. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
  367. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  368. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  369. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  370. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
  371. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +8 -3
  372. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +6 -2
  373. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +151 -0
  374. package/project/.sdk/src/cmp/rust/Entity_rust.ts +4 -4
  375. package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +2 -2
  376. package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
  377. package/project/.sdk/src/cmp/rust/Package_rust.ts +1 -1
  378. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
  379. package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +144 -0
  380. package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
  381. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
  382. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
  383. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
  384. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
  385. package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
  386. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
  387. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
  388. package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
  389. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
  390. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
  391. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
  392. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
  393. package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
  394. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +201 -0
  395. package/project/.sdk/src/cmp/scala/Entity_scala.ts +3 -3
  396. package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +2 -2
  397. package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
  398. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
  399. package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +182 -0
  400. package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
  401. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
  402. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
  403. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
  404. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
  405. package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
  406. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
  407. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
  408. package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
  409. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
  410. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
  411. package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +3 -3
  412. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
  413. package/project/.sdk/src/cmp/scala/Test_scala.ts +9 -1
  414. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +151 -0
  415. package/project/.sdk/src/cmp/swift/Entity_swift.ts +3 -3
  416. package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +2 -2
  417. package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
  418. package/project/.sdk/src/cmp/swift/Package_swift.ts +1 -1
  419. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
  420. package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +187 -0
  421. package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
  422. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
  423. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
  424. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
  425. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
  426. package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
  427. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
  428. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
  429. package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
  430. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
  431. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
  432. package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +1 -1
  433. package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
  434. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -6
  435. package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -3
  436. package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +6 -4
  437. package/project/.sdk/src/cmp/ts/Main_ts.ts +2 -2
  438. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
  439. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
  440. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
  441. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  442. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
  443. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
  444. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +17 -15
  445. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
  446. package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
  447. package/project/.sdk/src/cmp/zig/Entity_zig.ts +4 -4
  448. package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +2 -2
  449. package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
  450. package/project/.sdk/src/cmp/zig/Package_zig.ts +61 -0
  451. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
  452. package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
  453. package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
  454. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
  455. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
  456. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
  457. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
  458. package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
  459. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
  460. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
  461. package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
  462. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
  463. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
  464. package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
  465. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
  466. package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
  467. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
  468. package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
  469. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +8 -16
  470. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +10 -28
  471. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
  472. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
  473. package/project/.sdk/tm/dart/test/primary_test.dart +7 -0
  474. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
  475. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
  476. package/project/.sdk/tm/go/feature/test_feature.go +33 -1
  477. package/project/.sdk/tm/go/test/primary_utility_test.go +41 -42
  478. package/project/.sdk/tm/go/test/runner_test.go +30 -1
  479. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
  480. package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
  481. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +7 -24
  482. package/project/.sdk/tm/js/Makefile +1 -1
  483. package/project/.sdk/tm/js/jsconfig.json +12 -0
  484. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +18 -1
  485. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +8 -0
  486. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +7 -20
  487. package/project/.sdk/tm/lean/LICENSE +21 -0
  488. package/project/.sdk/tm/lean/VERSION +1 -0
  489. package/project/.sdk/tm/lean/src/SdkFeature.lean +171 -0
  490. package/project/.sdk/tm/lean/src/SdkFeatures.lean +602 -0
  491. package/project/.sdk/tm/lean/src/SdkJson.lean +134 -0
  492. package/project/.sdk/tm/lean/src/SdkRuntime.lean +356 -0
  493. package/project/.sdk/tm/lean/src/SdkUtility.lean +617 -0
  494. package/project/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
  495. package/project/.sdk/tm/lean/src/Vregex.lean +412 -0
  496. package/project/.sdk/tm/lean/src/feature/README.md +5 -0
  497. package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  498. package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  499. package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  500. package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  501. package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  502. package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  503. package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  504. package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  505. package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  506. package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  507. package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  508. package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  509. package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  510. package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  511. package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  512. package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  513. package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  514. package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  515. package/project/.sdk/tm/lean/test/StructCorpus.lean +697 -0
  516. package/project/.sdk/tm/lean/test/TFeature.lean +268 -0
  517. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +349 -0
  518. package/project/.sdk/tm/lua/test/primary_utility_test.lua +10 -8
  519. package/project/.sdk/tm/ocaml/Makefile +5 -1
  520. package/project/.sdk/tm/perl/t/primary_utility.t +8 -17
  521. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +9 -7
  522. package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
  523. package/project/.sdk/tm/py/feature/test_feature.py +28 -1
  524. package/project/.sdk/tm/py/test/test_primary_utility.py +13 -18
  525. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
  526. package/project/.sdk/tm/rb/feature/test_feature.rb +24 -1
  527. package/project/.sdk/tm/rb/test/primary_utility_test.rb +7 -8
  528. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
  529. package/project/.sdk/tm/rust/tests/common/mod.rs +37 -1
  530. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +12 -26
  531. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
  532. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +7 -8
  533. package/project/.sdk/tm/ts/Makefile +1 -1
  534. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +18 -1
  535. package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +65 -21
  536. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  537. package/src/cmp/Entity.ts +5 -1
  538. package/src/cmp/Feature.ts +2 -1
  539. package/src/cmp/ReadmeErrors.ts +2 -2
  540. package/src/cmp/ReadmeExplanation.ts +3 -3
  541. package/src/cmp/ReadmeTop.ts +2 -2
  542. package/src/helpers/canonType.ts +121 -25
  543. package/src/helpers/collectDeps.ts +39 -12
  544. package/src/helpers/naming.ts +106 -0
  545. package/src/helpers/opExample.ts +43 -20
  546. package/src/helpers/opShape.ts +197 -11
  547. package/src/sdkgen.ts +13 -3
  548. package/src/tsconfig.json +2 -0
  549. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -31,6 +31,38 @@ describe('PrimaryUtility', async () => {
31
31
  }
32
32
 
33
33
 
34
+ // Sections deliberately left empty in the shared corpus
35
+ // (.sdk/test/primary/<name>.aontu carries a PENDING header). Everything
36
+ // else MUST contribute cases.
37
+ const PENDING = new Set([
38
+ 'fetcher', 'makeFetchDef', 'makePoint', 'makeResult',
39
+ 'featureAdd', 'featureHook', 'featureInit',
40
+ ])
41
+
42
+ // Run one corpus section, failing loudly when it would run ZERO cases.
43
+ // A renamed section or a fixture that compiled to an empty `set` used to
44
+ // pass silently, which defeats the point of a shared oracle. (The guard
45
+ // lives here rather than in runner.ts, which is vendored verbatim from
46
+ // @voxgig/struct and must stay byte-identical to upstream.)
47
+ //
48
+ // EVERY corpus-backed test goes through here — a guard that only some
49
+ // sections opt into leaves the rest able to run zero assertions, which is
50
+ // the exact hole it was added to close.
51
+ async function runsection(name: string, subject: Function) {
52
+ const section = spec[name]
53
+ ok(null != section,
54
+ `test corpus section '${name}' missing — check the name against .sdk/test/primary/`)
55
+ ok(null != section.basic && Array.isArray(section.basic.set),
56
+ `test corpus section '${name}' has no basic.set list`)
57
+ if (0 === section.basic.set.length && !PENDING.has(name)) {
58
+ throw new Error(
59
+ `test corpus section '${name}' is EMPTY — zero cases would run; ` +
60
+ `add cases, or mark the fixture PENDING in .sdk/test/primary/`)
61
+ }
62
+ return runset(section.basic, subject)
63
+ }
64
+
65
+
34
66
  before(async () => {
35
67
  const runner = await makeRunner(TEST_JSON_FILE, await SDK.test())
36
68
  const run = await runner('primary')
@@ -61,24 +93,24 @@ describe('PrimaryUtility', async () => {
61
93
 
62
94
 
63
95
  test('context-basic', async () => {
64
- await runset(spec.makeContext.basic, utility.makeContext)
96
+ await runsection('makeContext', utility.makeContext)
65
97
  })
66
98
 
67
99
 
68
100
  test('method-basic', async () => {
69
- await runset(spec.prepareMethod.basic, utility.prepareMethod)
101
+ await runsection('prepareMethod', utility.prepareMethod)
70
102
  })
71
103
 
72
104
 
73
105
  test('headers-basic', async () => {
74
- await runset(spec.prepareHeaders.basic, utility.prepareHeaders)
106
+ await runsection('prepareHeaders', utility.prepareHeaders)
75
107
  })
76
108
 
77
109
 
78
110
  test('auth-basic', async () => {
79
111
  const sdkopts = spec.prepareAuth?.DEF?.setup?.a || {}
80
112
  const authClient = SDK.test({}, sdkopts)
81
- await runset(spec.prepareAuth.basic, (ctx: any) => {
113
+ await runsection('prepareAuth', (ctx: any) => {
82
114
  ctx.client = authClient
83
115
  fixctx(ctx)
84
116
  return utility.prepareAuth(ctx)
@@ -87,17 +119,17 @@ describe('PrimaryUtility', async () => {
87
119
 
88
120
 
89
121
  test('params-basic', async () => {
90
- await runset(spec.prepareParams.basic, utility.prepareParams)
122
+ await runsection('prepareParams', utility.prepareParams)
91
123
  })
92
124
 
93
125
 
94
126
  test('query-basic', async () => {
95
- await runset(spec.prepareQuery.basic, utility.prepareQuery)
127
+ await runsection('prepareQuery', utility.prepareQuery)
96
128
  })
97
129
 
98
130
 
99
131
  test('body-basic', async () => {
100
- await runset(spec.prepareBody.basic, (ctx: any) => {
132
+ await runsection('prepareBody', (ctx: any) => {
101
133
  fixctx(ctx)
102
134
  return utility.prepareBody(ctx)
103
135
  })
@@ -105,17 +137,17 @@ describe('PrimaryUtility', async () => {
105
137
 
106
138
 
107
139
  test('findparam-basic', async () => {
108
- await runset(spec.param.basic, utility.param)
140
+ await runsection('param', utility.param)
109
141
  })
110
142
 
111
143
 
112
144
  test('fullurl-basic', async () => {
113
- await runset(spec.makeUrl.basic, utility.makeUrl)
145
+ await runsection('makeUrl', utility.makeUrl)
114
146
  })
115
147
 
116
148
 
117
149
  test('operator-basic', async () => {
118
- await runset(spec.operator.basic, (opmap: any) => ({
150
+ await runsection('operator', (opmap: any) => ({
119
151
  entity: opmap.entity || '_',
120
152
  name: opmap.name || '_',
121
153
  input: opmap.input || '_',
@@ -125,7 +157,7 @@ describe('PrimaryUtility', async () => {
125
157
 
126
158
 
127
159
  test('options-basic', async () => {
128
- await runset(spec.makeOptions.basic, (vin: any) => {
160
+ await runsection('makeOptions', (vin: any) => {
129
161
  const ctx = utility.makeContext({ options: vin.options, config: vin.config })
130
162
  ctx.client = client
131
163
  ctx.utility = utility
@@ -137,7 +169,7 @@ describe('PrimaryUtility', async () => {
137
169
  test('spec-basic', async () => {
138
170
  const sdkopts = spec.makeSpec?.DEF?.setup?.a || {}
139
171
  const specClient = SDK.test({}, sdkopts)
140
- await runset(spec.makeSpec.basic, (ctx: any) => {
172
+ await runsection('makeSpec', (ctx: any) => {
141
173
  ctx.client = specClient
142
174
  ctx.options = specClient.options()
143
175
  return utility.makeSpec(ctx)
@@ -146,17 +178,17 @@ describe('PrimaryUtility', async () => {
146
178
 
147
179
 
148
180
  test('reqform-basic', async () => {
149
- await runset(spec.transformRequest.basic, utility.transformRequest)
181
+ await runsection('transformRequest', utility.transformRequest)
150
182
  })
151
183
 
152
184
 
153
185
  test('resform-basic', async () => {
154
- await runset(spec.transformResponse.basic, utility.transformResponse)
186
+ await runsection('transformResponse', utility.transformResponse)
155
187
  })
156
188
 
157
189
 
158
190
  test('resbasic-basic', async () => {
159
- await runset(spec.resultBasic.basic, (ctx: any) => {
191
+ await runsection('resultBasic', (ctx: any) => {
160
192
  fixctx(ctx)
161
193
  return utility.resultBasic(ctx)
162
194
  })
@@ -164,7 +196,7 @@ describe('PrimaryUtility', async () => {
164
196
 
165
197
 
166
198
  test('resheaders-basic', async () => {
167
- await runset(spec.resultHeaders.basic, (ctx: any) => {
199
+ await runsection('resultHeaders', (ctx: any) => {
168
200
  // Convert plain headers map to forEach-based (browser Response API)
169
201
  if (ctx.response?.headers && !ctx.response.headers.forEach) {
170
202
  const h = ctx.response.headers
@@ -178,7 +210,7 @@ describe('PrimaryUtility', async () => {
178
210
 
179
211
 
180
212
  test('resbody-basic', async () => {
181
- await runset(spec.resultBody.basic, async (ctx: any) => {
213
+ await runsection('resultBody', async (ctx: any) => {
182
214
  if (ctx.response && !ctx.response.json) {
183
215
  const body = ctx.response.body
184
216
  ctx.response.json = async () => body
@@ -200,7 +232,7 @@ describe('PrimaryUtility', async () => {
200
232
  system: { fetch: mockFetch }
201
233
  })
202
234
  const reqUtility = reqClient.utility()
203
- await runset(spec.makeRequest.basic, async (ctx: any) => {
235
+ await runsection('makeRequest', async (ctx: any) => {
204
236
  ctx.client = reqClient
205
237
  ctx.utility = reqUtility
206
238
  ctx.options = reqClient.options()
@@ -210,7 +242,7 @@ describe('PrimaryUtility', async () => {
210
242
 
211
243
 
212
244
  test('response-basic', async () => {
213
- await runset(spec.makeResponse.basic, async (ctx: any) => {
245
+ await runsection('makeResponse', async (ctx: any) => {
214
246
  fixctx(ctx)
215
247
  // Add json() and forEach to response for proper TS handling
216
248
  if (ctx.response && !ctx.response.json) {
@@ -229,7 +261,7 @@ describe('PrimaryUtility', async () => {
229
261
 
230
262
 
231
263
  test('done-basic', async () => {
232
- await runset(spec.done.basic, (ctx: any) => {
264
+ await runsection('done', (ctx: any) => {
233
265
  fixctx(ctx)
234
266
  return utility.done(ctx)
235
267
  })
@@ -237,7 +269,7 @@ describe('PrimaryUtility', async () => {
237
269
 
238
270
 
239
271
  test('error-basic', async () => {
240
- await runset(spec.makeError.basic, (...args: any[]) => {
272
+ await runsection('makeError', (...args: any[]) => {
241
273
  const ctx = args[0]
242
274
  fixctx(ctx)
243
275
  return utility.makeError(...args)
@@ -424,6 +456,18 @@ describe('PrimaryUtility', async () => {
424
456
  })
425
457
 
426
458
 
459
+ test('path-basic', async () => {
460
+ // preparePath shipped as an empty `set: []` — every port "passed" it while
461
+ // running zero cases. Now corpus-driven like every other section.
462
+ await runsection('preparePath', (ctx: any) => utility.preparePath(ctx))
463
+ })
464
+
465
+
466
+ test('clean-corpus', async () => {
467
+ await runsection('clean', (...args: any[]) => utility.clean(args[0], args[1]))
468
+ })
469
+
470
+
427
471
  test('clean', () => {
428
472
  const ctx = makeFullCtx()
429
473
  const val = { key: 'secret123', name: 'test' }
@@ -3731,7 +3731,7 @@ fn validationModify(allocator: Allocator, _: JsonValue, key: []const u8, parent:
3731
3731
  var bad = std.ArrayList([]const u8).init(allocator);
3732
3732
  for (ckeys.array.data.items) |ck| {
3733
3733
  if (ck != .string) continue;
3734
- if (!((haskey(allocator, pval, ck) catch false))) {
3734
+ if (!((pval == .object) and (pval.object.get(ck.string) != null))) {
3735
3735
  bad.append(ck.string) catch {};
3736
3736
  }
3737
3737
  }
package/src/cmp/Entity.ts CHANGED
@@ -21,8 +21,12 @@ const Entity = cmp(function Entity(props: any) {
21
21
  const Entity_sdk = requirePath(ctx$, `./cmp/${target.name}/Entity_${target.name}`)
22
22
  Entity_sdk['Entity']({ target, entity, entitySDK })
23
23
 
24
+ // Log identifiers, not the model subtrees. `target` and `entity` are large
25
+ // aontu nodes and this fires once per entity per target (thousands of times
26
+ // for a big API x 22 targets), so passing them serialised the whole model
27
+ // fragment each time at default log level.
24
28
  log.info({
25
- point: 'generate-entity', target, entity,
29
+ point: 'generate-entity', target: target.name, entity: entity.name,
26
30
  note: 'target:' + target.name + ', ' + 'entity: ' + entity.name
27
31
  })
28
32
  })
@@ -19,7 +19,8 @@ const Feature = cmp(function Feature(props: any) {
19
19
  }
20
20
 
21
21
  log.info({
22
- point: 'generate-feature', target, feature,
22
+ // Identifiers only — see the note in Entity.ts.
23
+ point: 'generate-feature', target: target.name, feature: feature.name,
23
24
  note: 'target:' + target.name + ', ' + 'feature: ' + feature.name
24
25
  })
25
26
 
@@ -9,7 +9,7 @@ import {
9
9
  import { entityIdField, pickExampleEntity } from '../helpers/opShape'
10
10
  import { primaryOpCall } from '../helpers/opExample'
11
11
  import type { ExampleLang, PrimaryCall } from '../helpers/opExample'
12
- import { safeVarName } from '../helpers/naming'
12
+ import { safeVarName, exampleVarName } from '../helpers/naming'
13
13
 
14
14
 
15
15
  // Error handling is one of the everyday developer tasks, so it gets its
@@ -241,7 +241,7 @@ const ReadmeErrors = cmp(function ReadmeErrors(props: any) {
241
241
  const eName = ex.Name || (ex.name[0].toUpperCase() + ex.name.slice(1))
242
242
  // Sanitise the variable name against the target's reserved words (a
243
243
  // `Delete` entity must not bind `const delete = ...`).
244
- const eLower = safeVarName(eName.toLowerCase(), target.name)
244
+ const eLower = exampleVarName(eName.toLowerCase(), target.name)
245
245
  const idF = entityIdField(ex)
246
246
  const call = primaryOpCall(target.name as ExampleLang, eName, eLower, primaryOp, idF, ex)
247
247
  Content(lang.entity(call, primaryOp))
@@ -11,7 +11,7 @@ import { requirePath } from '../utility'
11
11
  import { entityIdField, pickExampleEntity } from '../helpers/opShape'
12
12
  import { idLiteral, matchArg, dataArg } from '../helpers/opExample'
13
13
  import type { ExampleLang } from '../helpers/opExample'
14
- import { safeVarName } from '../helpers/naming'
14
+ import { safeVarName, exampleVarName } from '../helpers/naming'
15
15
 
16
16
 
17
17
  function cap(s: string): string {
@@ -240,7 +240,7 @@ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
240
240
  eName = ex.Name || (ex.name[0].toUpperCase() + ex.name.slice(1))
241
241
  // Sanitise against the target's reserved words (a `Delete` entity must
242
242
  // not bind `const delete = ...`).
243
- eLower = safeVarName(eName.toLowerCase(), target.name)
243
+ eLower = exampleVarName(eName.toLowerCase(), target.name)
244
244
  const idF = entityIdField(ex)
245
245
  const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
246
246
  // Type-correct example id literal (numeric when the id param is integer-
@@ -252,7 +252,7 @@ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
252
252
  if ('list' === primaryOp) {
253
253
  stateArg = 'go' === target.name ? 'nil' : ''
254
254
  } else if (isMatchOp) {
255
- stateArg = matchArg(lname, idF, idLit)
255
+ stateArg = matchArg(lname, ex, primaryOp as string, idF, idLit)
256
256
  } else {
257
257
  stateArg = dataArg(lname, ex, primaryOp as string, idF)
258
258
  }
@@ -10,7 +10,7 @@ import { requirePath } from '../utility'
10
10
 
11
11
  import { entityPrimaryOp, entityIdField, opRequestShape } from '../helpers/opShape'
12
12
  import { canonKey } from '../helpers/canonType'
13
- import { safeVarName } from '../helpers/naming'
13
+ import { safeVarName, exampleVarName } from '../helpers/naming'
14
14
 
15
15
  import {
16
16
  installCommand as pkgInstall,
@@ -233,7 +233,7 @@ ${aboutMd.trim()}
233
233
  : ' See the [Entities](#entities) table below for the full list.'
234
234
  const exEnt = activeEntities[0]
235
235
  const ex = exEnt.Name
236
- const exLower = safeVarName(ex.toLowerCase(), 'ts')
236
+ const exLower = exampleVarName(ex.toLowerCase(), 'ts')
237
237
  // The example call uses the entity's PRIMARY op — an op it actually
238
238
  // exposes (prefer list -> the array, then load -> the record, else a
239
239
  // create with its required fields). A create-only entity therefore never
@@ -1,20 +1,27 @@
1
1
  // Canonical type-sentinel -> language primitive type mapper.
2
2
  //
3
- // SOURCE OF TRUTH for the sentinel set: @voxgig/apidef
4
- // ~/Projects/voxgig/apidef ts/src/utility.ts -> `const VALID_CANON`
5
- // (around line 908). VALID_CANON maps an OpenAPI type NAME -> a `$SENTINEL`
6
- // string (e.g. 'string' -> `$STRING`). The model stores those sentinels on
7
- // every `fields[].type` and op `points[].args.params[].type`.
3
+ // SOURCE OF TRUTH for the sentinel set: @voxgig/apidef (`VALID_CANON` +
4
+ // `CANON_ONE`, exported from the package). VALID_CANON maps an OpenAPI type
5
+ // NAME -> a `$SENTINEL` string (e.g. 'string' -> `$STRING`). The model stores
6
+ // those sentinels on every `fields[].type` and op `points[].args.params[].type`.
7
+ // A multi-type (OpenAPI `type: [a, b]`) is stored as the ARRAY-shaped union
8
+ // sentinel `['`$ONE`', [member, ...]]` (see canonToType below).
8
9
  //
9
10
  // This table maps the SENTINEL the other way -> a concrete primitive type in
10
11
  // each target language, so the typed-model generators (EntityTypes_<lang>.ts)
11
- // can turn the model's field/param sentinels into real language types.
12
+ // and the README type columns (ReadmeRef_<lang>.ts / ReadmeEntity_<lang>.ts)
13
+ // can turn the model's field/param sentinels into real language types. It is
14
+ // the SINGLE mapping per language: components must not keep local copies.
12
15
  //
13
- // Kept as a small duplicate here (rather than importing VALID_CANON) because
14
- // VALID_CANON is name->sentinel, is not exported from @voxgig/apidef, and would
15
- // need inverting; a sentinel->type table is what every language generator
16
- // actually needs. If VALID_CANON gains a new sentinel, add a row below (all
17
- // languages) and keep the two in sync.
16
+ // Kept as a small mirror here (rather than importing VALID_CANON at runtime)
17
+ // because apidef is a peer dependency and the table is the INVERSE direction.
18
+ //
19
+ // `ts/test/canonsync.test.ts` guards it two ways: the vocabulary and every
20
+ // language column are pinned LOCALLY (that check always runs), and the table
21
+ // is cross-checked against apidef's exported VALID_CANON/CANON_ONE when the
22
+ // installed apidef exports them. Note that the currently published apidef
23
+ // (6.3.1) does NOT export them, so the cross-check skips — do not rely on it
24
+ // alone; add a new sentinel to the local list in the same change.
18
25
  //
19
26
  // KNOWN GAPS (papered over sanely, documented for the port):
20
27
  // - Unknown / missing sentinel -> the language's "any" (never throws).
@@ -25,30 +32,99 @@
25
32
  // language's open record/map type.
26
33
  // - No enum/format/nullability beyond the `req` flag.
27
34
 
28
- // Target languages sdkgen supports (go-cli / go-mcp reuse 'go').
29
- type CanonLang = 'ts' | 'js' | 'py' | 'php' | 'rb' | 'lua' | 'go'
35
+ // Target languages sdkgen supports (go-cli / go-mcp reuse 'go'). The targets
36
+ // with a fully dynamic value model (clojure, haskell, ocaml, perl, zig) have
37
+ // no column: they emit no typed models and document types via the language's
38
+ // dynamic Value/map vocabulary.
39
+ type CanonLang =
40
+ | 'ts' | 'js' | 'py' | 'php' | 'rb' | 'lua' | 'go'
41
+ | 'csharp' | 'java' | 'kotlin' | 'scala' | 'swift' | 'dart'
42
+ | 'rust' | 'c' | 'cpp' | 'elixir'
30
43
 
31
44
  // Bare sentinel key (backticks + leading `$` stripped, upper-cased)
32
45
  // -> per-language primitive type name.
33
46
  //
34
- // ONLY the `ts` column is exercised + tested today (the reference target).
35
- // The other columns are a starting scaffold for the per-language port; verify
36
- // each against that language's idioms before wiring its EntityTypes_<lang>.ts.
47
+ // Column notes:
48
+ // - kotlin: every type is nullable (`?`) the kotlin emitter drops
49
+ // per-member optionality because the column is already-nullable.
50
+ // - java/scala: boxed JVM types (nullable), so optionality needs no marker.
51
+ // - rust/c/cpp/swift: `Value`/`voxgig_value*`/`VMap` are the vendored
52
+ // dynamic value types those runtimes ship.
37
53
  const CANON_TYPE: Record<string, Record<CanonLang, string>> = {
38
- STRING: { ts: 'string', js: 'string', py: 'str', php: 'string', rb: 'String', lua: 'string', go: 'string' },
39
- INTEGER: { ts: 'number', js: 'number', py: 'int', php: 'int', rb: 'Integer', lua: 'number', go: 'int' },
40
- NUMBER: { ts: 'number', js: 'number', py: 'float', php: 'float', rb: 'Float', lua: 'number', go: 'float64' },
41
- BOOLEAN: { ts: 'boolean', js: 'boolean', py: 'bool', php: 'bool', rb: 'Boolean', lua: 'boolean', go: 'bool' },
42
- NULL: { ts: 'null', js: 'null', py: 'None', php: 'null', rb: 'NilClass', lua: 'nil', go: 'any' },
43
- ARRAY: { ts: 'any[]', js: 'Array', py: 'list', php: 'array', rb: 'Array', lua: 'table', go: '[]any' },
44
- OBJECT: { ts: 'Record<string, any>', js: 'Object', py: 'dict', php: 'array', rb: 'Hash', lua: 'table', go: 'map[string]any' },
45
- ANY: { ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object', lua: 'any', go: 'any' },
54
+ STRING: {
55
+ ts: 'string', js: 'string', py: 'str', php: 'string', rb: 'String',
56
+ lua: 'string', go: 'string', csharp: 'string', java: 'String',
57
+ kotlin: 'String?', scala: 'String', swift: 'String', dart: 'String',
58
+ rust: 'String', c: 'char*', cpp: 'std::string', elixir: 'String.t()',
59
+ },
60
+ INTEGER: {
61
+ ts: 'number', js: 'number', py: 'int', php: 'int', rb: 'Integer',
62
+ lua: 'number', go: 'int', csharp: 'long', java: 'Long',
63
+ kotlin: 'Long?', scala: 'java.lang.Long', swift: 'Int', dart: 'int',
64
+ rust: 'i64', c: 'int64_t', cpp: 'int64_t', elixir: 'integer()',
65
+ },
66
+ NUMBER: {
67
+ ts: 'number', js: 'number', py: 'float', php: 'float', rb: 'Float',
68
+ lua: 'number', go: 'float64', csharp: 'double', java: 'Double',
69
+ kotlin: 'Double?', scala: 'java.lang.Double', swift: 'Double', dart: 'num',
70
+ rust: 'f64', c: 'double', cpp: 'double', elixir: 'float()',
71
+ },
72
+ BOOLEAN: {
73
+ ts: 'boolean', js: 'boolean', py: 'bool', php: 'bool', rb: 'Boolean',
74
+ lua: 'boolean', go: 'bool', csharp: 'bool', java: 'Boolean',
75
+ kotlin: 'Boolean?', scala: 'java.lang.Boolean', swift: 'Bool', dart: 'bool',
76
+ rust: 'bool', c: 'bool', cpp: 'bool', elixir: 'boolean()',
77
+ },
78
+ NULL: {
79
+ ts: 'null', js: 'null', py: 'None', php: 'null', rb: 'NilClass',
80
+ lua: 'nil', go: 'any', csharp: 'object?', java: 'Object',
81
+ kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'Object',
82
+ rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'nil',
83
+ },
84
+ ARRAY: {
85
+ ts: 'any[]', js: 'Array', py: 'list', php: 'array', rb: 'Array',
86
+ lua: 'table', go: '[]any', csharp: 'List<object?>', java: 'List<Object>',
87
+ kotlin: 'List<Any?>?', scala: 'java.util.List[Object]', swift: '[Value]',
88
+ dart: 'List<dynamic>', rust: 'Vec<Value>', c: 'voxgig_value*',
89
+ cpp: 'std::vector<Value>', elixir: 'list()',
90
+ },
91
+ OBJECT: {
92
+ ts: 'Record<string, any>', js: 'Object', py: 'dict', php: 'array',
93
+ rb: 'Hash', lua: 'table', go: 'map[string]any',
94
+ csharp: 'Dictionary<string, object?>', java: 'Map<String, Object>',
95
+ kotlin: 'Map<String, Any?>?', scala: 'java.util.Map[String, Object]',
96
+ swift: 'VMap', dart: 'Map<String, dynamic>',
97
+ rust: 'std::collections::HashMap<String, Value>', c: 'voxgig_value*',
98
+ cpp: 'std::map<std::string, Value>', elixir: 'map()',
99
+ },
100
+ ANY: {
101
+ ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object',
102
+ lua: 'any', go: 'any', csharp: 'object?', java: 'Object',
103
+ kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'dynamic',
104
+ rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'any()',
105
+ },
46
106
  }
47
107
 
48
108
  // Per-language fallback for unknown / missing sentinels.
49
109
  // js uses JSDoc's `*` (any type); lua uses `any` (LuaLS).
50
110
  const CANON_ANY: Record<CanonLang, string> = {
51
- ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object', lua: 'any', go: 'any',
111
+ ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object',
112
+ lua: 'any', go: 'any', csharp: 'object?', java: 'Object',
113
+ kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'dynamic',
114
+ rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'any()',
115
+ }
116
+
117
+ // Union ($ONE) member separator for languages with a native union/sum type
118
+ // syntax. Languages absent here have no way to express an anonymous union in
119
+ // a type position, so a $ONE sentinel degrades to that language's "any".
120
+ // (php 8 unions exist but cannot combine with the `?` optional prefix the
121
+ // emitters use, so php deliberately degrades to `mixed`.)
122
+ const CANON_UNION_JOIN: Partial<Record<CanonLang, string>> = {
123
+ ts: ' | ',
124
+ js: '|',
125
+ py: ' | ',
126
+ lua: '|',
127
+ elixir: ' | ',
52
128
  }
53
129
 
54
130
 
@@ -64,10 +140,29 @@ function canonKey(sentinel: unknown): string {
64
140
 
65
141
  // Map a field/param type sentinel to a target-language primitive type.
66
142
  // Unknown or missing sentinel -> that language's "any" (never throws).
143
+ //
144
+ // The union sentinel `['`$ONE`', [member, ...]]` (apidef CANON_ONE, produced
145
+ // for OpenAPI multi-types) renders as a joined member union in languages with
146
+ // union syntax (see CANON_UNION_JOIN); elsewhere it degrades to "any".
147
+ // Members may themselves be unions (handled recursively) or the literal
148
+ // 'Any' apidef emits for an unknown member name (canonKey maps it to ANY).
67
149
  function canonToType(sentinel: unknown, lang: string): string {
68
150
  const l = lang as CanonLang
69
151
  const fallback = CANON_ANY[l] ?? 'any'
70
152
 
153
+ if (Array.isArray(sentinel)) {
154
+ if ('ONE' === canonKey(sentinel[0]) && Array.isArray(sentinel[1])) {
155
+ const join = CANON_UNION_JOIN[l]
156
+ if (null == join) {
157
+ return fallback
158
+ }
159
+ const members = sentinel[1].map((m: unknown) => canonToType(m, l))
160
+ const uniq = members.filter((m: string, i: number) => members.indexOf(m) === i)
161
+ return 0 === uniq.length ? fallback : uniq.join(join)
162
+ }
163
+ return fallback
164
+ }
165
+
71
166
  const row = CANON_TYPE[canonKey(sentinel)]
72
167
  if (null == row) {
73
168
  return fallback
@@ -82,6 +177,7 @@ export {
82
177
  canonKey,
83
178
  CANON_TYPE,
84
179
  CANON_ANY,
180
+ CANON_UNION_JOIN,
85
181
  }
86
182
 
87
183
  export type {
@@ -27,21 +27,53 @@ function collectDeps(
27
27
  model: SdkModel,
28
28
  targetName: string,
29
29
  targetDeps: Record<string, ModelDep> | undefined,
30
+ log?: any,
30
31
  ): DepEntry[] {
31
32
  const out: DepEntry[] = []
32
33
  const feature = getModelPath(model, `main.${KIT}.feature`)
33
34
 
35
+ // Deduplicate by package name. Two features can require the same package
36
+ // (or a feature and the target itself can), and every Package_<lang>.ts
37
+ // renders one manifest line per entry — a duplicate key is a hard parse
38
+ // error in go.mod and Cargo.toml, and silently last-wins in package.json.
39
+ // FIRST occurrence wins, so the deterministic (sorted-key) feature order
40
+ // decides; a conflicting version is reported rather than silently dropped.
41
+ const seen: Record<string, DepEntry> = {}
42
+
43
+ const add = (dep: any, source: 'feature' | 'target', owner: string) => {
44
+ const name = dep.key$
45
+ if (null == name) return
46
+
47
+ const prev = seen[name]
48
+ if (null != prev) {
49
+ if (log?.warn && prev.version !== dep.version) {
50
+ log.warn({
51
+ point: 'dep-version-conflict', target: targetName, dep: name,
52
+ kept: prev.version, dropped: dep.version, from: owner,
53
+ note: `${targetName}: dependency ${name} declared twice with ` +
54
+ `different versions — keeping ${prev.version} (${prev.source}), ` +
55
+ `ignoring ${dep.version} (${source} ${owner})`,
56
+ })
57
+ }
58
+ return
59
+ }
60
+
61
+ const entry: DepEntry = {
62
+ name,
63
+ version: dep.version,
64
+ source,
65
+ raw: dep,
66
+ }
67
+ seen[name] = entry
68
+ out.push(entry)
69
+ }
70
+
34
71
  each(feature, (f: any) => {
35
72
  const langDeps = f?.deps?.[targetName]
36
73
  if (!langDeps) return
37
74
  each(langDeps, (dep: any) => {
38
75
  if (dep?.active) {
39
- out.push({
40
- name: dep.key$,
41
- version: dep.version,
42
- source: 'feature',
43
- raw: dep,
44
- })
76
+ add(dep, 'feature', f.name)
45
77
  }
46
78
  })
47
79
  })
@@ -49,12 +81,7 @@ function collectDeps(
49
81
  if (targetDeps) {
50
82
  each(targetDeps, (dep: any) => {
51
83
  if (dep?.active !== false) {
52
- out.push({
53
- name: dep.key$,
54
- version: dep.version,
55
- source: 'target',
56
- raw: dep,
57
- })
84
+ add(dep, 'target', targetName)
58
85
  }
59
86
  })
60
87
  }