@voxgig/sdkgen 2.0.2 → 3.1.0

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 (403) hide show
  1. package/bin/voxgig-sdkgen +22 -2
  2. package/dist/action/doctor.d.ts +14 -0
  3. package/dist/action/doctor.js +351 -0
  4. package/dist/action/doctor.js.map +1 -0
  5. package/dist/action/feature.js +48 -9
  6. package/dist/action/feature.js.map +1 -1
  7. package/dist/action/target.d.ts +6 -1
  8. package/dist/action/target.js +134 -22
  9. package/dist/action/target.js.map +1 -1
  10. package/dist/cmp/Entity.js +5 -0
  11. package/dist/cmp/Entity.js.map +1 -1
  12. package/dist/cmp/ExternalTarget.d.ts +2 -0
  13. package/dist/cmp/ExternalTarget.js +104 -0
  14. package/dist/cmp/ExternalTarget.js.map +1 -0
  15. package/dist/cmp/Feature.js +2 -1
  16. package/dist/cmp/Feature.js.map +1 -1
  17. package/dist/cmp/Main.js +5 -1
  18. package/dist/cmp/Main.js.map +1 -1
  19. package/dist/cmp/ReadmeExplanation.js +1 -1
  20. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  21. package/dist/cmp/ReadmeTop.js +16 -6
  22. package/dist/cmp/ReadmeTop.js.map +1 -1
  23. package/dist/cmp/Registered.d.ts +7 -0
  24. package/dist/cmp/Registered.js +70 -0
  25. package/dist/cmp/Registered.js.map +1 -0
  26. package/dist/cmp/Test.js +3 -1
  27. package/dist/cmp/Test.js.map +1 -1
  28. package/dist/helpers/dryrun.d.ts +10 -0
  29. package/dist/helpers/dryrun.js +35 -0
  30. package/dist/helpers/dryrun.js.map +1 -0
  31. package/dist/helpers/featureSource.d.ts +13 -0
  32. package/dist/helpers/featureSource.js +156 -0
  33. package/dist/helpers/featureSource.js.map +1 -0
  34. package/dist/helpers/naming.d.ts +9 -1
  35. package/dist/helpers/naming.js +66 -2
  36. package/dist/helpers/naming.js.map +1 -1
  37. package/dist/helpers/opExample.js +23 -3
  38. package/dist/helpers/opExample.js.map +1 -1
  39. package/dist/helpers/opShape.d.ts +11 -1
  40. package/dist/helpers/opShape.js +51 -0
  41. package/dist/helpers/opShape.js.map +1 -1
  42. package/dist/helpers/packageMeta.d.ts +16 -1
  43. package/dist/helpers/packageMeta.js +181 -10
  44. package/dist/helpers/packageMeta.js.map +1 -1
  45. package/dist/helpers/stdrep.d.ts +3 -0
  46. package/dist/helpers/stdrep.js +47 -0
  47. package/dist/helpers/stdrep.js.map +1 -0
  48. package/dist/helpers/testPolicy.d.ts +2 -0
  49. package/dist/helpers/testPolicy.js +46 -0
  50. package/dist/helpers/testPolicy.js.map +1 -0
  51. package/dist/sdkgen.d.ts +15 -6
  52. package/dist/sdkgen.js +273 -5
  53. package/dist/sdkgen.js.map +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/dist/types.d.ts +12 -0
  56. package/dist/utility.js +10 -1
  57. package/dist/utility.js.map +1 -1
  58. package/model/sdkgen.aontu +245 -0
  59. package/package.json +5 -3
  60. package/project/.sdk/model/target/c.aontu +28 -3
  61. package/project/.sdk/model/target/clojure.aontu +24 -3
  62. package/project/.sdk/model/target/cpp.aontu +25 -3
  63. package/project/.sdk/model/target/csharp.aontu +25 -3
  64. package/project/.sdk/model/target/dart.aontu +15 -3
  65. package/project/.sdk/model/target/elixir.aontu +15 -3
  66. package/project/.sdk/model/target/go-cli.aontu +16 -1
  67. package/project/.sdk/model/target/go-mcp.aontu +16 -1
  68. package/project/.sdk/model/target/go.aontu +14 -4
  69. package/project/.sdk/model/target/haskell.aontu +24 -3
  70. package/project/.sdk/model/target/java.aontu +25 -3
  71. package/project/.sdk/model/target/js.aontu +15 -3
  72. package/project/.sdk/model/target/kotlin.aontu +25 -3
  73. package/project/.sdk/model/target/lean.aontu +24 -3
  74. package/project/.sdk/model/target/lua.aontu +15 -3
  75. package/project/.sdk/model/target/ocaml.aontu +24 -3
  76. package/project/.sdk/model/target/perl.aontu +15 -3
  77. package/project/.sdk/model/target/php.aontu +15 -3
  78. package/project/.sdk/model/target/py-data.aontu +15 -3
  79. package/project/.sdk/model/target/py.aontu +15 -3
  80. package/project/.sdk/model/target/rb.aontu +15 -3
  81. package/project/.sdk/model/target/rust.aontu +25 -3
  82. package/project/.sdk/model/target/scala.aontu +24 -3
  83. package/project/.sdk/model/target/seneca-provider.aontu +118 -0
  84. package/project/.sdk/model/target/swift.aontu +25 -3
  85. package/project/.sdk/model/target/ts.aontu +15 -3
  86. package/project/.sdk/model/target/zig.aontu +25 -3
  87. package/project/.sdk/src/cmp/c/Config_c.ts +10 -11
  88. package/project/.sdk/src/cmp/c/Entity_c.ts +5 -1
  89. package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +23 -5
  90. package/project/.sdk/src/cmp/c/fragment/EntityCreateOp.fragment.c +9 -2
  91. package/project/.sdk/src/cmp/c/fragment/EntityListOp.fragment.c +19 -2
  92. package/project/.sdk/src/cmp/c/fragment/EntityLoadOp.fragment.c +9 -2
  93. package/project/.sdk/src/cmp/c/fragment/EntityRemoveOp.fragment.c +12 -2
  94. package/project/.sdk/src/cmp/c/fragment/EntityUpdateOp.fragment.c +9 -2
  95. package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +1 -0
  96. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +6 -3
  97. package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +18 -1
  98. package/project/.sdk/src/cmp/clojure/fragment/EntityCreateOp.fragment.clj +2 -2
  99. package/project/.sdk/src/cmp/clojure/fragment/EntityLoadOp.fragment.clj +2 -2
  100. package/project/.sdk/src/cmp/clojure/fragment/EntityRemoveOp.fragment.clj +12 -8
  101. package/project/.sdk/src/cmp/clojure/fragment/EntityUpdateOp.fragment.clj +2 -2
  102. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +5 -1
  103. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +12 -9
  104. package/project/.sdk/src/cmp/cpp/fragment/EntityCreateOp.fragment.cpp +8 -2
  105. package/project/.sdk/src/cmp/cpp/fragment/EntityListOp.fragment.cpp +18 -2
  106. package/project/.sdk/src/cmp/cpp/fragment/EntityLoadOp.fragment.cpp +8 -2
  107. package/project/.sdk/src/cmp/cpp/fragment/EntityRemoveOp.fragment.cpp +11 -2
  108. package/project/.sdk/src/cmp/cpp/fragment/EntityUpdateOp.fragment.cpp +8 -2
  109. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +2 -1
  110. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
  111. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +6 -6
  112. package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +38 -1
  113. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +42 -33
  114. package/project/.sdk/src/cmp/dart/Package_dart.ts +2 -1
  115. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +13 -2
  116. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +2 -1
  117. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +3 -3
  118. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +1 -1
  119. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +17 -6
  120. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +13 -2
  121. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +13 -2
  122. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +3 -3
  123. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +8 -8
  124. package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +18 -1
  125. package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +9 -1
  126. package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +9 -1
  127. package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +15 -1
  128. package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +9 -1
  129. package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +8 -0
  130. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  131. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
  132. package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +11 -2
  133. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +2 -1
  134. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +1 -0
  135. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +2 -1
  136. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -1
  137. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +2 -1
  138. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +38 -8
  139. package/project/.sdk/src/cmp/go/Entity_go.ts +2 -2
  140. package/project/.sdk/src/cmp/go/Main_go.ts +4 -5
  141. package/project/.sdk/src/cmp/go/Package_go.ts +8 -5
  142. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +2 -2
  143. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +2 -2
  144. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +4 -2
  145. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +2 -2
  146. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +2 -2
  147. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +2 -2
  148. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +2 -2
  149. package/project/.sdk/src/cmp/go/TestDirect_go.ts +21 -15
  150. package/project/.sdk/src/cmp/go/TestEntity_go.ts +9 -9
  151. package/project/.sdk/src/cmp/go/Test_go.ts +2 -2
  152. package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +42 -1
  153. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +4 -4
  154. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +4 -4
  155. package/project/.sdk/src/cmp/haskell/Package_haskell.ts +2 -1
  156. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +10 -5
  157. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +10 -8
  158. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +14 -10
  159. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +21 -18
  160. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +4 -4
  161. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +23 -11
  162. package/project/.sdk/src/cmp/java/Package_java.ts +2 -1
  163. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +2 -1
  164. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +2 -2
  165. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +1 -1
  166. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +3 -3
  167. package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
  168. package/project/.sdk/src/cmp/java/TestEntity_java.ts +6 -6
  169. package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +34 -1
  170. package/project/.sdk/src/cmp/java/fragment/SdkError.fragment.java +12 -0
  171. package/project/.sdk/src/cmp/js/Main_js.ts +4 -1
  172. package/project/.sdk/src/cmp/js/Package_js.ts +7 -1
  173. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +13 -2
  174. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +2 -1
  175. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +13 -2
  176. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +13 -2
  177. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +2 -1
  178. package/project/.sdk/src/cmp/js/TestDirect_js.ts +3 -3
  179. package/project/.sdk/src/cmp/js/TestEntity_js.ts +8 -8
  180. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +22 -1
  181. package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +9 -1
  182. package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +9 -1
  183. package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +15 -1
  184. package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +9 -1
  185. package/project/.sdk/src/cmp/js/fragment/SdkError.fragment.js +13 -0
  186. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +2 -1
  187. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +2 -1
  188. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +2 -2
  189. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +1 -1
  190. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +3 -3
  191. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
  192. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +6 -6
  193. package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +32 -1
  194. package/project/.sdk/src/cmp/lean/Package_lean.ts +3 -1
  195. package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +9 -4
  196. package/project/.sdk/src/cmp/lua/Package_lua.ts +4 -3
  197. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +11 -3
  198. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +1 -1
  199. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
  200. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +9 -9
  201. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +37 -1
  202. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +12 -0
  203. package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +30 -3
  204. package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +11 -5
  205. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +3 -1
  206. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +10 -5
  207. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +6 -2
  208. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +10 -8
  209. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +14 -13
  210. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +20 -18
  211. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +4 -4
  212. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +8 -2
  213. package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +8 -5
  214. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +2 -1
  215. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +1 -1
  216. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +3 -3
  217. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +1 -1
  218. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
  219. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +6 -6
  220. package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +36 -1
  221. package/project/.sdk/src/cmp/php/MainEntity_php.ts +21 -16
  222. package/project/.sdk/src/cmp/php/Package_php.ts +2 -2
  223. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +6 -6
  224. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +4 -3
  225. package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +2 -2
  226. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +1 -1
  227. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +12 -12
  228. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +6 -6
  229. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +4 -4
  230. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +2 -2
  231. package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
  232. package/project/.sdk/src/cmp/php/TestEntity_php.ts +17 -15
  233. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +20 -1
  234. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +11 -0
  235. package/project/.sdk/src/cmp/py/Package_py.ts +4 -3
  236. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +13 -2
  237. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +2 -1
  238. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +1 -1
  239. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +17 -6
  240. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +14 -3
  241. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +13 -2
  242. package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
  243. package/project/.sdk/src/cmp/py/TestEntity_py.ts +9 -9
  244. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +29 -1
  245. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +11 -0
  246. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +2 -1
  247. package/project/.sdk/src/cmp/rb/Package_rb.ts +4 -3
  248. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +1 -1
  249. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +2 -1
  250. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +5 -5
  251. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +1 -1
  252. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
  253. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +9 -9
  254. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +31 -1
  255. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +10 -1
  256. package/project/.sdk/src/cmp/rust/Entity_rust.ts +5 -1
  257. package/project/.sdk/src/cmp/rust/Main_rust.ts +21 -0
  258. package/project/.sdk/src/cmp/rust/Package_rust.ts +2 -1
  259. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
  260. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +12 -12
  261. package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +18 -0
  262. package/project/.sdk/src/cmp/rust/fragment/EntityCreateOp.fragment.rs +8 -2
  263. package/project/.sdk/src/cmp/rust/fragment/EntityListOp.fragment.rs +20 -3
  264. package/project/.sdk/src/cmp/rust/fragment/EntityLoadOp.fragment.rs +8 -2
  265. package/project/.sdk/src/cmp/rust/fragment/EntityRemoveOp.fragment.rs +10 -2
  266. package/project/.sdk/src/cmp/rust/fragment/EntityUpdateOp.fragment.rs +8 -2
  267. package/project/.sdk/src/cmp/rust/fragment/SdkError.fragment.rs +10 -0
  268. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +2 -1
  269. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
  270. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +1 -1
  271. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +3 -3
  272. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +3 -3
  273. package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +27 -1
  274. package/project/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +3915 -0
  275. package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +960 -0
  276. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +2 -1
  277. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
  278. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +1 -1
  279. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +3 -3
  280. package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +34 -1
  281. package/project/.sdk/src/cmp/ts/EntityOperation_ts.ts +9 -1
  282. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +18 -1
  283. package/project/.sdk/src/cmp/ts/Gitignore_ts.ts +5 -2
  284. package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -1
  285. package/project/.sdk/src/cmp/ts/Package_ts.ts +10 -1
  286. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +13 -2
  287. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +2 -1
  288. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +21 -6
  289. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +52 -2
  290. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +14 -3
  291. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +34 -2
  292. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +64 -43
  293. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +8 -8
  294. package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +2 -2
  295. package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +2 -2
  296. package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +25 -1
  297. package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +10 -2
  298. package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +1 -1
  299. package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +10 -2
  300. package/project/.sdk/src/cmp/ts/fragment/EntityRemoveOp.fragment.ts +27 -3
  301. package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +10 -2
  302. package/project/.sdk/src/cmp/ts/fragment/SdkError.fragment.ts +15 -0
  303. package/project/.sdk/src/cmp/zig/Entity_zig.ts +5 -1
  304. package/project/.sdk/src/cmp/zig/Package_zig.ts +3 -1
  305. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +39 -0
  306. package/project/.sdk/src/cmp/zig/fragment/EntityCreateOp.fragment.zig +2 -2
  307. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +21 -2
  308. package/project/.sdk/src/cmp/zig/fragment/EntityLoadOp.fragment.zig +2 -2
  309. package/project/.sdk/src/cmp/zig/fragment/EntityRemoveOp.fragment.zig +5 -2
  310. package/project/.sdk/src/cmp/zig/fragment/EntityUpdateOp.fragment.zig +2 -2
  311. package/project/.sdk/tm/c/VERSION +1 -1
  312. package/project/.sdk/tm/c/core/helpers.c +1 -0
  313. package/project/.sdk/tm/c/core/sdk.h +22 -6
  314. package/project/.sdk/tm/c/tests/feature_harness.h +1 -0
  315. package/project/.sdk/tm/c/tests/primary_utility_test.c +4 -1
  316. package/project/.sdk/tm/c/utility/make_url.c +1 -0
  317. package/project/.sdk/tm/c/utility/param.c +1 -0
  318. package/project/.sdk/tm/clojure/VERSION +1 -1
  319. package/project/.sdk/tm/cpp/VERSION +1 -1
  320. package/project/.sdk/tm/cpp/core/types.hpp +33 -8
  321. package/project/.sdk/tm/cpp/test/pipeline_test.cpp +5 -0
  322. package/project/.sdk/tm/cpp/test/runner_support.hpp +4 -4
  323. package/project/.sdk/tm/csharp/VERSION +1 -1
  324. package/project/.sdk/tm/csharp/core/Types.cs +6 -0
  325. package/project/.sdk/tm/csharp/test/FeatureHarness.cs +396 -0
  326. package/project/.sdk/tm/csharp/test/FeatureTest.cs +7 -385
  327. package/project/.sdk/tm/csharp/test/Runner.cs +4 -4
  328. package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +4 -0
  329. package/project/.sdk/tm/dart/test/utility.dart +4 -4
  330. package/project/.sdk/tm/elixir/VERSION +1 -1
  331. package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +26 -0
  332. package/project/.sdk/tm/go/VERSION +1 -1
  333. package/project/.sdk/tm/go/core/types.go +6 -0
  334. package/project/.sdk/tm/go/test/feature_harness_test.go +361 -0
  335. package/project/.sdk/tm/go/test/feature_test.go +7 -350
  336. package/project/.sdk/tm/go/test/pipeline_test.go +6 -0
  337. package/project/.sdk/tm/go/test/runner_test.go +16 -4
  338. package/project/.sdk/tm/haskell/VERSION +1 -1
  339. package/project/.sdk/tm/haskell/src/SdkFeatures.hs +28 -5
  340. package/project/.sdk/tm/haskell/src/SdkTypes.hs +14 -5
  341. package/project/.sdk/tm/java/VERSION +1 -1
  342. package/project/.sdk/tm/java/test/RunnerSupport.java +4 -4
  343. package/project/.sdk/tm/java/utility/MakeError.java +4 -0
  344. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +4 -0
  345. package/project/.sdk/tm/js/test/utility.js +3 -3
  346. package/project/.sdk/tm/kotlin/VERSION +1 -1
  347. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +3 -3
  348. package/project/.sdk/tm/lean/VERSION +1 -1
  349. package/project/.sdk/tm/lean/test/TFeature.lean +27 -14
  350. package/project/.sdk/tm/lua/test/runner.lua +4 -4
  351. package/project/.sdk/tm/lua/utility/make_error.lua +4 -0
  352. package/project/.sdk/tm/ocaml/VERSION +1 -1
  353. package/project/.sdk/tm/ocaml/sdk_types.ml +14 -5
  354. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +5 -2
  355. package/project/.sdk/tm/perl/t/runner.pm +4 -4
  356. package/project/.sdk/tm/php/VERSION +1 -1
  357. package/project/.sdk/tm/php/test/Runner.php +4 -4
  358. package/project/.sdk/tm/php/utility/MakeError.php +5 -0
  359. package/project/.sdk/tm/py/pkg/utility/make_error.py +4 -0
  360. package/project/.sdk/tm/py/test/runner.py +19 -4
  361. package/project/.sdk/tm/rb/test/runner.rb +4 -4
  362. package/project/.sdk/tm/rb/utility/make_error.rb +4 -0
  363. package/project/.sdk/tm/rust/VERSION +1 -1
  364. package/project/.sdk/tm/rust/core/types.rs +22 -6
  365. package/project/.sdk/tm/rust/tests/common/mod.rs +6 -6
  366. package/project/.sdk/tm/rust/tests/pipeline_test.rs +6 -0
  367. package/project/.sdk/tm/rust/utility/make_error.rs +4 -0
  368. package/project/.sdk/tm/scala/VERSION +1 -1
  369. package/project/.sdk/tm/seneca-provider/CODE_OF_CONDUCT.md +132 -0
  370. package/project/.sdk/tm/seneca-provider/LICENSE +21 -0
  371. package/project/.sdk/tm/seneca-provider/Makefile +15 -0
  372. package/project/.sdk/tm/seneca-provider/src/tsconfig.json +18 -0
  373. package/project/.sdk/tm/seneca-provider/test/tsconfig.json +16 -0
  374. package/project/.sdk/tm/seneca-provider/tsfmt.json +3 -0
  375. package/project/.sdk/tm/swift/VERSION +1 -1
  376. package/project/.sdk/tm/ts/src/tsconfig.json +1 -0
  377. package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +4 -0
  378. package/project/.sdk/tm/ts/test/tsconfig.json +1 -0
  379. package/project/.sdk/tm/ts/test/utility.ts +3 -3
  380. package/project/.sdk/tm/zig/VERSION +1 -1
  381. package/src/action/doctor.ts +475 -0
  382. package/src/action/feature.ts +54 -16
  383. package/src/action/target.ts +174 -25
  384. package/src/cmp/Entity.ts +7 -0
  385. package/src/cmp/ExternalTarget.ts +125 -0
  386. package/src/cmp/Feature.ts +3 -1
  387. package/src/cmp/Main.ts +7 -1
  388. package/src/cmp/ReadmeExplanation.ts +2 -2
  389. package/src/cmp/ReadmeTop.ts +22 -9
  390. package/src/cmp/Registered.ts +100 -0
  391. package/src/cmp/Test.ts +4 -1
  392. package/src/helpers/dryrun.ts +57 -0
  393. package/src/helpers/featureSource.ts +208 -0
  394. package/src/helpers/naming.ts +73 -2
  395. package/src/helpers/opExample.ts +19 -2
  396. package/src/helpers/opShape.ts +65 -0
  397. package/src/helpers/packageMeta.ts +211 -10
  398. package/src/helpers/stdrep.ts +56 -0
  399. package/src/helpers/testPolicy.ts +52 -0
  400. package/src/sdkgen.ts +350 -5
  401. package/src/types.ts +24 -1
  402. package/src/utility.ts +10 -1
  403. package/project/.sdk/tm/rust/feature/mod.rs +0 -24
@@ -13,6 +13,124 @@ main: def: {
13
13
  # `<sdk>/.sdk/model/config.aontu`.
14
14
  main: kit: config: docs_order: *['ts','py','php','go','rb','lua'] | [&: string]
15
15
 
16
+ # How the generated test suites behave.
17
+ main: kit: test: {
18
+
19
+ live: {
20
+ # Whether a live run ASSERTS or merely observes.
21
+ #
22
+ # false (the default, and the right answer for a fleet SDK generated
23
+ # against an arbitrary third-party API): a non-2xx in live mode is an
24
+ # early return, not a failure. Synthetic IDs 4xx constantly and list
25
+ # response shapes vary wildly, so asserting would mean permanent red.
26
+ #
27
+ # true: live assertions match the offline ones — a non-2xx FAILS, and a
28
+ # missing idmap entry fails rather than skipping. Set this when the
29
+ # project OWNS the server it tests against; otherwise a live suite passes
30
+ # with nothing listening on the port, which is what it did.
31
+ #
32
+ # Overridable per target:
33
+ # main: kit: target: go: test: live: strict: true
34
+ strict: *false | boolean
35
+
36
+ # The base URL a live run points at. '' derives it from the spec's first
37
+ # declared server, but ONLY when that is a loopback address.
38
+ #
39
+ # For an OpenAPI-derived model `servers[0].url` is the PRODUCTION host of
40
+ # a third-party API, and a generated live suite runs under `npm test` on
41
+ # every CI push. Inferring the base from the spec therefore pointed CI at
42
+ # a stranger's API — unauthenticated, on three operating systems, on every
43
+ # push — and pointed the generated write scripts there too. A live target
44
+ # is now taken only when it is unambiguously ours: declared here, or
45
+ # loopback, which nobody else can be behind.
46
+ base: *'' | string
47
+
48
+ # Whether the SDK's own repo ships a runnable companion server under
49
+ # `app/`. NOTHING in an API definition says so — it is a property of the
50
+ # sibling project — so it cannot be inferred, and inferring it put an
51
+ # unconditional `git clone && cd app && npm install && npm run build` into
52
+ # a generated provider's CI, which fails the job for any repo without one.
53
+ app: *false | boolean
54
+ }
55
+ }
56
+
57
+
58
+ # ---------------------------------------------------------------------------
59
+ # SDK IDENTITY
60
+ #
61
+ # The root `name` slug is FOUR different things wearing one name. Each is
62
+ # derived from the slug by default; each can differ, and in practice does:
63
+ #
64
+ # 1. IDENTIFIERS class names (AcmeSDK, AcmeError), entity classes, the Go
65
+ # root package identifier, the test env-var prefix.
66
+ # Source: `name`. No override — this IS what the slug is.
67
+ #
68
+ # 2. SOURCE where the code lives: the repo URL, and the base of the
69
+ # Go module path. -> main: kit: repo: path
70
+ #
71
+ # 3. PUBLISHED what a consumer installs: the npm/PyPI/... package name.
72
+ # -> main: kit: target: <t>: publish: registry: package
73
+ #
74
+ # 4. GO PACKAGE the `package x` identifier in the generated Go root file.
75
+ # -> main: kit: target: <t>: module: package
76
+ #
77
+ # Conflating them is not theoretical. A project whose repo was named
78
+ # `<org>-<product>-sdk` rather than `<slug>-sdk` had only one lever — rename
79
+ # the slug — and renaming it to fix (2) silently renamed (1), doubled the org
80
+ # prefix in (4) (`package voxgigvoxgigsolardemosdk`), and would have orphaned
81
+ # (3) had the package already been published. Each override below exists
82
+ # because a real project needed those four values to differ.
83
+ #
84
+ # Set `name` to what the SDK IS. Override the other three when the world
85
+ # disagrees with the derivation.
86
+ # ---------------------------------------------------------------------------
87
+
88
+ # Where this SDK's source repository lives.
89
+ #
90
+ # `<origin>/<name>-sdk` is only the DEFAULT. A project whose repo is named
91
+ # anything else had no way to say so, and got a go module path that 404s on
92
+ # `go get` plus homepage/repository/bugs URLs pointing at a repo that does
93
+ # not exist. The only escape was renaming `name`, which also renames the SDK
94
+ # classes — a public-API break, and no help to a project already published.
95
+ main: kit: repo: {
96
+ # '<org>/<repo>' under the host. '' -> '<origin>/<name>-sdk'.
97
+ path: *'' | string
98
+
99
+ host: *'github.com' | string
100
+ }
101
+
102
+
103
+ # WHO WROTE THIS PACKAGE — the manifest's `author` and `contributors`.
104
+ #
105
+ # Generated output is overwritten, so attribution hand-edited into a
106
+ # package.json is silently DELETED on the next regeneration. That is exactly
107
+ # what happened the first time the seneca-provider target regenerated a
108
+ # hand-written provider repo: the manifest's author and its two named
109
+ # contributors were dropped, and nothing failed to warn about it — credit is
110
+ # not something a build can miss.
111
+ #
112
+ # So it is declared here, like every other value a project owns about itself.
113
+ # Unset means the PUBLISHER (Voxgig), which is what a generated SDK carries
114
+ # and what a project that has never thought about it should get.
115
+ #
116
+ # main: kit: author: { name: 'Ada Lovelace', url: 'https://example.com' }
117
+ # main: kit: contributor: 'ada': { name: 'Ada Lovelace', url: '...' }
118
+ #
119
+ # `contributor` is a MAP, not a list, because aontu unifies maps by key: a
120
+ # project can add one contributor without restating the others, and a
121
+ # duplicate key is a conflict rather than a silent second entry. Emitters
122
+ # render it in sorted-key order, so the manifest is byte-stable.
123
+ main: kit: author: {
124
+ name: *'' | string
125
+ url: *'' | string
126
+ }
127
+
128
+ main: kit: contributor: &: {
129
+ name: string
130
+ url: *'' | string
131
+ }
132
+
133
+
16
134
  main: kit: target: &: {
17
135
  name: key()
18
136
  active: *true | boolean
@@ -20,12 +138,53 @@ main: kit: target: &: {
20
138
  comment: line: string
21
139
  module: {
22
140
  name: string
141
+
142
+ # Go family only. Full module path, overriding
143
+ # '<repo.host>/<repo.path>/<target>'. Set this when the module path
144
+ # cannot be derived — e.g. a repo whose name is not '<slug>-sdk'.
145
+ path: *'' | string
146
+
147
+ # Go family only. The root package IDENTIFIER — `package acmesdk` — not
148
+ # an import path. Go requires a plain identifier here, so it is
149
+ # concatenated from the slug rather than taken from the repo.
150
+ #
151
+ # '' derives '<origin><slug>sdk', dropping a leading origin prefix the
152
+ # slug already carries: slug 'voxgig-solardemo' under origin 'voxgig-sdk'
153
+ # gives 'voxgigsolardemosdk', not 'voxgigvoxgigsolardemosdk'.
154
+ package: *'' | string
155
+
156
+ # Go family only. The `go` directive written into go.mod. Defaults to
157
+ # 1.21 — the release that introduced `log/slog`, which sdkgen's own
158
+ # `log` feature template imports. go-cli and go-mcp carry higher
159
+ # floors imposed by their dependencies.
160
+ goversion: *'' | string
23
161
  }
24
162
  deps: &: {
25
163
  active: *false | boolean
26
164
  version: *'*' | string
27
165
  }
28
166
 
167
+ # How `target add` trims this target's feature source down to the
168
+ # features the model actually selects. Where that source LIVES is
169
+ # discovered by walking the template tree (helpers/featureSource), so
170
+ # nothing here describes layout — this is only about what a target can
171
+ # survive having removed.
172
+ feature: {
173
+ # Whether the feature set may be trimmed at all. A target whose
174
+ # templates statically reference every shipped feature from a file
175
+ # that cannot simply be dropped (zig's `root.zig`, scala's
176
+ # `SdkTestMain.scala`) must say false until those files are driven
177
+ # from the model — otherwise a trimmed project will not compile.
178
+ trim: *true | boolean
179
+
180
+ # Templates that only compile with the COMPLETE feature set, as paths
181
+ # relative to the target template root. These are the cross-feature
182
+ # test suites: they construct every shipped feature type by name, so a
183
+ # trimmed project drops them along with the features they exercise.
184
+ # A project carrying the full set keeps them.
185
+ fullset: *[] | [&: string]
186
+ }
187
+
29
188
  # Publication: how (and whether) this port is released. Credentials are
30
189
  # always injected by the aql key vault (never on disk or argv).
31
190
  #
@@ -38,7 +197,93 @@ main: kit: target: &: {
38
197
  # Tag-only ports (the go family: the Go proxy resolves from GitHub
39
198
  # tags) simply leave `registry` unset — they are implicitly pending
40
199
  # until their `<target>/vX.Y.Z` tag exists.
200
+ # WHERE this target's files are written.
201
+ #
202
+ # Empty (the default) means the ordinary place: `<sdk-repo>/<target>/`,
203
+ # a folder inside the SDK repo, which is what every language target wants.
204
+ #
205
+ # A target that generates a SEPARATE, independently released package needs
206
+ # somewhere else. The Seneca provider is the case: it is its own npm
207
+ # package in its own repo (`@seneca/<name>-provider`), depends on the ts
208
+ # SDK as a normal published dependency, and carries a repo's worth of
209
+ # furniture — LICENSE, CI workflow, doc/ — that must not land inside the
210
+ # SDK repo.
211
+ #
212
+ # Relative paths resolve against the SDK repo root, so a sibling checkout
213
+ # is `'../<repo>'`. Absolute paths are taken as given.
214
+ #
215
+ # Files are written at the ROOT of that path, NOT under a `<target>/`
216
+ # subfolder: the destination IS the package.
217
+ #
218
+ # Generation into it is a SEPARATE pass, so the repo receives only what
219
+ # this target emits — none of the SDK repo's own root files (README,
220
+ # AGENTS.md, the build scaffold) follow it out.
221
+ output: {
222
+ path: *'' | string
223
+
224
+ # Write into a destination that already holds content this generator did
225
+ # not write.
226
+ #
227
+ # Generation OVERWRITES, jostraca creates missing parent directories, and
228
+ # the path is taken verbatim from the model — so a typo ('.', '..', a
229
+ # target name) fabricates a package tree somewhere arbitrary, or replaces
230
+ # an unrelated repo's package.json, README, LICENSE and CI workflow in
231
+ # place. Generation therefore refuses a destination that is neither
232
+ # absent, nor empty, nor carrying the `.jostraca` bookkeeping a previous
233
+ # generation left there.
234
+ #
235
+ # A repo seeded with its own README/LICENCE before the first generation
236
+ # is the legitimate case that trips the guard. Say so here, once: the
237
+ # point is that the destination is a DECISION, not a typo.
238
+ adopt: *false | boolean
239
+
240
+ # The path from the destination BACK to the SDK project — what the
241
+ # target's own docs, scripts and live tests name when they reach for
242
+ # something the SDK repo distributes only in source (the companion test
243
+ # server in `app/`).
244
+ #
245
+ # '' derives it by inverting the resolved `path`, which is exact only
246
+ # while the walk back crosses nothing this model names — true for
247
+ # '../<repo>', false for anything ascending further. A project declaring
248
+ # '../../seneca/solardemo-provider' derived
249
+ # '../../voxgig-sdk/voxgig-solardemo-sdk', where `voxgig-sdk` is the name
250
+ # of the WORKSPACE DIRECTORY holding the checkout on ONE machine — and
251
+ # that string is committed into the destination's README and test files,
252
+ # so the next developer's layout regenerates a spurious diff and an
253
+ # instruction path that is wrong for everyone else. Declare it here when
254
+ # the destination is more than one level away; generation warns until you
255
+ # do.
256
+ sdkrel: *'' | string
257
+
258
+ # '<org>/<repo>' for the repo the files land in, under `main: kit: repo:
259
+ # host`. A target generating out of tree is usually released from that
260
+ # repo too, so its manifest's homepage/repository/bugs must point there
261
+ # and NOT at the SDK's own repo, which is what they would otherwise
262
+ # derive from.
263
+ #
264
+ # '' lets the target decide: a target that knows its convention (the
265
+ # Seneca provider's is `senecajs/seneca-<name>-provider`) supplies its
266
+ # own default, and falls back to the SDK's repo when it has none.
267
+ repo: *'' | string
268
+ }
269
+
41
270
  publish: {
271
+ # The SDK's OWN release version — what the generated manifest declares
272
+ # and what the port's Makefile tags (`<target>/v<version>`).
273
+ #
274
+ # Generated output is overwritten, so a version hand-edited into
275
+ # package.json / pyproject.toml / VERSION is lost on the next
276
+ # regeneration. It was, repeatedly: every manifest emitter hardcoded
277
+ # '0.0.1', so a project that had published 0.0.2 got its manifest reset
278
+ # and only the 3-way merge (which sdkgen turns off, see
279
+ # docs/explanation/regeneration-overwrite.md) was hiding it. Declare the
280
+ # version here and every port reads the same value.
281
+ #
282
+ # Per TARGET, not per SDK: ports publish to different registries on
283
+ # different clocks, and a Python release should not have to move the
284
+ # npm version.
285
+ version: *'0.0.1' | string
286
+
42
287
  # Git release tag (all ports).
43
288
  tag: {
44
289
  active: *true | boolean
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/sdkgen",
3
- "version": "2.0.2",
3
+ "version": "3.1.0",
4
4
  "main": "dist/sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "engines": {
@@ -55,17 +55,19 @@
55
55
  "@types/node": "26.2.0",
56
56
  "json-schema-to-ts": "3.1.1",
57
57
  "memfs": "4.68.1",
58
+ "pino": "10.3.1",
59
+ "pino-pretty": "13.1.3",
58
60
  "sucrase": "3.35.1",
59
61
  "typescript": "7.0.2"
60
62
  },
61
63
  "peerDependencies": {
62
64
  "@tabnas/jsonic": "0.6.0",
65
+ "@tabnas/parser": "0.8.0",
63
66
  "@voxgig/apidef": ">=0",
64
67
  "@voxgig/struct": ">=0",
65
68
  "@voxgig/util": ">=0",
66
69
  "aontu": ">=0",
67
70
  "jostraca": ">=0",
68
- "shape": ">=0",
69
- "@tabnas/parser": "0.8.0"
71
+ "shape": ">=0"
70
72
  }
71
73
  }
@@ -25,13 +25,38 @@ main: kit: feature: &: target: c: deps: &: {
25
25
 
26
26
 
27
27
  # Publication: C has no central registry — publishing IS the git tag.
28
+ #
29
+ # `target add <t>` OVERWRITES this file, so a project must never set its
30
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
31
+ # name exactly that way. Set them in the project's own model
32
+ # (`model/sdk.aontu`), where they survive a resync.
33
+ #
34
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
35
+ # value does not yield to another concrete value, it CONFLICTS, and two
36
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
37
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
38
+ # `registry.package`, so a project's concrete value wins over the default and
39
+ # repeating them here would only take that away.
40
+ #
41
+ # What remains below is per-target registry IDENTITY, which is not a project
42
+ # choice and stays concrete.
28
43
  main: kit: target: c: publish: {
29
- tag: { active: true }
30
44
  registry: {
31
- state: 'pending'
32
- active: false
33
45
  name: 'none'
34
46
  url: ''
35
47
  vault: { alias: 'none', env: 'NONE' }
36
48
  }
37
49
  }
50
+
51
+
52
+ # Feature source may be trimmed to the model's selection. Two templates need
53
+ # the COMPLETE set, so both are dropped alongside the features they exercise
54
+ # whenever the set is trimmed:
55
+ # tests/feature_test.c — calls every feature_*_new()
56
+ # tests/sdk_pipeline_test.c — drives the retry feature by NAME through the
57
+ # options map, so it fails at RUNTIME rather
58
+ # than at link time when retry is absent
59
+ main: kit: target: c: feature: {
60
+ trim: true
61
+ fullset: ['tests/feature_test.c', 'tests/sdk_pipeline_test.c']
62
+ }
@@ -24,13 +24,34 @@ main: kit: feature: &: target: clojure: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: Clojars registry (declared, publish pending — git-tag only).
27
+ #
28
+ # `target add <t>` OVERWRITES this file, so a project must never set its
29
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
30
+ # name exactly that way. Set them in the project's own model
31
+ # (`model/sdk.aontu`), where they survive a resync.
32
+ #
33
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
34
+ # value does not yield to another concrete value, it CONFLICTS, and two
35
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
36
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
37
+ # `registry.package`, so a project's concrete value wins over the default and
38
+ # repeating them here would only take that away.
39
+ #
40
+ # What remains below is per-target registry IDENTITY, which is not a project
41
+ # choice and stays concrete.
27
42
  main: kit: target: clojure: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'clojars'
33
45
  url: 'https://clojars.org'
34
46
  vault: { alias: 'clojars' }
35
47
  }
36
48
  }
49
+
50
+
51
+ # Feature source is NOT trimmed to the model's selection here: every
52
+ # feature lives inside a single generated module (src/sdk/features.clj),
53
+ # not in per-feature source files, so there is nothing per-feature to
54
+ # leave out. Trimming waits on that module becoming model-driven.
55
+ main: kit: target: clojure: feature: {
56
+ trim: false
57
+ }
@@ -24,12 +24,34 @@ main: kit: feature: &: target: cpp: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: header-only; publishing is the git tag cpp/vX.Y.Z (no registry).
27
+ #
28
+ # `target add <t>` OVERWRITES this file, so a project must never set its
29
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
30
+ # name exactly that way. Set them in the project's own model
31
+ # (`model/sdk.aontu`), where they survive a resync.
32
+ #
33
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
34
+ # value does not yield to another concrete value, it CONFLICTS, and two
35
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
36
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
37
+ # `registry.package`, so a project's concrete value wins over the default and
38
+ # repeating them here would only take that away.
39
+ #
40
+ # What remains below is per-target registry IDENTITY, which is not a project
41
+ # choice and stays concrete.
27
42
  main: kit: target: cpp: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'none'
33
45
  url: ''
34
46
  }
35
47
  }
48
+
49
+
50
+ # Feature source may be trimmed to the model's selection. The one template
51
+ # needing the COMPLETE set is the cross-feature test suite, which includes
52
+ # every feature/<name>.hpp — so it is dropped alongside the features it
53
+ # exercises whenever the set is trimmed.
54
+ main: kit: target: cpp: feature: {
55
+ trim: true
56
+ fullset: ['test/feature_test.cpp']
57
+ }
@@ -23,13 +23,35 @@ main: kit: feature: &: target: csharp: deps: &: {
23
23
 
24
24
 
25
25
  # Publication: NuGet registry (declared, publish pending — git-tag only).
26
+ #
27
+ # `target add <t>` OVERWRITES this file, so a project must never set its
28
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
29
+ # name exactly that way. Set them in the project's own model
30
+ # (`model/sdk.aontu`), where they survive a resync.
31
+ #
32
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
33
+ # value does not yield to another concrete value, it CONFLICTS, and two
34
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
35
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
36
+ # `registry.package`, so a project's concrete value wins over the default and
37
+ # repeating them here would only take that away.
38
+ #
39
+ # What remains below is per-target registry IDENTITY, which is not a project
40
+ # choice and stays concrete.
26
41
  main: kit: target: csharp: publish: {
27
- tag: { active: true }
28
42
  registry: {
29
- state: 'pending'
30
- active: false
31
43
  name: 'nuget'
32
44
  url: 'https://www.nuget.org'
33
45
  vault: { alias: 'nuget', env: 'NUGET_API_KEY' }
34
46
  }
35
47
  }
48
+
49
+
50
+ # Feature source may be trimmed to the model's selection. The one template
51
+ # needing the COMPLETE set is the cross-feature test suite, which
52
+ # constructs every *Feature class — so it is dropped alongside the
53
+ # features it exercises whenever the set is trimmed.
54
+ main: kit: target: csharp: feature: {
55
+ trim: true
56
+ fullset: ['test/FeatureTest.cs']
57
+ }
@@ -22,11 +22,23 @@ main: kit: feature: &: target: dart: deps: &: {
22
22
 
23
23
 
24
24
  # Publication: pub.dev registry (declared, publish pending — git-tag only).
25
+ #
26
+ # `target add <t>` OVERWRITES this file, so a project must never set its
27
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
28
+ # name exactly that way. Set them in the project's own model
29
+ # (`model/sdk.aontu`), where they survive a resync.
30
+ #
31
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
32
+ # value does not yield to another concrete value, it CONFLICTS, and two
33
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
34
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
35
+ # `registry.package`, so a project's concrete value wins over the default and
36
+ # repeating them here would only take that away.
37
+ #
38
+ # What remains below is per-target registry IDENTITY, which is not a project
39
+ # choice and stays concrete.
25
40
  main: kit: target: dart: publish: {
26
- tag: { active: true }
27
41
  registry: {
28
- state: 'pending'
29
- active: false
30
42
  name: 'pub.dev'
31
43
  url: 'https://pub.dev'
32
44
  vault: { alias: 'pubdev', env: 'PUB_CREDENTIALS' }
@@ -21,11 +21,23 @@ main: kit: feature: &: target: elixir: deps: &: {
21
21
 
22
22
 
23
23
  # Publication: hex registry (declared, publish pending — git-tag only).
24
+ #
25
+ # `target add <t>` OVERWRITES this file, so a project must never set its
26
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
27
+ # name exactly that way. Set them in the project's own model
28
+ # (`model/sdk.aontu`), where they survive a resync.
29
+ #
30
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
31
+ # value does not yield to another concrete value, it CONFLICTS, and two
32
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
33
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
34
+ # `registry.package`, so a project's concrete value wins over the default and
35
+ # repeating them here would only take that away.
36
+ #
37
+ # What remains below is per-target registry IDENTITY, which is not a project
38
+ # choice and stays concrete.
24
39
  main: kit: target: elixir: publish: {
25
- tag: { active: true }
26
40
  registry: {
27
- state: 'pending'
28
- active: false
29
41
  name: 'hex'
30
42
  url: 'https://hex.pm'
31
43
  vault: { recipe: 'hex', alias: 'hex' }
@@ -43,6 +43,21 @@ main: kit: feature: &: target: 'go-cli': deps: &: {
43
43
 
44
44
  # Publication: tag-only — the Go module proxy resolves versions from the
45
45
  # go-cli/vX.Y.Z GitHub tag; there is no package registry to upload to.
46
+ #
47
+ # `target add <t>` OVERWRITES this file, so a project must never set its
48
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
49
+ # name exactly that way. Set them in the project's own model
50
+ # (`model/sdk.aontu`), where they survive a resync.
51
+ #
52
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
53
+ # value does not yield to another concrete value, it CONFLICTS, and two
54
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
55
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
56
+ # `registry.package`, so a project's concrete value wins over the default and
57
+ # repeating them here would only take that away.
58
+ #
59
+ # What remains below is per-target registry IDENTITY, which is not a project
60
+ # choice and stays concrete.
46
61
  main: kit: target: 'go-cli': publish: {
47
- tag: { active: true, via: 'root' }
62
+ tag: { via: 'root' }
48
63
  }
@@ -37,6 +37,21 @@ main: kit: feature: &: target: 'go-mcp': deps: &: {
37
37
 
38
38
  # Publication: tag-only — the Go module proxy resolves versions from the
39
39
  # go-mcp/vX.Y.Z GitHub tag; there is no package registry to upload to.
40
+ #
41
+ # `target add <t>` OVERWRITES this file, so a project must never set its
42
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
43
+ # name exactly that way. Set them in the project's own model
44
+ # (`model/sdk.aontu`), where they survive a resync.
45
+ #
46
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
47
+ # value does not yield to another concrete value, it CONFLICTS, and two
48
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
49
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
50
+ # `registry.package`, so a project's concrete value wins over the default and
51
+ # repeating them here would only take that away.
52
+ #
53
+ # What remains below is per-target registry IDENTITY, which is not a project
54
+ # choice and stays concrete.
40
55
  main: kit: target: 'go-mcp': publish: {
41
- tag: { active: true, via: 'root' }
56
+ tag: { via: 'root' }
42
57
  }
@@ -21,8 +21,18 @@ main: kit: feature: &: target: go: deps: &: {
21
21
  }
22
22
 
23
23
 
24
- # Publication: tag-only — the Go module proxy resolves versions from the
25
- # go/vX.Y.Z GitHub tag; there is no package registry to upload to.
26
- main: kit: target: go: publish: {
27
- tag: { active: true }
24
+ # Publication: a go/vX.Y.Z GitHub tag only — the Go proxy resolves from tags,
25
+ # so there is no package registry to upload to. Nothing is set here: every
26
+ # value is defaulted by the schema, and a project that needs to change one
27
+ # sets it in its own model (`model/sdk.aontu`), which `target add <t>` does
28
+ # not overwrite.
29
+
30
+
31
+ # Feature source may be trimmed to the model's selection. The one template
32
+ # needing the COMPLETE set is the cross-feature test suite, which
33
+ # constructs every feature.New*Feature — so it is dropped alongside the
34
+ # features it exercises whenever the set is trimmed.
35
+ main: kit: target: go: feature: {
36
+ trim: true
37
+ fullset: ['test/feature_test.go']
28
38
  }
@@ -38,13 +38,34 @@ main: kit: feature: &: target: haskell: deps: &: {
38
38
 
39
39
 
40
40
  # Publication: Hackage registry (declared, publish pending — git-tag only).
41
+ #
42
+ # `target add <t>` OVERWRITES this file, so a project must never set its
43
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
44
+ # name exactly that way. Set them in the project's own model
45
+ # (`model/sdk.aontu`), where they survive a resync.
46
+ #
47
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
48
+ # value does not yield to another concrete value, it CONFLICTS, and two
49
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
50
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
51
+ # `registry.package`, so a project's concrete value wins over the default and
52
+ # repeating them here would only take that away.
53
+ #
54
+ # What remains below is per-target registry IDENTITY, which is not a project
55
+ # choice and stays concrete.
41
56
  main: kit: target: haskell: publish: {
42
- tag: { active: true }
43
57
  registry: {
44
- state: 'pending'
45
- active: false
46
58
  name: 'hackage'
47
59
  url: 'https://hackage.haskell.org'
48
60
  vault: { alias: 'hackage', env: 'HACKAGE_TOKEN' }
49
61
  }
50
62
  }
63
+
64
+
65
+ # Feature source is NOT trimmed to the model's selection here: every
66
+ # feature lives inside a single generated module (src/SdkFeatures.hs), not
67
+ # in per-feature source files, so there is nothing per-feature to leave
68
+ # out. Trimming waits on that module becoming model-driven.
69
+ main: kit: target: haskell: feature: {
70
+ trim: false
71
+ }
@@ -25,13 +25,35 @@ main: kit: feature: &: target: java: deps: &: {
25
25
 
26
26
  # Publication: tag-only for now (tag java/vX.Y.Z) — Maven Central
27
27
  # publication via the Sonatype Central Portal is declared but pending.
28
+ #
29
+ # `target add <t>` OVERWRITES this file, so a project must never set its
30
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
31
+ # name exactly that way. Set them in the project's own model
32
+ # (`model/sdk.aontu`), where they survive a resync.
33
+ #
34
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
35
+ # value does not yield to another concrete value, it CONFLICTS, and two
36
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
37
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
38
+ # `registry.package`, so a project's concrete value wins over the default and
39
+ # repeating them here would only take that away.
40
+ #
41
+ # What remains below is per-target registry IDENTITY, which is not a project
42
+ # choice and stays concrete.
28
43
  main: kit: target: java: publish: {
29
- tag: { active: true }
30
44
  registry: {
31
- state: 'pending'
32
- active: false
33
45
  name: 'maven-central'
34
46
  url: 'https://central.sonatype.com'
35
47
  vault: { recipe: 'maven', alias: 'central' }
36
48
  }
37
49
  }
50
+
51
+
52
+ # Feature source may be trimmed to the model's selection. The one template
53
+ # needing the COMPLETE set is the cross-feature test suite, which
54
+ # constructs every *Feature class — so it is dropped alongside the
55
+ # features it exercises whenever the set is trimmed.
56
+ main: kit: target: java: feature: {
57
+ trim: true
58
+ fullset: ['test/FeatureTest.java']
59
+ }