@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
@@ -24,11 +24,23 @@ main: kit: feature: &: target: js: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: npm 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: js: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'npm'
33
45
  url: 'https://registry.npmjs.org'
34
46
  vault: { recipe: 'npm', alias: 'npm' }
@@ -25,13 +25,35 @@ main: kit: feature: &: target: kotlin: deps: &: {
25
25
 
26
26
  # Publication: tag-only for now (tag kotlin/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: kotlin: 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: kotlin: feature: {
57
+ trim: true
58
+ fullset: ['test/FeatureTest.kt']
59
+ }
@@ -39,13 +39,34 @@ main: kit: feature: &: target: lean: deps: &: {
39
39
 
40
40
  # Publication: Reservoir (Lean package index) — declared, publish pending
41
41
  # (git-tag only for now).
42
+ #
43
+ # `target add <t>` OVERWRITES this file, so a project must never set its
44
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
45
+ # name exactly that way. Set them in the project's own model
46
+ # (`model/sdk.aontu`), where they survive a resync.
47
+ #
48
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
49
+ # value does not yield to another concrete value, it CONFLICTS, and two
50
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
51
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
52
+ # `registry.package`, so a project's concrete value wins over the default and
53
+ # repeating them here would only take that away.
54
+ #
55
+ # What remains below is per-target registry IDENTITY, which is not a project
56
+ # choice and stays concrete.
42
57
  main: kit: target: lean: publish: {
43
- tag: { active: true }
44
58
  registry: {
45
- state: 'pending'
46
- active: false
47
59
  name: 'reservoir'
48
60
  url: 'https://reservoir.lean-lang.org'
49
61
  vault: { alias: 'reservoir', env: 'RESERVOIR_TOKEN' }
50
62
  }
51
63
  }
64
+
65
+
66
+ # Feature source is NOT trimmed to the model's selection here: every
67
+ # feature lives inside a single generated module (src/SdkFeatures.lean),
68
+ # not in per-feature source files, so there is nothing per-feature to
69
+ # leave out. Trimming waits on that module becoming model-driven.
70
+ main: kit: target: lean: feature: {
71
+ trim: false
72
+ }
@@ -24,11 +24,23 @@ main: kit: feature: &: target: lua: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: luarocks 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: lua: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'luarocks'
33
45
  url: 'https://luarocks.org'
34
46
  vault: { alias: 'luarocks', env: 'LUAROCKS_API_KEY' }
@@ -24,13 +24,34 @@ main: kit: feature: &: target: ocaml: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: opam 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: ocaml: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'opam'
33
45
  url: 'https://opam.ocaml.org'
34
46
  vault: { alias: 'opam', env: 'OPAM_PUBLISH_TOKEN' }
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 (sdk_features.ml), not in
53
+ # per-feature source files, so there is nothing per-feature to leave out.
54
+ # Trimming waits on that module becoming model-driven.
55
+ main: kit: target: ocaml: feature: {
56
+ trim: false
57
+ }
@@ -25,11 +25,23 @@ main: kit: feature: &: target: perl: deps: &: {
25
25
 
26
26
 
27
27
  # Publication: CPAN registry (declared, publish pending — git-tag only).
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: perl: publish: {
29
- tag: { active: true }
30
44
  registry: {
31
- state: 'pending'
32
- active: false
33
45
  name: 'cpan'
34
46
  url: 'https://www.cpan.org'
35
47
  vault: { recipe: 'cpan', alias: 'cpan' }
@@ -22,11 +22,23 @@ main: kit: feature: &: target: php: deps: &: {
22
22
 
23
23
 
24
24
  # Publication: packagist 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: php: publish: {
26
- tag: { active: true }
27
41
  registry: {
28
- state: 'pending'
29
- active: false
30
42
  name: 'packagist'
31
43
  url: 'https://packagist.org'
32
44
  vault: { alias: 'packagist', env: 'PACKAGIST_API_TOKEN' }
@@ -52,11 +52,23 @@ main: kit: feature: &: target: 'py-data': deps: &: {
52
52
 
53
53
  # Publication: pypi registry (declared, publish pending — git-tag only),
54
54
  # same posture as the `py` target.
55
+ #
56
+ # `target add <t>` OVERWRITES this file, so a project must never set its
57
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
58
+ # name exactly that way. Set them in the project's own model
59
+ # (`model/sdk.aontu`), where they survive a resync.
60
+ #
61
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
62
+ # value does not yield to another concrete value, it CONFLICTS, and two
63
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
64
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
65
+ # `registry.package`, so a project's concrete value wins over the default and
66
+ # repeating them here would only take that away.
67
+ #
68
+ # What remains below is per-target registry IDENTITY, which is not a project
69
+ # choice and stays concrete.
55
70
  main: kit: target: 'py-data': publish: {
56
- tag: { active: true }
57
71
  registry: {
58
- state: 'pending'
59
- active: false
60
72
  name: 'pypi'
61
73
  url: 'https://pypi.org'
62
74
  vault: { recipe: 'pypi', alias: 'pypi' }
@@ -24,11 +24,23 @@ main: kit: feature: &: target: py: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: pypi 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: py: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'pypi'
33
45
  url: 'https://pypi.org'
34
46
  vault: { recipe: 'pypi', alias: 'pypi' }
@@ -24,11 +24,23 @@ main: kit: feature: &: target: rb: deps: &: {
24
24
 
25
25
 
26
26
  # Publication: rubygems 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: rb: publish: {
28
- tag: { active: true }
29
43
  registry: {
30
- state: 'pending'
31
- active: false
32
44
  name: 'rubygems'
33
45
  url: 'https://rubygems.org'
34
46
  vault: { recipe: 'gem', alias: 'gem' }
@@ -25,13 +25,35 @@ main: kit: feature: &: target: rust: deps: &: {
25
25
 
26
26
 
27
27
  # Publication: crates.io registry (declared, publish pending — git-tag only).
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: rust: publish: {
29
- tag: { active: true }
30
44
  registry: {
31
- state: 'pending'
32
- active: false
33
45
  name: 'crates.io'
34
46
  url: 'https://crates.io'
35
47
  vault: { alias: 'cratesio', env: 'CARGO_REGISTRY_TOKEN' }
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 `use`s
54
+ # every feature module — so it is dropped alongside the features it
55
+ # exercises whenever the set is trimmed.
56
+ main: kit: target: rust: feature: {
57
+ trim: true
58
+ fullset: ['tests/feature_test.rs']
59
+ }
@@ -25,13 +25,34 @@ main: kit: feature: &: target: scala: deps: &: {
25
25
 
26
26
  # Publication: tag-only for now (tag scala/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: scala: 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 is NOT trimmed to the model's selection here: the cross-
53
+ # feature tests live inside sdktest/SdkTestMain.scala, the single test
54
+ # entry point, so they cannot be dropped without losing every other test
55
+ # too. Trimming stays off until that suite is split per feature.
56
+ main: kit: target: scala: feature: {
57
+ trim: false
58
+ }
@@ -0,0 +1,118 @@
1
+ # Seneca provider target — a Seneca plugin that exposes this API's entities
2
+ # as Seneca entities (`provider/<name>/<entity>`), layered on the sibling
3
+ # `ts` SDK. It is not a language SDK in its own right, so every standard
4
+ # generation phase is switched off below and Main_seneca-provider emits the
5
+ # whole package, exactly as go-cli / go-mcp / py-data do.
6
+ #
7
+ # Requires the `ts` target in the same SDK project (Main throws when it is
8
+ # absent): the plugin imports the published TypeScript SDK.
9
+ #
10
+ # UNLIKE the other consumer targets, this one generates into ITS OWN REPO.
11
+ # A Seneca provider is an independently released npm package under the
12
+ # @seneca scope, with its own LICENSE, CI workflow and release cadence, and
13
+ # it depends on the SDK as an ordinary published dependency rather than by
14
+ # path. Point it at that repo from the PROJECT model:
15
+ #
16
+ # main: kit: target: 'seneca-provider': output: path: '../../seneca/seneca-acme-provider'
17
+ #
18
+ # Relative to the SDK repo root. Left unset here on purpose — every project's
19
+ # provider repo is somewhere different, and a concrete value here would
20
+ # CONFLICT with the project's rather than yield to it (see the publication
21
+ # note below). Unset means the ordinary in-tree `<sdk-repo>/seneca-provider/`,
22
+ # which is a usable default for a first look at the output.
23
+
24
+ main: kit: target: 'seneca-provider': {
25
+
26
+ title: 'Seneca Provider'
27
+ ext: ts
28
+ comment: line: "//"
29
+ module: name: '$$name$$'
30
+ srcfeature: false
31
+
32
+ # Per-generation-phase activation. Mirrors py-data: every standard phase is
33
+ # off and Main emits the package. README, docs and tests ARE generated — by
34
+ # Main, not by the standard cmps, which assume an SDK-shaped package and
35
+ # would emit wrong content here.
36
+ phase: {
37
+ entity: { active: false }
38
+ feature: { active: false }
39
+ readme: { active: false }
40
+ agentguide: { active: false }
41
+ test: { active: false }
42
+ }
43
+
44
+ # `kind` is a COMMA-SEPARATED LIST of manifest sections, not a single one.
45
+ # collectDeps deduplicates by package name and this map is keyed by name, so
46
+ # a package belonging in two sections cannot be declared twice — it says so
47
+ # here instead. See `seneca` below for the case that forced it.
48
+ deps: &: {
49
+ kind: *'prod' | string
50
+ }
51
+
52
+ # The Seneca plugin contract. `@seneca/provider` supplies entityBuilder and
53
+ # the keymap message this plugin's `prepare` posts; the rest are the host
54
+ # framework a plugin runs inside and so are PEER deps — a plugin that
55
+ # bundled its own seneca would run against a different instance than the
56
+ # application it is loaded into.
57
+ #
58
+ # The ts SDK dependency is emitted by Main from the model's published
59
+ # package name, so it is not declared here.
60
+ deps: {
61
+ '@seneca/maintain': { active: true, version: '^0.1.0', kind: prod }
62
+
63
+ '@seneca/env': { active: true, version: '>=0.4', kind: peer }
64
+ '@seneca/provider': { active: true, version: '>=4', kind: peer }
65
+
66
+ # PEER *and* DEV. Peer for the reason above — the plugin must attach to
67
+ # the host application's seneca instance. Dev because the generated test
68
+ # suite does `require('seneca')` itself, so a clean `npm install && npm
69
+ # test` in a fresh checkout has to produce one. Relying on npm's automatic
70
+ # peer installation instead is what dropping this from the manifest
71
+ # amounted to, and that is npm-version- and client-specific: pnpm and
72
+ # `--legacy-peer-deps` both leave the suite with no seneca to require.
73
+ 'seneca': { active: true, version: '>=3||>=4.0.0-rc2', kind: 'peer,dev' }
74
+
75
+ 'seneca-entity': { active: true, version: '>=26', kind: peer }
76
+ 'seneca-promisify': { active: true, version: '>=3', kind: peer }
77
+
78
+ '@seneca/doc': { active: true, version: '^8.0.0', kind: dev }
79
+ '@types/node': { active: true, version: '^24.0.0', kind: dev }
80
+ 'seneca-msg-test': { active: true, version: '^4.1.0', kind: dev }
81
+ 'typescript': { active: true, version: '^5.4.5', kind: dev }
82
+ }
83
+ }
84
+
85
+
86
+ # Feature-deps map slot — every target carries this so the same feature can
87
+ # specify per-target dep variants.
88
+ main: kit: feature: &: target: 'seneca-provider': deps: &: {
89
+ kind: *'prod' | string
90
+ }
91
+
92
+
93
+ # Publication: npm registry, under the @seneca scope rather than the SDK's
94
+ # own. The package name is NOT derived from the SDK slug the way a language
95
+ # target's is — a provider is `@seneca/<name>-provider` — so Main sets it
96
+ # from the model and a project can pin it like any other.
97
+ #
98
+ # `target add <t>` OVERWRITES this file, so a project must never set its
99
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
100
+ # name exactly that way. Set them in the project's own model
101
+ # (`model/sdk.aontu`), where they survive a resync.
102
+ #
103
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
104
+ # value does not yield to another concrete value, it CONFLICTS, and two
105
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
106
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
107
+ # `registry.package`, so a project's concrete value wins over the default and
108
+ # repeating them here would only take that away.
109
+ #
110
+ # What remains below is per-target registry IDENTITY, which is not a project
111
+ # choice and stays concrete.
112
+ main: kit: target: 'seneca-provider': publish: {
113
+ registry: {
114
+ name: 'npm'
115
+ url: 'https://registry.npmjs.org'
116
+ vault: { recipe: 'npm', alias: 'npm' }
117
+ }
118
+ }
@@ -23,13 +23,35 @@ main: kit: feature: &: target: swift: deps: &: {
23
23
 
24
24
 
25
25
  # Publication: SwiftPM registry is git-tag only (publish pending).
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: swift: publish: {
27
- tag: { active: true }
28
42
  registry: {
29
- state: 'pending'
30
- active: false
31
43
  name: 'swiftpm'
32
44
  url: 'https://swift.org/package-manager'
33
45
  vault: { alias: 'swiftpm', env: 'SWIFTPM_TOKEN' }
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 type — so it is dropped alongside the
53
+ # features it exercises whenever the set is trimmed.
54
+ main: kit: target: swift: feature: {
55
+ trim: true
56
+ fullset: ['Tests/ProjectNameSDKTests/FeatureTest.swift']
57
+ }
@@ -27,11 +27,23 @@ main: kit: feature: &: target: ts: deps: &: {
27
27
 
28
28
 
29
29
  # Publication: npm registry (declared, publish pending — git-tag only).
30
+ #
31
+ # `target add <t>` OVERWRITES this file, so a project must never set its
32
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
33
+ # name exactly that way. Set them in the project's own model
34
+ # (`model/sdk.aontu`), where they survive a resync.
35
+ #
36
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
37
+ # value does not yield to another concrete value, it CONFLICTS, and two
38
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aontu)
39
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
40
+ # `registry.package`, so a project's concrete value wins over the default and
41
+ # repeating them here would only take that away.
42
+ #
43
+ # What remains below is per-target registry IDENTITY, which is not a project
44
+ # choice and stays concrete.
30
45
  main: kit: target: ts: publish: {
31
- tag: { active: true }
32
46
  registry: {
33
- state: 'pending'
34
- active: false
35
47
  name: 'npm'
36
48
  url: 'https://registry.npmjs.org'
37
49
  vault: { recipe: 'npm', alias: 'npm' }
@@ -25,13 +25,35 @@ main: kit: feature: &: target: zig: deps: &: {
25
25
  # routes deploy-zig to the root tag-push recipe. WITHOUT it, Deploy.ts falls
26
26
  # through to `make -C zig publish` — but zig's Makefile has no `publish` target,
27
27
  # so the deploy fails. Mirror c.aontu exactly.
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: zig: 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 is NOT trimmed to the model's selection here: root.zig
53
+ # re-exports every feature type with @import("feature/<name>.zig"), and
54
+ # build.zig names test/feature_test.zig explicitly, so a trimmed tree
55
+ # fails to build. Trimming stays off until root.zig's feature exports are
56
+ # driven from the model.
57
+ main: kit: target: zig: feature: {
58
+ trim: false
59
+ }
@@ -90,17 +90,16 @@ voxgig_value* make_config(void) {
90
90
  Feature* make_feature(const char* name) {
91
91
  `)
92
92
 
93
- // The C target ships the full transport/observability feature set as
94
- // fixed runtime templates (tm/c/feature/*.c, declared in core/sdk.h), so
95
- // make_feature must dispatch to every shipped feature not only those the
96
- // current API model happens to configure. Merge the model's feature names
97
- // with the standard shipped set; emit in sorted order for byte-stability.
98
- const SHIPPED_FEATURES = [
99
- 'audit', 'cache', 'clienttrack', 'debug', 'idempotency', 'log',
100
- 'metrics', 'netsim', 'paging', 'proxy', 'ratelimit', 'rbac', 'retry',
101
- 'streaming', 'telemetry', 'test', 'timeout',
102
- ]
103
- const featureNames = new Set<string>(SHIPPED_FEATURES)
93
+ // Dispatch to the features the MODEL declares, and only those.
94
+ //
95
+ // This used to merge in a hardcoded list of every feature the C target
96
+ // ships, on the reasoning that the runtime templates
97
+ // (tm/c/feature/*.c) are always present. `target add` now trims feature
98
+ // source to the model's selection, so that reasoning is false: a
99
+ // reference to `feature_timeout_new` for an undeclared feature is an
100
+ // unresolved symbol at LINK time — the whole test suite fails to link,
101
+ // which is how this was found. Sorted for byte-stability.
102
+ const featureNames = new Set<string>()
104
103
  each(feature, (f: any) => {
105
104
  if (f.name && f.name !== 'base') featureNames.add(f.name)
106
105
  })
@@ -46,7 +46,11 @@ const Entity = cmp(function Entity(props: any) {
46
46
  (a['#' + camelify(opname) + 'Op'] =
47
47
  !opnames.includes(opname) ?
48
48
  ({ indent }: any) => {
49
- Content({ indent }, `static voxgig_value* ${evar}_${opname}(Entity* e, voxgig_value* reqarg, voxgig_value* ctrl, PNError** err) {
49
+ // The stub mirrors the real signature: ops resolve to the
50
+ // ENTITY (`list` to a NULL-terminated array of them), so an
51
+ // unsupported op declares the same return type as the vtable.
52
+ const ret = 'list' === opname ? 'Entity**' : 'Entity*'
53
+ Content({ indent }, `static ${ret} ${evar}_${opname}(Entity* e, voxgig_value* reqarg, voxgig_value* ctrl, PNError** err) {
50
54
  (void)e; (void)reqarg; (void)ctrl;
51
55
  *err = unsupported_op("${opname}", "${entity.name}");
52
56
  return NULL;