@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
@@ -0,0 +1,602 @@
1
+ /- ProjectName SDK feature catalog: the concrete features.
2
+
3
+ Each constructor returns a `Feature` closing over its own state refs. A
4
+ feature either wraps the transport (retry, timeout, ratelimit, cache, proxy,
5
+ netsim, test) or handles pipeline hooks (idempotency, rbac, metrics,
6
+ telemetry, debug, audit, clienttrack, paging, streaming) — or both.
7
+
8
+ Observable state is recorded in the client's `track` buckets under the
9
+ feature's own name, so behaviour is assertable from tests. -/
10
+
11
+ import VoxgigStruct
12
+ import SdkJson
13
+ import SdkUtility
14
+ import SdkFeature
15
+
16
+ open VoxgigStruct
17
+ open SdkFeature
18
+
19
+ namespace SdkFeatures
20
+
21
+ def gp := SdkUtility.gp
22
+ def sp := SdkUtility.sp
23
+ def gpS := SdkUtility.gpS
24
+ def vs := SdkUtility.vs
25
+ def isNov := SdkUtility.isNov
26
+ def truthy := SdkUtility.truthy
27
+
28
+ def statusOf (v : Value) : Float :=
29
+ match v with
30
+ | .map _ => 0.0
31
+ | _ => 0.0
32
+
33
+ def numOf (v : Value) (d : Float) : Float :=
34
+ match v with
35
+ | .num n => n
36
+ | _ => d
37
+
38
+ /-- Append a value to a struct list held at `key` on `parent`. -/
39
+ def appendTo (parent : Value) (key : String) (v : Value) : SIO Unit := do
40
+ match (← gp parent key) with
41
+ | .list i => do
42
+ let items ← listItems i
43
+ sp parent key (← newList (items.push v))
44
+ | _ => sp parent key (← newList #[v])
45
+
46
+ -- ---------------------------------------------------------------------------
47
+ -- base / log
48
+ -- ---------------------------------------------------------------------------
49
+
50
+ def baseFeature : SIO Feature := do
51
+ pure { name := "base" }
52
+
53
+ def logFeature : SIO Feature := do
54
+ pure { name := "log"
55
+ , hook := fun stage ctx => do
56
+ if stage == "PreRequest" then do
57
+ let b ← trackCtx ctx "log" (newMap #[("calls", .num 0.0)])
58
+ bumpNum b "calls" 1.0 }
59
+
60
+ -- ---------------------------------------------------------------------------
61
+ -- retry
62
+ -- ---------------------------------------------------------------------------
63
+
64
+ def retryFeature : SIO Feature := do
65
+ let optsR ← IO.mkRef (← emptyMap)
66
+ let retryable (res : Value) (err : Option Value) (statuses : Array Float) : Bool :=
67
+ match err with
68
+ | some _ => true
69
+ | none =>
70
+ match res with
71
+ | .noval => true
72
+ | _ => false
73
+ pure { name := "retry"
74
+ , init := fun ctx opts => do
75
+ let om ← toOptsMap opts
76
+ optsR.set om
77
+ if (← optActive opts) then do
78
+ let client ← clientOf ctx
79
+ let inner ← getFetcher client
80
+ setFetcher client fun c u f => do
81
+ let o ← optsR.get
82
+ let retries := (← optInt o "retries" 2).toNat
83
+ let minDelay ← optNum o "minDelay" 50.0
84
+ let maxDelay ← optNum o "maxDelay" 2000.0
85
+ let factor ← optNum o "factor" 2.0
86
+ let mut attempt := 0
87
+ let mut out ← inner c u f
88
+ while attempt < retries do
89
+ let statusV ← gp out.1 "status"
90
+ let st := numOf statusV 0.0
91
+ let bad := (out.2.isSome) || st >= 500.0 || st == 429.0 || st == 408.0
92
+ if !bad then break
93
+ let mut delay := minDelay
94
+ for _ in [0:attempt] do delay := delay * factor
95
+ sleepMs (if delay > maxDelay then maxDelay else delay)
96
+ let b ← trackCtx c "retry" (newMap #[("attempts", .num 0.0)])
97
+ bumpNum b "attempts" 1.0
98
+ out ← inner c u f
99
+ attempt := attempt + 1
100
+ pure out }
101
+
102
+ -- ---------------------------------------------------------------------------
103
+ -- timeout
104
+ -- ---------------------------------------------------------------------------
105
+
106
+ def timeoutFeature : SIO Feature := do
107
+ let optsR ← IO.mkRef (← emptyMap)
108
+ pure { name := "timeout"
109
+ , init := fun ctx opts => do
110
+ let om ← toOptsMap opts
111
+ optsR.set om
112
+ if (← optActive opts) then do
113
+ let client ← clientOf ctx
114
+ let inner ← getFetcher client
115
+ setFetcher client fun c u f => do
116
+ let o ← optsR.get
117
+ let ms ← optNum o "ms" 30000.0
118
+ if ms <= 0.0 then inner c u f
119
+ else do
120
+ sp f "timeout" (.num (ms / 1000.0))
121
+ let start ← nowMs
122
+ let out ← inner c u f
123
+ let elapsed := (← nowMs) - start
124
+ if elapsed > ms then do
125
+ let b ← trackCtx c "timeout" (newMap #[("count", .num 0.0), ("ms", .num ms)])
126
+ bumpNum b "count" 1.0
127
+ let e ← SdkUtility.mkErr "timeout"
128
+ ("Request exceeded timeout of " ++ numToString ms ++ "ms")
129
+ pure (.noval, some e)
130
+ else pure out }
131
+
132
+ -- ---------------------------------------------------------------------------
133
+ -- ratelimit (token bucket)
134
+ -- ---------------------------------------------------------------------------
135
+
136
+ def ratelimitFeature : SIO Feature := do
137
+ let optsR ← IO.mkRef (← emptyMap)
138
+ let tokensR ← IO.mkRef (0.0 : Float)
139
+ let lastR ← IO.mkRef (0.0 : Float)
140
+ pure { name := "ratelimit"
141
+ , init := fun ctx opts => do
142
+ let om ← toOptsMap opts
143
+ optsR.set om
144
+ if (← optActive opts) then do
145
+ let rate ← optNum om "rate" 5.0
146
+ let burst ← optNum om "burst" rate
147
+ tokensR.set burst
148
+ lastR.set (← nowMs)
149
+ let client ← clientOf ctx
150
+ let inner ← getFetcher client
151
+ setFetcher client fun c u f => do
152
+ let o ← optsR.get
153
+ let r ← optNum o "rate" 5.0
154
+ let b ← optNum o "burst" r
155
+ let now ← nowMs
156
+ let elapsed := now - (← lastR.get)
157
+ lastR.set now
158
+ let tk0 := (← tokensR.get) + (elapsed / 1000.0) * r
159
+ let tk := if tk0 > b then b else tk0
160
+ if tk >= 1.0 then tokensR.set (tk - 1.0)
161
+ else do
162
+ let waitMs := ((1.0 - tk) / r) * 1000.0
163
+ let bucket ← trackCtx c "ratelimit"
164
+ (newMap #[("throttled", .num 0.0), ("waitMs", .num 0.0)])
165
+ bumpNum bucket "throttled" 1.0
166
+ bumpNum bucket "waitMs" waitMs
167
+ sleepMs waitMs
168
+ lastR.set (← nowMs)
169
+ tokensR.set 0.0
170
+ inner c u f }
171
+
172
+ -- ---------------------------------------------------------------------------
173
+ -- cache
174
+ -- ---------------------------------------------------------------------------
175
+
176
+ def cacheFeature : SIO Feature := do
177
+ let optsR ← IO.mkRef (← emptyMap)
178
+ let storeR ← IO.mkRef (← emptyMap)
179
+ pure { name := "cache"
180
+ , init := fun ctx opts => do
181
+ let om ← toOptsMap opts
182
+ optsR.set om
183
+ if (← optActive opts) then do
184
+ storeR.set (← emptyMap)
185
+ let client ← clientOf ctx
186
+ let inner ← getFetcher client
187
+ setFetcher client fun c u f => do
188
+ let o ← optsR.get
189
+ let meth := upper (← gpS f "method")
190
+ let methods ← optStrList o "methods" #["GET"]
191
+ if !(methods.map upper).contains (if meth == "" then "GET" else meth) then
192
+ inner c u f
193
+ else do
194
+ let key := meth ++ " " ++ u
195
+ let store ← storeR.get
196
+ let now ← nowMs
197
+ let hit ← gp store key
198
+ let fresh := match hit with
199
+ | .map _ => true
200
+ | _ => false
201
+ let expiry := numOf (← gp hit "expiry") 0.0
202
+ if fresh && expiry > now then do
203
+ let b ← trackCtx c "cache"
204
+ (newMap #[("hit", .num 0.0), ("miss", .num 0.0), ("bypass", .num 0.0)])
205
+ bumpNum b "hit" 1.0
206
+ pure ((← gp hit "snapshot"), none)
207
+ else do
208
+ let out ← inner c u f
209
+ let st := numOf (← gp out.1 "status") 0.0
210
+ let ok := out.2.isNone && st >= 200.0 && st < 300.0
211
+ let b ← trackCtx c "cache"
212
+ (newMap #[("hit", .num 0.0), ("miss", .num 0.0), ("bypass", .num 0.0)])
213
+ if ok then do
214
+ let ttl ← optNum o "ttl" 5000.0
215
+ let snap ← clone out.1
216
+ let entry ← newMap #[("expiry", .num (now + ttl)), ("snapshot", snap)]
217
+ sp store key entry
218
+ bumpNum b "miss" 1.0
219
+ else bumpNum b "bypass" 1.0
220
+ pure out }
221
+
222
+ -- ---------------------------------------------------------------------------
223
+ -- idempotency
224
+ -- ---------------------------------------------------------------------------
225
+
226
+ def idempotencyFeature : SIO Feature := do
227
+ let optsR ← IO.mkRef (← emptyMap)
228
+ pure { name := "idempotency"
229
+ , init := fun _ opts => do optsR.set (← toOptsMap opts)
230
+ , hook := fun stage ctx => do
231
+ if stage == "PreRequest" then do
232
+ let o ← optsR.get
233
+ let specV ← gp ctx "spec"
234
+ match specV with
235
+ | .map _ => do
236
+ let methods ← optStrList o "methods" #["POST", "PUT", "PATCH", "DELETE"]
237
+ let meth := upper (← gpS specV "method")
238
+ let ops ← optStrList o "ops" #["create", "update", "remove"]
239
+ let opname ← SdkUtility.opnameOf ctx
240
+ if (methods.map upper).contains meth || ops.contains opname then do
241
+ let header ← optStr o "header" "Idempotency-Key"
242
+ let hdrs ← SdkUtility.gpMap specV "headers"
243
+ if isNov (← headerCI hdrs header) then do
244
+ let key ← genId
245
+ sp hdrs header (.str key)
246
+ let b ← trackCtx ctx "idempotency"
247
+ (newMap #[("issued", .num 0.0), ("last", .noval)])
248
+ bumpNum b "issued" 1.0
249
+ sp b "last" (.str key)
250
+ | _ => pure () }
251
+
252
+ -- ---------------------------------------------------------------------------
253
+ -- rbac (PrePoint short-circuit)
254
+ -- ---------------------------------------------------------------------------
255
+
256
+ def rbacFeature : SIO Feature := do
257
+ let optsR ← IO.mkRef (← emptyMap)
258
+ pure { name := "rbac"
259
+ , init := fun _ opts => do optsR.set (← toOptsMap opts)
260
+ , hook := fun stage ctx => do
261
+ if stage == "PrePoint" then do
262
+ let o ← optsR.get
263
+ let opname ← SdkUtility.opnameOf ctx
264
+ let perms ← optStrList o "perms" #[]
265
+ let rules ← gp o "rules"
266
+ let required ← gpS rules opname
267
+ let deny := truthy (← gp o "deny")
268
+ let needed := if required != "" then required else (if deny then "<default-deny>" else "")
269
+ let allowed := needed == "" || perms.contains needed
270
+ let b ← trackCtx ctx "rbac"
271
+ (newMap #[("allowed", .num 0.0), ("denied", .num 0.0), ("last", .noval)])
272
+ bumpNum b (if allowed then "allowed" else "denied") 1.0
273
+ sp b "last" (.str needed)
274
+ if !allowed then do
275
+ let e ← SdkUtility.mkErr "rbac_denied"
276
+ ("Permission \"" ++ needed ++ "\" required for operation \"" ++ opname ++ "\"")
277
+ let out ← SdkUtility.gpMap ctx "out"
278
+ sp out "point" e }
279
+
280
+ -- ---------------------------------------------------------------------------
281
+ -- metrics
282
+ -- ---------------------------------------------------------------------------
283
+
284
+ def metricsFeature : SIO Feature := do
285
+ let startR ← IO.mkRef (0.0 : Float)
286
+ pure { name := "metrics"
287
+ , hook := fun stage ctx => do
288
+ let mk : SIO Value := do
289
+ let tot ← newMap #[("count", .num 0.0), ("ok", .num 0.0), ("err", .num 0.0),
290
+ ("totalMs", .num 0.0), ("maxMs", .num 0.0)]
291
+ let ops ← emptyMap
292
+ newMap #[("total", tot), ("ops", ops)]
293
+ if stage == "PreRequest" then startR.set (← nowMs)
294
+ else if stage == "PreDone" then do
295
+ let m ← trackCtx ctx "metrics" mk
296
+ let dur := (← nowMs) - (← startR.get)
297
+ let total ← gp m "total"
298
+ let res ← gp ctx "result"
299
+ let ok := truthy (← gp res "ok")
300
+ bumpNum total "count" 1.0
301
+ bumpNum total (if ok then "ok" else "err") 1.0
302
+ bumpNum total "totalMs" dur
303
+ if dur > numOf (← gp total "maxMs") 0.0 then sp total "maxMs" (.num dur)
304
+ let opname ← SdkUtility.opnameOf ctx
305
+ let ops ← gp m "ops"
306
+ let key := (← gpS (← gp ctx "op") "entity") ++ "." ++ opname
307
+ let opb ← (match (← gp ops key) with
308
+ | .map i => pure (Value.map i)
309
+ | _ => do
310
+ let b ← newMap #[("count", .num 0.0), ("ok", .num 0.0), ("err", .num 0.0),
311
+ ("totalMs", .num 0.0), ("maxMs", .num 0.0)]
312
+ sp ops key b
313
+ pure b)
314
+ bumpNum opb "count" 1.0
315
+ bumpNum opb (if ok then "ok" else "err") 1.0
316
+ bumpNum opb "totalMs" dur }
317
+
318
+ -- ---------------------------------------------------------------------------
319
+ -- telemetry (spans)
320
+ -- ---------------------------------------------------------------------------
321
+
322
+ def telemetryFeature : SIO Feature := do
323
+ let spanR ← IO.mkRef (Value.noval)
324
+ pure { name := "telemetry"
325
+ , hook := fun stage ctx => do
326
+ let mk : SIO Value := do
327
+ let sp0 ← emptyList
328
+ newMap #[("spans", sp0), ("active", .num 0.0)]
329
+ if stage == "PrePoint" then do
330
+ let t ← trackCtx ctx "telemetry" mk
331
+ let opname ← SdkUtility.opnameOf ctx
332
+ let sid ← genId
333
+ let s ← newMap #[("id", .str ("s" ++ sid)), ("name", .str opname),
334
+ ("start", .num (← nowMs)), ("ok", .bool false)]
335
+ spanR.set s
336
+ appendTo t "spans" s
337
+ bumpNum t "active" 1.0
338
+ else if stage == "PreDone" then do
339
+ let s ← spanR.get
340
+ match s with
341
+ | .map _ => do
342
+ let t ← trackCtx ctx "telemetry" mk
343
+ let endMs ← nowMs
344
+ sp s "end" (.num endMs)
345
+ sp s "durationMs" (.num (endMs - numOf (← gp s "start") 0.0))
346
+ sp s "ok" (.bool (truthy (← gp (← gp ctx "result") "ok")))
347
+ bumpNum t "active" (-1.0)
348
+ | _ => pure () }
349
+
350
+ -- ---------------------------------------------------------------------------
351
+ -- debug (redacted request/response log)
352
+ -- ---------------------------------------------------------------------------
353
+
354
+ def debugFeature : SIO Feature := do
355
+ let optsR ← IO.mkRef (← emptyMap)
356
+ let entryR ← IO.mkRef (Value.noval)
357
+ pure { name := "debug"
358
+ , init := fun _ opts => do optsR.set (← toOptsMap opts)
359
+ , hook := fun stage ctx => do
360
+ let mk : SIO Value := do
361
+ let es ← emptyList
362
+ newMap #[("entries", es)]
363
+ if stage == "PreRequest" then do
364
+ let o ← optsR.get
365
+ let d ← trackCtx ctx "debug" mk
366
+ let patterns ← optStrList o "redact"
367
+ #["authorization", "cookie", "set-cookie", "api-key", "apikey",
368
+ "x-api-key", "idempotency-key"]
369
+ let specV ← gp ctx "spec"
370
+ let hdrs ← gp specV "headers"
371
+ let safe ← emptyMap
372
+ match hdrs with
373
+ | .map i =>
374
+ for k in (← keysof (.map i)) do
375
+ if patterns.contains (lower k) then sp safe k (.str "<redacted>")
376
+ else sp safe k (← gp (.map i) k)
377
+ | _ => pure ()
378
+ let opname ← SdkUtility.opnameOf ctx
379
+ let e ← newMap #[("op", .str opname), ("start", .num (← nowMs)),
380
+ ("headers", safe), ("ok", .bool false)]
381
+ entryR.set e
382
+ appendTo d "entries" e
383
+ else if stage == "PreDone" then do
384
+ let e ← entryR.get
385
+ match e with
386
+ | .map _ => do
387
+ let endMs ← nowMs
388
+ sp e "durationMs" (.num (endMs - numOf (← gp e "start") 0.0))
389
+ let res ← gp ctx "result"
390
+ sp e "ok" (.bool (truthy (← gp res "ok")))
391
+ sp e "status" (← gp res "status")
392
+ | _ => pure () }
393
+
394
+ -- ---------------------------------------------------------------------------
395
+ -- audit
396
+ -- ---------------------------------------------------------------------------
397
+
398
+ def auditFeature : SIO Feature := do
399
+ pure { name := "audit"
400
+ , hook := fun stage ctx => do
401
+ if stage == "PreDone" then do
402
+ let a ← trackCtx ctx "audit" (do let rs ← emptyList; newMap #[("records", rs)])
403
+ let opname ← SdkUtility.opnameOf ctx
404
+ let res ← gp ctx "result"
405
+ let rec0 ← newMap #[("op", .str opname),
406
+ ("entity", ← gp (← gp ctx "op") "entity"),
407
+ ("ok", .bool (truthy (← gp res "ok"))),
408
+ ("at", .num (← nowMs))]
409
+ appendTo a "records" rec0 }
410
+
411
+ -- ---------------------------------------------------------------------------
412
+ -- clienttrack (request/session identity headers)
413
+ -- ---------------------------------------------------------------------------
414
+
415
+ def clienttrackFeature : SIO Feature := do
416
+ let optsR ← IO.mkRef (← emptyMap)
417
+ let sessionR ← IO.mkRef ""
418
+ pure { name := "clienttrack"
419
+ , init := fun _ opts => do
420
+ optsR.set (← toOptsMap opts)
421
+ if (← sessionR.get) == "" then sessionR.set ("s-" ++ (← genId))
422
+ , hook := fun stage ctx => do
423
+ if stage == "PreRequest" then do
424
+ let o ← optsR.get
425
+ let nm ← optStr o "clientName" "ProjectName-SDK"
426
+ let ver ← optStr o "clientVersion" "0.0.1"
427
+ let rid := "r-" ++ (← genId)
428
+ let session ← sessionR.get
429
+ let specV ← gp ctx "spec"
430
+ let hdrs ← SdkUtility.gpMap specV "headers"
431
+ let hopt ← gp o "headers"
432
+ let reqH ← optStr hopt "request" "X-Request-Id"
433
+ let sesH ← optStr hopt "session" "X-Session-Id"
434
+ let cliH ← optStr hopt "client" "X-Client"
435
+ if isNov (← headerCI hdrs reqH) then sp hdrs reqH (.str rid)
436
+ if isNov (← headerCI hdrs sesH) then sp hdrs sesH (.str session)
437
+ if isNov (← headerCI hdrs cliH) then sp hdrs cliH (.str (nm ++ "/" ++ ver))
438
+ let b ← trackCtx ctx "clienttrack"
439
+ (newMap #[("session", .str session), ("requests", .num 0.0),
440
+ ("clientName", .str nm)])
441
+ bumpNum b "requests" 1.0
442
+ sp b "lastRequestId" (.str rid) }
443
+
444
+ -- ---------------------------------------------------------------------------
445
+ -- paging / streaming
446
+ -- ---------------------------------------------------------------------------
447
+
448
+ def pagingFeature : SIO Feature := do
449
+ let optsR ← IO.mkRef (← emptyMap)
450
+ pure { name := "paging"
451
+ , init := fun _ opts => do optsR.set (← toOptsMap opts)
452
+ , hook := fun stage ctx => do
453
+ if stage == "PreSpec" then do
454
+ let o ← optsR.get
455
+ let opname ← SdkUtility.opnameOf ctx
456
+ if opname == "list" then do
457
+ let sizeKey ← optStr o "sizeParam" "limit"
458
+ let pageKey ← optStr o "pageParam" "page"
459
+ let sizeV ← gp o "size"
460
+ let specV ← gp ctx "spec"
461
+ match specV with
462
+ | .map _ => do
463
+ let q ← SdkUtility.gpMap specV "query"
464
+ if !(isNov sizeV) then sp q sizeKey sizeV
465
+ let pageV ← gp o "page"
466
+ if !(isNov pageV) then sp q pageKey pageV
467
+ let b ← trackCtx ctx "paging"
468
+ (newMap #[("pages", .num 0.0), ("items", .num 0.0)])
469
+ bumpNum b "pages" 1.0
470
+ | _ => pure ()
471
+ else if stage == "PreDone" then do
472
+ let opname ← SdkUtility.opnameOf ctx
473
+ if opname == "list" then do
474
+ let res ← gp ctx "result"
475
+ let n ← (match (← gp res "resdata") with
476
+ | .list i => do pure (← listItems i).size
477
+ | _ => pure 0)
478
+ let b ← trackCtx ctx "paging"
479
+ (newMap #[("pages", .num 0.0), ("items", .num 0.0)])
480
+ bumpNum b "items" n.toFloat }
481
+
482
+ def streamingFeature : SIO Feature := do
483
+ let optsR ← IO.mkRef (← emptyMap)
484
+ pure { name := "streaming"
485
+ , init := fun _ opts => do optsR.set (← toOptsMap opts)
486
+ , hook := fun stage ctx => do
487
+ if stage == "PreDone" then do
488
+ let res ← gp ctx "result"
489
+ let items ← gp res "resdata"
490
+ match items with
491
+ | .list i => do
492
+ let its ← listItems i
493
+ let b ← trackCtx ctx "streaming"
494
+ (newMap #[("emitted", .num 0.0), ("chunks", .num 0.0)])
495
+ bumpNum b "emitted" its.size.toFloat
496
+ bumpNum b "chunks" 1.0
497
+ | _ => pure () }
498
+
499
+ -- ---------------------------------------------------------------------------
500
+ -- proxy
501
+ -- ---------------------------------------------------------------------------
502
+
503
+ def proxyFeature : SIO Feature := do
504
+ let optsR ← IO.mkRef (← emptyMap)
505
+ pure { name := "proxy"
506
+ , init := fun ctx opts => do
507
+ let om ← toOptsMap opts
508
+ optsR.set om
509
+ if (← optActive opts) then do
510
+ let client ← clientOf ctx
511
+ let inner ← getFetcher client
512
+ setFetcher client fun c u f => do
513
+ let o ← optsR.get
514
+ let purl ← gpS o "url"
515
+ if purl == "" then inner c u f
516
+ else do
517
+ sp f "proxy" (.str purl)
518
+ let proxies ← newMap #[("http", .str purl), ("https", .str purl)]
519
+ sp f "proxies" proxies
520
+ let b ← trackCtx c "proxy"
521
+ (newMap #[("routed", .num 0.0), ("url", .str purl)])
522
+ bumpNum b "routed" 1.0
523
+ inner c u f }
524
+
525
+ -- ---------------------------------------------------------------------------
526
+ -- netsim (offline / latency / failStatus simulation)
527
+ -- ---------------------------------------------------------------------------
528
+
529
+ def netsimFeature : SIO Feature := do
530
+ let optsR ← IO.mkRef (← emptyMap)
531
+ let seedR ← IO.mkRef (12345 : Nat)
532
+ let callR ← IO.mkRef (0 : Nat)
533
+ pure { name := "netsim"
534
+ , init := fun ctx opts => do
535
+ let om ← toOptsMap opts
536
+ optsR.set om
537
+ if (← optActive opts) then do
538
+ let client ← clientOf ctx
539
+ let inner ← getFetcher client
540
+ setFetcher client fun c u f => do
541
+ let o ← optsR.get
542
+ let call := (← callR.get) + 1
543
+ callR.set call
544
+ let applied ← emptyMap
545
+ let b ← trackCtx c "netsim"
546
+ (do let ap ← emptyList; newMap #[("calls", .num 0.0), ("applied", ap)])
547
+ bumpNum b "calls" 1.0
548
+ -- deterministic LCG for latency jitter
549
+ let s := ((← seedR.get) * 1103515245 + 12345) % 2147483648
550
+ seedR.set s
551
+ let lat ← optNum o "latency" 0.0
552
+ if lat > 0.0 then sleepMs lat
553
+ if truthy (← gp o "offline") then do
554
+ sp applied "offline" (.bool true)
555
+ appendTo b "applied" applied
556
+ let e ← SdkUtility.mkErr "netsim_offline"
557
+ ("Simulated network offline (URL was: \"" ++ u ++ "\")")
558
+ pure (.noval, some e)
559
+ else do
560
+ let fs ← optNum o "failStatus" 0.0
561
+ if fs > 0.0 then do
562
+ sp applied "failStatus" (.num fs)
563
+ appendTo b "applied" applied
564
+ let resp ← newMap #[("status", .num fs), ("statusText", .str "Simulated"),
565
+ ("body", ← emptyMap)]
566
+ pure (resp, none)
567
+ else do
568
+ appendTo b "applied" applied
569
+ inner c u f }
570
+
571
+ -- ---------------------------------------------------------------------------
572
+ -- the catalog
573
+ -- ---------------------------------------------------------------------------
574
+
575
+ /-- Every feature by name (the factory the client uses). -/
576
+ def makeFeature (name : String) : SIO Feature :=
577
+ match name with
578
+ | "log" => logFeature
579
+ | "retry" => retryFeature
580
+ | "timeout" => timeoutFeature
581
+ | "ratelimit" => ratelimitFeature
582
+ | "cache" => cacheFeature
583
+ | "idempotency" => idempotencyFeature
584
+ | "rbac" => rbacFeature
585
+ | "metrics" => metricsFeature
586
+ | "telemetry" => telemetryFeature
587
+ | "debug" => debugFeature
588
+ | "audit" => auditFeature
589
+ | "clienttrack" => clienttrackFeature
590
+ | "paging" => pagingFeature
591
+ | "streaming" => streamingFeature
592
+ | "proxy" => proxyFeature
593
+ | "netsim" => netsimFeature
594
+ | _ => baseFeature
595
+
596
+ /-- The catalog order: transport wrappers compose in this order. -/
597
+ def featureNames : Array String :=
598
+ #["log", "rbac", "idempotency", "clienttrack", "paging", "streaming",
599
+ "metrics", "telemetry", "debug", "audit",
600
+ "cache", "ratelimit", "timeout", "retry", "proxy", "netsim"]
601
+
602
+ end SdkFeatures