@voxgig/sdkgen 2.0.2 → 3.0.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 (385) hide show
  1. package/bin/voxgig-sdkgen +22 -2
  2. package/dist/action/doctor.d.ts +14 -0
  3. package/dist/action/doctor.js +296 -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/Feature.js +2 -1
  13. package/dist/cmp/Feature.js.map +1 -1
  14. package/dist/cmp/Main.js +5 -1
  15. package/dist/cmp/Main.js.map +1 -1
  16. package/dist/cmp/ReadmeExplanation.js +1 -1
  17. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  18. package/dist/cmp/ReadmeTop.js +16 -6
  19. package/dist/cmp/ReadmeTop.js.map +1 -1
  20. package/dist/cmp/Registered.d.ts +7 -0
  21. package/dist/cmp/Registered.js +70 -0
  22. package/dist/cmp/Registered.js.map +1 -0
  23. package/dist/cmp/Test.js +3 -1
  24. package/dist/cmp/Test.js.map +1 -1
  25. package/dist/helpers/dryrun.d.ts +10 -0
  26. package/dist/helpers/dryrun.js +35 -0
  27. package/dist/helpers/dryrun.js.map +1 -0
  28. package/dist/helpers/featureSource.d.ts +13 -0
  29. package/dist/helpers/featureSource.js +156 -0
  30. package/dist/helpers/featureSource.js.map +1 -0
  31. package/dist/helpers/naming.d.ts +9 -1
  32. package/dist/helpers/naming.js +66 -2
  33. package/dist/helpers/naming.js.map +1 -1
  34. package/dist/helpers/opExample.js +23 -3
  35. package/dist/helpers/opExample.js.map +1 -1
  36. package/dist/helpers/opShape.d.ts +11 -1
  37. package/dist/helpers/opShape.js +51 -0
  38. package/dist/helpers/opShape.js.map +1 -1
  39. package/dist/helpers/packageMeta.d.ts +8 -1
  40. package/dist/helpers/packageMeta.js +141 -10
  41. package/dist/helpers/packageMeta.js.map +1 -1
  42. package/dist/helpers/stdrep.d.ts +3 -0
  43. package/dist/helpers/stdrep.js +47 -0
  44. package/dist/helpers/stdrep.js.map +1 -0
  45. package/dist/helpers/testPolicy.d.ts +2 -0
  46. package/dist/helpers/testPolicy.js +46 -0
  47. package/dist/helpers/testPolicy.js.map +1 -0
  48. package/dist/sdkgen.d.ts +15 -6
  49. package/dist/sdkgen.js +45 -4
  50. package/dist/sdkgen.js.map +1 -1
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/model/sdkgen.aontu +125 -0
  53. package/package.json +5 -3
  54. package/project/.sdk/model/target/c.aontu +28 -3
  55. package/project/.sdk/model/target/clojure.aontu +24 -3
  56. package/project/.sdk/model/target/cpp.aontu +25 -3
  57. package/project/.sdk/model/target/csharp.aontu +25 -3
  58. package/project/.sdk/model/target/dart.aontu +15 -3
  59. package/project/.sdk/model/target/elixir.aontu +15 -3
  60. package/project/.sdk/model/target/go-cli.aontu +17 -1
  61. package/project/.sdk/model/target/go-mcp.aontu +17 -1
  62. package/project/.sdk/model/target/go.aontu +14 -4
  63. package/project/.sdk/model/target/haskell.aontu +24 -3
  64. package/project/.sdk/model/target/java.aontu +26 -3
  65. package/project/.sdk/model/target/js.aontu +15 -3
  66. package/project/.sdk/model/target/kotlin.aontu +26 -3
  67. package/project/.sdk/model/target/lean.aontu +25 -3
  68. package/project/.sdk/model/target/lua.aontu +15 -3
  69. package/project/.sdk/model/target/ocaml.aontu +24 -3
  70. package/project/.sdk/model/target/perl.aontu +15 -3
  71. package/project/.sdk/model/target/php.aontu +15 -3
  72. package/project/.sdk/model/target/py-data.aontu +16 -3
  73. package/project/.sdk/model/target/py.aontu +15 -3
  74. package/project/.sdk/model/target/rb.aontu +15 -3
  75. package/project/.sdk/model/target/rust.aontu +25 -3
  76. package/project/.sdk/model/target/scala.aontu +25 -3
  77. package/project/.sdk/model/target/swift.aontu +25 -3
  78. package/project/.sdk/model/target/ts.aontu +15 -3
  79. package/project/.sdk/model/target/zig.aontu +26 -3
  80. package/project/.sdk/src/cmp/c/Config_c.ts +10 -11
  81. package/project/.sdk/src/cmp/c/Entity_c.ts +5 -1
  82. package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +23 -5
  83. package/project/.sdk/src/cmp/c/fragment/EntityCreateOp.fragment.c +9 -2
  84. package/project/.sdk/src/cmp/c/fragment/EntityListOp.fragment.c +19 -2
  85. package/project/.sdk/src/cmp/c/fragment/EntityLoadOp.fragment.c +9 -2
  86. package/project/.sdk/src/cmp/c/fragment/EntityRemoveOp.fragment.c +12 -2
  87. package/project/.sdk/src/cmp/c/fragment/EntityUpdateOp.fragment.c +9 -2
  88. package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +1 -0
  89. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +6 -3
  90. package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +18 -1
  91. package/project/.sdk/src/cmp/clojure/fragment/EntityCreateOp.fragment.clj +2 -2
  92. package/project/.sdk/src/cmp/clojure/fragment/EntityLoadOp.fragment.clj +2 -2
  93. package/project/.sdk/src/cmp/clojure/fragment/EntityRemoveOp.fragment.clj +12 -8
  94. package/project/.sdk/src/cmp/clojure/fragment/EntityUpdateOp.fragment.clj +2 -2
  95. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +5 -1
  96. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +12 -9
  97. package/project/.sdk/src/cmp/cpp/fragment/EntityCreateOp.fragment.cpp +8 -2
  98. package/project/.sdk/src/cmp/cpp/fragment/EntityListOp.fragment.cpp +18 -2
  99. package/project/.sdk/src/cmp/cpp/fragment/EntityLoadOp.fragment.cpp +8 -2
  100. package/project/.sdk/src/cmp/cpp/fragment/EntityRemoveOp.fragment.cpp +11 -2
  101. package/project/.sdk/src/cmp/cpp/fragment/EntityUpdateOp.fragment.cpp +8 -2
  102. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +2 -1
  103. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
  104. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +6 -6
  105. package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +38 -1
  106. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +42 -33
  107. package/project/.sdk/src/cmp/dart/Package_dart.ts +2 -1
  108. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +13 -2
  109. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +2 -1
  110. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +3 -3
  111. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +1 -1
  112. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +17 -6
  113. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +13 -2
  114. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +13 -2
  115. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +3 -3
  116. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +8 -8
  117. package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +18 -1
  118. package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +9 -1
  119. package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +9 -1
  120. package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +15 -1
  121. package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +9 -1
  122. package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +8 -0
  123. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  124. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
  125. package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +11 -2
  126. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +2 -1
  127. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +1 -0
  128. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +2 -1
  129. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -1
  130. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +2 -1
  131. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +38 -8
  132. package/project/.sdk/src/cmp/go/Entity_go.ts +2 -2
  133. package/project/.sdk/src/cmp/go/Main_go.ts +4 -5
  134. package/project/.sdk/src/cmp/go/Package_go.ts +8 -5
  135. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +2 -2
  136. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +2 -2
  137. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +4 -2
  138. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +2 -2
  139. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +2 -2
  140. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +2 -2
  141. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +2 -2
  142. package/project/.sdk/src/cmp/go/TestDirect_go.ts +21 -15
  143. package/project/.sdk/src/cmp/go/TestEntity_go.ts +9 -9
  144. package/project/.sdk/src/cmp/go/Test_go.ts +2 -2
  145. package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +42 -1
  146. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +4 -4
  147. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +4 -4
  148. package/project/.sdk/src/cmp/haskell/Package_haskell.ts +2 -1
  149. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +10 -5
  150. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +10 -8
  151. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +14 -10
  152. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +21 -18
  153. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +4 -4
  154. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +23 -11
  155. package/project/.sdk/src/cmp/java/Package_java.ts +2 -1
  156. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +2 -1
  157. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +2 -2
  158. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +1 -1
  159. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +3 -3
  160. package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
  161. package/project/.sdk/src/cmp/java/TestEntity_java.ts +6 -6
  162. package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +34 -1
  163. package/project/.sdk/src/cmp/java/fragment/SdkError.fragment.java +12 -0
  164. package/project/.sdk/src/cmp/js/Main_js.ts +4 -1
  165. package/project/.sdk/src/cmp/js/Package_js.ts +7 -1
  166. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +13 -2
  167. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +2 -1
  168. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +13 -2
  169. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +13 -2
  170. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +2 -1
  171. package/project/.sdk/src/cmp/js/TestDirect_js.ts +3 -3
  172. package/project/.sdk/src/cmp/js/TestEntity_js.ts +8 -8
  173. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +22 -1
  174. package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +9 -1
  175. package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +9 -1
  176. package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +15 -1
  177. package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +9 -1
  178. package/project/.sdk/src/cmp/js/fragment/SdkError.fragment.js +13 -0
  179. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +2 -1
  180. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +2 -1
  181. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +2 -2
  182. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +1 -1
  183. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +3 -3
  184. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
  185. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +6 -6
  186. package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +32 -1
  187. package/project/.sdk/src/cmp/lean/Package_lean.ts +3 -1
  188. package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +9 -4
  189. package/project/.sdk/src/cmp/lua/Package_lua.ts +4 -3
  190. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +11 -3
  191. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +1 -1
  192. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
  193. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +9 -9
  194. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +37 -1
  195. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +12 -0
  196. package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +30 -3
  197. package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +11 -5
  198. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +3 -1
  199. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +10 -5
  200. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +6 -2
  201. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +10 -8
  202. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +14 -13
  203. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +20 -18
  204. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +4 -4
  205. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +8 -2
  206. package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +8 -5
  207. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +2 -1
  208. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +1 -1
  209. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +3 -3
  210. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +1 -1
  211. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
  212. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +6 -6
  213. package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +36 -1
  214. package/project/.sdk/src/cmp/php/MainEntity_php.ts +21 -16
  215. package/project/.sdk/src/cmp/php/Package_php.ts +2 -2
  216. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +6 -6
  217. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +4 -3
  218. package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +2 -2
  219. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +1 -1
  220. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +12 -12
  221. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +6 -6
  222. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +4 -4
  223. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +2 -2
  224. package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
  225. package/project/.sdk/src/cmp/php/TestEntity_php.ts +17 -15
  226. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +20 -1
  227. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +11 -0
  228. package/project/.sdk/src/cmp/py/Package_py.ts +4 -3
  229. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +13 -2
  230. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +2 -1
  231. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +1 -1
  232. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +17 -6
  233. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +14 -3
  234. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +13 -2
  235. package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
  236. package/project/.sdk/src/cmp/py/TestEntity_py.ts +9 -9
  237. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +29 -1
  238. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +11 -0
  239. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +2 -1
  240. package/project/.sdk/src/cmp/rb/Package_rb.ts +4 -3
  241. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +1 -1
  242. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +2 -1
  243. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +5 -5
  244. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +1 -1
  245. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
  246. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +9 -9
  247. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +31 -1
  248. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +10 -1
  249. package/project/.sdk/src/cmp/rust/Entity_rust.ts +5 -1
  250. package/project/.sdk/src/cmp/rust/Main_rust.ts +21 -0
  251. package/project/.sdk/src/cmp/rust/Package_rust.ts +2 -1
  252. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
  253. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +12 -12
  254. package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +18 -0
  255. package/project/.sdk/src/cmp/rust/fragment/EntityCreateOp.fragment.rs +8 -2
  256. package/project/.sdk/src/cmp/rust/fragment/EntityListOp.fragment.rs +20 -3
  257. package/project/.sdk/src/cmp/rust/fragment/EntityLoadOp.fragment.rs +8 -2
  258. package/project/.sdk/src/cmp/rust/fragment/EntityRemoveOp.fragment.rs +10 -2
  259. package/project/.sdk/src/cmp/rust/fragment/EntityUpdateOp.fragment.rs +8 -2
  260. package/project/.sdk/src/cmp/rust/fragment/SdkError.fragment.rs +10 -0
  261. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +2 -1
  262. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
  263. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +1 -1
  264. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +3 -3
  265. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +3 -3
  266. package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +27 -1
  267. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +2 -1
  268. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
  269. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +1 -1
  270. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +3 -3
  271. package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +34 -1
  272. package/project/.sdk/src/cmp/ts/EntityOperation_ts.ts +9 -1
  273. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +18 -1
  274. package/project/.sdk/src/cmp/ts/Gitignore_ts.ts +5 -2
  275. package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -1
  276. package/project/.sdk/src/cmp/ts/Package_ts.ts +10 -1
  277. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +13 -2
  278. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +2 -1
  279. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +21 -6
  280. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +52 -2
  281. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +14 -3
  282. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +34 -2
  283. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +64 -43
  284. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +8 -8
  285. package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +2 -2
  286. package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +2 -2
  287. package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +25 -1
  288. package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +10 -2
  289. package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +1 -1
  290. package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +10 -2
  291. package/project/.sdk/src/cmp/ts/fragment/EntityRemoveOp.fragment.ts +27 -3
  292. package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +10 -2
  293. package/project/.sdk/src/cmp/ts/fragment/SdkError.fragment.ts +15 -0
  294. package/project/.sdk/src/cmp/zig/Entity_zig.ts +5 -1
  295. package/project/.sdk/src/cmp/zig/Package_zig.ts +3 -1
  296. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +39 -0
  297. package/project/.sdk/src/cmp/zig/fragment/EntityCreateOp.fragment.zig +2 -2
  298. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +21 -2
  299. package/project/.sdk/src/cmp/zig/fragment/EntityLoadOp.fragment.zig +2 -2
  300. package/project/.sdk/src/cmp/zig/fragment/EntityRemoveOp.fragment.zig +5 -2
  301. package/project/.sdk/src/cmp/zig/fragment/EntityUpdateOp.fragment.zig +2 -2
  302. package/project/.sdk/tm/c/VERSION +1 -1
  303. package/project/.sdk/tm/c/core/helpers.c +1 -0
  304. package/project/.sdk/tm/c/core/sdk.h +22 -6
  305. package/project/.sdk/tm/c/tests/feature_harness.h +1 -0
  306. package/project/.sdk/tm/c/tests/primary_utility_test.c +4 -1
  307. package/project/.sdk/tm/c/utility/make_url.c +1 -0
  308. package/project/.sdk/tm/c/utility/param.c +1 -0
  309. package/project/.sdk/tm/clojure/VERSION +1 -1
  310. package/project/.sdk/tm/cpp/VERSION +1 -1
  311. package/project/.sdk/tm/cpp/core/types.hpp +33 -8
  312. package/project/.sdk/tm/cpp/test/pipeline_test.cpp +5 -0
  313. package/project/.sdk/tm/cpp/test/runner_support.hpp +4 -4
  314. package/project/.sdk/tm/csharp/VERSION +1 -1
  315. package/project/.sdk/tm/csharp/core/Types.cs +6 -0
  316. package/project/.sdk/tm/csharp/test/FeatureHarness.cs +396 -0
  317. package/project/.sdk/tm/csharp/test/FeatureTest.cs +7 -385
  318. package/project/.sdk/tm/csharp/test/Runner.cs +4 -4
  319. package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +4 -0
  320. package/project/.sdk/tm/dart/test/utility.dart +4 -4
  321. package/project/.sdk/tm/elixir/VERSION +1 -1
  322. package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +26 -0
  323. package/project/.sdk/tm/go/VERSION +1 -1
  324. package/project/.sdk/tm/go/core/types.go +6 -0
  325. package/project/.sdk/tm/go/test/feature_harness_test.go +361 -0
  326. package/project/.sdk/tm/go/test/feature_test.go +7 -350
  327. package/project/.sdk/tm/go/test/pipeline_test.go +6 -0
  328. package/project/.sdk/tm/go/test/runner_test.go +16 -4
  329. package/project/.sdk/tm/haskell/VERSION +1 -1
  330. package/project/.sdk/tm/haskell/src/SdkFeatures.hs +28 -5
  331. package/project/.sdk/tm/haskell/src/SdkTypes.hs +14 -5
  332. package/project/.sdk/tm/java/VERSION +1 -1
  333. package/project/.sdk/tm/java/test/RunnerSupport.java +4 -4
  334. package/project/.sdk/tm/java/utility/MakeError.java +4 -0
  335. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +4 -0
  336. package/project/.sdk/tm/js/test/utility.js +3 -3
  337. package/project/.sdk/tm/kotlin/VERSION +1 -1
  338. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +3 -3
  339. package/project/.sdk/tm/lean/VERSION +1 -1
  340. package/project/.sdk/tm/lean/test/TFeature.lean +27 -14
  341. package/project/.sdk/tm/lua/test/runner.lua +4 -4
  342. package/project/.sdk/tm/lua/utility/make_error.lua +4 -0
  343. package/project/.sdk/tm/ocaml/VERSION +1 -1
  344. package/project/.sdk/tm/ocaml/sdk_types.ml +14 -5
  345. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +5 -2
  346. package/project/.sdk/tm/perl/t/runner.pm +4 -4
  347. package/project/.sdk/tm/php/VERSION +1 -1
  348. package/project/.sdk/tm/php/test/Runner.php +4 -4
  349. package/project/.sdk/tm/php/utility/MakeError.php +5 -0
  350. package/project/.sdk/tm/py/pkg/utility/make_error.py +4 -0
  351. package/project/.sdk/tm/py/test/runner.py +19 -4
  352. package/project/.sdk/tm/rb/test/runner.rb +4 -4
  353. package/project/.sdk/tm/rb/utility/make_error.rb +4 -0
  354. package/project/.sdk/tm/rust/VERSION +1 -1
  355. package/project/.sdk/tm/rust/core/types.rs +22 -6
  356. package/project/.sdk/tm/rust/tests/common/mod.rs +6 -6
  357. package/project/.sdk/tm/rust/tests/pipeline_test.rs +6 -0
  358. package/project/.sdk/tm/rust/utility/make_error.rs +4 -0
  359. package/project/.sdk/tm/scala/VERSION +1 -1
  360. package/project/.sdk/tm/swift/VERSION +1 -1
  361. package/project/.sdk/tm/ts/src/tsconfig.json +1 -0
  362. package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +4 -0
  363. package/project/.sdk/tm/ts/test/tsconfig.json +1 -0
  364. package/project/.sdk/tm/ts/test/utility.ts +3 -3
  365. package/project/.sdk/tm/zig/VERSION +1 -1
  366. package/src/action/doctor.ts +410 -0
  367. package/src/action/feature.ts +54 -16
  368. package/src/action/target.ts +174 -25
  369. package/src/cmp/Entity.ts +7 -0
  370. package/src/cmp/Feature.ts +3 -1
  371. package/src/cmp/Main.ts +7 -1
  372. package/src/cmp/ReadmeExplanation.ts +2 -2
  373. package/src/cmp/ReadmeTop.ts +22 -9
  374. package/src/cmp/Registered.ts +100 -0
  375. package/src/cmp/Test.ts +4 -1
  376. package/src/helpers/dryrun.ts +57 -0
  377. package/src/helpers/featureSource.ts +208 -0
  378. package/src/helpers/naming.ts +73 -2
  379. package/src/helpers/opExample.ts +19 -2
  380. package/src/helpers/opShape.ts +65 -0
  381. package/src/helpers/packageMeta.ts +163 -10
  382. package/src/helpers/stdrep.ts +56 -0
  383. package/src/helpers/testPolicy.ts +52 -0
  384. package/src/sdkgen.ts +70 -4
  385. package/project/.sdk/tm/rust/feature/mod.rs +0 -24
package/bin/voxgig-sdkgen CHANGED
@@ -8,7 +8,7 @@ const { Shape, One } = require('shape')
8
8
 
9
9
  const { SdkGen } = require('../dist/sdkgen.js')
10
10
 
11
- const VERSION = '2.0.2'
11
+ const VERSION = '3.0.0'
12
12
  const KONSOLE = console
13
13
 
14
14
 
@@ -59,7 +59,20 @@ async function operate(options) {
59
59
  dryrun: options.dryrun,
60
60
  })
61
61
 
62
- await sdkgen.action(options.args)
62
+ const res = await sdkgen.action(options.args)
63
+
64
+ // `doctor` is a CHECK: it must fail the process so CI can gate on it.
65
+ // Everything else reports success by not throwing.
66
+ if (res && res.report && false === res.report.ok) {
67
+ const r = res.report
68
+ KONSOLE.log(
69
+ `\n.sdk has drifted from the scaffold: ` +
70
+ `${r.forked.length} forked, ${r.edited.length} edited, ` +
71
+ `${r.stale.length} stale, ${r.missing.length} missing. ` +
72
+ `Run \`voxgig-sdkgen target add <lang>\` to resync, ` +
73
+ `and move any project decision into .sdk/model/.`)
74
+ exit(new Error('sdk drift'))
75
+ }
63
76
  }
64
77
 
65
78
 
@@ -138,6 +151,13 @@ function version() { return VERSION }
138
151
  function help() {
139
152
  return `Usage: voxgig-sdkgen [options] <action> [args...]
140
153
 
154
+ Actions:
155
+ target add <lang> Add (or resync) a language target
156
+ feature add <name> Add a feature
157
+ doctor Report .sdk/ drift from the scaffold; exits non-zero
158
+ when a component is forked, a template master edited,
159
+ or a stale file left behind
160
+
141
161
  Options:
142
162
  -h, --help Show this help message
143
163
  -v, --version Show version
@@ -0,0 +1,14 @@
1
+ import type { ActionContext, ActionResult } from '../types';
2
+ type DoctorReport = {
3
+ forked: string[];
4
+ edited: string[];
5
+ stale: string[];
6
+ missing: string[];
7
+ additive: string[];
8
+ unwired: string[];
9
+ ok: boolean;
10
+ };
11
+ declare function action_doctor(args: string[], actx: ActionContext): Promise<ActionResult>;
12
+ declare function doctor(actx: ActionContext): Promise<ActionResult>;
13
+ export type { DoctorReport, };
14
+ export { action_doctor, doctor, };
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ // `voxgig-sdkgen doctor` — does this project's `.sdk/` still match the
3
+ // scaffold?
4
+ //
5
+ // WHY THIS EXISTS
6
+ //
7
+ // Nothing told a project that its `.sdk/` had drifted. `target add`
8
+ // OVERWRITES the vendored components and template masters, so any hand-edit
9
+ // there is silently reverted on the next run — and any file the scaffold has
10
+ // since stopped shipping just stays, compiling into the output forever. In
11
+ // voxgig-solardemo-sdk two such orphans broke the Go build in a single
12
+ // session: `utility/make_target.go` (replaced upstream by `make_point.go`,
13
+ // leaving a duplicate symbol) and `utility/struct/go.mod` (a nested module
14
+ // that made `utility/struct` unimportable).
15
+ //
16
+ // Every divergence in that repo was found by hand-diffing. Without a check,
17
+ // fixing it once guarantees nothing about next month.
18
+ //
19
+ // WHY A NAIVE `diff -r` DOES NOT WORK
20
+ //
21
+ // `target add` writes template masters with substitution PARTLY applied, and
22
+ // inconsistently: `tm/go/core/error.go` arrives substituted (`SolardemoError`
23
+ // where the scaffold says `ProjectNameError`), `tm/ts/test/utility.ts` arrives
24
+ // raw (its placeholders are substituted later, at generate time), and
25
+ // `tm/go/LICENSE` has the year filled in. A plain `diff -r` against the
26
+ // scaffold reported 20 edited files in that repo; 19 were substitution
27
+ // artefacts and exactly ONE was a real hand-edit.
28
+ //
29
+ // Only sdkgen knows which replacements it applied to which files, which is
30
+ // why this check belongs here and cannot be scripted downstream. It re-runs
31
+ // the same substitution before comparing, so what it reports is real.
32
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.action_doctor = action_doctor;
37
+ exports.doctor = doctor;
38
+ const node_path_1 = __importDefault(require("node:path"));
39
+ const jostraca_1 = require("jostraca");
40
+ const types_1 = require("../types");
41
+ const utility_1 = require("../utility");
42
+ const stdrep_1 = require("../helpers/stdrep");
43
+ const target_1 = require("./target");
44
+ // jostraca's Copy walk skips these (IGNORED_RE in CopyOp) — editor backups and
45
+ // deliberately-disabled templates never reach a project, so they are not drift.
46
+ const IGNORED_RE = /(~|-jostraca-off)$/;
47
+ // Extensions jostraca copies byte-for-byte. Comparing them as text would
48
+ // report spurious differences, so they are compared by raw bytes.
49
+ const BINARY_RE = /\.(png|jpg|jpeg|gif|ico|pdf|zip|gz|woff2?|ttf|eot|wasm)$/i;
50
+ // Root-level components sdkgen provides, and what a project loses by not
51
+ // wiring one in. A project's `Root.ts` / `Top.ts` come from create-sdkgen at
52
+ // init and are then FROZEN — `target add` never touches them — so a
53
+ // capability added to sdkgen afterwards is invisible to every existing
54
+ // project. solardemo's `Top.ts`, written before `ReadmeTop` existed, kept
55
+ // hand-rolling a 9-line stub root README with an empty mermaid diagram for
56
+ // months, and no number of `target add` runs would ever have said so.
57
+ //
58
+ // Not wiring one in is a legitimate choice, so this is REPORTED, never a
59
+ // failure.
60
+ const ROOT_COMPONENTS = [
61
+ ['ReadmeTop', 'the assembled root README (quickstart, howto, test, package table)'],
62
+ ['AgentGuideTop', 'the root AGENTS.md / CLAUDE.md agent guides'],
63
+ ['License', 'the root LICENSE'],
64
+ ['Security', 'the root SECURITY.md'],
65
+ ['Changelog', 'the root CHANGELOG.md'],
66
+ ['Deploy', 'the release/publish recipes'],
67
+ ];
68
+ const CMD_MAP = {
69
+ check: cmd_doctor_check,
70
+ };
71
+ async function action_doctor(args, actx) {
72
+ // `doctor` with no subcommand is the check — the command exists to be run
73
+ // in CI without anyone remembering a verb.
74
+ const cmdname = args[1];
75
+ const cmd = null == cmdname ? cmd_doctor_check : CMD_MAP[cmdname];
76
+ if (null == cmd) {
77
+ throw new utility_1.SdkGenError('Unknown doctor cmd: ' + cmdname);
78
+ }
79
+ return await cmd(args, actx);
80
+ }
81
+ async function cmd_doctor_check(_args, actx) {
82
+ return doctor(actx);
83
+ }
84
+ // Code API. Returns the report; the CLI turns a non-ok report into a
85
+ // non-zero exit so this can gate CI.
86
+ async function doctor(actx) {
87
+ const log = actx.log;
88
+ const fs = actx.fs();
89
+ const model = actx.model;
90
+ const root = actx.folder;
91
+ const report = {
92
+ forked: [], edited: [], stale: [], missing: [], additive: [],
93
+ unwired: [], ok: true,
94
+ };
95
+ const targets = Object.keys(model?.main?.[types_1.KIT]?.target ?? {});
96
+ log.info({ point: 'doctor-start', targets: targets.length });
97
+ for (const tname of targets) {
98
+ const declared = model?.main?.[types_1.KIT]?.target?.[tname];
99
+ // The target model records where it came from (`base`, written by
100
+ // `target add`). Fall back to the bundled scaffold.
101
+ const tref = (declared && declared.base) ?
102
+ node_path_1.default.join(declared.base, '..', tname) : tname;
103
+ let resolved;
104
+ try {
105
+ resolved = (0, target_1.resolveTarget)(tref, { folder: root, fs: () => fs });
106
+ }
107
+ catch (err) {
108
+ log.warn({
109
+ point: 'doctor-target-unresolved', target: tname, err: err.message,
110
+ note: tname + ': cannot find its scaffold (' + err.message + ')'
111
+ });
112
+ continue;
113
+ }
114
+ if (null != resolved) {
115
+ checkTarget(actx, resolved, report);
116
+ }
117
+ }
118
+ checkWiring(actx, report);
119
+ report.ok = 0 === report.forked.length + report.edited.length +
120
+ report.stale.length + report.missing.length;
121
+ for (const [kind, note] of [
122
+ ['forked', 'FORKED (will be reverted by `target add`)'],
123
+ ['edited', 'EDITED template master'],
124
+ ['stale', 'STALE (no longer written by `target add`)'],
125
+ ['missing', 'MISSING (would be written by `target add`)'],
126
+ ['additive', 'additive (project-owned, not drift)'],
127
+ ['unwired', 'NOT WIRED IN (root capability this project is missing)'],
128
+ ]) {
129
+ for (const file of report[kind]) {
130
+ log.info({ point: 'doctor-finding', kind, file, note: note + ': ' + file });
131
+ }
132
+ }
133
+ log.info({
134
+ point: 'doctor-end',
135
+ ok: report.ok,
136
+ forked: report.forked.length,
137
+ edited: report.edited.length,
138
+ stale: report.stale.length,
139
+ missing: report.missing.length,
140
+ additive: report.additive.length,
141
+ unwired: report.unwired.length,
142
+ note: report.ok ?
143
+ ('.sdk matches the scaffold (' + report.additive.length + ' additive)') :
144
+ ('.sdk has drifted: ' + report.forked.length + ' forked, ' +
145
+ report.edited.length + ' edited, ' + report.stale.length + ' stale, ' +
146
+ report.missing.length + ' missing')
147
+ });
148
+ return { report };
149
+ }
150
+ // Which root-level components the project's own wiring calls. The wiring is
151
+ // hand-written TypeScript (Root.ts / Top.ts / BuildSDK.ts), so this is a
152
+ // reference check, not a diff: sdkgen has no reference copy of a file it does
153
+ // not ship.
154
+ function checkWiring(actx, report) {
155
+ const fs = actx.fs();
156
+ const src = node_path_1.default.join(actx.folder, 'src');
157
+ if (!fs.existsSync(src)) {
158
+ return;
159
+ }
160
+ // Everything except cmp/, which is the per-target layer target add owns.
161
+ const wiring = walk(fs, src)
162
+ .filter((rel) => !rel.startsWith('cmp/') && rel.endsWith('.ts'))
163
+ .map((rel) => fs.readFileSync(node_path_1.default.join(src, rel), 'utf8'))
164
+ .join('\n');
165
+ if ('' === wiring) {
166
+ return;
167
+ }
168
+ for (const [name, what] of ROOT_COMPONENTS) {
169
+ // A bare identifier reference: imported and called, or at least named.
170
+ if (!new RegExp('\\b' + name + '\\b').test(wiring)) {
171
+ report.unwired.push(name + ' — ' + what);
172
+ }
173
+ }
174
+ }
175
+ function checkTarget(actx, resolved, report) {
176
+ const { tname, tfolder, torigname } = resolved;
177
+ const fs = actx.fs();
178
+ const model = actx.model;
179
+ const root = actx.folder;
180
+ // The two trees `target add` owns, and the substitution it applies to each.
181
+ //
182
+ // src/cmp — copied verbatim, so a byte compare is the truth.
183
+ // tm — copied through jostraca's template(), with ProjectName.
184
+ const trees = [
185
+ {
186
+ project: node_path_1.default.join(root, 'src', 'cmp', tname),
187
+ scaffold: node_path_1.default.join(tfolder, 'src', 'cmp', torigname),
188
+ replace: {},
189
+ kind: 'forked',
190
+ },
191
+ {
192
+ project: node_path_1.default.join(root, 'tm', tname),
193
+ scaffold: node_path_1.default.join(tfolder, 'tm', torigname),
194
+ replace: (0, stdrep_1.templateReplacements)(model, tname),
195
+ kind: 'edited',
196
+ },
197
+ ];
198
+ // The feature set `target add` would select right now. A project that
199
+ // added its targets before feature trimming existed carries source for
200
+ // features its model never declared — expected here as STALE, which is
201
+ // exactly what it is.
202
+ const featuremodel = model?.main?.[types_1.KIT]?.feature ?? {};
203
+ const features = Array.from(new Set([
204
+ 'test',
205
+ ...Object.keys(featuremodel).filter((n) => false !== featuremodel[n]?.active),
206
+ ]));
207
+ const excludes = (0, target_1.trimFeatures)({ log: quietLog(actx.log), fs: () => fs }, tfolder, torigname, tname, features);
208
+ for (const tree of trees) {
209
+ // Findings are reported at project-relative paths, the way a maintainer
210
+ // would type them.
211
+ const label = node_path_1.default.relative(root, tree.project).split(node_path_1.default.sep).join('/') + '/';
212
+ const expected = 'edited' === tree.kind ?
213
+ walk(fs, tree.scaffold).filter((rel) => !excluded(rel, excludes)) :
214
+ walk(fs, tree.scaffold);
215
+ const actual = walk(fs, tree.project);
216
+ const expectedSet = new Set(expected);
217
+ const actualSet = new Set(actual);
218
+ for (const rel of expected) {
219
+ if (!actualSet.has(rel)) {
220
+ report.missing.push(label + rel);
221
+ continue;
222
+ }
223
+ if (differs(fs, node_path_1.default.join(tree.scaffold, rel), node_path_1.default.join(tree.project, rel), model, tree.replace)) {
224
+ report[tree.kind].push(label + rel);
225
+ }
226
+ }
227
+ for (const rel of actual) {
228
+ if (expectedSet.has(rel)) {
229
+ continue;
230
+ }
231
+ // A component the scaffold has NEVER shipped is the project's own —
232
+ // the supported way to add a per-target component. Anything else under
233
+ // a tree `target add` owns is stale output.
234
+ const known = fs.existsSync(node_path_1.default.join(tree.scaffold, rel));
235
+ if ('forked' === tree.kind && !known) {
236
+ report.additive.push(label + rel);
237
+ }
238
+ else {
239
+ report.stale.push(label + rel);
240
+ }
241
+ }
242
+ }
243
+ }
244
+ // Every file under `dir`, as forward-slash paths relative to it, sorted.
245
+ // Missing directory -> no files (a target that was never added).
246
+ function walk(fs, dir) {
247
+ const out = [];
248
+ if (!fs.existsSync(dir)) {
249
+ return out;
250
+ }
251
+ const descend = (rel) => {
252
+ const abs = '' === rel ? dir : node_path_1.default.join(dir, rel);
253
+ for (const entry of fs.readdirSync(abs).sort()) {
254
+ if (IGNORED_RE.test(entry)) {
255
+ continue;
256
+ }
257
+ const entryrel = '' === rel ? entry : rel + '/' + entry;
258
+ if (fs.statSync(node_path_1.default.join(dir, entryrel)).isDirectory()) {
259
+ descend(entryrel);
260
+ }
261
+ else {
262
+ out.push(entryrel);
263
+ }
264
+ }
265
+ };
266
+ descend('');
267
+ return out.sort();
268
+ }
269
+ function excluded(rel, excludes) {
270
+ for (const re of excludes) {
271
+ if (re.test(rel)) {
272
+ return true;
273
+ }
274
+ }
275
+ return false;
276
+ }
277
+ // Compare a scaffold file with a project file, applying the SAME substitution
278
+ // `target add` applied on the way in. Without this the comparison reports
279
+ // every substituted placeholder as an edit.
280
+ function differs(fs, scaffoldPath, projectPath, model, replace) {
281
+ if (BINARY_RE.test(scaffoldPath)) {
282
+ return !fs.readFileSync(scaffoldPath).equals(fs.readFileSync(projectPath));
283
+ }
284
+ const src = fs.readFileSync(scaffoldPath, 'utf8');
285
+ const expected = 0 === Object.keys(replace).length ? src :
286
+ (0, jostraca_1.template)(src, model, { replace });
287
+ return expected !== fs.readFileSync(projectPath, 'utf8');
288
+ }
289
+ // trimFeatures logs its decisions; doctor is a report, not a run.
290
+ function quietLog(log) {
291
+ const noop = () => { };
292
+ const quiet = { info: noop, debug: noop, warn: log.warn.bind(log), error: noop, trace: noop, fatal: noop };
293
+ quiet.child = () => quiet;
294
+ return quiet;
295
+ }
296
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/action/doctor.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,10 @@ exports.action_feature = action_feature;
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const jostraca_1 = require("jostraca");
10
10
  const util_1 = require("@voxgig/util");
11
+ const dryrun_1 = require("../helpers/dryrun");
11
12
  const types_1 = require("../types");
12
13
  const utility_1 = require("../utility");
14
+ const featureSource_1 = require("../helpers/featureSource");
13
15
  const action_1 = require("./action");
14
16
  const CMD_MAP = {
15
17
  add: cmd_feature_add
@@ -41,7 +43,17 @@ async function feature_add(features, actx) {
41
43
  url: actx.url,
42
44
  content: (0, action_1.loadContent)(actx, 'feature')
43
45
  },
44
- model: actx.model
46
+ model: actx.model,
47
+ // Dry run must be passed per-call, not left to the Jostraca instance.
48
+ // jostraca's `generate` runs its own options through OptionsShape FIRST,
49
+ // which fills in `control.dryrun: false`, and only then merges
50
+ // `deep({}, gOpts.control, opts.control)` — so the shape default silently
51
+ // OVERRIDES the instance-level flag. `-y target add ts` printed
52
+ // ** DRY RUN ** and wrote every file. (Same trap as the `existing` FIX
53
+ // note in jostraca.js.)
54
+ control: {
55
+ dryrun: !!actx.opts.dryrun
56
+ },
45
57
  };
46
58
  opts.log.info({
47
59
  point: 'feature-start',
@@ -49,6 +61,9 @@ async function feature_add(features, actx) {
49
61
  });
50
62
  const jres = await jostraca.generate(opts, () => FeatureRoot({ features }));
51
63
  (0, util_1.showChanges)(opts.log, 'feature-result', jres);
64
+ if (actx.opts.dryrun) {
65
+ (0, dryrun_1.showDryrun)(opts.log, 'feature-result', jres, actx.folder);
66
+ }
52
67
  opts.log.info({
53
68
  point: 'feature-end',
54
69
  note: (actx.opts.dryrun ? '** DRY RUN **' : '')
@@ -60,6 +75,7 @@ async function feature_add(features, actx) {
60
75
  const FeatureRoot = (0, jostraca_1.cmp)(function FeatureRoot(props) {
61
76
  const { ctx$, features } = props;
62
77
  const { model, log } = ctx$;
78
+ const fs = ctx$.fs();
63
79
  const target = model.main[types_1.KIT].target;
64
80
  (0, jostraca_1.Project)({}, () => {
65
81
  (0, jostraca_1.each)(features, (n) => {
@@ -81,14 +97,37 @@ const FeatureRoot = (0, jostraca_1.cmp)(function FeatureRoot(props) {
81
97
  names: features,
82
98
  }));
83
99
  });
84
- (0, jostraca_1.each)(target, (t) => (0, jostraca_1.Folder)({ name: 'tm/' + t.name + '/src/feature/' + fname }, () => {
85
- const from = node_path_1.default.join((t.base || node_path_1.default.join(BASE, '/project/.sdk')), 'tm', t.name, '/src/feature/', fname);
86
- (0, jostraca_1.Copy)({
87
- // from: BASE + '/project/.sdk/tm/' + target.name + '/src/feature/' + name,
88
- from,
89
- exclude: true
90
- });
91
- }));
100
+ // Bring in the feature's source for every target already in the model.
101
+ // Where that source lives is language-specific `src/feature/<name>/`
102
+ // for ts and js, `feature/<name>_feature.go` for go,
103
+ // `lib/feature/<name>/` for dart, and so on so discover it in the
104
+ // target's template tree instead of assuming one layout. Assuming
105
+ // `src/feature/<name>` meant `feature add` silently added nothing for
106
+ // every target that keeps feature source elsewhere.
107
+ (0, jostraca_1.each)(target, (t) => {
108
+ const sdkfolder = t.base || node_path_1.default.join(BASE, 'project/.sdk');
109
+ const tmfolder = node_path_1.default.join(sdkfolder, 'tm', t.name);
110
+ const sources = (0, featureSource_1.findFeatureSources)(fs, tmfolder, [fname]);
111
+ if (0 === sources.length) {
112
+ log.warn({
113
+ point: 'feature-source-missing', feature: fname, target: t.name,
114
+ folder: tmfolder,
115
+ note: 'no ' + fname + ' source found for target ' + t.name
116
+ });
117
+ return;
118
+ }
119
+ for (const source of sources) {
120
+ // A folder source IS the destination folder; a file source goes
121
+ // into the folder that holds it.
122
+ const dest = source.folder ? source.path : node_path_1.default.dirname(source.path);
123
+ (0, jostraca_1.Folder)({ name: 'tm/' + t.name + '/' + dest }, () => {
124
+ (0, jostraca_1.Copy)({
125
+ from: node_path_1.default.join(tmfolder, source.path),
126
+ exclude: true
127
+ });
128
+ });
129
+ }
130
+ });
92
131
  log.info({
93
132
  point: 'feature-done', feature: fname,
94
133
  note: fname
@@ -1 +1 @@
1
- {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/action/feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/action/feature.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
1
  import type { ActionContext, ActionResult } from '../types';
2
2
  declare function action_target(args: string[], actx: ActionContext): Promise<ActionResult>;
3
3
  declare function target_add(targets: string[], actx: ActionContext): Promise<ActionResult>;
4
+ declare function trimFeatures(ctx$: any, tfolder: string, torigname: string, tname: string, features: string[]): RegExp[];
5
+ declare function readTargetFeature(ctx$: any, tfolder: string, torigname: string, tname: string): {
6
+ trim: boolean;
7
+ fullset: string[];
8
+ };
4
9
  declare function resolveTarget(tref: string, ctx$: any): {
5
10
  tname: string;
6
11
  tfolder: string;
7
12
  torigname: string;
8
13
  base: string;
9
14
  };
10
- export { action_target, target_add, resolveTarget, };
15
+ export { action_target, target_add, resolveTarget, trimFeatures, readTargetFeature, };