@voxgig/sdkgen 4.9.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1159) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/helpers/manifest.d.ts +2 -1
  3. package/dist/helpers/manifest.js +75 -1
  4. package/dist/helpers/manifest.js.map +1 -1
  5. package/dist/helpers/modelNames.d.ts +7 -0
  6. package/dist/helpers/modelNames.js +232 -0
  7. package/dist/helpers/modelNames.js.map +1 -0
  8. package/dist/helpers/naming.d.ts +2 -1
  9. package/dist/helpers/naming.js +45 -1
  10. package/dist/helpers/naming.js.map +1 -1
  11. package/dist/sdkgen.d.ts +3 -2
  12. package/dist/sdkgen.js +12 -3
  13. package/dist/sdkgen.js.map +1 -1
  14. package/dist/testkit.d.ts +2 -0
  15. package/dist/testkit.js +80 -24
  16. package/dist/testkit.js.map +1 -1
  17. package/dist/tsconfig.tsbuildinfo +1 -1
  18. package/dist/utility.js +17 -7
  19. package/dist/utility.js.map +1 -1
  20. package/package.json +1 -1
  21. package/project/.sdk/model/feature/secrets.aon +1001 -0
  22. package/project/.sdk/model/target/c.aon +15 -2
  23. package/project/.sdk/model/target/clojure.aon +10 -0
  24. package/project/.sdk/model/target/cpp.aon +18 -0
  25. package/project/.sdk/model/target/csharp.aon +5 -0
  26. package/project/.sdk/model/target/elixir.aon +6 -0
  27. package/project/.sdk/model/target/java.aon +5 -0
  28. package/project/.sdk/model/target/js.aon +5 -0
  29. package/project/.sdk/model/target/kotlin.aon +7 -0
  30. package/project/.sdk/model/target/lua.aon +17 -0
  31. package/project/.sdk/model/target/ocaml.aon +48 -5
  32. package/project/.sdk/model/target/perl.aon +5 -0
  33. package/project/.sdk/model/target/php.aon +5 -0
  34. package/project/.sdk/model/target/rb.aon +5 -0
  35. package/project/.sdk/model/target/rust.aon +5 -0
  36. package/project/.sdk/model/target/scala.aon +38 -2
  37. package/project/.sdk/model/target/swift.aon +10 -0
  38. package/project/.sdk/model/target/zig.aon +30 -4
  39. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  40. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  41. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  42. package/project/.sdk/src/cmp/clojure/Config_clojure.ts +51 -4
  43. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +43 -1
  44. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +17 -1
  45. package/project/.sdk/src/cmp/clojure/featureextra_clojure.ts +130 -0
  46. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  47. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  48. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  49. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  50. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +70 -0
  51. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +9 -1
  52. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +25 -1
  53. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +68 -2
  54. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +16 -0
  55. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +14 -1
  56. package/project/.sdk/src/cmp/java/Config_java.ts +84 -2
  57. package/project/.sdk/src/cmp/java/Main_java.ts +10 -1
  58. package/project/.sdk/src/cmp/js/Config_js.ts +75 -8
  59. package/project/.sdk/src/cmp/js/Main_js.ts +66 -2
  60. package/project/.sdk/src/cmp/js/fragment/Config.data.fragment.js +18 -1
  61. package/project/.sdk/src/cmp/js/fragment/Config.fragment.js +18 -1
  62. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +7 -0
  63. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +63 -1
  64. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +32 -2
  65. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  66. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  67. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  68. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  69. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  70. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  71. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  72. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  73. package/project/.sdk/src/cmp/perl/Config_perl.ts +129 -3
  74. package/project/.sdk/src/cmp/perl/Main_perl.ts +41 -1
  75. package/project/.sdk/src/cmp/perl/Package_perl.ts +13 -1
  76. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +1 -0
  77. package/project/.sdk/src/cmp/php/Config_php.ts +105 -1
  78. package/project/.sdk/src/cmp/php/Gitignore_php.ts +4 -2
  79. package/project/.sdk/src/cmp/php/Main_php.ts +16 -1
  80. package/project/.sdk/src/cmp/rb/Config_rb.ts +92 -2
  81. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +11 -1
  82. package/project/.sdk/src/cmp/rb/Main_rb.ts +7 -1
  83. package/project/.sdk/src/cmp/rust/Main_rust.ts +99 -1
  84. package/project/.sdk/src/cmp/rust/Package_rust.ts +72 -6
  85. package/project/.sdk/src/cmp/scala/Config_scala.ts +44 -0
  86. package/project/.sdk/src/cmp/scala/Main_scala.ts +68 -1
  87. package/project/.sdk/src/cmp/swift/Config_swift.ts +62 -1
  88. package/project/.sdk/src/cmp/swift/Main_swift.ts +35 -1
  89. package/project/.sdk/src/cmp/swift/Package_swift.ts +81 -11
  90. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +58 -44
  91. package/project/.sdk/src/cmp/swift/utility_swift.ts +22 -0
  92. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  93. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  94. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  95. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  96. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  97. package/project/.sdk/tm/c/Makefile +58 -9
  98. package/project/.sdk/tm/c/core/sdk.h +10 -0
  99. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  100. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  101. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  102. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  103. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  104. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  105. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  106. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  107. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  108. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  109. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  110. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  111. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  112. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  113. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  114. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  115. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  116. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  117. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  118. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  119. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  120. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  121. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  122. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  123. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  124. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  125. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  126. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  127. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  128. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  129. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  130. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  131. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  132. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  133. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  134. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  135. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  136. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  137. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  138. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  139. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  140. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  141. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  142. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  143. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  144. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  145. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  146. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  147. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  148. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  149. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  150. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  151. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  152. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  153. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  154. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  155. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  156. package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
  157. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
  158. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
  159. package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
  160. package/project/.sdk/tm/clojure/Makefile +3 -0
  161. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +530 -0
  162. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +84 -0
  163. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +44 -0
  164. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +240 -0
  165. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +199 -0
  166. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +111 -0
  167. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +46 -0
  168. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +122 -0
  169. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +1018 -0
  170. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +106 -0
  171. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +157 -0
  172. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +77 -0
  173. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +92 -0
  174. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +46 -0
  175. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +177 -0
  176. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +90 -0
  177. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +40 -0
  178. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +111 -0
  179. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +297 -0
  180. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +192 -0
  181. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +261 -0
  182. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +165 -0
  183. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +111 -0
  184. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +107 -0
  185. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +61 -0
  186. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +88 -0
  187. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +115 -0
  188. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +214 -0
  189. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +80 -0
  190. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +93 -0
  191. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +63 -0
  192. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +99 -0
  193. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +142 -0
  194. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +25 -0
  195. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +196 -0
  196. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +113 -0
  197. package/project/.sdk/tm/clojure/src/sdk/core.clj +9 -0
  198. package/project/.sdk/tm/clojure/src/sdk/features.clj +13 -1
  199. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +581 -0
  200. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +103 -14
  201. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
  202. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
  203. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
  204. package/project/.sdk/tm/cpp/Makefile +48 -4
  205. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  206. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  207. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  208. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  209. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  210. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  211. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  212. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  213. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  214. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  215. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  216. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  217. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  218. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  219. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  220. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  221. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  222. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  223. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  224. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  225. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  226. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  227. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  228. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  229. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  230. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  231. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  232. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  233. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  234. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  235. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  236. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  237. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  238. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  239. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  240. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  241. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  242. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  243. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  244. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  245. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  246. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  247. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  248. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  249. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  250. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  251. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  252. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  253. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  254. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  255. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  256. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  257. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  258. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  259. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  260. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  261. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  262. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  263. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  264. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  265. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  266. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  267. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  268. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  269. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  270. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  271. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  272. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  273. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
  274. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
  275. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
  276. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +915 -0
  277. package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +196 -0
  278. package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +70 -0
  279. package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +505 -0
  280. package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +52 -0
  281. package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +285 -0
  282. package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +55 -0
  283. package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +228 -0
  284. package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +102 -0
  285. package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +256 -0
  286. package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +1379 -0
  287. package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +177 -0
  288. package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +326 -0
  289. package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +295 -0
  290. package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +113 -0
  291. package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +177 -0
  292. package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +198 -0
  293. package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +95 -0
  294. package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +351 -0
  295. package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +196 -0
  296. package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +325 -0
  297. package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +195 -0
  298. package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +192 -0
  299. package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +75 -0
  300. package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +112 -0
  301. package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +167 -0
  302. package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +221 -0
  303. package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +213 -0
  304. package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +155 -0
  305. package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +169 -0
  306. package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +172 -0
  307. package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +240 -0
  308. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +192 -0
  309. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +503 -0
  310. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +775 -0
  311. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +1787 -0
  312. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
  313. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
  314. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +10 -0
  315. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
  316. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +118 -0
  317. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +56 -0
  318. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +320 -0
  319. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +205 -0
  320. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +166 -0
  321. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +13 -0
  322. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +73 -0
  323. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +185 -0
  324. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +1182 -0
  325. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +139 -0
  326. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +132 -0
  327. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +179 -0
  328. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +99 -0
  329. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +129 -0
  330. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +59 -0
  331. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +190 -0
  332. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +136 -0
  333. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +42 -0
  334. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +368 -0
  335. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +257 -0
  336. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +160 -0
  337. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +127 -0
  338. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +96 -0
  339. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +124 -0
  340. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +162 -0
  341. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +627 -0
  342. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +134 -0
  343. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +125 -0
  344. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +152 -0
  345. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +80 -0
  346. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +101 -0
  347. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +176 -0
  348. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +67 -0
  349. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +536 -0
  350. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +662 -0
  351. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +839 -0
  352. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +1113 -0
  353. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
  354. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
  355. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
  356. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
  357. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
  358. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
  359. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
  360. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
  361. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
  362. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
  363. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
  364. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
  365. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
  366. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
  367. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
  368. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
  369. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
  370. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
  371. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +2 -2
  372. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
  373. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
  374. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
  375. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
  376. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
  377. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +2 -2
  378. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +2 -2
  379. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +2 -2
  380. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
  381. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
  382. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
  383. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +2 -2
  384. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +2 -2
  385. package/project/.sdk/tm/go/feature/secrets_feature.go +48 -10
  386. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +239 -0
  387. package/project/.sdk/tm/go/test/omni/omni.go +2 -2
  388. package/project/.sdk/tm/go/test/omni/util.go +2 -2
  389. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
  390. package/project/.sdk/tm/java/feature/SecretsFeature.java +791 -0
  391. package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +181 -0
  392. package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +64 -0
  393. package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +433 -0
  394. package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +54 -0
  395. package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +292 -0
  396. package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +49 -0
  397. package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +204 -0
  398. package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +93 -0
  399. package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +244 -0
  400. package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +1196 -0
  401. package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +173 -0
  402. package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +339 -0
  403. package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +274 -0
  404. package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +94 -0
  405. package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +37 -0
  406. package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +172 -0
  407. package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +171 -0
  408. package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +89 -0
  409. package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +232 -0
  410. package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +198 -0
  411. package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +142 -0
  412. package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +229 -0
  413. package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +302 -0
  414. package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +21 -0
  415. package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +698 -0
  416. package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +100 -0
  417. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +294 -0
  418. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +164 -0
  419. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +161 -0
  420. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +103 -0
  421. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +143 -0
  422. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +186 -0
  423. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +192 -0
  424. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +139 -0
  425. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +143 -0
  426. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +80 -0
  427. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +138 -0
  428. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +243 -0
  429. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +1050 -0
  430. package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
  431. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
  432. package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
  433. package/project/.sdk/tm/java/utility/MakeOptions.java +7 -0
  434. package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
  435. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +454 -0
  436. package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +119 -0
  437. package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +42 -0
  438. package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +323 -0
  439. package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +196 -0
  440. package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +120 -0
  441. package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +48 -0
  442. package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +150 -0
  443. package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +949 -0
  444. package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +35 -0
  445. package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +165 -0
  446. package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +94 -0
  447. package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +106 -0
  448. package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +59 -0
  449. package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +79 -0
  450. package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +100 -0
  451. package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +574 -0
  452. package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +56 -0
  453. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +188 -0
  454. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +135 -0
  455. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +128 -0
  456. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +67 -0
  457. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +115 -0
  458. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +139 -0
  459. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +93 -0
  460. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +99 -0
  461. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +111 -0
  462. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +105 -0
  463. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +157 -0
  464. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +119 -0
  465. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +39 -0
  466. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +40 -0
  467. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +21 -0
  468. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +42 -0
  469. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +18 -0
  470. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +151 -0
  471. package/project/.sdk/tm/js/src/utility/StructUtility.js +1 -1
  472. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +1019 -0
  473. package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
  474. package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
  475. package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
  476. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +684 -0
  477. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +117 -0
  478. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +40 -0
  479. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +322 -0
  480. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +227 -0
  481. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +163 -0
  482. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +57 -0
  483. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +179 -0
  484. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +1131 -0
  485. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +241 -0
  486. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +180 -0
  487. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +64 -0
  488. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +124 -0
  489. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +125 -0
  490. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +66 -0
  491. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +171 -0
  492. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +132 -0
  493. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +359 -0
  494. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +21 -0
  495. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +308 -0
  496. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +525 -0
  497. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +126 -0
  498. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +205 -0
  499. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +251 -0
  500. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +145 -0
  501. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +130 -0
  502. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +77 -0
  503. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +119 -0
  504. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +156 -0
  505. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +219 -0
  506. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +114 -0
  507. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +114 -0
  508. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +118 -0
  509. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +220 -0
  510. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +1217 -0
  511. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
  512. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
  513. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
  514. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
  515. package/project/.sdk/tm/lua/Makefile +15 -4
  516. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  517. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  518. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  519. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  520. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  521. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  522. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  523. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  524. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  525. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  526. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  527. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  528. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  529. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  530. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  531. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  532. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  533. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  534. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  535. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  536. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  537. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  538. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  539. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  540. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  541. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  542. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  543. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  544. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  545. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  546. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  547. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  548. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  549. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  550. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  551. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  552. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  553. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  554. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  555. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  556. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
  557. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
  558. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
  559. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
  560. package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
  561. package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
  562. package/project/.sdk/tm/ocaml/Makefile +52 -8
  563. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  564. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  565. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  566. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  567. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  568. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  569. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  570. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  571. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  572. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  573. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  574. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  575. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  576. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  577. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  578. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  579. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  580. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  581. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  582. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  583. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  584. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  585. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  586. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  587. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  588. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  589. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  590. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  591. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  592. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  593. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  594. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  595. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  596. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  597. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  598. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  599. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  600. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  601. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
  602. package/project/.sdk/tm/perl/Makefile +6 -1
  603. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +141 -0
  604. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +65 -0
  605. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +346 -0
  606. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +216 -0
  607. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +176 -0
  608. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +59 -0
  609. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +157 -0
  610. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +1139 -0
  611. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +187 -0
  612. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +100 -0
  613. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +119 -0
  614. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +71 -0
  615. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +251 -0
  616. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +122 -0
  617. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +70 -0
  618. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +263 -0
  619. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +159 -0
  620. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +180 -0
  621. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +92 -0
  622. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +138 -0
  623. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +213 -0
  624. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +173 -0
  625. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +132 -0
  626. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +132 -0
  627. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +102 -0
  628. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +132 -0
  629. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +190 -0
  630. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +124 -0
  631. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +301 -0
  632. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +605 -0
  633. package/project/.sdk/tm/perl/feature/secrets_feature.pm +696 -0
  634. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
  635. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +1004 -0
  636. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
  637. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
  638. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
  639. package/project/.sdk/tm/php/feature/SecretsFeature.php +694 -0
  640. package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +226 -0
  641. package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +75 -0
  642. package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +444 -0
  643. package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +262 -0
  644. package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +202 -0
  645. package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +74 -0
  646. package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +195 -0
  647. package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +1514 -0
  648. package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +260 -0
  649. package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +129 -0
  650. package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +169 -0
  651. package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +79 -0
  652. package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +348 -0
  653. package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +163 -0
  654. package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +40 -0
  655. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +274 -0
  656. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +170 -0
  657. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +163 -0
  658. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +106 -0
  659. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +144 -0
  660. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +194 -0
  661. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +113 -0
  662. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +131 -0
  663. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +150 -0
  664. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +101 -0
  665. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +146 -0
  666. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +161 -0
  667. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +129 -0
  668. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +322 -0
  669. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +724 -0
  670. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +1165 -0
  671. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
  672. package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
  673. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
  674. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
  675. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
  676. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
  677. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
  678. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
  679. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
  680. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
  681. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
  682. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
  683. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
  684. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
  685. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
  686. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
  687. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
  688. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +2 -2
  689. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
  690. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
  691. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
  692. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
  693. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
  694. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
  695. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
  696. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
  697. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
  698. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
  699. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
  700. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
  701. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
  702. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
  703. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  704. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
  705. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  706. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
  707. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
  708. package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
  709. package/project/.sdk/tm/rb/Makefile +7 -1
  710. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +118 -0
  711. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +55 -0
  712. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +315 -0
  713. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +197 -0
  714. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +143 -0
  715. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +52 -0
  716. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +147 -0
  717. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +1079 -0
  718. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +169 -0
  719. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +93 -0
  720. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +112 -0
  721. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +56 -0
  722. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +99 -0
  723. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +106 -0
  724. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +24 -0
  725. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +111 -0
  726. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +200 -0
  727. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +130 -0
  728. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +121 -0
  729. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +66 -0
  730. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +107 -0
  731. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +137 -0
  732. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +136 -0
  733. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +97 -0
  734. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +104 -0
  735. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +113 -0
  736. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +127 -0
  737. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +210 -0
  738. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +465 -0
  739. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +30 -0
  740. package/project/.sdk/tm/rb/feature/secrets_feature.rb +583 -0
  741. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +935 -0
  742. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
  743. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
  744. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
  745. package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +130 -0
  746. package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +114 -0
  747. package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +416 -0
  748. package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +245 -0
  749. package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +200 -0
  750. package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +90 -0
  751. package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +231 -0
  752. package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +1565 -0
  753. package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +18 -0
  754. package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +226 -0
  755. package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +137 -0
  756. package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +148 -0
  757. package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +83 -0
  758. package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +132 -0
  759. package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +433 -0
  760. package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +174 -0
  761. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +146 -0
  762. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +230 -0
  763. package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +328 -0
  764. package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +184 -0
  765. package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +172 -0
  766. package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +102 -0
  767. package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +153 -0
  768. package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +228 -0
  769. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +537 -0
  770. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +300 -0
  771. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +137 -0
  772. package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +148 -0
  773. package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +165 -0
  774. package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +150 -0
  775. package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +144 -0
  776. package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +51 -0
  777. package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +637 -0
  778. package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +677 -0
  779. package/project/.sdk/tm/rust/feature/secrets.rs +984 -0
  780. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +1605 -0
  781. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
  782. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
  783. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
  784. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
  785. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
  786. package/project/.sdk/tm/scala/Makefile +8 -3
  787. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +578 -0
  788. package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +96 -0
  789. package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +270 -0
  790. package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +216 -0
  791. package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +144 -0
  792. package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +59 -0
  793. package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +149 -0
  794. package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +1089 -0
  795. package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +156 -0
  796. package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +169 -0
  797. package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +47 -0
  798. package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +107 -0
  799. package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +131 -0
  800. package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +53 -0
  801. package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +110 -0
  802. package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +157 -0
  803. package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +136 -0
  804. package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +302 -0
  805. package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +20 -0
  806. package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +281 -0
  807. package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +473 -0
  808. package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +123 -0
  809. package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +216 -0
  810. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +225 -0
  811. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +124 -0
  812. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +104 -0
  813. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +68 -0
  814. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +97 -0
  815. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +131 -0
  816. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +209 -0
  817. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +98 -0
  818. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +90 -0
  819. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +95 -0
  820. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +214 -0
  821. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1042 -0
  822. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
  823. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
  824. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
  825. package/project/.sdk/tm/scala/utility/Make.scala +7 -0
  826. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/SecretsFeature.swift +669 -0
  827. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +98 -0
  828. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +87 -0
  829. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +298 -0
  830. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +209 -0
  831. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +191 -0
  832. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +63 -0
  833. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +158 -0
  834. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +1141 -0
  835. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +192 -0
  836. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +183 -0
  837. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +130 -0
  838. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +141 -0
  839. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +59 -0
  840. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +125 -0
  841. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +198 -0
  842. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +139 -0
  843. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +271 -0
  844. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +173 -0
  845. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +139 -0
  846. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +198 -0
  847. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +86 -0
  848. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +129 -0
  849. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +175 -0
  850. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +310 -0
  851. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +140 -0
  852. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +118 -0
  853. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +105 -0
  854. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +111 -0
  855. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +297 -0
  856. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +120 -0
  857. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +452 -0
  858. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +25 -0
  859. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +689 -0
  860. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +755 -0
  861. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +9 -0
  862. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +30 -0
  863. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/feature/secrets/SecretsFeatureTest.swift +1030 -0
  864. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
  865. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
  866. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
  867. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  868. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
  869. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
  870. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
  871. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
  872. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
  873. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
  874. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
  875. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
  876. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
  877. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
  878. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
  879. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
  880. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
  881. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
  882. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
  883. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
  884. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
  885. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
  886. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
  887. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
  888. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
  889. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
  890. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
  891. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
  892. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
  893. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
  894. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
  895. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
  896. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
  897. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
  898. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
  899. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
  900. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
  901. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
  902. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
  903. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
  904. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1 -1
  905. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  906. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
  907. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
  908. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
  909. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  910. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  911. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  912. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  913. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  914. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  915. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  916. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  917. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  918. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  919. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  920. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  921. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  922. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  923. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  924. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  925. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  926. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  927. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  928. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  929. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  930. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  931. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  932. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  933. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  934. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  935. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  936. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  937. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  938. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  939. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  940. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  941. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  942. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  943. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +2 -2
  944. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +2 -2
  945. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +2 -2
  946. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +2 -2
  947. package/project/sdkgen-package.json +1 -4
  948. package/src/helpers/manifest.ts +81 -1
  949. package/src/helpers/modelNames.ts +284 -0
  950. package/src/helpers/naming.ts +45 -1
  951. package/src/sdkgen.ts +11 -1
  952. package/src/testkit.ts +115 -26
  953. package/src/utility.ts +17 -7
  954. package/project/.sdk/model/target/dart.aon +0 -58
  955. package/project/.sdk/model/target/lean.aon +0 -91
  956. package/project/.sdk/model/target/seneca-provider.aon +0 -120
  957. package/project/.sdk/src/cmp/dart/Config_dart.ts +0 -176
  958. package/project/.sdk/src/cmp/dart/EntityBase_dart.ts +0 -34
  959. package/project/.sdk/src/cmp/dart/EntityOperation_dart.ts +0 -43
  960. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +0 -207
  961. package/project/.sdk/src/cmp/dart/Entity_dart.ts +0 -87
  962. package/project/.sdk/src/cmp/dart/Gitignore_dart.ts +0 -34
  963. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +0 -33
  964. package/project/.sdk/src/cmp/dart/Main_dart.ts +0 -106
  965. package/project/.sdk/src/cmp/dart/Package_dart.ts +0 -82
  966. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +0 -177
  967. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +0 -238
  968. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +0 -53
  969. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +0 -152
  970. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +0 -59
  971. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +0 -65
  972. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +0 -151
  973. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +0 -63
  974. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +0 -225
  975. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +0 -397
  976. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +0 -24
  977. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +0 -106
  978. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +0 -78
  979. package/project/.sdk/src/cmp/dart/SdkError_dart.ts +0 -42
  980. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +0 -516
  981. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +0 -628
  982. package/project/.sdk/src/cmp/dart/Test_dart.ts +0 -116
  983. package/project/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +0 -79
  984. package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +0 -51
  985. package/project/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +0 -25
  986. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +0 -29
  987. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +0 -28
  988. package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +0 -302
  989. package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +0 -98
  990. package/project/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +0 -90
  991. package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +0 -102
  992. package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +0 -108
  993. package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +0 -102
  994. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +0 -338
  995. package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +0 -26
  996. package/project/.sdk/src/cmp/dart/tsconfig.json +0 -15
  997. package/project/.sdk/src/cmp/dart/utility_dart.ts +0 -155
  998. package/project/.sdk/src/cmp/lean/Config_lean.ts +0 -93
  999. package/project/.sdk/src/cmp/lean/Entity_lean.ts +0 -9
  1000. package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +0 -18
  1001. package/project/.sdk/src/cmp/lean/Main_lean.ts +0 -120
  1002. package/project/.sdk/src/cmp/lean/Package_lean.ts +0 -93
  1003. package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +0 -29
  1004. package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +0 -19
  1005. package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +0 -25
  1006. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +0 -39
  1007. package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +0 -25
  1008. package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +0 -24
  1009. package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +0 -22
  1010. package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +0 -50
  1011. package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +0 -40
  1012. package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +0 -16
  1013. package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +0 -23
  1014. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +0 -19
  1015. package/project/.sdk/src/cmp/lean/Test_lean.ts +0 -261
  1016. package/project/.sdk/src/cmp/lean/utility_lean.ts +0 -129
  1017. package/project/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +0 -4080
  1018. package/project/.sdk/src/cmp/seneca-provider/Gitignore_seneca-provider.ts +0 -161
  1019. package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +0 -1011
  1020. package/project/.sdk/tm/dart/LICENSE +0 -22
  1021. package/project/.sdk/tm/dart/Makefile +0 -50
  1022. package/project/.sdk/tm/dart/lib/Context.dart +0 -150
  1023. package/project/.sdk/tm/dart/lib/Control.dart +0 -15
  1024. package/project/.sdk/tm/dart/lib/Operation.dart +0 -31
  1025. package/project/.sdk/tm/dart/lib/Point.dart +0 -51
  1026. package/project/.sdk/tm/dart/lib/Response.dart +0 -32
  1027. package/project/.sdk/tm/dart/lib/Result.dart +0 -39
  1028. package/project/.sdk/tm/dart/lib/Spec.dart +0 -49
  1029. package/project/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +0 -103
  1030. package/project/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +0 -76
  1031. package/project/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +0 -152
  1032. package/project/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +0 -104
  1033. package/project/.sdk/tm/dart/lib/feature/cost/CostFeature.dart +0 -446
  1034. package/project/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +0 -153
  1035. package/project/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +0 -92
  1036. package/project/.sdk/tm/dart/lib/feature/log/LogFeature.dart +0 -85
  1037. package/project/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +0 -103
  1038. package/project/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +0 -186
  1039. package/project/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +0 -240
  1040. package/project/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +0 -118
  1041. package/project/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +0 -103
  1042. package/project/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +0 -121
  1043. package/project/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +0 -155
  1044. package/project/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +0 -97
  1045. package/project/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +0 -136
  1046. package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +0 -328
  1047. package/project/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +0 -104
  1048. package/project/.sdk/tm/dart/lib/utility/CleanUtility.dart +0 -12
  1049. package/project/.sdk/tm/dart/lib/utility/DoneUtility.dart +0 -18
  1050. package/project/.sdk/tm/dart/lib/utility/ErrUtility.dart +0 -46
  1051. package/project/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +0 -35
  1052. package/project/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +0 -20
  1053. package/project/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +0 -9
  1054. package/project/.sdk/tm/dart/lib/utility/FetcherUtility.dart +0 -104
  1055. package/project/.sdk/tm/dart/lib/utility/GraphqlUtility.dart +0 -162
  1056. package/project/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +0 -6
  1057. package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +0 -71
  1058. package/project/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +0 -42
  1059. package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +0 -233
  1060. package/project/.sdk/tm/dart/lib/utility/MakePointUtility.dart +0 -130
  1061. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +0 -66
  1062. package/project/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +0 -59
  1063. package/project/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +0 -49
  1064. package/project/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +0 -77
  1065. package/project/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +0 -51
  1066. package/project/.sdk/tm/dart/lib/utility/ParamUtility.dart +0 -56
  1067. package/project/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +0 -46
  1068. package/project/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +0 -19
  1069. package/project/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +0 -11
  1070. package/project/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +0 -30
  1071. package/project/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +0 -23
  1072. package/project/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +0 -9
  1073. package/project/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +0 -18
  1074. package/project/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +0 -29
  1075. package/project/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +0 -15
  1076. package/project/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +0 -18
  1077. package/project/.sdk/tm/dart/lib/utility/StructUtility.dart +0 -127
  1078. package/project/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +0 -28
  1079. package/project/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +0 -44
  1080. package/project/.sdk/tm/dart/lib/utility/Utility.dart +0 -239
  1081. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +0 -2462
  1082. package/project/.sdk/tm/dart/src/feature/README.md +0 -3
  1083. package/project/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
  1084. package/project/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
  1085. package/project/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
  1086. package/project/.sdk/tm/dart/test/custom_test.dart +0 -65
  1087. package/project/.sdk/tm/dart/test/exists_test.dart +0 -12
  1088. package/project/.sdk/tm/dart/test/feature/harness.dart +0 -329
  1089. package/project/.sdk/tm/dart/test/feature_test.dart +0 -1193
  1090. package/project/.sdk/tm/dart/test/harness.dart +0 -153
  1091. package/project/.sdk/tm/dart/test/netsim_test.dart +0 -48
  1092. package/project/.sdk/tm/dart/test/omni.dart +0 -520
  1093. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +0 -143
  1094. package/project/.sdk/tm/dart/test/pipeline_test.dart +0 -608
  1095. package/project/.sdk/tm/dart/test/primary_test.dart +0 -476
  1096. package/project/.sdk/tm/dart/test/sdk-test-control.json +0 -19
  1097. package/project/.sdk/tm/dart/test/struct_test.dart +0 -468
  1098. package/project/.sdk/tm/dart/test/utility.dart +0 -198
  1099. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +0 -7
  1100. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +0 -653
  1101. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +0 -232
  1102. package/project/.sdk/tm/lean/LICENSE +0 -21
  1103. package/project/.sdk/tm/lean/Makefile +0 -32
  1104. package/project/.sdk/tm/lean/VERSION +0 -1
  1105. package/project/.sdk/tm/lean/src/SdkFeature.lean +0 -171
  1106. package/project/.sdk/tm/lean/src/SdkFeatures.lean +0 -787
  1107. package/project/.sdk/tm/lean/src/SdkJson.lean +0 -134
  1108. package/project/.sdk/tm/lean/src/SdkRuntime.lean +0 -374
  1109. package/project/.sdk/tm/lean/src/SdkUtility.lean +0 -809
  1110. package/project/.sdk/tm/lean/src/VoxgigStruct.lean +0 -2880
  1111. package/project/.sdk/tm/lean/src/Vregex.lean +0 -412
  1112. package/project/.sdk/tm/lean/src/feature/README.md +0 -5
  1113. package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  1114. package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  1115. package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  1116. package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  1117. package/project/.sdk/tm/lean/src/feature/cost/.gitkeep +0 -0
  1118. package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  1119. package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  1120. package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  1121. package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  1122. package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  1123. package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  1124. package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  1125. package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  1126. package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  1127. package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  1128. package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  1129. package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  1130. package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  1131. package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  1132. package/project/.sdk/tm/lean/test/OmniResolver.lean +0 -358
  1133. package/project/.sdk/tm/lean/test/OmniSmoke.lean +0 -174
  1134. package/project/.sdk/tm/lean/test/StructCorpus.lean +0 -368
  1135. package/project/.sdk/tm/lean/test/TFeature.lean +0 -281
  1136. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +0 -227
  1137. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +0 -997
  1138. package/project/.sdk/tm/seneca-provider/CODE_OF_CONDUCT.md +0 -132
  1139. package/project/.sdk/tm/seneca-provider/LICENSE +0 -21
  1140. package/project/.sdk/tm/seneca-provider/Makefile +0 -15
  1141. package/project/.sdk/tm/seneca-provider/src/tsconfig.json +0 -18
  1142. package/project/.sdk/tm/seneca-provider/test/tsconfig.json +0 -16
  1143. package/project/.sdk/tm/seneca-provider/tsfmt.json +0 -3
  1144. /package/project/.sdk/tm/{dart/src/feature/audit → c/src/feature/secrets}/.gitkeep +0 -0
  1145. /package/project/.sdk/tm/{dart/src/feature/base → clojure/src/feature/secrets}/.gitkeep +0 -0
  1146. /package/project/.sdk/tm/{dart/src/feature/cache → cpp/src/feature/secrets}/.gitkeep +0 -0
  1147. /package/project/.sdk/tm/{dart/src/feature/clienttrack → csharp/src/feature/secrets}/.gitkeep +0 -0
  1148. /package/project/.sdk/tm/{dart/src/feature/cost → elixir/src/feature/secrets}/.gitkeep +0 -0
  1149. /package/project/.sdk/tm/{dart/src/feature/debug → java/src/feature/secrets}/.gitkeep +0 -0
  1150. /package/project/.sdk/tm/{dart/src/feature/idempotency → kotlin/src/feature/secrets}/.gitkeep +0 -0
  1151. /package/project/.sdk/tm/{dart/src/feature/log → lua/src/feature/secrets}/.gitkeep +0 -0
  1152. /package/project/.sdk/tm/{dart/src/feature/metrics → ocaml/src/feature/secrets}/.gitkeep +0 -0
  1153. /package/project/.sdk/tm/{dart/src/feature/netsim → perl/src/feature/secrets}/.gitkeep +0 -0
  1154. /package/project/.sdk/tm/{dart/src/feature/paging → php/src/feature/secrets}/.gitkeep +0 -0
  1155. /package/project/.sdk/tm/{dart/src/feature/proxy → rb/src/feature/secrets}/.gitkeep +0 -0
  1156. /package/project/.sdk/tm/{dart/src/feature/ratelimit → rust/src/feature/secrets}/.gitkeep +0 -0
  1157. /package/project/.sdk/tm/{dart/src/feature/rbac → scala/src/feature/secrets}/.gitkeep +0 -0
  1158. /package/project/.sdk/tm/{dart/src/feature/retry → swift/src/feature/secrets}/.gitkeep +0 -0
  1159. /package/project/.sdk/tm/{dart/src/feature/streaming → zig/src/feature/secrets}/.gitkeep +0 -0
@@ -0,0 +1,1217 @@
1
+ package KOTLINPACKAGE.sdktest
2
+
3
+ // Behavioural tests for the secrets feature (vendored @voxgig/sekreto) -
4
+ // the kotlin port of tm/ts/test/feature/secrets/Secrets.test.ts.
5
+ //
6
+ // The contract under test: the `apikey` OPTION keeps its exact old meaning
7
+ // and always wins, because SecretsFeature places it FIRST in the provider
8
+ // chain (a `memory` store named `options`) - explicit-beats-lookup falls
9
+ // out of sekreto's first-hit rule rather than from special-case logic.
10
+ // With the feature inactive nothing changes at all. With it active and the
11
+ // option unset, the chain (a memory store, a custom provider, a vault)
12
+ // supplies the credential instead.
13
+ //
14
+ // This file lives in the test `feature/` container on purpose: `target add`
15
+ // trims it, along with the feature source and the vendored library, for a
16
+ // project whose model does not select `secrets`.
17
+ //
18
+ // THE CLIENT IS LIVE AND THE TRANSPORT IS THE THING COUNTED. Every wire
19
+ // assertion here runs against a real client whose `system.fetch` is the
20
+ // recorder - never `testSDK`, whose test feature REPLACES the fetcher with
21
+ // its own in-memory mock and would leave a `system.fetch` counter at zero
22
+ // for a healthy SDK carrying no secrets feature at all. An assertion that
23
+ // cannot fail pins no rule, so each fail-closed case additionally carries a
24
+ // CONTROL leg: the same construction with a WORKING provider must reach the
25
+ // same recorder exactly once, carrying the credential. Only then does a
26
+ // zero from the broken provider mean REFUSED rather than UNWIRED. And the
27
+ // refusal is matched on the PROVIDER'S OWN message, so an unrelated failure
28
+ // (a missing route, a blocked op) cannot stand in for fail-closed.
29
+ //
30
+ // The feature is CONSTRUCTED DIRECTLY and adopted through the `extend`
31
+ // option ONLY when the generated Config did not already install it, so
32
+ // these tests hold in any generated tree - and never double the feature
33
+ // (two transport wraps, two purchases) in one that did.
34
+ //
35
+ // NO ENVIRONMENT VARIABLES. The JVM has no supported way to set one for the
36
+ // current process, so the ts/go/js suites' `env` chains become `memory`
37
+ // chains and custom Provider objects here. The rule under test - the chain
38
+ // answers when the option does not - is identical either way.
39
+
40
+ import java.lang.reflect.Method
41
+ import java.util.concurrent.CountDownLatch
42
+ import java.util.concurrent.TimeUnit
43
+ import java.util.function.BiFunction
44
+ import java.util.function.Supplier
45
+
46
+ import org.junit.jupiter.api.Assertions.assertEquals
47
+ import org.junit.jupiter.api.Assertions.assertFalse
48
+ import org.junit.jupiter.api.Assertions.assertNotNull
49
+ import org.junit.jupiter.api.Assertions.assertNull
50
+ import org.junit.jupiter.api.Assertions.assertTrue
51
+ import org.junit.jupiter.api.Assertions.fail
52
+ import org.junit.jupiter.api.Test
53
+
54
+ import KOTLINPACKAGE.core.Config
55
+ import KOTLINPACKAGE.core.ProjectNameSDK
56
+ import KOTLINPACKAGE.core.SdkEntity
57
+ import KOTLINPACKAGE.feature.SecretsFeature
58
+ import KOTLINPACKAGE.feature.secrets.sekreto.Provider
59
+ import KOTLINPACKAGE.feature.secrets.sekreto.ProviderSpec
60
+
61
+ @Suppress("UNCHECKED_CAST")
62
+ class SecretsTest {
63
+
64
+ // -------------------------------------------------------------------
65
+ // The recording transport: system.fetch for a LIVE client, scripting one
66
+ // status per API call (the last repeating) and a token endpoint for the
67
+ // exchange tests.
68
+
69
+ class Call(
70
+ val url: String,
71
+ val auth: String,
72
+ val hasAuth: Boolean,
73
+ val body: String,
74
+ )
75
+
76
+ class Wire {
77
+ private val lock = Object()
78
+ private val recorded = mutableListOf<Call>()
79
+
80
+ var apistatus: List<Int> = listOf(200)
81
+ var tokens: List<String> = listOf("ACCESS01", "ACCESS02", "ACCESS03")
82
+ var tokenpath: String = "auth/token"
83
+ var respfield: String = "access_token"
84
+
85
+ // A token endpoint that starts refusing after `tokenok` successful
86
+ // purchases (0 refuses the first).
87
+ var tokenok: Int = Int.MAX_VALUE
88
+
89
+ private var issued = 0
90
+ private var apicalls = 0
91
+
92
+ // A java.util.function.BiFunction, not a bare kotlin lambda: that is the
93
+ // shape utility/Fetcher.kt dispatches on, and a Function2 would be
94
+ // silently ignored.
95
+ val fetch: BiFunction<String, MutableMap<String, Any?>, Any?> =
96
+ BiFunction { url, fetchdef -> serve(url, fetchdef) }
97
+
98
+ private fun serve(url: String, fetchdef: MutableMap<String, Any?>): Any? {
99
+ synchronized(lock) {
100
+ // The header value is SNAPSHOT here, not referenced: the retry path
101
+ // rewrites the same headers map in place, so a stored reference
102
+ // would make every earlier record show the newest token.
103
+ var auth = ""
104
+ var hasAuth = false
105
+ val headers = fetchdef["headers"]
106
+ if (headers is Map<*, *>) {
107
+ for (e in headers.entries) {
108
+ if ("authorization".equals(e.key.toString(), ignoreCase = true)) {
109
+ hasAuth = true
110
+ auth = e.value?.toString() ?: ""
111
+ }
112
+ }
113
+ }
114
+ val body = fetchdef["body"]
115
+ recorded.add(Call(url, auth, hasAuth, if (body is String) body else ""))
116
+
117
+ if (url.endsWith("/$tokenpath")) {
118
+ if (issued >= tokenok) {
119
+ issued++
120
+ return response(500, linkedMapOf<String, Any?>("error" to "nope"))
121
+ }
122
+ val token = tokens[minOf(issued, tokens.size - 1)]
123
+ issued++
124
+ return response(200, linkedMapOf<String, Any?>(respfield to token))
125
+ }
126
+
127
+ val status = apistatus[minOf(apicalls, apistatus.size - 1)]
128
+ apicalls++
129
+ return response(status, linkedMapOf<String, Any?>("ok" to (status < 400)))
130
+ }
131
+ }
132
+
133
+ private fun response(status: Int, payload: Any?): MutableMap<String, Any?> =
134
+ linkedMapOf(
135
+ "status" to status,
136
+ "statusText" to if (status < 400) "OK" else "ERR",
137
+ "headers" to linkedMapOf<String, Any?>(),
138
+ "json" to Supplier<Any?> { payload },
139
+ )
140
+
141
+ fun calls(): List<Call> = synchronized(lock) { recorded.toList() }
142
+
143
+ /** The recorded calls that did NOT go to the token endpoint. */
144
+ fun api(): List<Call> = calls().filter { !it.url.endsWith("/$tokenpath") }
145
+
146
+ fun token(): List<Call> = calls().filter { it.url.endsWith("/$tokenpath") }
147
+
148
+ /** What went out, for a message that names the leak rather than counting it. */
149
+ fun wire(): String = calls().joinToString(", ") { it.url + " auth=" + it.auth }
150
+ }
151
+
152
+ // -------------------------------------------------------------------
153
+ // Support.
154
+
155
+ companion object {
156
+ const val BASE = "http://secrets.test/api"
157
+ }
158
+
159
+ // A sekreto Provider built in code.
160
+ class TestProvider(
161
+ private val onlookup: (String) -> String?,
162
+ private val label: String = "custom:test",
163
+ ) : Provider {
164
+ override fun lookup(name: String): String? = onlookup(name)
165
+ override fun describe(): String = label
166
+ }
167
+
168
+ // The Authorization header carries the SPEC's credential prefix, which a
169
+ // TEMPLATE cannot know: an OpenAPI `http`/`bearer` scheme gives
170
+ // `Bearer <token>`, an apiKey scheme the raw token. So assert on the
171
+ // CREDENTIAL and let the prefix be whatever this SDK's API declares.
172
+ private fun credentialIs(header: String?, token: String) {
173
+ val got = header ?: ""
174
+ assertTrue(got == token || got.endsWith(" $token"),
175
+ "expected the authorization header to carry $token, got: \"$got\"")
176
+ }
177
+
178
+ private fun map(vararg pairs: Pair<String, Any?>): MutableMap<String, Any?> =
179
+ linkedMapOf(*pairs)
180
+
181
+ private fun secretsFeatureOf(client: ProjectNameSDK): SecretsFeature? =
182
+ client.features.firstOrNull { it is SecretsFeature } as? SecretsFeature
183
+
184
+ // Build the client, and ADOPT the feature via `extend` ONLY when the
185
+ // generated Config did not already install it: when this SDK was generated
186
+ // with `secrets` model-active, the ordinary factory path builds the
187
+ // instance, and adding a second via extend would DOUBLE the feature - two
188
+ // transport wraps, two resolutions, and a token purchase the assertions
189
+ // cannot account for.
190
+ private fun withSecrets(build: (Boolean) -> ProjectNameSDK): ProjectNameSDK {
191
+ val client = build(false)
192
+ if (null != secretsFeatureOf(client)) {
193
+ return client
194
+ }
195
+ return build(true)
196
+ }
197
+
198
+ // A LIVE client carrying the secrets feature, wired to the recorder.
199
+ private fun secretsClient(w: Wire, sdkopts: MutableMap<String, Any?>): ProjectNameSDK {
200
+ val opts = map(
201
+ "base" to BASE,
202
+ "system" to map("fetch" to w.fetch),
203
+ )
204
+ opts.putAll(sdkopts)
205
+
206
+ return withSecrets { extend ->
207
+ val use = LinkedHashMap(opts)
208
+ if (extend) {
209
+ use["extend"] = mutableListOf<Any?>(SecretsFeature())
210
+ }
211
+ ProjectNameSDK(use)
212
+ }
213
+ }
214
+
215
+ // The feature options block: one provider (a live Provider object, or a
216
+ // declarative spec / plain map), plus any extra feature options.
217
+ private fun chainOpts(
218
+ provider: Any?,
219
+ extra: MutableMap<String, Any?>? = null,
220
+ ): MutableMap<String, Any?> {
221
+ val fopts = map(
222
+ "active" to true,
223
+ "providers" to mutableListOf<Any?>(provider),
224
+ )
225
+ if (extra != null) {
226
+ fopts.putAll(extra)
227
+ }
228
+ return map("secrets" to fopts)
229
+ }
230
+
231
+ private val BROKEN = TestProvider(
232
+ { throw RuntimeException("vault unreachable") }, "broken:test")
233
+
234
+ private fun working(value: String) =
235
+ TestProvider({ name -> if ("apikey" == name) value else null }, "working:test")
236
+
237
+ // -------------------------------------------------------------------
238
+ // Driving real entity operations - which is what runs the whole pipeline
239
+ // and reaches the transport. Entity accessors are discovered by SHAPE (one
240
+ // Map argument, an SdkEntity return) rather than by name, because this
241
+ // file is a TEMPLATE and no project's entity names are known here. An op
242
+ // the API does not define fails BEFORE the transport, which is why several
243
+ // may need driving.
244
+
245
+ private fun accessors(client: ProjectNameSDK): List<Method> =
246
+ client.javaClass.methods
247
+ .filter {
248
+ 1 == it.parameterCount &&
249
+ SdkEntity::class.java.isAssignableFrom(it.returnType) &&
250
+ java.util.Map::class.java.isAssignableFrom(it.parameterTypes[0])
251
+ }
252
+ .sortedBy { it.name }
253
+
254
+ // Drives ops until `stop` reports the observable state a test waits for,
255
+ // and returns the last error an op raised (the operation's own outcome is
256
+ // otherwise irrelevant: no seeded data, a scripted response). `stop` is
257
+ // handed that last error too, so a fail-closed case can stop on EITHER
258
+ // outcome - the refusal it wants, or a request going out, which is the
259
+ // failure it exists to catch; stopping only on the refusal would report
260
+ // "nothing to assert on" for the leak.
261
+ private fun driveEntityOpUntil(
262
+ client: ProjectNameSDK,
263
+ what: String,
264
+ stop: (Throwable?) -> Boolean,
265
+ ): Throwable? {
266
+ var last: Throwable? = null
267
+
268
+ for (m in accessors(client)) {
269
+ val ent = m.invoke(client, null) as? SdkEntity ?: continue
270
+
271
+ for (op in listOf<(SdkEntity) -> Any?>(
272
+ { it.list(null, null) },
273
+ { it.load(null, null) },
274
+ )) {
275
+ try {
276
+ op(ent)
277
+ } catch (err: Throwable) {
278
+ last = err
279
+ }
280
+ if (stop(last)) {
281
+ return last
282
+ }
283
+ }
284
+ }
285
+
286
+ fail<Unit>("no entity operation $what - nothing to assert on")
287
+ return last
288
+ }
289
+
290
+ private fun driveEntityOp(client: ProjectNameSDK, w: Wire): Throwable? {
291
+ val before = w.api().size
292
+ return driveEntityOpUntil(client, "reached the transport") { before < w.api().size }
293
+ }
294
+
295
+ private fun messageOf(err: Throwable?): String {
296
+ var e = err
297
+ val parts = mutableListOf<String>()
298
+ while (null != e) {
299
+ parts.add(e.message ?: e.toString())
300
+ e = e.cause
301
+ }
302
+ return parts.joinToString(" <- ")
303
+ }
304
+
305
+ // ===================================================================
306
+ // The feature-inactive baseline: bit-identical behaviour.
307
+
308
+ @Test
309
+ fun inactiveApikeyOptionBehavesExactlyAsBefore() {
310
+ val client = ProjectNameSDK.testSDK(null, map("apikey" to "OPTKEY01"))
311
+ val fetchdef = client.prepare(map("path" to "/"))
312
+ val headers = fetchdef["headers"] as MutableMap<String, Any?>
313
+ credentialIs(headers["authorization"] as? String, "OPTKEY01")
314
+
315
+ // No runtime activation, no extend: the feature must not be installed,
316
+ // whatever this project's model says.
317
+ assertNull(secretsFeatureOf(client),
318
+ "the feature must not install itself without feature.secrets.active")
319
+ }
320
+
321
+ @Test
322
+ fun inactiveNoApikeyMeansNoAuthorizationHeader() {
323
+ val client = ProjectNameSDK.testSDK(null, null)
324
+ val fetchdef = client.prepare(map("path" to "/"))
325
+ val headers = fetchdef["headers"] as MutableMap<String, Any?>
326
+ assertFalse(headers.containsKey("authorization"),
327
+ "unexpected authorization header: " + headers["authorization"])
328
+ }
329
+
330
+ // ===================================================================
331
+ // Active: the provider chain, driven through real entity operations.
332
+
333
+ @Test
334
+ fun apikeyOptionStillWinsOverTheChain() {
335
+ val w = Wire()
336
+ val client = secretsClient(w, map(
337
+ "apikey" to "OPTKEY01",
338
+ "feature" to chainOpts(working("CHAINKEY01")),
339
+ ))
340
+
341
+ driveEntityOp(client, w)
342
+ credentialIs(w.api()[0].auth, "OPTKEY01")
343
+
344
+ // The explicit option is a real store, not a special case: a directed
345
+ // read names it like any other.
346
+ val sf = secretsFeatureOf(client)
347
+ assertNotNull(sf, "the extend seam did not install the feature")
348
+ assertEquals("OPTKEY01", sf!!.sekreto()!!.getfrom("options", "apikey"))
349
+ }
350
+
351
+ @Test
352
+ fun anOmittedApikeyDefersToTheChainAtTheTransportSeam() {
353
+ val w = Wire()
354
+ val client = secretsClient(w, map(
355
+ "feature" to chainOpts(working("CHAINKEY02")),
356
+ ))
357
+
358
+ // Before any op, nothing has been resolved.
359
+ assertEquals("", secretsFeatureOf(client)!!.credential(),
360
+ "the chain was consulted before any operation")
361
+
362
+ driveEntityOp(client, w)
363
+
364
+ // Resolution happens AT THE TRANSPORT - the one seam every wire path
365
+ // crosses - so the credential is ON THE WIRE, not merely resolved.
366
+ credentialIs(w.api()[0].auth, "CHAINKEY02")
367
+ assertEquals("CHAINKEY02", secretsFeatureOf(client)!!.credential())
368
+
369
+ // And the shared options map stays FROZEN: prepareAuth clones it on
370
+ // every request, so a feature writing to it would race every concurrent
371
+ // operation.
372
+ assertEquals("", client.optionsMap()["apikey"],
373
+ "the options map must stay unwritten after construction")
374
+ }
375
+
376
+ @Test
377
+ fun anExplicitlyEmptyApikeyAlsoDefersToTheChain() {
378
+ val w = Wire()
379
+ val client = secretsClient(w, map(
380
+ "apikey" to "",
381
+ "feature" to chainOpts(working("CHAINKEY03")),
382
+ ))
383
+
384
+ driveEntityOp(client, w)
385
+ credentialIs(w.api()[0].auth, "CHAINKEY03")
386
+ }
387
+
388
+ @Test
389
+ fun customProviderObjectsAreAcceptedVerbatim() {
390
+ val asked = mutableListOf<String>()
391
+ val w = Wire()
392
+ val client = secretsClient(w, map(
393
+ "feature" to chainOpts(TestProvider({ name ->
394
+ synchronized(asked) { asked.add(name) }
395
+ "CUSTOM01"
396
+ })),
397
+ ))
398
+
399
+ driveEntityOp(client, w)
400
+ credentialIs(w.api()[0].auth, "CUSTOM01")
401
+ assertTrue(asked.contains("apikey"),
402
+ "the custom provider was asked $asked, want it to include apikey")
403
+ }
404
+
405
+ @Test
406
+ fun typedProviderSpecsAreAcceptedVerbatim() {
407
+ // The typed arm of the providers list: a ProviderSpec built in code
408
+ // joins the chain without going through `specof`.
409
+ val w = Wire()
410
+ val client = secretsClient(w, map(
411
+ "feature" to chainOpts(ProviderSpec(
412
+ kind = "memory",
413
+ values = mapOf("APIKEY" to "SPECKEY01"),
414
+ )),
415
+ ))
416
+
417
+ driveEntityOp(client, w)
418
+ credentialIs(w.api()[0].auth, "SPECKEY01")
419
+ }
420
+
421
+ @Test
422
+ fun declarativeMemorySpecsAreAcceptedAsMaps() {
423
+ // A chain given as plain maps (the shape a config file produces) is
424
+ // turned into ProviderSpecs by sekreto's own `specof`.
425
+ val w = Wire()
426
+ val client = secretsClient(w, map(
427
+ "feature" to chainOpts(map(
428
+ "kind" to "memory",
429
+ "values" to map("APIKEY" to "MAPKEY01"),
430
+ )),
431
+ ))
432
+
433
+ driveEntityOp(client, w)
434
+ credentialIs(w.api()[0].auth, "MAPKEY01")
435
+ }
436
+
437
+ @Test
438
+ fun aMissEverywhereLeavesTheHeaderOff() {
439
+ val w = Wire()
440
+ val client = secretsClient(w, map(
441
+ "feature" to chainOpts(TestProvider({ null }, "empty:test")),
442
+ ))
443
+
444
+ driveEntityOp(client, w)
445
+
446
+ // A MISS falls through to an unauthenticated request - and leaves the
447
+ // header ABSENT rather than empty, which is what prepareAuth does.
448
+ assertFalse(w.api()[0].hasAuth,
449
+ "a chain MISS must leave the header off, got \"" + w.api()[0].auth + "\"")
450
+ }
451
+
452
+ // A MISS IS NOT A CACHEABLE ANSWER - sekreto's own rule, which this
453
+ // feature used to override from the layer above.
454
+ //
455
+ // DEFAULT caching here, which is the whole point: `cache: true` is about
456
+ // holding a HIT, and keeping the settled resolution after a miss meant
457
+ // the chain was never asked again for the life of the client. A secret
458
+ // provisioned after startup (a mounted file, a vault policy granted a
459
+ // minute late) was invisible forever, and the only workaround was giving
460
+ // up hit caching entirely.
461
+ @Test
462
+ fun aCachedMissIsReasked() {
463
+ var present = false
464
+ var calls = 0
465
+ val w = Wire()
466
+ val client = secretsClient(w, map(
467
+ "feature" to chainOpts(TestProvider({ _ ->
468
+ synchronized(this) {
469
+ calls++
470
+ if (present) "LATEKEY01" else null
471
+ }
472
+ }, "late:test")),
473
+ ))
474
+
475
+ driveEntityOp(client, w)
476
+ val first = w.api()[0]
477
+ assertFalse(first.hasAuth && "" != first.auth,
478
+ "the chain has nothing yet, so no credential should go out")
479
+
480
+ val asked = synchronized(this) { calls }
481
+ assertTrue(0 < asked)
482
+
483
+ // The secret is provisioned while the client is live.
484
+ synchronized(this) { present = true }
485
+
486
+ driveEntityOp(client, w)
487
+ credentialIs(w.api().last().auth, "LATEKEY01")
488
+
489
+ assertTrue(asked < synchronized(this) { calls },
490
+ "the MISS was cached: a secret that appears later can never be picked up")
491
+ }
492
+
493
+ // The other half of the same rule: a HIT is still cached by default, so
494
+ // the fix above must not turn every request into a chain walk.
495
+ @Test
496
+ fun aCachedHitIsKept() {
497
+ var calls = 0
498
+ val w = Wire()
499
+ val client = secretsClient(w, map(
500
+ "feature" to chainOpts(TestProvider({ _ ->
501
+ synchronized(this) { calls++ }
502
+ "STABLEKEY01"
503
+ }, "counting:test")),
504
+ ))
505
+
506
+ driveEntityOp(client, w)
507
+ driveEntityOp(client, w)
508
+
509
+ assertEquals(1, synchronized(this) { calls },
510
+ "a hit must be cached under the default cache: true")
511
+ }
512
+
513
+ @Test
514
+ fun authNullSuppressesTheCredentialChainOrNoChain() {
515
+ val w = Wire()
516
+ val client = secretsClient(w, map(
517
+ "auth" to null,
518
+ "apikey" to "OPTKEY01",
519
+ "feature" to chainOpts(working("CHAINKEY04")),
520
+ ))
521
+
522
+ driveEntityOp(client, w)
523
+
524
+ // Nothing on the wire, even though the chain would have resolved AND an
525
+ // explicit apikey was given.
526
+ assertFalse(w.api()[0].hasAuth,
527
+ "auth null must suppress the credential, got \"" + w.api()[0].auth + "\"")
528
+
529
+ // The suppression survives option validation rather than being replaced
530
+ // by the optspec's default auth map.
531
+ val opts = client.optionsMap()
532
+ assertTrue(opts.containsKey("auth"), "options.auth must stay present")
533
+ assertNull(opts["auth"], "options.auth must stay a null")
534
+ }
535
+
536
+ @Test
537
+ fun secretNameIsConfigurable() {
538
+ val w = Wire()
539
+ val client = secretsClient(w, map(
540
+ "feature" to chainOpts(
541
+ map("kind" to "memory", "values" to map("API_TOKEN" to "TOKKEY01")),
542
+ map("name" to "api.token")),
543
+ ))
544
+
545
+ driveEntityOp(client, w)
546
+ credentialIs(w.api()[0].auth, "TOKKEY01")
547
+ }
548
+
549
+ @Test
550
+ fun sekretoIsLiveForArbitrarySecretsAndRedaction() {
551
+ val w = Wire()
552
+ val client = secretsClient(w, map(
553
+ "feature" to chainOpts(map(
554
+ "kind" to "memory",
555
+ "values" to map("DB_PASSWORD" to "dbpass01"),
556
+ )),
557
+ ))
558
+
559
+ val secrets = secretsFeatureOf(client)!!.sekreto()!!
560
+ assertEquals("dbpass01", secrets.get("db.password"))
561
+ assertEquals("the password is [redacted], keep it safe",
562
+ secrets.redact("the password is dbpass01, keep it safe"))
563
+ }
564
+
565
+ // THE PROVIDER VOCABULARY IS NON-EMPTY.
566
+ //
567
+ // The model's choice of plugin groups IS the SDK's provider vocabulary:
568
+ // Config emits the selected definitions and the feature hands them to
569
+ // Sekreto, which refuses at CONSTRUCTION any kind it was not given. A
570
+ // feature that dropped them on the floor would carry every selected plugin
571
+ // FILE and refuse every one of their kinds at runtime, while every test
572
+ // using only built-in kinds stayed green.
573
+ //
574
+ // Conditional on this project selecting a group at all.
575
+ @Test
576
+ fun aSelectedPluginKindIsInTheSdkVocabulary() {
577
+ val plugins = Config.featurePlugins("secrets")
578
+ if (plugins.isEmpty()) {
579
+ return
580
+ }
581
+
582
+ val w = Wire()
583
+ val client = secretsClient(w, map(
584
+ "feature" to chainOpts(map(
585
+ "kind" to "memory", "values" to map("APIKEY" to "VOCAB01"))),
586
+ ))
587
+
588
+ val catalog = secretsFeatureOf(client)!!.sekreto()!!.catalog
589
+ for (d in plugins) {
590
+ val kind = (d as? Map<String, Any?>)?.get("name") as? String
591
+ assertNotNull(kind, "a selected plugin definition has no kind: $d")
592
+ assertTrue(catalog.has(kind!!),
593
+ "the model selected plugin kind '$kind' but the feature's Sekreto " +
594
+ "does not know it - the definitions never reached the chain")
595
+ }
596
+
597
+ driveEntityOp(client, w)
598
+ credentialIs(w.api()[0].auth, "VOCAB01")
599
+ }
600
+
601
+ // ===================================================================
602
+ // FAIL CLOSED. sekreto's miss-vs-error invariant: a MISS falls through, an
603
+ // ERROR does not. A broken vault must never degrade into an
604
+ // unauthenticated request.
605
+
606
+ @Test
607
+ fun aProviderErrorFailsTheEntityOpAndNothingReachesTheWire() {
608
+ // THE RULE, asserted first so a regression reports the leak itself.
609
+ val w = Wire()
610
+ val client = secretsClient(w, map("feature" to chainOpts(BROKEN)))
611
+
612
+ // Stop on EITHER outcome - the refusal, or a request going out. Stopping
613
+ // on the first op driven would report an op the API does not define
614
+ // (which fails BEFORE the transport) as the provider's refusal.
615
+ val err = driveEntityOpUntil(client, "refused the operation or sent one") {
616
+ last -> 0 < w.api().size || messageOf(last).contains("vault unreachable")
617
+ }
618
+
619
+ assertEquals(0, w.api().size,
620
+ "a request must not go out unauthenticated because a provider broke," +
621
+ " but one reached the transport: " + w.wire())
622
+ assertNotNull(err, "the operation must fail rather than proceed")
623
+ assertTrue(messageOf(err).contains("vault unreachable"),
624
+ "the failure must carry the PROVIDER'S own message, got: " + messageOf(err))
625
+
626
+ // CONTROL, which makes that zero mean REFUSED rather than UNWIRED: the
627
+ // same construction with a WORKING provider must reach the same
628
+ // transport, once, carrying the credential.
629
+ val control = Wire()
630
+ val ok = secretsClient(control, map("feature" to chainOpts(working("RAWKEY01"))))
631
+ driveEntityOp(ok, control)
632
+
633
+ assertEquals(1, control.api().size,
634
+ "the control operation did not reach system.fetch exactly once, so " +
635
+ "this test cannot observe a request going out at all: " + control.wire())
636
+ credentialIs(control.api()[0].auth, "RAWKEY01")
637
+ }
638
+
639
+ // THE RAW PATHS, which run NO feature hooks at all. If resolution lived in
640
+ // the PreSpec hook these would send an unauthenticated request and never
641
+ // notice; they are covered because the TRANSPORT is where resolution
642
+ // happens.
643
+ //
644
+ // `allow.op` is named explicitly: a project that narrows the default set
645
+ // would otherwise turn these into a false RED (the control leg refused
646
+ // before it reached the transport).
647
+
648
+ @Test
649
+ fun directCarriesTheChainCredentialAndFailsClosed() {
650
+ val w = Wire()
651
+ val client = secretsClient(w, map(
652
+ "allow" to map("op" to "direct,graphql"),
653
+ "feature" to chainOpts(working("DIRECTKEY01")),
654
+ ))
655
+
656
+ val res = client.direct(map("path" to "/direct-probe"))
657
+ assertEquals(true, res["ok"], "direct refused: " + res["err"])
658
+ assertEquals(1, w.api().size, "expected one direct call on the wire: " + w.wire())
659
+ credentialIs(w.api()[0].auth, "DIRECTKEY01")
660
+
661
+ // And fail-closed holds for raw access too: a broken chain refuses the
662
+ // direct call before anything reaches the wire, IN BAND.
663
+ val broken = Wire()
664
+ val bclient = secretsClient(broken, map(
665
+ "allow" to map("op" to "direct,graphql"),
666
+ "feature" to chainOpts(BROKEN),
667
+ ))
668
+
669
+ val bres = bclient.direct(map("path" to "/direct-probe"))
670
+ assertEquals(0, broken.api().size,
671
+ "a broken chain must not yield a raw request: " + broken.wire())
672
+ assertEquals(false, bres["ok"], "a broken chain must refuse the raw path")
673
+ assertTrue(messageOf(bres["err"] as? Throwable).contains("vault unreachable"),
674
+ "direct must report the PROVIDER'S own refusal, got: " +
675
+ messageOf(bres["err"] as? Throwable))
676
+ }
677
+
678
+ @Test
679
+ fun graphqlCarriesTheChainCredentialAndFailsClosed() {
680
+ val w = Wire()
681
+ val client = secretsClient(w, map(
682
+ "allow" to map("op" to "direct,graphql"),
683
+ "feature" to chainOpts(working("GQLKEY01")),
684
+ ))
685
+
686
+ val res = client.graphql("{ thing }", null, null)
687
+ assertEquals(true, res["ok"], "graphql refused: " + res["err"])
688
+ assertEquals(1, w.api().size, "expected one graphql call on the wire: " + w.wire())
689
+ credentialIs(w.api()[0].auth, "GQLKEY01")
690
+
691
+ val broken = Wire()
692
+ val bclient = secretsClient(broken, map(
693
+ "allow" to map("op" to "direct,graphql"),
694
+ "feature" to chainOpts(BROKEN),
695
+ ))
696
+
697
+ val bres = bclient.graphql("{ thing }", null, null)
698
+ assertEquals(0, broken.api().size,
699
+ "a broken chain must not yield a graphql request: " + broken.wire())
700
+ assertEquals(false, bres["ok"], "a broken chain must refuse graphql")
701
+ assertTrue(messageOf(bres["err"] as? Throwable).contains("vault unreachable"),
702
+ "graphql must report the PROVIDER'S own refusal, got: " +
703
+ messageOf(bres["err"] as? Throwable))
704
+ }
705
+
706
+ // ===================================================================
707
+ // FAIL CLOSED ON A CONSTRUCTION FAILURE. The chain a project configures
708
+ // can be wrong before a single lookup happens, and init() cannot fail the
709
+ // client construction the way ts's throwing init does - so it HOLDS the
710
+ // error (`initerr`) and the transport gate refuses to send.
711
+ //
712
+ // The entry pinned here is one the constructor refuses but init used to
713
+ // never SHOW it: a bare kind name where a spec belongs. init's `when`
714
+ // over the providers list had arms for a Provider, a ProviderSpec and a
715
+ // Map, and no `else` - so the entry was silently DROPPED, the chain got
716
+ // SHORTER rather than broken, and every request went out unauthenticated
717
+ // while the gate had nothing to refuse. That is fail-open by omission,
718
+ // and it survived every other case in this file because each of them
719
+ // configures the chain correctly.
720
+ //
721
+ // Three cases for the three wire paths - the entity pipeline, direct()
722
+ // and graphql() - each with its own CONTROL leg through the SAME live
723
+ // transport, so a zero means REFUSED and not UNWIRED. The refusal is
724
+ // matched on sekreto's OWN message, so an unrelated failure cannot
725
+ // stand in for it.
726
+
727
+ // A kind NAME where a provider or spec belongs - the natural slip for a
728
+ // reader of the ts docs. sekreto's constructor refuses exactly this.
729
+ private val MALFORMED: Any? = "hashicorp"
730
+ private val NOTAPROVIDER = "not a provider or a provider spec"
731
+
732
+ private fun saysNotAProvider(err: Any?): Boolean =
733
+ (if (err is Throwable) messageOf(err) else err?.toString() ?: "")
734
+ .contains(NOTAPROVIDER)
735
+
736
+ @Test
737
+ fun aMalformedProviderEntryFailsTheEntityOpAndNothingReachesTheWire() {
738
+ // CONTROL FIRST, so the zero below is known to be observable at all.
739
+ val control = Wire()
740
+ val ok = secretsClient(control, map("feature" to chainOpts(working("INITKEY01"))))
741
+ driveEntityOp(ok, control)
742
+ assertEquals(1, control.api().size,
743
+ "the control operation did not reach system.fetch exactly once, so " +
744
+ "this test cannot observe a request going out at all: " + control.wire())
745
+ credentialIs(control.api()[0].auth, "INITKEY01")
746
+
747
+ // THE RULE.
748
+ val w = Wire()
749
+ val client = secretsClient(w, map("feature" to chainOpts(MALFORMED)))
750
+
751
+ // The feature must still be INSTALLED: a construction failure that
752
+ // silently uninstalled it would be the same fail-open by another route,
753
+ // with nothing downstream gating anything.
754
+ assertNotNull(secretsFeatureOf(client),
755
+ "the secrets feature must stay installed on a construction failure")
756
+
757
+ val err = driveEntityOpUntil(client, "refused the operation or sent one") {
758
+ last -> 0 < w.api().size || saysNotAProvider(last)
759
+ }
760
+
761
+ assertEquals(0, w.api().size,
762
+ "a malformed providers entry was DROPPED and the shortened chain sent " +
763
+ "an UNAUTHENTICATED request: " + w.wire())
764
+ assertNotNull(err, "the entity op must fail when the chain cannot be built")
765
+ assertTrue(saysNotAProvider(err),
766
+ "the refusal must carry sekreto's own message ($NOTAPROVIDER), got: " +
767
+ messageOf(err))
768
+ }
769
+
770
+ @Test
771
+ fun aMalformedProviderEntryFailsDirectRatherThanSending() {
772
+ // CONTROL FIRST.
773
+ val control = Wire()
774
+ val res = secretsClient(control, map(
775
+ "allow" to map("op" to "direct,graphql"),
776
+ "feature" to chainOpts(working("INITKEY01")),
777
+ )).direct(map("path" to "/thing"))
778
+ assertEquals(true, res["ok"], "the control request failed: " + res["err"])
779
+ assertEquals(1, control.api().size,
780
+ "the control request did not reach system.fetch exactly once, so " +
781
+ "this test cannot observe a request going out at all: " + control.wire())
782
+ credentialIs(control.api()[0].auth, "INITKEY01")
783
+
784
+ // THE RULE. direct() runs no feature hook at all, so the ONLY thing
785
+ // that can refuse it is the transport gate.
786
+ val w = Wire()
787
+ val out = secretsClient(w, map(
788
+ "allow" to map("op" to "direct,graphql"),
789
+ "feature" to chainOpts(MALFORMED),
790
+ )).direct(map("path" to "/thing"))
791
+
792
+ assertEquals(0, w.api().size,
793
+ "a malformed providers entry was DROPPED and the shortened chain sent " +
794
+ "an UNAUTHENTICATED direct request: " + w.wire())
795
+ assertEquals(false, out["ok"],
796
+ "a chain that could not be built must refuse the raw path fail-closed")
797
+ assertTrue(saysNotAProvider(out["err"]),
798
+ "the refusal must carry sekreto's own message ($NOTAPROVIDER), got: " +
799
+ messageOf(out["err"] as? Throwable))
800
+ }
801
+
802
+ @Test
803
+ fun aMalformedProviderEntryFailsGraphqlRatherThanSending() {
804
+ // CONTROL FIRST.
805
+ val control = Wire()
806
+ val res = secretsClient(control, map(
807
+ "allow" to map("op" to "direct,graphql"),
808
+ "feature" to chainOpts(working("INITKEY01")),
809
+ )).graphql("{ thing }", null, null)
810
+ assertEquals(true, res["ok"], "the control request failed: " + res["err"])
811
+ assertEquals(1, control.api().size,
812
+ "the control request did not reach system.fetch exactly once, so " +
813
+ "this test cannot observe a request going out at all: " + control.wire())
814
+ credentialIs(control.api()[0].auth, "INITKEY01")
815
+
816
+ // THE RULE.
817
+ val w = Wire()
818
+ val out = secretsClient(w, map(
819
+ "allow" to map("op" to "direct,graphql"),
820
+ "feature" to chainOpts(MALFORMED),
821
+ )).graphql("{ thing }", null, null)
822
+
823
+ assertEquals(0, w.api().size,
824
+ "a malformed providers entry was DROPPED and the shortened chain sent " +
825
+ "an UNAUTHENTICATED graphql request: " + w.wire())
826
+ assertEquals(false, out["ok"],
827
+ "a chain that could not be built must refuse graphql fail-closed")
828
+ assertTrue(saysNotAProvider(out["err"]),
829
+ "the refusal must carry sekreto's own message ($NOTAPROVIDER), got: " +
830
+ messageOf(out["err"] as? Throwable))
831
+ }
832
+
833
+ @Test
834
+ fun aProviderRecoversAfterATransientFailure() {
835
+ var calls = 0
836
+ val w = Wire()
837
+ val client = secretsClient(w, map(
838
+ "feature" to chainOpts(TestProvider({ _ ->
839
+ val n = synchronized(this) { ++calls }
840
+ if (1 == n) {
841
+ throw RuntimeException("vault unreachable")
842
+ }
843
+ "RECOVERED01"
844
+ }, "flaky:test")),
845
+ ))
846
+
847
+ // A failed resolution is never cached, so the second op asks the chain
848
+ // again and succeeds. Holding the failure would mean a transient vault
849
+ // outage poisoned the client permanently.
850
+ driveEntityOpUntil(client, "consulted the chain") { 0 < calls }
851
+ assertEquals(0, w.api().size, "the first op must not reach the wire")
852
+
853
+ driveEntityOp(client, w)
854
+ credentialIs(w.api()[0].auth, "RECOVERED01")
855
+ }
856
+
857
+ @Test
858
+ fun uncachedMissRetractsTheCredential() {
859
+ var have = true
860
+ val w = Wire()
861
+ val client = secretsClient(w, map(
862
+ "feature" to chainOpts(
863
+ TestProvider({ _ -> if (synchronized(this) { have }) "REVOCABLE01" else null },
864
+ "revocable:test"),
865
+ map("cache" to false)),
866
+ ))
867
+
868
+ driveEntityOp(client, w)
869
+ credentialIs(w.api()[0].auth, "REVOCABLE01")
870
+
871
+ synchronized(this) { have = false }
872
+
873
+ driveEntityOp(client, w)
874
+ val last = w.api().last()
875
+ assertFalse(last.hasAuth && "" != last.auth,
876
+ "after the chain reports a miss the retracted credential must not go " +
877
+ "out; the wire saw \"" + last.auth + "\"")
878
+ }
879
+
880
+ // A provider failure closes the transport gate; a later retry that
881
+ // SUCCEEDS reopens it and every waiting operation goes out with the FRESH
882
+ // credential - never the stale pre-failure header, and never nothing.
883
+ @Test
884
+ fun gateRecoveryLetsWaitingOperationsOutWithTheFreshCredential() {
885
+ var mode = "fail"
886
+ val release = CountDownLatch(1)
887
+ val w = Wire()
888
+
889
+ val client = secretsClient(w, map(
890
+ "feature" to chainOpts(
891
+ TestProvider({ _ ->
892
+ val m = synchronized(this) { mode }
893
+ if ("fail" == m) {
894
+ throw RuntimeException("vault unreachable")
895
+ }
896
+ if ("slow" == m) {
897
+ release.await(5, TimeUnit.SECONDS)
898
+ }
899
+ "FRESH01"
900
+ }, "gate:test"),
901
+ map("cache" to false)),
902
+ ))
903
+
904
+ // 1. The failure closes the gate: nothing reaches the wire. Stop on
905
+ // EITHER outcome, so an op the API does not define (which fails before
906
+ // the transport) is not mistaken for the gate's refusal.
907
+ driveEntityOpUntil(client, "was refused by the gate or sent one") {
908
+ last -> 0 < w.api().size || messageOf(last).contains("vault unreachable")
909
+ }
910
+ assertEquals(0, w.api().size,
911
+ "a failed resolution must keep the wire silent, saw: " + w.wire())
912
+
913
+ // 2. Recovery under concurrency: two operations race the slow retry;
914
+ // both must come out carrying the fresh credential.
915
+ synchronized(this) { mode = "slow" }
916
+
917
+ // Each thread drives until SOMETHING reached the wire - its own op or
918
+ // the other thread's - which is the state the assertion reads.
919
+ val threads = (1..2).map {
920
+ Thread { driveEntityOpUntil(client, "recovered") { 0 < w.api().size } }
921
+ }
922
+ threads.forEach { it.start() }
923
+ Thread.sleep(50)
924
+ release.countDown()
925
+ threads.forEach { it.join(10000) }
926
+
927
+ assertTrue(0 < w.api().size, "recovery must let the operations out")
928
+ for (call in w.api()) {
929
+ credentialIs(call.auth, "FRESH01")
930
+ }
931
+ }
932
+
933
+ // ===================================================================
934
+ // ACCESS-TOKEN EXCHANGE.
935
+ //
936
+ // What the chain resolves is a REFRESH token, which is POSTed to a token
937
+ // endpoint for a short-lived ACCESS token; the access token is what the
938
+ // Authorization header carries; and when the API answers 401 the client
939
+ // buys another and tries the same request again, once.
940
+
941
+ private fun exchangeClient(
942
+ w: Wire,
943
+ refresh: String,
944
+ exchange: MutableMap<String, Any?>?,
945
+ extra: MutableMap<String, Any?>?,
946
+ ): ProjectNameSDK {
947
+ val x = map("active" to true)
948
+ if (exchange != null) {
949
+ x.putAll(exchange)
950
+ }
951
+
952
+ val fopts = map(
953
+ "active" to true,
954
+ "name" to "refresh_token",
955
+ "providers" to mutableListOf<Any?>(
956
+ if ("" == refresh) TestProvider({ null }, "norefresh:test")
957
+ else TestProvider(
958
+ { name -> if ("refresh_token" == name) refresh else null }, "refresh:test")),
959
+ "exchange" to x,
960
+ )
961
+
962
+ val opts = map("allow" to map("op" to "direct,graphql"), "feature" to map("secrets" to fopts))
963
+ if (extra != null) {
964
+ opts.putAll(extra)
965
+ }
966
+ return secretsClient(w, opts)
967
+ }
968
+
969
+ private fun bodyField(body: String, field: String): String? {
970
+ val parsed = KOTLINPACKAGE.utility.Json.parse(body)
971
+ return (parsed as? Map<String, Any?>)?.get(field) as? String
972
+ }
973
+
974
+ @Test
975
+ fun theRefreshTokenBuysAnAccessTokenAndTheRequestCarriesIt() {
976
+ val w = Wire()
977
+ val client = exchangeClient(w, "REFRESH01", null, null)
978
+
979
+ client.direct(map("path" to "/thing"))
980
+
981
+ assertEquals(1, w.token().size, "expected exactly one token purchase")
982
+ assertEquals("REFRESH01", bodyField(w.token()[0].body, "refresh_token"),
983
+ "the refresh token is sent in the request field")
984
+ assertEquals(1, w.api().size)
985
+ credentialIs(w.api()[0].auth, "ACCESS01")
986
+ }
987
+
988
+ @Test
989
+ fun theRefreshTokenIsMarshalledNotConcatenated() {
990
+ // A refresh token carrying a quote, backslash or newline must arrive as
991
+ // that literal value, not as malformed JSON.
992
+ val tricky = "re\"fresh\\to\nken"
993
+ val w = Wire()
994
+ val client = exchangeClient(w, "", map("refresh" to tricky), null)
995
+
996
+ client.direct(map("path" to "/thing"))
997
+
998
+ assertEquals(1, w.token().size)
999
+ assertEquals(tricky, bodyField(w.token()[0].body, "refresh_token"),
1000
+ "the refresh token must arrive as its literal value: " + w.token()[0].body)
1001
+ }
1002
+
1003
+ @Test
1004
+ fun anExplicitExchangeRefreshWinsOverTheChain() {
1005
+ val w = Wire()
1006
+ val client = exchangeClient(w, "FROMCHAIN", map("refresh" to "EXPLICIT01"), null)
1007
+
1008
+ client.direct(map("path" to "/thing"))
1009
+ assertEquals("EXPLICIT01", bodyField(w.token()[0].body, "refresh_token"))
1010
+ }
1011
+
1012
+ @Test
1013
+ fun onePurchaseServesManyRequests() {
1014
+ val w = Wire()
1015
+ val client = exchangeClient(w, "REFRESH01", null, null)
1016
+
1017
+ client.direct(map("path" to "/one"))
1018
+ client.direct(map("path" to "/two"))
1019
+ client.direct(map("path" to "/three"))
1020
+
1021
+ assertEquals(1, w.token().size, "a token still working must not be re-bought")
1022
+ assertEquals(3, w.api().size)
1023
+ }
1024
+
1025
+ @Test
1026
+ fun concurrentFirstRequestsShareOnePurchase() {
1027
+ val w = Wire()
1028
+ val client = exchangeClient(w, "REFRESH01", null, null)
1029
+
1030
+ val threads = listOf("/a", "/b", "/c", "/d").map { p ->
1031
+ Thread { client.direct(map("path" to p)) }
1032
+ }
1033
+ threads.forEach { it.start() }
1034
+ threads.forEach { it.join(10000) }
1035
+
1036
+ assertEquals(1, w.token().size,
1037
+ "four operations at once must not open four token requests")
1038
+ assertEquals(4, w.api().size)
1039
+ }
1040
+
1041
+ @Test
1042
+ fun anExpiryBuysAnotherTokenAndRetriesTheSameRequest() {
1043
+ val w = Wire()
1044
+ w.apistatus = listOf(401, 200)
1045
+ val client = exchangeClient(w, "REFRESH01", null, null)
1046
+
1047
+ val res = client.direct(map("path" to "/thing"))
1048
+
1049
+ assertEquals(2, w.token().size, "expected a second token purchase")
1050
+ assertEquals(2, w.api().size, "expected the request to be retried")
1051
+ credentialIs(w.api()[0].auth, "ACCESS01")
1052
+ // The retry must carry the NEW token, not the spent one.
1053
+ credentialIs(w.api()[1].auth, "ACCESS02")
1054
+ assertEquals(true, res["ok"], "the caller sees the successful retry")
1055
+ }
1056
+
1057
+ @Test
1058
+ fun theRetryHappensOnceNotInALoop() {
1059
+ val w = Wire()
1060
+ w.apistatus = listOf(401)
1061
+ val client = exchangeClient(w, "REFRESH01", null, null)
1062
+
1063
+ client.direct(map("path" to "/thing"))
1064
+
1065
+ assertEquals(2, w.api().size, "exactly one retry")
1066
+ assertEquals(2, w.token().size)
1067
+ }
1068
+
1069
+ @Test
1070
+ fun aStatusOutsideExchangeStatusesIsNotAnExpiry() {
1071
+ val w = Wire()
1072
+ w.apistatus = listOf(403)
1073
+ val client = exchangeClient(w, "REFRESH01", null, null)
1074
+
1075
+ client.direct(map("path" to "/thing"))
1076
+
1077
+ assertEquals(1, w.api().size, "403 is not in the default statuses")
1078
+ assertEquals(1, w.token().size)
1079
+ }
1080
+
1081
+ @Test
1082
+ fun exchangeStatusesIsConfigurable() {
1083
+ val w = Wire()
1084
+ w.apistatus = listOf(403, 200)
1085
+ val client = exchangeClient(w, "REFRESH01",
1086
+ map("statuses" to mutableListOf<Any?>(403)), null)
1087
+
1088
+ client.direct(map("path" to "/thing"))
1089
+ assertEquals(2, w.api().size, "403 was declared an expiry")
1090
+ }
1091
+
1092
+ @Test
1093
+ fun theRequestAndResponseFieldNamesAndPathAreConfigurable() {
1094
+ val w = Wire()
1095
+ w.tokenpath = "oauth/grant"
1096
+ w.respfield = "token"
1097
+ val client = exchangeClient(w, "REFRESH01", map(
1098
+ "path" to "oauth/grant",
1099
+ "request" to "grant",
1100
+ "response" to "token",
1101
+ ), null)
1102
+
1103
+ client.direct(map("path" to "/thing"))
1104
+
1105
+ assertEquals(1, w.token().size)
1106
+ assertTrue(w.token()[0].url.endsWith("/oauth/grant"),
1107
+ "the token endpoint is relative to base: " + w.token()[0].url)
1108
+ assertEquals("REFRESH01", bodyField(w.token()[0].body, "grant"))
1109
+ credentialIs(w.api()[0].auth, "ACCESS01")
1110
+ }
1111
+
1112
+ @Test
1113
+ fun anExplicitApikeyIsSpentBeforeAnythingIsBought() {
1114
+ val w = Wire()
1115
+ val client = exchangeClient(w, "REFRESH01", null, map("apikey" to "HELDTOKEN01"))
1116
+
1117
+ client.direct(map("path" to "/thing"))
1118
+
1119
+ assertEquals(0, w.token().size, "nothing needed buying")
1120
+ credentialIs(w.api()[0].auth, "HELDTOKEN01")
1121
+ }
1122
+
1123
+ @Test
1124
+ fun aHeldApikeyThatHasExpiredFallsThroughToTheExchange() {
1125
+ val w = Wire()
1126
+ w.apistatus = listOf(401, 200)
1127
+ val client = exchangeClient(w, "REFRESH01", null, map("apikey" to "STALETOKEN01"))
1128
+
1129
+ client.direct(map("path" to "/thing"))
1130
+
1131
+ credentialIs(w.api()[0].auth, "STALETOKEN01")
1132
+ credentialIs(w.api()[1].auth, "ACCESS01")
1133
+ }
1134
+
1135
+ @Test
1136
+ fun noRefreshTokenAnywhereIsAnErrorNotAnUnauthenticatedCall() {
1137
+ val w = Wire()
1138
+ val client = exchangeClient(w, "", null, null)
1139
+
1140
+ val res = client.direct(map("path" to "/thing"))
1141
+
1142
+ assertEquals(false, res["ok"], "expected a failure, got: $res")
1143
+ assertEquals(0, w.api().size,
1144
+ "a request must not go out unauthenticated because the chain was " +
1145
+ "empty: " + w.wire())
1146
+ assertTrue(messageOf(res["err"] as? Throwable).contains("no refresh token"),
1147
+ "expected the no-refresh-token refusal, got: " +
1148
+ messageOf(res["err"] as? Throwable))
1149
+ }
1150
+
1151
+ @Test
1152
+ fun aFailingTokenEndpointSurfacesTheApiRefusalNotASpin() {
1153
+ val w = Wire()
1154
+ w.apistatus = listOf(401)
1155
+ // The first purchase succeeds; the second (after the 401) does not.
1156
+ w.tokenok = 1
1157
+ val client = exchangeClient(w, "REFRESH01", null, null)
1158
+
1159
+ val res = client.direct(map("path" to "/thing"))
1160
+
1161
+ assertNotNull(res, "the caller got an answer rather than a hang")
1162
+ assertEquals(1, w.api().size, "no retry after a failed purchase")
1163
+ assertEquals(false, res["ok"], "the API's own 401 is what the caller sees")
1164
+ }
1165
+
1166
+ @Test
1167
+ fun authNullSuppressesTheCredentialRefusalOrNot() {
1168
+ val w = Wire()
1169
+ w.apistatus = listOf(401)
1170
+ val client = exchangeClient(w, "REFRESH01", null, map("auth" to null))
1171
+
1172
+ client.direct(map("path" to "/thing"))
1173
+
1174
+ assertEquals(1, w.api().size, "a suppressed request must not be retried")
1175
+ assertFalse(w.api()[0].hasAuth,
1176
+ "no credential may be sent when auth is suppressed, got \"" +
1177
+ w.api()[0].auth + "\"")
1178
+
1179
+ // AND NO PURCHASE. resolve() runs before withrefresh's suppression
1180
+ // check, so the refresh token used to go to the token endpoint in a
1181
+ // request body even here. Stopping the retry does not unsend it, and
1182
+ // only the token endpoint can see this.
1183
+ assertEquals(0, w.token().size,
1184
+ "auth null suppressed the credential but the refresh token was still " +
1185
+ "POSTed to the exchange endpoint")
1186
+ }
1187
+
1188
+ @Test
1189
+ fun testModeBuysNothingAndNeedsNoTokenEndpoint() {
1190
+ val w = Wire()
1191
+
1192
+ val client = withSecrets { extend ->
1193
+ val opts = map(
1194
+ "base" to BASE,
1195
+ "allow" to map("op" to "direct,graphql"),
1196
+ "system" to map("fetch" to w.fetch),
1197
+ "feature" to map("secrets" to map(
1198
+ "active" to true,
1199
+ "name" to "refresh_token",
1200
+ "providers" to mutableListOf<Any?>(TestProvider(
1201
+ { name -> if ("refresh_token" == name) "REFRESH01" else null })),
1202
+ "exchange" to map("active" to true),
1203
+ )),
1204
+ )
1205
+ if (extend) {
1206
+ opts["extend"] = mutableListOf<Any?>(SecretsFeature())
1207
+ }
1208
+ ProjectNameSDK.testSDK(null, opts)
1209
+ }
1210
+
1211
+ client.direct(map("path" to "/thing"))
1212
+
1213
+ assertEquals(0, w.calls().size, "test mode must not do IO: " + w.wire())
1214
+ // A deterministic placeholder, so offline suites need no configuration.
1215
+ assertEquals("test-access_token", secretsFeatureOf(client)!!.credential())
1216
+ }
1217
+ }