@voxgig/sdkgen 1.3.14 → 1.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/action.js.map +1 -1
  3. package/dist/action/feature.js.map +1 -1
  4. package/dist/action/target.js.map +1 -1
  5. package/dist/cmp/AgentGuide.js.map +1 -1
  6. package/dist/cmp/AgentGuideContent.js.map +1 -1
  7. package/dist/cmp/AgentGuideFeature.js.map +1 -1
  8. package/dist/cmp/AgentGuideTop.js.map +1 -1
  9. package/dist/cmp/Changelog.js.map +1 -1
  10. package/dist/cmp/Deploy.js.map +1 -1
  11. package/dist/cmp/Entity.js +5 -1
  12. package/dist/cmp/Entity.js.map +1 -1
  13. package/dist/cmp/Feature.js +2 -1
  14. package/dist/cmp/Feature.js.map +1 -1
  15. package/dist/cmp/FeatureHook.js.map +1 -1
  16. package/dist/cmp/License.js.map +1 -1
  17. package/dist/cmp/Main.js.map +1 -1
  18. package/dist/cmp/Readme.js.map +1 -1
  19. package/dist/cmp/ReadmeEntity.js.map +1 -1
  20. package/dist/cmp/ReadmeErrors.js +1 -1
  21. package/dist/cmp/ReadmeErrors.js.map +1 -1
  22. package/dist/cmp/ReadmeExplanation.js +2 -2
  23. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  24. package/dist/cmp/ReadmeHowto.js.map +1 -1
  25. package/dist/cmp/ReadmeInstall.js.map +1 -1
  26. package/dist/cmp/ReadmeIntro.js.map +1 -1
  27. package/dist/cmp/ReadmeModel.js.map +1 -1
  28. package/dist/cmp/ReadmeOptions.js.map +1 -1
  29. package/dist/cmp/ReadmeQuick.js.map +1 -1
  30. package/dist/cmp/ReadmeRef.js.map +1 -1
  31. package/dist/cmp/ReadmeTop.js +1 -1
  32. package/dist/cmp/ReadmeTop.js.map +1 -1
  33. package/dist/cmp/Security.js.map +1 -1
  34. package/dist/cmp/Test.js.map +1 -1
  35. package/dist/helpers/buildIdNames.js.map +1 -1
  36. package/dist/helpers/canonType.d.ts +3 -2
  37. package/dist/helpers/canonType.js +112 -24
  38. package/dist/helpers/canonType.js.map +1 -1
  39. package/dist/helpers/collectDeps.d.ts +1 -1
  40. package/dist/helpers/collectDeps.js +36 -13
  41. package/dist/helpers/collectDeps.js.map +1 -1
  42. package/dist/helpers/getMatchEntries.js.map +1 -1
  43. package/dist/helpers/naming.d.ts +7 -1
  44. package/dist/helpers/naming.js +90 -0
  45. package/dist/helpers/naming.js.map +1 -1
  46. package/dist/helpers/opExample.d.ts +1 -1
  47. package/dist/helpers/opExample.js +37 -20
  48. package/dist/helpers/opExample.js.map +1 -1
  49. package/dist/helpers/opShape.d.ts +5 -1
  50. package/dist/helpers/opShape.js +174 -7
  51. package/dist/helpers/opShape.js.map +1 -1
  52. package/dist/helpers/packageMeta.js.map +1 -1
  53. package/dist/sdkgen.d.ts +3 -3
  54. package/dist/sdkgen.js +12 -2
  55. package/dist/sdkgen.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/utility.js.map +1 -1
  59. package/package.json +20 -14
  60. package/project/.sdk/model/target/cpp.aontu +4 -4
  61. package/project/.sdk/model/target/go-cli.aontu +17 -17
  62. package/project/.sdk/model/target/go-mcp.aontu +11 -11
  63. package/project/.sdk/model/target/go.aontu +1 -1
  64. package/project/.sdk/model/target/haskell.aontu +6 -3
  65. package/project/.sdk/model/target/java.aontu +4 -4
  66. package/project/.sdk/model/target/kotlin.aontu +4 -4
  67. package/project/.sdk/model/target/lean.aontu +51 -0
  68. package/project/.sdk/model/target/scala.aontu +4 -4
  69. package/project/.sdk/model/target/zig.aontu +12 -2
  70. package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
  71. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +167 -0
  72. package/project/.sdk/src/cmp/c/Entity_c.ts +3 -3
  73. package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
  74. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
  75. package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +169 -0
  76. package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
  77. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
  78. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
  79. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
  80. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
  81. package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
  82. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
  83. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
  84. package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
  85. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
  86. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
  87. package/project/.sdk/src/cmp/c/TestDirect_c.ts +3 -3
  88. package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
  89. package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
  90. package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
  91. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
  92. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
  93. package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +65 -0
  94. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
  95. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
  96. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
  97. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
  98. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
  99. package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
  100. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
  101. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
  102. package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
  103. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
  104. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
  105. package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
  106. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
  107. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
  108. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
  109. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +3 -3
  110. package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +2 -2
  111. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
  112. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
  113. package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +136 -0
  114. package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
  115. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
  116. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
  117. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
  118. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
  119. package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
  120. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
  121. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
  122. package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
  123. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
  124. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
  125. package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +3 -3
  126. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
  127. package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -0
  128. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +195 -0
  129. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +3 -3
  130. package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +2 -2
  131. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
  132. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
  133. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
  134. package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +210 -0
  135. package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
  136. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
  137. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
  138. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
  139. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
  140. package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
  141. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
  142. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
  143. package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
  144. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
  145. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
  146. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
  147. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
  148. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -30
  149. package/project/.sdk/src/cmp/dart/Entity_dart.ts +11 -3
  150. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +2 -2
  151. package/project/.sdk/src/cmp/dart/Main_dart.ts +3 -3
  152. package/project/.sdk/src/cmp/dart/Package_dart.ts +1 -1
  153. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
  154. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  155. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  156. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
  157. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  158. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  159. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  160. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  161. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
  162. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
  163. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  164. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
  165. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  166. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +4 -4
  167. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
  168. package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
  169. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
  170. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
  171. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
  172. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +164 -0
  173. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +1 -1
  174. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
  175. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  176. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
  177. package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +144 -0
  178. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
  179. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
  180. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
  181. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
  182. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
  183. package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
  184. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
  185. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
  186. package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
  187. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
  188. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
  189. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
  190. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
  191. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
  192. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
  193. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
  194. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
  195. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
  196. package/project/.sdk/src/cmp/go/Config_go.ts +4 -1
  197. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +121 -20
  198. package/project/.sdk/src/cmp/go/Entity_go.ts +3 -3
  199. package/project/.sdk/src/cmp/go/Main_go.ts +7 -6
  200. package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
  201. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
  202. package/project/.sdk/src/cmp/go/TestDirect_go.ts +3 -3
  203. package/project/.sdk/src/cmp/go/TestEntity_go.ts +11 -4
  204. package/project/.sdk/src/cmp/go/utility_go.ts +28 -2
  205. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +249 -44
  206. package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
  207. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +200 -31
  208. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
  209. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
  210. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  211. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  212. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  213. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  214. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
  215. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  216. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
  217. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
  218. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  219. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  220. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  221. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
  222. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +206 -0
  223. package/project/.sdk/src/cmp/java/Entity_java.ts +3 -3
  224. package/project/.sdk/src/cmp/java/MainEntity_java.ts +2 -2
  225. package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
  226. package/project/.sdk/src/cmp/java/Package_java.ts +1 -1
  227. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
  228. package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +208 -0
  229. package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
  230. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
  231. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
  232. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
  233. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
  234. package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
  235. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
  236. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
  237. package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
  238. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
  239. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
  240. package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
  241. package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
  242. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -9
  243. package/project/.sdk/src/cmp/js/Entity_js.ts +3 -3
  244. package/project/.sdk/src/cmp/js/MainEntity_js.ts +6 -4
  245. package/project/.sdk/src/cmp/js/Main_js.ts +2 -2
  246. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
  247. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
  248. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
  249. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  250. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
  251. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
  252. package/project/.sdk/src/cmp/js/TestDirect_js.ts +10 -9
  253. package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
  254. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
  255. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +200 -0
  256. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +3 -3
  257. package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +2 -2
  258. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
  259. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +1 -1
  260. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
  261. package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +198 -0
  262. package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
  263. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
  264. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
  265. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
  266. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
  267. package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
  268. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
  269. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
  270. package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
  271. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
  272. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
  273. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
  274. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
  275. package/project/.sdk/src/cmp/lean/Config_lean.ts +88 -0
  276. package/project/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
  277. package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
  278. package/project/.sdk/src/cmp/lean/Main_lean.ts +120 -0
  279. package/project/.sdk/src/cmp/lean/Package_lean.ts +68 -0
  280. package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
  281. package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
  282. package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
  283. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +38 -0
  284. package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
  285. package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
  286. package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
  287. package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
  288. package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +16 -0
  289. package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
  290. package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
  291. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +18 -0
  292. package/project/.sdk/src/cmp/lean/Test_lean.ts +207 -0
  293. package/project/.sdk/src/cmp/lean/utility_lean.ts +78 -0
  294. package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
  295. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -6
  296. package/project/.sdk/src/cmp/lua/Entity_lua.ts +3 -3
  297. package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
  298. package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -1
  299. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  300. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
  301. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
  302. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  303. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  304. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
  305. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +8 -3
  306. package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
  307. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
  308. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
  309. package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +126 -0
  310. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
  311. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
  312. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
  313. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
  314. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
  315. package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
  316. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
  317. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
  318. package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
  319. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
  320. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
  321. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
  322. package/project/.sdk/src/cmp/perl/Entity_perl.ts +3 -3
  323. package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +2 -2
  324. package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
  325. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
  326. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
  327. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
  328. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
  329. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
  330. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
  331. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
  332. package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
  333. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
  334. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
  335. package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
  336. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
  337. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
  338. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
  339. package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
  340. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -7
  341. package/project/.sdk/src/cmp/php/Entity_php.ts +3 -3
  342. package/project/.sdk/src/cmp/php/MainEntity_php.ts +2 -2
  343. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  344. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
  345. package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
  346. package/project/.sdk/src/cmp/php/TestEntity_php.ts +8 -3
  347. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -8
  348. package/project/.sdk/src/cmp/py/Entity_py.ts +4 -12
  349. package/project/.sdk/src/cmp/py/MainEntity_py.ts +2 -2
  350. package/project/.sdk/src/cmp/py/Main_py.ts +2 -2
  351. package/project/.sdk/src/cmp/py/Package_py.ts +1 -1
  352. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  353. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
  354. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
  355. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  356. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  357. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  358. package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
  359. package/project/.sdk/src/cmp/py/TestEntity_py.ts +8 -3
  360. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +32 -8
  361. package/project/.sdk/src/cmp/rb/Entity_rb.ts +3 -3
  362. package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +2 -2
  363. package/project/.sdk/src/cmp/rb/Package_rb.ts +2 -2
  364. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  365. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
  366. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
  367. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  368. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  369. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  370. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
  371. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +8 -3
  372. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +6 -2
  373. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +151 -0
  374. package/project/.sdk/src/cmp/rust/Entity_rust.ts +4 -4
  375. package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +2 -2
  376. package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
  377. package/project/.sdk/src/cmp/rust/Package_rust.ts +1 -1
  378. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
  379. package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +144 -0
  380. package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
  381. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
  382. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
  383. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
  384. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
  385. package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
  386. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
  387. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
  388. package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
  389. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
  390. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
  391. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
  392. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
  393. package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
  394. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +201 -0
  395. package/project/.sdk/src/cmp/scala/Entity_scala.ts +3 -3
  396. package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +2 -2
  397. package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
  398. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
  399. package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +182 -0
  400. package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
  401. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
  402. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
  403. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
  404. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
  405. package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
  406. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
  407. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
  408. package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
  409. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
  410. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
  411. package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +3 -3
  412. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
  413. package/project/.sdk/src/cmp/scala/Test_scala.ts +9 -1
  414. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +151 -0
  415. package/project/.sdk/src/cmp/swift/Entity_swift.ts +3 -3
  416. package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +2 -2
  417. package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
  418. package/project/.sdk/src/cmp/swift/Package_swift.ts +1 -1
  419. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
  420. package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +187 -0
  421. package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
  422. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
  423. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
  424. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
  425. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
  426. package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
  427. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
  428. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
  429. package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
  430. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
  431. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
  432. package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +1 -1
  433. package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
  434. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -6
  435. package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -3
  436. package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +6 -4
  437. package/project/.sdk/src/cmp/ts/Main_ts.ts +2 -2
  438. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
  439. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
  440. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
  441. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  442. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
  443. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
  444. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +17 -15
  445. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
  446. package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
  447. package/project/.sdk/src/cmp/zig/Entity_zig.ts +4 -4
  448. package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +2 -2
  449. package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
  450. package/project/.sdk/src/cmp/zig/Package_zig.ts +61 -0
  451. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
  452. package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
  453. package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
  454. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
  455. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
  456. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
  457. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
  458. package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
  459. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
  460. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
  461. package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
  462. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
  463. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
  464. package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
  465. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
  466. package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
  467. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
  468. package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
  469. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +8 -16
  470. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +10 -28
  471. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
  472. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
  473. package/project/.sdk/tm/dart/test/primary_test.dart +7 -0
  474. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
  475. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
  476. package/project/.sdk/tm/go/feature/test_feature.go +33 -1
  477. package/project/.sdk/tm/go/test/primary_utility_test.go +41 -42
  478. package/project/.sdk/tm/go/test/runner_test.go +30 -1
  479. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
  480. package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
  481. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +7 -24
  482. package/project/.sdk/tm/js/Makefile +1 -1
  483. package/project/.sdk/tm/js/jsconfig.json +12 -0
  484. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +18 -1
  485. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +8 -0
  486. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +7 -20
  487. package/project/.sdk/tm/lean/LICENSE +21 -0
  488. package/project/.sdk/tm/lean/VERSION +1 -0
  489. package/project/.sdk/tm/lean/src/SdkFeature.lean +171 -0
  490. package/project/.sdk/tm/lean/src/SdkFeatures.lean +602 -0
  491. package/project/.sdk/tm/lean/src/SdkJson.lean +134 -0
  492. package/project/.sdk/tm/lean/src/SdkRuntime.lean +356 -0
  493. package/project/.sdk/tm/lean/src/SdkUtility.lean +617 -0
  494. package/project/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
  495. package/project/.sdk/tm/lean/src/Vregex.lean +412 -0
  496. package/project/.sdk/tm/lean/src/feature/README.md +5 -0
  497. package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  498. package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  499. package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  500. package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  501. package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  502. package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  503. package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  504. package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  505. package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  506. package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  507. package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  508. package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  509. package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  510. package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  511. package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  512. package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  513. package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  514. package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  515. package/project/.sdk/tm/lean/test/StructCorpus.lean +697 -0
  516. package/project/.sdk/tm/lean/test/TFeature.lean +268 -0
  517. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +349 -0
  518. package/project/.sdk/tm/lua/test/primary_utility_test.lua +10 -8
  519. package/project/.sdk/tm/ocaml/Makefile +5 -1
  520. package/project/.sdk/tm/perl/t/primary_utility.t +8 -17
  521. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +9 -7
  522. package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
  523. package/project/.sdk/tm/py/feature/test_feature.py +28 -1
  524. package/project/.sdk/tm/py/test/test_primary_utility.py +13 -18
  525. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
  526. package/project/.sdk/tm/rb/feature/test_feature.rb +24 -1
  527. package/project/.sdk/tm/rb/test/primary_utility_test.rb +7 -8
  528. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
  529. package/project/.sdk/tm/rust/tests/common/mod.rs +37 -1
  530. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +12 -26
  531. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
  532. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +7 -8
  533. package/project/.sdk/tm/ts/Makefile +1 -1
  534. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +18 -1
  535. package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +65 -21
  536. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  537. package/src/cmp/Entity.ts +5 -1
  538. package/src/cmp/Feature.ts +2 -1
  539. package/src/cmp/ReadmeErrors.ts +2 -2
  540. package/src/cmp/ReadmeExplanation.ts +3 -3
  541. package/src/cmp/ReadmeTop.ts +2 -2
  542. package/src/helpers/canonType.ts +121 -25
  543. package/src/helpers/collectDeps.ts +39 -12
  544. package/src/helpers/naming.ts +106 -0
  545. package/src/helpers/opExample.ts +43 -20
  546. package/src/helpers/opShape.ts +197 -11
  547. package/src/sdkgen.ts +13 -3
  548. package/src/tsconfig.json +2 -0
  549. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -2,7 +2,7 @@
2
2
  import * as Path from 'node:path'
3
3
 
4
4
  import {
5
- cmp, each,
5
+ cmp, each, deriveEntityNames,
6
6
  File, Content, Fragment, Slot,
7
7
  } from '@voxgig/sdkgen'
8
8
 
@@ -54,6 +54,14 @@ const Main = cmp(function Main(props: any) {
54
54
  const mcpModule = `github.com/${org}/${model.name}-sdk/go-mcp`
55
55
 
56
56
  const entityMap: any = getModelPath(model, `main.${KIT}.entity`)
57
+ // Derive each entity's PascalCase `Name` here rather than relying on another
58
+ // TARGET having run first. This target sets `phase.entity: { active: false }`
59
+ // (see model/target/go-{cli,mcp}.aontu), so create-sdkgen's Root.ts never
60
+ // calls names() for it — the accessor emitted below used to read `Name` off
61
+ // objects the `go` target happened to have named as a side effect, which
62
+ // yields `client.undefined(nil)` whenever this target is generated without
63
+ // `go`, or before it in target order.
64
+ deriveEntityNames(entityMap)
57
65
  const entityNames = Object.keys(entityMap).map(n => n.toLowerCase())
58
66
  const entityHelp = entityNames.length > 0 ? entityNames.join(' | ') : '(none)'
59
67
 
@@ -70,58 +78,198 @@ const Main = cmp(function Main(props: any) {
70
78
  /go-mcp
71
79
  `))
72
80
 
73
- // README.md — usage guide for the MCP server.
81
+ // ==========================================================================
82
+ // README.md — Diátaxis-structured, examples-first usage guide.
83
+ //
84
+ // The server ALWAYS registers exactly two tools (<slug>_list / <slug>_load;
85
+ // see tools.fragment.go), so tools are not gated. Concrete tool-call and
86
+ // entity examples are MODEL-DRIVEN off the real slug + entity names.
87
+ // ==========================================================================
88
+ const bin = `${model.name}-mcp`
89
+ const toolList = `${slugLower}_list`
90
+ const toolLoad = `${slugLower}_load`
91
+ const entityCount = entityNames.length
92
+ const entityNoun = entityCount === 1 ? 'entity' : 'entities'
74
93
  const firstEntity = entityNames[0] || 'entity'
94
+
95
+ // Example entities chosen per-op so a doc example never shows an entity that
96
+ // doesn't support the op being demonstrated (both tools are always
97
+ // registered, but a given entity only responds to the ops it exposes).
98
+ const activeEntityObjs: any[] =
99
+ Object.values(entityMap).filter((e: any) => e && e.active !== false)
100
+ const entWithOp = (op: string) => {
101
+ const e = activeEntityObjs.find(
102
+ (x: any) => x.op && x.op[op] && x.op[op].active !== false)
103
+ return e ? String(e.name).toLowerCase() : firstEntity
104
+ }
105
+ const listEntity = entWithOp('list')
106
+ const loadEntity = entWithOp('load')
107
+
108
+ const projUpper = String(model.name).toUpperCase().replace(/[^A-Z0-9]/g, '_')
109
+ const apiKeyEnv = projUpper + '_APIKEY'
110
+ const baseEnv = projUpper + '_BASE'
111
+
75
112
  File({ name: 'README.md' }, () => Content(`# ${model.name}-mcp
76
113
 
77
- MCP server exposing the ${model.Name} SDK as tools, built on the
78
- [official Go MCP SDK](https://github.com/modelcontextprotocol/go-sdk)
79
- and the sibling Go SDK at \`../go\`.
114
+ [MCP](https://modelcontextprotocol.io) server exposing the ${model.Name} SDK as
115
+ two agent tools — \`${toolList}\` and \`${toolLoad}\` — built on the
116
+ [official Go MCP SDK](https://github.com/modelcontextprotocol/go-sdk) and the
117
+ sibling Go SDK at \`../go\`. Runs over **stdio** (default, for spawnable installs)
118
+ or **streamable HTTP** (one shared server for several agents).
80
119
 
81
- ## Tools
120
+ ## Examples
82
121
 
83
- | Tool | Args | Returns |
84
- |------|------|---------|
85
- | \`${slugLower}_list\` | \`entity\`, optional \`query\` map | First page of records as JSON |
86
- | \`${slugLower}_load\` | \`entity\`, \`query\` (e.g. \`{id:N}\`) | Single record as JSON |
122
+ \`\`\`sh
123
+ # 1. Build a native binary (-> dist/<os>-<arch>/${bin})
124
+ make build
87
125
 
88
- JSON schemas for both tools are emitted by the SDK from the \`Args\`
89
- struct's \`json\` / \`jsonschema\` tags — no schema is hand-written.
126
+ # 2. Provide credentials via the environment
127
+ export ${apiKeyEnv}=sk_live_xxx
90
128
 
91
- ## Entities
129
+ # 3a. Install into Claude Code over stdio (most common)
130
+ claude mcp add --scope user ${slugLower} \\
131
+ -- /absolute/path/to/${bin} -transport stdio
92
132
 
93
- ${entityHelp}
133
+ # 3b. …or run a shared HTTP server instead
134
+ ./${bin} -transport http -addr :8080
135
+ \`\`\`
136
+
137
+ Tool-call arguments (what an agent sends):
138
+
139
+ \`\`\`jsonc
140
+ // ${toolList}: first page of records
141
+ { "entity": "${listEntity}" }
142
+ { "entity": "${listEntity}", "query": { } }
143
+
144
+ // ${toolLoad}: one record by id
145
+ { "entity": "${loadEntity}", "query": { "id": 1 } }
146
+ \`\`\`
147
+
148
+ > The rest of this guide follows the [Diátaxis](https://diataxis.fr) framework:
149
+ > a hands-on **Tutorial**, task-focused **How-to guides**, a factual
150
+ > **Reference**, and background **Explanation**.
151
+
152
+ ## Tutorial: install and call a tool
153
+
154
+ 1. **Build** the server from this \`go-mcp/\` directory:
94
155
 
95
- ## Build
156
+ \`\`\`sh
157
+ make build # -> dist/<os>-<arch>/${bin}
158
+ \`\`\`
159
+
160
+ 2. **Set your API key:**
161
+
162
+ \`\`\`sh
163
+ export ${apiKeyEnv}=sk_live_xxx
164
+ \`\`\`
165
+
166
+ 3. **Install it into Claude Code** (stdio transport):
167
+
168
+ \`\`\`sh
169
+ claude mcp add --scope user ${slugLower} \\
170
+ -- "$PWD"/dist/*/${bin} -transport stdio
171
+ \`\`\`
172
+
173
+ 4. **Restart Claude Code.** The \`${toolList}\` and \`${toolLoad}\` tools now appear
174
+ in new sessions. Ask the agent to *"list ${listEntity} using ${slugLower}"*
175
+ and it calls \`${toolList}\` with \`{"entity":"${listEntity}"}\`.
176
+
177
+ ## How-to guides
178
+
179
+ ### Authenticate and choose an environment
180
+
181
+ Configuration is read from the environment — nothing is written to disk:
96
182
 
97
183
  \`\`\`sh
98
- go build -o ${model.name}-mcp ./...
184
+ export ${apiKeyEnv}=sk_live_xxx # API key
185
+ export ${baseEnv}=https://api.example.com # optional: override the API base URL
99
186
  \`\`\`
100
187
 
101
- ## Run
188
+ Set these in the shell that launches the server (or in the \`claude mcp add\`
189
+ environment) so every tool call is authenticated.
190
+
191
+ ### Run as a shared HTTP server
102
192
 
103
193
  \`\`\`sh
104
- # stdio transport for spawnable agent installs (default).
105
- ./${model.name}-mcp
194
+ ./${bin} -transport http -addr :8080
195
+ \`\`\`
196
+
197
+ Streamable HTTP lets several agents share one running process; stdio (the
198
+ default) spawns a fresh process per client.
106
199
 
107
- # streamable HTTP transport — share one running server between agents.
108
- ./${model.name}-mcp -transport http -addr :8080
200
+ ### Call the \`${toolList}\` tool
201
+
202
+ Args: \`entity\` (required), \`query\` (optional filter map). Returns the first
203
+ page of records as JSON:
204
+
205
+ \`\`\`jsonc
206
+ { "entity": "${listEntity}" }
109
207
  \`\`\`
110
208
 
111
- ## Install for Claude Code
209
+ ### Call the \`${toolLoad}\` tool
210
+
211
+ Args: \`entity\` (required), \`query\` = \`{"id":N}\` (required). Returns the single
212
+ record as JSON:
213
+
214
+ \`\`\`jsonc
215
+ { "entity": "${loadEntity}", "query": { "id": 1 } }
216
+ \`\`\`
217
+
218
+ ### Cross-compile release binaries
112
219
 
113
220
  \`\`\`sh
114
- claude mcp add --scope user ${slugLower} \\
115
- -- /absolute/path/to/${model.name}-mcp -transport stdio
221
+ make build # native binary for this machine
222
+ make build-all # linux/darwin/windows x amd64/arm64, under dist/<os>-<arch>/
116
223
  \`\`\`
117
224
 
118
- After install, restart Claude Code; the \`${slugLower}_list\` and
119
- \`${slugLower}_load\` tools become available in new sessions.
225
+ ## Reference
226
+
227
+ ### Tools
228
+
229
+ | Tool | Args | Returns |
230
+ |------|------|---------|
231
+ | \`${toolList}\` | \`entity\` (required), \`query\` (optional map) | First page of records as JSON |
232
+ | \`${toolLoad}\` | \`entity\` (required), \`query\` = \`{id:N}\` | Single record as JSON |
233
+
234
+ On error, a tool returns an MCP error result (\`isError: true\`) whose text is the
235
+ failure message (e.g. unknown entity, or an API error).
236
+
237
+ ### \`Args\` schema
238
+
239
+ Both tools take the same argument object:
240
+
241
+ | Field | Type | Notes |
242
+ |-------|------|-------|
243
+ | \`entity\` | string | One of the ${entityCount} supported entities (see below). |
244
+ | \`query\` | object | Optional match map. \`{"id":N}\` for load; omit or \`{}\` for list. |
245
+
246
+ JSON schemas are emitted by the SDK from the \`Args\` struct's \`json\` /
247
+ \`jsonschema\` tags — no schema is hand-written.
248
+
249
+ ### Transports & flags
120
250
 
121
- ## Smoke test via HTTP
251
+ | Flag | Default | Purpose |
252
+ |------|---------|---------|
253
+ | \`-transport\` | \`stdio\` | \`stdio\` (spawnable) or \`http\` (streamable HTTP). |
254
+ | \`-addr\` | \`:8080\` | Listen address for the \`http\` transport. |
255
+
256
+ ### Environment variables
257
+
258
+ | Variable | Purpose |
259
+ |----------|---------|
260
+ | \`${apiKeyEnv}\` | API key sent with every request. |
261
+ | \`${baseEnv}\` | Optional override of the API base URL. |
262
+
263
+ ### Entities
264
+
265
+ The ${entityCount} ${entityNoun} valid as the \`entity\` argument:
266
+
267
+ ${entityHelp}
268
+
269
+ ### Smoke test via HTTP (raw JSON-RPC)
122
270
 
123
271
  \`\`\`sh
124
- ./${model.name}-mcp -transport http -addr :18080 &
272
+ ./${bin} -transport http -addr :18080 &
125
273
 
126
274
  # initialize, grab the session id
127
275
  curl -sN -X POST http://localhost:18080 \\
@@ -136,13 +284,34 @@ curl -sN -X POST http://localhost:18080 \\
136
284
  -H 'Content-Type: application/json' \\
137
285
  -H 'Accept: application/json, text/event-stream' \\
138
286
  -H "Mcp-Session-Id: $SESSION" \\
139
- -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"${slugLower}_load","arguments":{"entity":"${firstEntity}","query":{"id":1}}}}'
287
+ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"${toolLoad}","arguments":{"entity":"${loadEntity}","query":{"id":1}}}}'
140
288
  \`\`\`
141
289
 
290
+ ## Explanation
291
+
292
+ ### How tools map to the SDK
293
+
294
+ \`main.go\` builds the SDK client (configured from the environment) and registers
295
+ two tools. Each dispatches on the \`entity\` argument to the matching entity in
296
+ the sibling Go SDK at \`../go\`, calls \`List\` or \`Load\`, unwraps the \`Entity\`
297
+ wrappers to plain data, and returns it as pretty-printed JSON.
298
+
299
+ ### Why two transports
300
+
301
+ **stdio** is the standard for agent hosts that spawn a server per client
302
+ (Claude Code's \`claude mcp add\`). **streamable HTTP** keeps one process running
303
+ that many agents can share — handy for a long-lived deployment.
304
+
305
+ ### Schema generation
306
+
307
+ The input schema is derived from the \`Args\` Go struct's \`json\` / \`jsonschema\`
308
+ tags at registration time, so the advertised tool schema can never drift from
309
+ the code that consumes it.
310
+
142
311
  ## Generated by
143
312
 
144
- sdkgen \`go-mcp\` target. See the target source under
145
- \`.sdk/src/cmp/go-mcp/\` in this repo, or upstream at
313
+ sdkgen \`go-mcp\` target. See the target source under \`.sdk/src/cmp/go-mcp/\` in
314
+ this repo, or upstream at
146
315
  \`github.com/voxgig/sdkgen/project/.sdk/src/cmp/go-mcp/\`.
147
316
  `))
148
317
 
@@ -0,0 +1,181 @@
1
+
2
+ import { cmp, each, Content, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { hsVarName } from './utility_haskell'
10
+
11
+
12
+ // A type-correct Haskell `Value` literal for a field's canonical type.
13
+ function hsLit(type: any, placeholder: string = 'example'): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k || 'NUMBER' === k) return 'VNum 1'
16
+ if ('BOOLEAN' === k) return 'VBool True'
17
+ if ('ARRAY' === k || 'OBJECT' === k) return 'VNoval'
18
+ return `VStr "${placeholder}"`
19
+ }
20
+
21
+
22
+ // A readable Haskell type name for a field's canonical type. The runtime
23
+ // carries every field as a dynamic `Value`; this documents the logical type.
24
+ function hsType(type: any): string {
25
+ const k = canonKey(type)
26
+ if ('STRING' === k) return 'String'
27
+ if ('INTEGER' === k) return 'Int'
28
+ if ('NUMBER' === k) return 'Double'
29
+ if ('BOOLEAN' === k) return 'Bool'
30
+ if ('ARRAY' === k) return '[Value]'
31
+ return 'Value'
32
+ }
33
+
34
+
35
+ const OP_DESC: Record<string, { method: string, desc: string }> = {
36
+ load: { method: 'eLoad ent match ctrl', desc: 'Load a single entity by match criteria.' },
37
+ list: { method: 'eList ent match ctrl', desc: 'List entities, optionally matching the given criteria.' },
38
+ create: { method: 'eCreate ent data ctrl', desc: 'Create a new entity with the given data.' },
39
+ update: { method: 'eUpdate ent data ctrl', desc: 'Update an existing entity.' },
40
+ remove: { method: 'eRemove ent match ctrl', desc: 'Remove the matching entity.' },
41
+ }
42
+
43
+
44
+ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
45
+ const { target } = props
46
+ const { model } = props.ctx$
47
+
48
+ const entity = getModelPath(model, `main.${KIT}.entity`)
49
+
50
+ const publishedEntities = each(entity)
51
+ .filter((entity: any) => entity.active !== false)
52
+
53
+ if (0 === publishedEntities.length) {
54
+ return
55
+ }
56
+
57
+ Content(`
58
+
59
+ ## Entities
60
+
61
+ `)
62
+
63
+ publishedEntities.map((entity: any) => {
64
+ const opnames = Object.keys(entity.op || {})
65
+ const fields = entity.fields || []
66
+ const idF = entityIdField(entity)
67
+ const eFn = hsVarName(entity.name)
68
+
69
+ Content(`
70
+ ### ${entity.Name}
71
+
72
+ `)
73
+
74
+ if (entity.short) {
75
+ Content(`${entity.short}
76
+
77
+ `)
78
+ }
79
+
80
+ Content(`Create an instance: \`${eFn} <- Sdk.${eFn} sdk VNoval\`
81
+
82
+ `)
83
+
84
+ if (opnames.length > 0) {
85
+ Content(`#### Operations
86
+
87
+ | Method | Description |
88
+ | --- | --- |
89
+ `)
90
+ opnames.map((opname: string) => {
91
+ const info = OP_DESC[opname]
92
+ if (info) {
93
+ Content(`| \`${info.method}\` | ${info.desc} |
94
+ `)
95
+ }
96
+ })
97
+
98
+ Content(`
99
+ `)
100
+ }
101
+
102
+ if (fields.length > 0) {
103
+ Content(`#### Fields
104
+
105
+ | Field | Type | Description |
106
+ | --- | --- | --- |
107
+ `)
108
+
109
+ each(fields, (field: any) => {
110
+ const desc = field.short || ''
111
+ Content(`| \`${field.name}\` | \`${hsType(field.type)}\` | ${desc} |
112
+ `)
113
+ })
114
+
115
+ Content(`
116
+ `)
117
+ }
118
+
119
+ if (opnames.includes('load')) {
120
+ const loadItems = opRequestShape(entity, 'load').items
121
+ .filter((it: any) => !it.optional || it.name === idF)
122
+ .sort((a: any, b: any) =>
123
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
124
+ const loadArg = 0 < loadItems.length
125
+ ? `[${loadItems.map((it: any) =>
126
+ `("${it.name}", ${hsLit(it.type,
127
+ it.name === idF ? entity.name + '_id' : it.name)})`).join(', ')}]`
128
+ : '[]'
129
+ Content(`#### Example: Load
130
+
131
+ \`\`\`haskell
132
+ ent <- Sdk.${eFn} sdk VNoval
133
+ match <- jo ${loadArg}
134
+ ctrl <- emptyMap
135
+ ${eFn} <- Sdk.eLoad ent match ctrl
136
+ \`\`\`
137
+
138
+ `)
139
+ }
140
+
141
+ if (opnames.includes('list')) {
142
+ Content(`#### Example: List
143
+
144
+ \`\`\`haskell
145
+ ent <- Sdk.${eFn} sdk VNoval
146
+ match <- emptyMap
147
+ ctrl <- emptyMap
148
+ ${eFn}s <- Sdk.eList ent match ctrl
149
+ \`\`\`
150
+
151
+ `)
152
+ }
153
+
154
+ if (opnames.includes('create')) {
155
+ const createItems = opRequestShape(entity, 'create').items
156
+ .filter((it: any) => !it.optional)
157
+ Content(`#### Example: Create
158
+
159
+ \`\`\`haskell
160
+ ent <- Sdk.${eFn} sdk VNoval
161
+ d <- jo
162
+ [`)
163
+ createItems.map((it: any, i: number) => {
164
+ const bracket = 0 === i ? ' ' : ', '
165
+ Content(`${bracket}("${it.name}", ${hsLit(it.type, 'example_' + it.name)}) -- ${hsType(it.type)}
166
+ `)
167
+ })
168
+ Content(`]
169
+ ctrl <- emptyMap
170
+ ${eFn} <- Sdk.eCreate ent d ctrl
171
+ \`\`\`
172
+
173
+ `)
174
+ }
175
+ })
176
+ })
177
+
178
+
179
+ export {
180
+ ReadmeEntity
181
+ }
@@ -0,0 +1,135 @@
1
+
2
+ import { cmp, File, Content } from '@voxgig/sdkgen'
3
+
4
+
5
+ // Emits test/TReadmeExamples.hs — a STRUCTURAL gate over every fenced
6
+ // Haskell code block in the three docs that ship Haskell examples:
7
+ // - the root README.md (top-level, multi-language quick start)
8
+ // - the per-language haskell/README.md
9
+ // - the per-language haskell/REFERENCE.md
10
+ //
11
+ // DESIGN NOTE vs the Python gate (ReadmeExamplesTest_py.ts): the Python
12
+ // version parses AND executes every block in a seeded test-mode subprocess.
13
+ // A faithful Haskell port would compile every snippet against the generated
14
+ // SDK — a throwaway module per block plus a GHC invocation — a large,
15
+ // environment-sensitive harness that cannot be authored safely without a build
16
+ // to validate it. This gate instead validates that every documented Haskell
17
+ // block is PRESENT, non-empty, and STRUCTURALLY well-formed (balanced
18
+ // delimiters). Missing docs are tolerated (a run may generate a subset of
19
+ // phases), and no blocks found records no failures — so this never breaks the
20
+ // shared runner. Upgrading it to a true compile gate is left as a follow-up.
21
+ //
22
+ // The emitted module exposes `tests :: Counters -> IO ()`; the generated
23
+ // SdkGenTests calls it, so it runs inside the standard Runner. The triple
24
+ // backtick fence marker is built from its char code (toEnum 96) so this
25
+ // component's Haskell source needs no backtick/backslash gymnastics.
26
+ const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
27
+ const { target, ctx$: { model } } = props
28
+
29
+ const Name = model.const.Name
30
+
31
+ File({ name: 'TReadmeExamples.' + target.ext }, () => {
32
+ Content(`-- ${Name} SDK — documentation Haskell-examples structural gate.
33
+ --
34
+ -- Validates that every fenced Haskell code block in the SDK docs (the root
35
+ -- README.md, the per-language README.md, and REFERENCE.md) is present,
36
+ -- non-empty, and has balanced delimiters. Missing docs are tolerated (a run
37
+ -- may generate a subset of phases), so this gate never breaks the shared
38
+ -- runner. See ReadmeExamplesTest_haskell for why this is a structural gate
39
+ -- rather than a full compile harness. Generated by @voxgig/sdkgen.
40
+
41
+ {-# LANGUAGE ScopedTypeVariables #-}
42
+
43
+ module TReadmeExamples (tests) where
44
+
45
+ import Control.Exception (SomeException, evaluate, try)
46
+ import Control.Monad (forM_)
47
+
48
+ import Testutil (Counters, runTest)
49
+
50
+
51
+ -- True for the whitespace characters we trim: space, tab, carriage return.
52
+ isWs :: Char -> Bool
53
+ isWs ch = let n = fromEnum ch in n == 32 || n == 9 || n == 13
54
+
55
+
56
+ -- Trim leading/trailing whitespace from a line.
57
+ trimWs :: String -> String
58
+ trimWs = f . f
59
+ where f = reverse . dropWhile isWs
60
+
61
+
62
+ -- Read a doc file, tolerating absence (returns "" when missing/unreadable).
63
+ readDoc :: FilePath -> IO String
64
+ readDoc path = do
65
+ r <- try (do s <- readFile path; _ <- evaluate (length s); pure s)
66
+ :: IO (Either SomeException String)
67
+ pure (either (const "") id r)
68
+
69
+
70
+ -- Extract the body of every fenced Haskell block from markdown. Returns
71
+ -- (blocks, allClosed) where allClosed is False when a fence was opened but
72
+ -- never closed before EOF — a malformed doc that must fail rather than pass
73
+ -- silently on the unterminated block. The fence marker (three backticks) is
74
+ -- built from its char code so this source stays backtick-free.
75
+ haskellBlocks :: String -> ([String], Bool)
76
+ haskellBlocks src = go (lines src)
77
+ where
78
+ fence3 = replicate 3 (toEnum 96 :: Char)
79
+ fenceHs = fence3 ++ "haskell"
80
+ go [] = ([], True)
81
+ go (l : ls)
82
+ | trimWs l == fenceHs =
83
+ case break (\\x -> trimWs x == fence3) ls of
84
+ (blk, []) -> ([unlines blk], False)
85
+ (blk, _ : rest) -> let (bs, ok) = go rest in (unlines blk : bs, ok)
86
+ | otherwise = go ls
87
+
88
+
89
+ -- Balanced (), [], {} outside of double-quoted string literals, with each
90
+ -- closer matching the most-recent opener via a stack (so "([)]" is rejected,
91
+ -- not merely counted). The generated snippets never embed an escaped quote
92
+ -- inside a string.
93
+ balanced :: String -> Bool
94
+ balanced = go False []
95
+ where
96
+ go inStr stack [] = not inStr && null stack
97
+ go inStr stack (c : cs)
98
+ | c == '"' = go (not inStr) stack cs
99
+ | inStr = go inStr stack cs
100
+ | c == '(' = go inStr (')' : stack) cs
101
+ | c == '[' = go inStr (']' : stack) cs
102
+ | c == '{' = go inStr ('}' : stack) cs
103
+ | c == ')' || c == ']' || c == '}' =
104
+ case stack of
105
+ (top : rest) | top == c -> go inStr rest cs
106
+ _ -> False
107
+ | otherwise = go inStr stack cs
108
+
109
+
110
+ -- The three documents held to the gate, tagged by human label.
111
+ docs :: [(String, FilePath)]
112
+ docs =
113
+ [ ("root README", "../README.md")
114
+ , ("${target.name} README", "README.md")
115
+ , ("${target.name} REFERENCE", "REFERENCE.md")
116
+ ]
117
+
118
+
119
+ tests :: Counters -> IO ()
120
+ tests c =
121
+ forM_ docs (\\(label, path) -> do
122
+ src <- readDoc path
123
+ let (blocks, closed) = haskellBlocks src
124
+ runTest c (label ++ " haskell fences closed") (pure closed)
125
+ forM_ (zip [1 :: Int ..] blocks) (\\(i, blk) ->
126
+ runTest c (label ++ " haskell block " ++ show i ++ " well-formed")
127
+ (pure (not (null (trimWs blk)) && balanced blk))))
128
+ `)
129
+ })
130
+ })
131
+
132
+
133
+ export {
134
+ ReadmeExamplesTest
135
+ }
@@ -0,0 +1,48 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
6
+ const { target, ctx$: { model } } = props
7
+
8
+ Content(`### Data as struct Values
9
+
10
+ The Haskell SDK models every API record as the dynamic \`Value\` type (from
11
+ the vendored \`VoxgigStruct\` module) rather than bespoke Haskell records.
12
+ This mirrors the dynamic nature of the API and keeps the SDK flexible — no
13
+ new datatypes or code generation are needed when the API schema changes.
14
+
15
+ Build request maps with \`jo [(key, value)]\` and read fields back with
16
+ \`getp value "field"\`; scalars are the \`VStr\` / \`VNum\` / \`VBool\`
17
+ constructors, and \`VNoval\` stands for an absent property.
18
+
19
+ ### Module structure
20
+
21
+ \`\`\`
22
+ ${target.name}/
23
+ ├── src/
24
+ │ ├── VoxgigStruct.hs -- vendored dependency-free struct library (Value)
25
+ │ ├── Vregex.hs -- vendored regex support
26
+ │ ├── SdkTypes.hs -- core types (Client, Entity, Feature)
27
+ │ ├── SdkHelpers.hs -- helper functions (jo, getp, ...)
28
+ │ ├── SdkRuntime.hs -- the generic operation pipeline
29
+ │ ├── SdkFeatures.hs -- built-in features + makeEntity
30
+ │ ├── SdkConfig.hs -- generated API configuration + feature factory
31
+ │ └── SdkClient.hs -- generated public client (newSdk, entity accessors)
32
+ ├── test/ -- test suites
33
+ ├── Makefile -- stock-GHC build/test (no third-party deps)
34
+ └── ${model.const.Name.toLowerCase()}-sdk.cabal -- package manifest (for Hackage)
35
+ \`\`\`
36
+
37
+ The public module (\`SdkClient\`) exports the SDK constructors (\`newSdk\`,
38
+ \`testSdk\`) and one accessor per entity. Import \`VoxgigStruct\` for the
39
+ \`Value\` constructors and \`SdkHelpers\` for \`jo\` / \`getp\`.
40
+
41
+ `)
42
+
43
+ })
44
+
45
+
46
+ export {
47
+ ReadmeExplanation
48
+ }