@voxgig/sdkgen 4.20.0 → 4.21.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 (966) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/helpers/applicability.js +11 -6
  3. package/dist/helpers/applicability.js.map +1 -1
  4. package/dist/helpers/collectDeps.js +31 -6
  5. package/dist/helpers/collectDeps.js.map +1 -1
  6. package/dist/helpers/naming.js +2 -2
  7. package/dist/helpers/naming.js.map +1 -1
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/model/sdkgen.aon +49 -3
  10. package/package.json +1 -1
  11. package/project/.sdk/model/feature/secrets.aon +128 -0
  12. package/project/.sdk/model/feature/validate.aon +3 -2
  13. package/project/.sdk/model/target/c.aon +1 -1
  14. package/project/.sdk/model/target/clojure.aon +1 -1
  15. package/project/.sdk/model/target/cpp.aon +1 -1
  16. package/project/.sdk/model/target/csharp.aon +1 -1
  17. package/project/.sdk/model/target/elixir.aon +1 -1
  18. package/project/.sdk/model/target/go.aon +1 -1
  19. package/project/.sdk/model/target/java.aon +1 -1
  20. package/project/.sdk/model/target/kotlin.aon +1 -1
  21. package/project/.sdk/model/target/lua.aon +1 -1
  22. package/project/.sdk/model/target/ocaml.aon +1 -1
  23. package/project/.sdk/model/target/perl.aon +1 -1
  24. package/project/.sdk/model/target/php.aon +1 -1
  25. package/project/.sdk/model/target/py.aon +1 -1
  26. package/project/.sdk/model/target/rb.aon +1 -1
  27. package/project/.sdk/model/target/rust.aon +1 -1
  28. package/project/.sdk/model/target/scala.aon +1 -1
  29. package/project/.sdk/model/target/swift.aon +1 -1
  30. package/project/.sdk/model/target/zig.aon +1 -1
  31. package/project/.sdk/src/cmp/c/Main_c.ts +3 -0
  32. package/project/.sdk/src/cmp/c/Schema_c.ts +106 -0
  33. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +2 -0
  34. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +1 -0
  35. package/project/.sdk/src/cmp/clojure/Schema_clojure.ts +73 -0
  36. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +3 -0
  37. package/project/.sdk/src/cmp/cpp/Schema_cpp.ts +105 -0
  38. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +3 -0
  39. package/project/.sdk/src/cmp/csharp/Schema_csharp.ts +85 -0
  40. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +2 -0
  41. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +1 -0
  42. package/project/.sdk/src/cmp/elixir/Schema_elixir.ts +88 -0
  43. package/project/.sdk/src/cmp/go/Main_go.ts +2 -0
  44. package/project/.sdk/src/cmp/go/Schema_go.ts +93 -0
  45. package/project/.sdk/src/cmp/java/Main_java.ts +2 -0
  46. package/project/.sdk/src/cmp/java/Schema_java.ts +125 -0
  47. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +2 -0
  48. package/project/.sdk/src/cmp/kotlin/Schema_kotlin.ts +111 -0
  49. package/project/.sdk/src/cmp/lua/Main_lua.ts +46 -9
  50. package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -0
  51. package/project/.sdk/src/cmp/lua/ReadmeExplanation_lua.ts +1 -0
  52. package/project/.sdk/src/cmp/lua/Schema_lua.ts +72 -0
  53. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +24 -1
  54. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +34 -13
  55. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +1 -0
  56. package/project/.sdk/src/cmp/ocaml/Schema_ocaml.ts +99 -0
  57. package/project/.sdk/src/cmp/perl/Main_perl.ts +2 -0
  58. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +1 -0
  59. package/project/.sdk/src/cmp/perl/Schema_perl.ts +107 -0
  60. package/project/.sdk/src/cmp/php/Main_php.ts +2 -0
  61. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  62. package/project/.sdk/src/cmp/php/ReadmeExplanation_php.ts +1 -0
  63. package/project/.sdk/src/cmp/php/Schema_php.ts +129 -0
  64. package/project/.sdk/src/cmp/py/Main_py.ts +2 -0
  65. package/project/.sdk/src/cmp/py/ReadmeExplanation_py.ts +1 -0
  66. package/project/.sdk/src/cmp/py/Schema_py.ts +72 -0
  67. package/project/.sdk/src/cmp/rb/Main_rb.ts +2 -0
  68. package/project/.sdk/src/cmp/rb/ReadmeExplanation_rb.ts +1 -0
  69. package/project/.sdk/src/cmp/rb/Schema_rb.ts +70 -0
  70. package/project/.sdk/src/cmp/rust/Main_rust.ts +3 -0
  71. package/project/.sdk/src/cmp/rust/Schema_rust.ts +107 -0
  72. package/project/.sdk/src/cmp/scala/Main_scala.ts +3 -0
  73. package/project/.sdk/src/cmp/scala/Schema_scala.ts +108 -0
  74. package/project/.sdk/src/cmp/swift/Main_swift.ts +3 -0
  75. package/project/.sdk/src/cmp/swift/Schema_swift.ts +92 -0
  76. package/project/.sdk/src/cmp/zig/Main_zig.ts +3 -0
  77. package/project/.sdk/src/cmp/zig/Schema_zig.ts +114 -0
  78. package/project/.sdk/tm/c/core/context.c +3 -0
  79. package/project/.sdk/tm/c/core/sdk.h +14 -0
  80. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +2 -2
  81. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +2 -2
  82. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +2 -2
  83. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +2 -2
  84. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +2 -2
  85. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +2 -2
  86. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +2 -2
  87. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +2 -2
  88. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +2 -2
  89. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +2 -2
  90. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +3 -3
  91. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +2 -2
  92. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +2 -2
  93. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +2 -2
  94. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +25 -2
  95. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +3 -2
  96. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +2 -2
  97. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +2 -2
  98. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +2 -2
  99. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +2 -2
  100. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +2 -2
  101. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +2 -2
  102. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +2 -2
  103. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +2 -2
  104. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +2 -2
  105. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +2 -2
  106. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +2 -2
  107. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +2 -2
  108. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +2 -2
  109. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +2 -2
  110. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +2 -2
  111. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +2 -2
  112. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +2 -2
  113. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +2 -2
  114. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +2 -2
  115. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +2 -2
  116. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +2 -2
  117. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +2 -2
  118. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +2 -2
  119. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +2 -2
  120. package/project/.sdk/tm/c/feature/secrets/plugins/minivault.c +2072 -0
  121. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +2 -2
  122. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +2 -2
  123. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +2 -2
  124. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +151 -10
  125. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +16 -10
  126. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +2 -2
  127. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +12 -8
  128. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +2 -2
  129. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +17 -2
  130. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +5 -5
  131. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +37 -9
  132. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +2 -2
  133. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +17 -2
  134. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +16 -2
  135. package/project/.sdk/tm/c/feature/validate.c +364 -0
  136. package/project/.sdk/tm/c/feature/validate.h +29 -0
  137. package/project/.sdk/tm/c/src/feature/validate/.gitkeep +0 -0
  138. package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
  139. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
  140. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
  141. package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
  142. package/project/.sdk/tm/c/utility/make_options.c +12 -24
  143. package/project/.sdk/tm/c/utility/make_spec.c +8 -0
  144. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +2 -2
  145. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +2 -2
  146. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +2 -2
  147. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +2 -2
  148. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +2 -2
  149. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +3 -3
  150. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +2 -2
  151. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +17 -2
  152. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +2 -2
  153. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +2 -2
  154. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +2 -2
  155. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +2 -2
  156. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +2 -2
  157. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +2 -2
  158. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +2 -2
  159. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +2 -2
  160. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +2 -2
  161. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +2 -2
  162. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +2 -2
  163. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +2 -2
  164. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +2 -2
  165. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +2 -2
  166. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +2 -2
  167. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +2 -2
  168. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +2 -2
  169. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +2 -2
  170. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +2 -2
  171. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +2 -2
  172. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/minivault.clj +837 -0
  173. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +2 -2
  174. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +2 -2
  175. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +2 -2
  176. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +2 -2
  177. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +2 -2
  178. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +6 -4
  179. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +2 -2
  180. package/project/.sdk/tm/clojure/src/feature/validate/.gitkeep +0 -0
  181. package/project/.sdk/tm/clojure/src/sdk/core.clj +31 -41
  182. package/project/.sdk/tm/clojure/src/sdk/features.clj +202 -0
  183. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
  184. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
  185. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
  186. package/project/.sdk/tm/cpp/core/types.hpp +4 -0
  187. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +2 -2
  188. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +2 -2
  189. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +2 -2
  190. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +2 -2
  191. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +2 -2
  192. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +2 -2
  193. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +2 -2
  194. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +2 -2
  195. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +2 -2
  196. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +2 -2
  197. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +3 -3
  198. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +2 -2
  199. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +2 -2
  200. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +2 -2
  201. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +21 -2
  202. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +3 -2
  203. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +2 -2
  204. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +2 -2
  205. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +2 -2
  206. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +2 -2
  207. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +2 -2
  208. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +2 -2
  209. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +2 -2
  210. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +2 -2
  211. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +2 -2
  212. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +2 -2
  213. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +2 -2
  214. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +2 -2
  215. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +2 -2
  216. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +2 -2
  217. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +2 -2
  218. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +2 -2
  219. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +2 -2
  220. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +2 -2
  221. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +2 -2
  222. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +2 -2
  223. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +2 -2
  224. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +9 -7
  225. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +2 -2
  226. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +2 -2
  227. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +2 -2
  228. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +2 -2
  229. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +2 -2
  230. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +2 -2
  231. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +2 -2
  232. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +2 -2
  233. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +2 -2
  234. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +2 -2
  235. package/project/.sdk/tm/cpp/feature/secrets/plugins/Minivault.cpp +1345 -0
  236. package/project/.sdk/tm/cpp/feature/secrets/plugins/Minivault.hpp +219 -0
  237. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +2 -2
  238. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +2 -2
  239. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +2 -2
  240. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +2 -2
  241. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +2 -2
  242. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +2 -2
  243. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +2 -2
  244. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +2 -2
  245. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +2 -2
  246. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +2 -2
  247. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +2 -2
  248. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +2 -2
  249. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +22 -2
  250. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +12 -2
  251. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +3 -3
  252. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +2 -2
  253. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +2 -2
  254. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +2 -2
  255. package/project/.sdk/tm/cpp/feature/validate.hpp +301 -0
  256. package/project/.sdk/tm/cpp/src/feature/validate/.gitkeep +0 -0
  257. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
  258. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
  259. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
  260. package/project/.sdk/tm/cpp/utility/pipeline.hpp +24 -41
  261. package/project/.sdk/tm/csharp/feature/ValidateFeature.cs +343 -0
  262. package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +2 -2
  263. package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +2 -2
  264. package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +2 -2
  265. package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +2 -2
  266. package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +2 -2
  267. package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +2 -2
  268. package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +2 -2
  269. package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +3 -3
  270. package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +2 -2
  271. package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +9 -2
  272. package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +21 -2
  273. package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +2 -2
  274. package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +2 -2
  275. package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +2 -2
  276. package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +2 -2
  277. package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +2 -2
  278. package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +2 -2
  279. package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +2 -2
  280. package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +2 -2
  281. package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +2 -2
  282. package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +2 -2
  283. package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +2 -2
  284. package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +2 -2
  285. package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +2 -2
  286. package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +2 -2
  287. package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +2 -2
  288. package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +2 -2
  289. package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +2 -2
  290. package/project/.sdk/tm/csharp/feature/secrets/plugins/MiniVault.cs +1572 -0
  291. package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +2 -2
  292. package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +2 -2
  293. package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +2 -2
  294. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +2 -2
  295. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +3 -2
  296. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +2 -2
  297. package/project/.sdk/tm/csharp/src/feature/validate/.gitkeep +0 -0
  298. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
  299. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
  300. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +12 -85
  301. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +24 -3
  302. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +2 -2
  303. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +2 -2
  304. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +2 -2
  305. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +2 -2
  306. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +2 -2
  307. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +2 -2
  308. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +7 -4
  309. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +2 -2
  310. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +13 -2
  311. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +15 -2
  312. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +2 -2
  313. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +2 -2
  314. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +2 -2
  315. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +2 -2
  316. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +2 -2
  317. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +2 -2
  318. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +2 -2
  319. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +2 -2
  320. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +2 -2
  321. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +2 -2
  322. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +2 -2
  323. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +2 -2
  324. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +2 -2
  325. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +2 -2
  326. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +2 -2
  327. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +3 -3
  328. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +3 -3
  329. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +2 -2
  330. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/minivault.ex +1033 -0
  331. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +2 -2
  332. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +2 -2
  333. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +2 -2
  334. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +2 -2
  335. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +2 -2
  336. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +17 -5
  337. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +2 -2
  338. package/project/.sdk/tm/elixir/lib/projectname/feature/validate.ex +320 -0
  339. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +10 -46
  340. package/project/.sdk/tm/elixir/src/feature/validate/.gitkeep +0 -0
  341. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
  342. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
  343. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
  344. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
  345. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
  346. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
  347. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
  348. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
  349. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +2 -2
  350. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
  351. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +25 -1
  352. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
  353. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
  354. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
  355. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
  356. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
  357. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
  358. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
  359. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +2 -2
  360. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
  361. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
  362. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
  363. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
  364. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
  365. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +2 -2
  366. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +2 -2
  367. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +2 -2
  368. package/project/.sdk/tm/go/feature/secrets/plugins/minivault/format.go +493 -0
  369. package/project/.sdk/tm/go/feature/secrets/plugins/minivault/minivault.go +1131 -0
  370. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
  371. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
  372. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
  373. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +14 -2
  374. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +2 -2
  375. package/project/.sdk/tm/go/feature/validate_feature.go +346 -0
  376. package/project/.sdk/tm/go/src/feature/validate/.gitkeep +0 -0
  377. package/project/.sdk/tm/go/test/omni/omni.go +2 -2
  378. package/project/.sdk/tm/go/test/omni/util.go +2 -2
  379. package/project/.sdk/tm/go/utility/make_options.go +13 -54
  380. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +24 -8
  381. package/project/.sdk/tm/java/feature/ValidateFeature.java +330 -0
  382. package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +2 -2
  383. package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +2 -2
  384. package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +2 -2
  385. package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +2 -2
  386. package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +2 -2
  387. package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +2 -2
  388. package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +2 -2
  389. package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +3 -3
  390. package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +2 -2
  391. package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +3 -3
  392. package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +21 -2
  393. package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +2 -2
  394. package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +2 -2
  395. package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +2 -2
  396. package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +2 -2
  397. package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +2 -2
  398. package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +2 -2
  399. package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +2 -2
  400. package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +2 -2
  401. package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +2 -2
  402. package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +2 -2
  403. package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +4 -3
  404. package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +2 -2
  405. package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +2 -2
  406. package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +2 -2
  407. package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +2 -2
  408. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +2 -2
  409. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +2 -2
  410. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +2 -2
  411. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +2 -2
  412. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +2 -2
  413. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +2 -2
  414. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +2 -2
  415. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +2 -2
  416. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Minivault.java +1448 -0
  417. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +2 -2
  418. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +2 -2
  419. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +2 -2
  420. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +2 -2
  421. package/project/.sdk/tm/java/src/feature/validate/.gitkeep +0 -0
  422. package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
  423. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
  424. package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
  425. package/project/.sdk/tm/java/utility/MakeOptions.java +13 -45
  426. package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
  427. package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +2 -2
  428. package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +2 -2
  429. package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +2 -2
  430. package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +2 -2
  431. package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +2 -2
  432. package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +3 -3
  433. package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +2 -2
  434. package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +17 -2
  435. package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +2 -2
  436. package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +2 -2
  437. package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +2 -2
  438. package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +2 -2
  439. package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +2 -2
  440. package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +2 -2
  441. package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +2 -2
  442. package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +2 -2
  443. package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +2 -2
  444. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +2 -2
  445. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +2 -2
  446. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +2 -2
  447. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +2 -2
  448. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +2 -2
  449. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +2 -2
  450. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +2 -2
  451. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +2 -2
  452. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/minivault.js +866 -0
  453. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +2 -2
  454. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +2 -2
  455. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +2 -2
  456. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +2 -2
  457. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +3 -2
  458. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +2 -2
  459. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +2 -2
  460. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +2 -2
  461. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +2 -2
  462. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +2 -2
  463. package/project/.sdk/tm/js/src/utility/StructUtility.js +1 -1
  464. package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
  465. package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
  466. package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
  467. package/project/.sdk/tm/kotlin/feature/ValidateFeature.kt +297 -0
  468. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +2 -2
  469. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +2 -2
  470. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +2 -2
  471. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +2 -2
  472. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +2 -2
  473. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +3 -3
  474. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +2 -2
  475. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +21 -2
  476. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +2 -2
  477. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +2 -2
  478. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +2 -2
  479. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +2 -2
  480. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +2 -2
  481. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +2 -2
  482. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +2 -2
  483. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +2 -2
  484. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +2 -2
  485. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +2 -2
  486. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +3 -2
  487. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +2 -2
  488. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +14 -2
  489. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +10 -2
  490. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +2 -2
  491. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +2 -2
  492. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +2 -2
  493. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +2 -2
  494. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +2 -2
  495. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +2 -2
  496. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +2 -2
  497. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +2 -2
  498. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Minivault.kt +1095 -0
  499. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +2 -2
  500. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +2 -2
  501. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +2 -2
  502. package/project/.sdk/tm/kotlin/src/feature/validate/.gitkeep +0 -0
  503. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
  504. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
  505. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
  506. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +13 -35
  507. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -0
  508. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
  509. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +2 -2
  510. package/project/.sdk/tm/lua/feature/secrets/native/sekretovault.c +240 -0
  511. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +2 -2
  512. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +2 -2
  513. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +2 -2
  514. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +2 -2
  515. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +2 -2
  516. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +12 -3
  517. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +2 -2
  518. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +18 -2
  519. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +2 -2
  520. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +2 -2
  521. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +2 -2
  522. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +2 -2
  523. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +2 -2
  524. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +2 -2
  525. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +2 -2
  526. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +2 -2
  527. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +2 -2
  528. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +2 -2
  529. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +2 -2
  530. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +2 -2
  531. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +2 -2
  532. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +2 -2
  533. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +2 -2
  534. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +2 -2
  535. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +2 -2
  536. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +2 -2
  537. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +2 -2
  538. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +2 -2
  539. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +2 -2
  540. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/minivault.lua +1227 -0
  541. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +2 -2
  542. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +2 -2
  543. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +2 -2
  544. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +2 -2
  545. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +2 -2
  546. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +3 -2
  547. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +2 -2
  548. package/project/.sdk/tm/lua/feature/validate_feature.lua +333 -0
  549. package/project/.sdk/tm/lua/src/feature/validate/.gitkeep +0 -0
  550. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
  551. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
  552. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
  553. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
  554. package/project/.sdk/tm/lua/utility/make_options.lua +74 -55
  555. package/project/.sdk/tm/lua/utility/make_spec.lua +8 -1
  556. package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
  557. package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
  558. package/project/.sdk/tm/ocaml/Makefile +12 -7
  559. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +2 -2
  560. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +2 -2
  561. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +2 -2
  562. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +2 -2
  563. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +2 -2
  564. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +2 -2
  565. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +5 -3
  566. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +2 -2
  567. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +18 -2
  568. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +2 -2
  569. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +2 -2
  570. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +2 -2
  571. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +2 -2
  572. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +2 -2
  573. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +2 -2
  574. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +2 -2
  575. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +2 -2
  576. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +2 -2
  577. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +2 -2
  578. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +2 -2
  579. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +2 -2
  580. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +2 -2
  581. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +2 -2
  582. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +2 -2
  583. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +2 -2
  584. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +2 -2
  585. package/project/.sdk/tm/ocaml/feature/secrets/plugins/minivault.ml +1086 -0
  586. package/project/.sdk/tm/ocaml/feature/secrets/plugins/minivault_stubs.c +222 -0
  587. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +2 -2
  588. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +2 -2
  589. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +2 -2
  590. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +2 -2
  591. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +2 -2
  592. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +2 -2
  593. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +2 -2
  594. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +33 -3
  595. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +2 -2
  596. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +4 -3
  597. package/project/.sdk/tm/ocaml/sdk_features.ml +174 -0
  598. package/project/.sdk/tm/ocaml/sdk_runtime.ml +12 -37
  599. package/project/.sdk/tm/ocaml/src/feature/validate/.gitkeep +0 -0
  600. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
  601. package/project/.sdk/tm/perl/core/helpers.pm +64 -16
  602. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +2 -2
  603. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +2 -2
  604. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +2 -2
  605. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +2 -2
  606. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +2 -2
  607. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +3 -3
  608. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +2 -2
  609. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +19 -2
  610. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +2 -2
  611. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +2 -2
  612. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +2 -2
  613. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +2 -2
  614. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +2 -2
  615. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +2 -2
  616. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +2 -2
  617. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +2 -2
  618. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +2 -2
  619. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +2 -2
  620. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +2 -2
  621. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +2 -2
  622. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +2 -2
  623. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +2 -2
  624. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +2 -2
  625. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Minivault.pm +1380 -0
  626. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +2 -2
  627. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +2 -2
  628. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +2 -2
  629. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +2 -2
  630. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +2 -2
  631. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +4 -3
  632. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +2 -2
  633. package/project/.sdk/tm/perl/feature/validate_feature.pm +319 -0
  634. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
  635. package/project/.sdk/tm/perl/src/feature/validate/.gitkeep +0 -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/perl/utility/make_options.pm +25 -43
  640. package/project/.sdk/tm/php/feature/ValidateFeature.php +361 -0
  641. package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +2 -2
  642. package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +2 -2
  643. package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +2 -2
  644. package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +2 -2
  645. package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +2 -2
  646. package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +3 -3
  647. package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +2 -2
  648. package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +26 -2
  649. package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +2 -2
  650. package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +2 -2
  651. package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +2 -2
  652. package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +2 -2
  653. package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +2 -2
  654. package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +2 -2
  655. package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +2 -2
  656. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +2 -2
  657. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +2 -2
  658. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +2 -2
  659. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +2 -2
  660. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +2 -2
  661. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +2 -2
  662. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +2 -2
  663. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +2 -2
  664. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/minivault.php +1250 -0
  665. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +2 -2
  666. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +2 -2
  667. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +2 -2
  668. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +2 -2
  669. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +2 -2
  670. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +5 -3
  671. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +2 -2
  672. package/project/.sdk/tm/php/src/feature/validate/.gitkeep +0 -0
  673. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
  674. package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
  675. package/project/.sdk/tm/php/utility/MakeOptions.php +15 -31
  676. package/project/.sdk/tm/php/utility/struct/Struct.php +56 -7
  677. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
  678. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
  679. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
  680. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
  681. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
  682. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
  683. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +2 -2
  684. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
  685. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +17 -1
  686. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
  687. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
  688. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
  689. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
  690. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
  691. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
  692. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +1 -1
  693. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
  694. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
  695. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
  696. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
  697. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
  698. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
  699. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
  700. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
  701. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
  702. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/minivault.py +1202 -0
  703. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
  704. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
  705. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
  706. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +2 -1
  707. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
  708. package/project/.sdk/tm/py/pkg/feature/validate_feature.py +273 -0
  709. package/project/.sdk/tm/py/pkg/utility/make_options.py +14 -53
  710. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
  711. package/project/.sdk/tm/py/src/feature/validate/.gitkeep +0 -0
  712. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
  713. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
  714. package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
  715. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +2 -2
  716. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +2 -2
  717. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +2 -2
  718. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +2 -2
  719. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +2 -2
  720. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +3 -3
  721. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +2 -2
  722. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +16 -2
  723. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +2 -2
  724. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +2 -2
  725. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +2 -2
  726. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +2 -2
  727. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +2 -2
  728. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +2 -2
  729. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +2 -2
  730. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +2 -2
  731. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +2 -2
  732. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +2 -2
  733. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +2 -2
  734. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +2 -2
  735. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +2 -2
  736. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +2 -2
  737. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +2 -2
  738. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +2 -2
  739. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/minivault.rb +979 -0
  740. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +2 -2
  741. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +2 -2
  742. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +2 -2
  743. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +6 -5
  744. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +2 -2
  745. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +2 -2
  746. package/project/.sdk/tm/rb/feature/validate_feature.rb +265 -0
  747. package/project/.sdk/tm/rb/src/feature/validate/.gitkeep +0 -0
  748. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
  749. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
  750. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
  751. package/project/.sdk/tm/rb/utility/make_options.rb +15 -32
  752. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +24 -1
  753. package/project/.sdk/tm/rust/core/mod.rs +3 -2
  754. package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +2 -2
  755. package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +2 -2
  756. package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +2 -2
  757. package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +2 -2
  758. package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +2 -2
  759. package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +3 -3
  760. package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +2 -2
  761. package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +24 -2
  762. package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +2 -2
  763. package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +2 -2
  764. package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +2 -2
  765. package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +2 -2
  766. package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +2 -2
  767. package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +2 -2
  768. package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +2 -2
  769. package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +2 -2
  770. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +2 -2
  771. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +2 -2
  772. package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +2 -2
  773. package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +2 -2
  774. package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +2 -2
  775. package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +2 -2
  776. package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +2 -2
  777. package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +2 -2
  778. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +2 -2
  779. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +2 -2
  780. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +2 -2
  781. package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +2 -2
  782. package/project/.sdk/tm/rust/feature/secrets/plugins/minivault/format.rs +425 -0
  783. package/project/.sdk/tm/rust/feature/secrets/plugins/minivault.rs +1076 -0
  784. package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +2 -2
  785. package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +2 -2
  786. package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +2 -2
  787. package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +2 -2
  788. package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +30 -4
  789. package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +2 -2
  790. package/project/.sdk/tm/rust/feature/validate.rs +387 -0
  791. package/project/.sdk/tm/rust/src/feature/validate/.gitkeep +0 -0
  792. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
  793. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
  794. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
  795. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
  796. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
  797. package/project/.sdk/tm/rust/utility/make_options.rs +12 -63
  798. package/project/.sdk/tm/rust/utility/make_spec.rs +10 -3
  799. package/project/.sdk/tm/scala/feature/ValidateFeature.scala +286 -0
  800. package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +2 -2
  801. package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +2 -2
  802. package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +2 -2
  803. package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +2 -2
  804. package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +3 -3
  805. package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +2 -2
  806. package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +19 -2
  807. package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +2 -2
  808. package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +2 -2
  809. package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +2 -2
  810. package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +2 -2
  811. package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +2 -2
  812. package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +2 -2
  813. package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +2 -2
  814. package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +2 -2
  815. package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +2 -2
  816. package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +2 -2
  817. package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +2 -2
  818. package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +3 -2
  819. package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +2 -2
  820. package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +13 -2
  821. package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +11 -2
  822. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +2 -2
  823. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +2 -2
  824. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +2 -2
  825. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +2 -2
  826. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +2 -2
  827. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +2 -2
  828. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +2 -2
  829. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +2 -2
  830. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Minivault.scala +979 -0
  831. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +2 -2
  832. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +2 -2
  833. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +2 -2
  834. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
  835. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
  836. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
  837. package/project/.sdk/tm/scala/src/feature/validate/.gitkeep +0 -0
  838. package/project/.sdk/tm/scala/utility/Make.scala +12 -41
  839. package/project/.sdk/tm/scala/utility/MakeSpec.scala +8 -1
  840. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ValidateFeature.swift +273 -0
  841. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +2 -2
  842. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +2 -2
  843. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +2 -2
  844. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +2 -2
  845. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +2 -2
  846. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +3 -3
  847. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +2 -2
  848. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +17 -2
  849. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +2 -2
  850. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +2 -2
  851. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +2 -2
  852. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +2 -2
  853. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +2 -2
  854. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +2 -2
  855. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +2 -2
  856. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +2 -2
  857. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +2 -2
  858. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +2 -2
  859. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +2 -2
  860. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +2 -2
  861. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +2 -2
  862. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +2 -2
  863. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +2 -2
  864. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +2 -2
  865. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +2 -2
  866. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +2 -2
  867. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +2 -2
  868. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +2 -2
  869. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +2 -2
  870. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +2 -2
  871. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +2 -2
  872. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +2 -2
  873. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +2 -2
  874. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +2 -2
  875. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +9 -3
  876. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +12 -87
  877. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +3 -3
  878. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
  879. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
  880. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
  881. package/project/.sdk/tm/swift/src/feature/validate/.gitkeep +0 -0
  882. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
  883. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
  884. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
  885. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
  886. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
  887. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +13 -2
  888. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
  889. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
  890. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +27 -1
  891. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
  892. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
  893. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
  894. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
  895. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
  896. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
  897. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
  898. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
  899. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
  900. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
  901. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
  902. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
  903. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
  904. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
  905. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
  906. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
  907. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
  908. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/minivault.ts +1034 -0
  909. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
  910. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
  911. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
  912. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
  913. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +2 -1
  914. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
  915. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
  916. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
  917. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
  918. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +11 -1
  919. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1 -1
  920. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
  921. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
  922. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
  923. package/project/.sdk/tm/zig/core/utility.zig +20 -44
  924. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +2 -2
  925. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +2 -2
  926. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +2 -2
  927. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +2 -2
  928. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +2 -2
  929. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +3 -3
  930. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +2 -2
  931. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +18 -2
  932. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +2 -2
  933. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +2 -2
  934. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +2 -2
  935. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +2 -2
  936. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +2 -2
  937. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +2 -2
  938. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +2 -2
  939. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +2 -2
  940. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +2 -2
  941. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +2 -2
  942. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +2 -2
  943. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +2 -2
  944. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +2 -2
  945. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +2 -2
  946. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +2 -2
  947. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +2 -2
  948. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +2 -2
  949. package/project/.sdk/tm/zig/feature/secrets/plugins/minivault.zig +1930 -0
  950. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +2 -2
  951. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +2 -2
  952. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +2 -2
  953. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +2 -2
  954. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +3 -2
  955. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +19 -2
  956. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +2 -2
  957. package/project/.sdk/tm/zig/feature/validate.zig +293 -0
  958. package/project/.sdk/tm/zig/src/feature/validate/.gitkeep +0 -0
  959. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +2 -2
  960. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +2 -2
  961. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +2 -2
  962. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +2 -2
  963. package/project/sdkgen-package.json +1 -1
  964. package/src/helpers/applicability.ts +11 -6
  965. package/src/helpers/collectDeps.ts +30 -5
  966. package/src/helpers/naming.ts +2 -2
@@ -0,0 +1,979 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260917-1242-0 (scala/plugins/Minivault.scala)
2
+ // Source: https://github.com/voxgig/sekreto @ 108c4a914bee7b6534c30d1c68c25cd1b9377696 [tag: sdk-20260917-1242-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // The mini vault, as a voxgig/plugin definition.
5
+ //
6
+ // A port of typescript/plugins/minivault.ts, which is canonical.
7
+ //
8
+ // PLUGIN CODE, not core: it needs crypto, which is the line the four
9
+ // built-ins stay behind. See docs/design/plugin-providers.md.
10
+ //
11
+ // THE KEY DECIDES WHAT THE VAULT HOLDS. A master key reads and writes
12
+ // every name and mints restricted keys. A restricted key reads the names
13
+ // it was granted and CANNOT DERIVE ANY OTHER - the restriction is the
14
+ // cryptography rather than a check this code performs. What that does and
15
+ // does not protect is set out in DOCS.md under "What the mini vault
16
+ // protects".
17
+ //
18
+ // `javax.crypto` carries all four primitives, so nothing here is
19
+ // hand-rolled (AGENTS.md rule 3).
20
+
21
+ package com.voxgig.sekreto.plugins
22
+
23
+ import java.io.IOException
24
+ import java.nio.ByteBuffer
25
+ import java.nio.charset.StandardCharsets
26
+ import java.nio.file.FileAlreadyExistsException
27
+ import java.nio.file.Files
28
+ import java.nio.file.NoSuchFileException
29
+ import java.nio.file.Path
30
+ import java.nio.file.Paths
31
+ import java.nio.file.StandardCopyOption
32
+ import java.nio.file.StandardOpenOption
33
+ import java.nio.file.attribute.PosixFilePermissions
34
+ import java.security.GeneralSecurityException
35
+ import java.security.SecureRandom
36
+ import java.util.Base64
37
+ import javax.crypto.Cipher
38
+ import javax.crypto.Mac
39
+ import javax.crypto.SecretKeyFactory
40
+ import javax.crypto.spec.GCMParameterSpec
41
+ import javax.crypto.spec.PBEKeySpec
42
+ import javax.crypto.spec.SecretKeySpec
43
+ import scala.collection.immutable.ListMap
44
+ import scala.util.control.NonFatal
45
+
46
+ import voxgig.plugin.Definition
47
+ import voxgig.plugin.Inst
48
+ import voxgig.plugin.PluginError
49
+ import voxgig.plugin.VOpaque
50
+ import voxgig.plugin.VStr
51
+ import com.voxgig.sekreto.*
52
+
53
+ // --- the format ------------------------------------------------------
54
+ //
55
+ // magic 4 'SKMV'
56
+ // version 1 FORMAT
57
+ // kdf 1 1 = PBKDF2-HMAC-SHA256
58
+ // cipher 1 1 = AES-256-GCM
59
+ // reserved 1 0
60
+ // keycount 4 uint32
61
+ // per key:
62
+ // id 1 + bytes the key id, PLAINTEXT
63
+ // salt 1 + bytes
64
+ // iters 4 PBKDF2 rounds for this key
65
+ // ring 1 + iv, 4 + bytes sealed under the passphrase
66
+ // meta 1 + iv, 4 + bytes sealed under the vault's meta key
67
+ // entrycount 4 uint32
68
+ // per entry:
69
+ // id 1 + bytes the blinded lookup id
70
+ // name 1 + iv, 4 + bytes sealed under the vault's name key
71
+ // value 1 + iv, 4 + bytes sealed under that secret's own key
72
+ //
73
+ // Integers are big-endian, and every length precedes its bytes. A file one
74
+ // port writes is read by every other; `test/fixture` pins that with a
75
+ // committed vault rather than with agreement.
76
+
77
+ private val MAGIC = "SKMV"
78
+ private val FORMAT = 1
79
+ private val KDF_PBKDF2 = 1
80
+ private val CIPHER_AESGCM = 1
81
+
82
+ /** AES-256-GCM: 32-byte keys, 12-byte nonces, 16-byte tags. */
83
+ private val KEYLEN = 32
84
+ private val IVLEN = 12
85
+ private val TAGLEN = 16
86
+ private val SALTLEN = 16
87
+
88
+ /** PBKDF2-HMAC-SHA256 rounds when a caller names none. */
89
+ val MINIVAULT_ITERATIONS = 210000
90
+
91
+ /** The key id a vault gets when a caller names none. */
92
+ val MASTERKEY = "master"
93
+
94
+ // Additional authenticated data. Every blob is bound to its PLACE in the
95
+ // file, so no ciphertext can be moved.
96
+ private val AAD_RING = "skmv1:ring:"
97
+ private val AAD_META = "skmv1:meta:"
98
+ private val AAD_NAME = "skmv1:name"
99
+ private val AAD_SECRET = "skmv1:secret:"
100
+
101
+ // Everything a master can reach is derived from the root key, so a
102
+ // rotation is one new random value rather than a re-wrap of each part.
103
+ private val LABEL_NAMES = "skmv1:names"
104
+ private val LABEL_META = "skmv1:meta"
105
+ private val LABEL_ID = "skmv1:id"
106
+
107
+ /** The largest key id the format can record.
108
+ *
109
+ * `small` writes a length in ONE byte. A longer id wrapped that byte and
110
+ * the writer then appended the whole thing, so every field after it
111
+ * shifted. Checked where an id is ACCEPTED, so the refusal names the id
112
+ * rather than the file.
113
+ */
114
+ private val IDMAX = 255
115
+
116
+ /** The export key the vault API is published under, beside `provider`. */
117
+ val VAULT_EXPORT = "vault"
118
+
119
+ private val MVRANDOM = SecureRandom()
120
+
121
+ private def mvfail(text: String): Nothing =
122
+ throw SekretoError("sekreto: minivault: " + text)
123
+
124
+ private def mvutf8(text: String): Array[Byte] = text.getBytes(StandardCharsets.UTF_8)
125
+
126
+ /** The key a caller asked for, or [[MASTERKEY]]: an EMPTY key is no key.
127
+ * The canonical's `opts.key || MASTERKEY` answers for both absent and
128
+ * empty, where `getOrElse` answers for absent alone - and a CLI reaches
129
+ * this with SEKRETO_VAULT_KEY set and empty, which is what an unset shell
130
+ * variable expands to.
131
+ */
132
+ /** The lock every handle on one file shares.
133
+ *
134
+ * Each [[MiniVault]] is its own object, so two handles on one path did
135
+ * not coordinate: both could finish `load` before either saved, and the
136
+ * second rename then discarded the first one's change while reporting
137
+ * success. Keyed by the ABSOLUTE path, so two handles spelled
138
+ * differently still meet.
139
+ *
140
+ * A guarantee WITHIN one process, which is what DOCS.md promises and
141
+ * what the go port arranges the same way. Two processes still race, and
142
+ * the format's answer to that is the exclusive create and the atomic
143
+ * rename: a reader sees one whole vault or the other, never half of one.
144
+ */
145
+ private val MVLOCKS = java.util.concurrent.ConcurrentHashMap[String, AnyRef]()
146
+
147
+ private def mvlockfor(file: String): AnyRef =
148
+ val key =
149
+ try Paths.get(file).toAbsolutePath.normalize.toString
150
+ catch case _: RuntimeException => file
151
+
152
+ MVLOCKS.computeIfAbsent(key, _ => Object())
153
+
154
+ private def mvwantkey(value: String): String =
155
+ if value.isEmpty then MASTERKEY else value
156
+
157
+ private def mvcheckid(id: Option[String], what: String): String =
158
+ val text = id.getOrElse("")
159
+ if text.isEmpty then mvfail(what)
160
+ if mvutf8(text).length > IDMAX then
161
+ mvfail(s"key id is longer than $IDMAX bytes: ${text.take(32)}...")
162
+ text
163
+
164
+ // --- keys ------------------------------------------------------------
165
+
166
+ private def mvhmac(key: Array[Byte], text: String): Array[Byte] =
167
+ try
168
+ val mac = Mac.getInstance("HmacSHA256")
169
+ mac.init(SecretKeySpec(key, "HmacSHA256"))
170
+ mac.doFinal(mvutf8(text))
171
+ catch case err: GeneralSecurityException => mvfail("hmac: " + err.getMessage)
172
+
173
+ /** The key-encryption key a passphrase unwraps a ring with. */
174
+ private def mvkek(passphrase: String, salt: Array[Byte], iters: Int): Array[Byte] =
175
+ try
176
+ SecretKeyFactory
177
+ .getInstance("PBKDF2WithHmacSHA256")
178
+ .generateSecret(PBEKeySpec(passphrase.toCharArray, salt, iters, KEYLEN * 8))
179
+ .getEncoded
180
+ catch case err: GeneralSecurityException => mvfail("pbkdf2: " + err.getMessage)
181
+
182
+ /** The key one named secret's value is encrypted with.
183
+ *
184
+ * DERIVED, never stored, for a master: it holds the root key and so
185
+ * reaches every name, including ones written after it was made. A
186
+ * restricted key holds the derived keys it was granted and nothing that
187
+ * produces another.
188
+ */
189
+ private def mvsecretkey(root: Array[Byte], name: String): Array[Byte] =
190
+ mvhmac(root, AAD_SECRET + name)
191
+
192
+ /** Where a secret lives in the file, derived from its own key so that
193
+ * finding it needs no plaintext name.
194
+ */
195
+ private def mventryid(key: Array[Byte]): Array[Byte] = mvhmac(key, LABEL_ID)
196
+
197
+ private def mvrandom(len: Int): Array[Byte] =
198
+ val out = new Array[Byte](len)
199
+ MVRANDOM.nextBytes(out)
200
+ out
201
+
202
+ // --- sealing ---------------------------------------------------------
203
+
204
+ /** A nonce and the ciphertext with its tag appended. */
205
+ private final case class Sealed(iv: Array[Byte], blob: Array[Byte]):
206
+ def same(other: Sealed): Boolean =
207
+ java.util.Arrays.equals(iv, other.iv) && java.util.Arrays.equals(blob, other.blob)
208
+
209
+ private def mvseal(key: Array[Byte], plain: Array[Byte], aad: String): Sealed =
210
+ try
211
+ val iv = mvrandom(IVLEN)
212
+ val cipher = Cipher.getInstance("AES/GCM/NoPadding")
213
+ cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(key, "AES"), GCMParameterSpec(TAGLEN * 8, iv))
214
+ cipher.updateAAD(mvutf8(aad))
215
+ Sealed(iv, cipher.doFinal(plain))
216
+ catch case err: GeneralSecurityException => mvfail("cannot seal: " + err.getMessage)
217
+
218
+ /** The plaintext, or a refusal. A GCM tag that fails to verify is the only
219
+ * evidence there is, and it cannot tell a wrong passphrase from a damaged
220
+ * file, so `what` names the attempt and the message admits both.
221
+ */
222
+ private def mvunseal(key: Array[Byte], sealed_ : Sealed, aad: String, what: String): Array[Byte] =
223
+ if sealed_.blob.length < TAGLEN || IVLEN != sealed_.iv.length then
224
+ mvfail(what + ": truncated")
225
+
226
+ // The WHOLE round-trip is guarded, not only the tag check: a nonce of the
227
+ // wrong length makes `init` itself raise, and a damaged file reaching a
228
+ // caller as a raw GeneralSecurityException is a refusal nobody can act
229
+ // on.
230
+ try
231
+ val cipher = Cipher.getInstance("AES/GCM/NoPadding")
232
+ cipher.init(
233
+ Cipher.DECRYPT_MODE,
234
+ SecretKeySpec(key, "AES"),
235
+ GCMParameterSpec(TAGLEN * 8, sealed_.iv),
236
+ )
237
+ cipher.updateAAD(mvutf8(aad))
238
+ cipher.doFinal(sealed_.blob)
239
+ catch case NonFatal(_) => mvfail(what)
240
+
241
+ // THE JSON IS AN ENUM HERE and a plain map everywhere else. This port's
242
+ // `Json` carries `Json.Obj` / `Json.Str` rather than `Any`, so a ring
243
+ // crosses the boundary twice: `mvplain` on the way in, `mvtagged` on the
244
+ // way out. The bytes are the same either way.
245
+ private def mvjsonof(plain: Array[Byte], what: String): Map[String, Any] =
246
+ Json.parse(String(plain, StandardCharsets.UTF_8)) match
247
+ case Some(Json.Obj(value)) => value.map((key, one) => (key, mvplain(one))).toMap
248
+ case _ => mvfail("unreadable " + what)
249
+
250
+ private def mvplain(value: Json): Any = value match
251
+ case Json.Null => null
252
+ case Json.Bool(one) => one
253
+ case Json.Num(one) => one
254
+ case Json.Str(one) => one
255
+ case Json.Arr(items) => items.map(mvplain)
256
+ case Json.Obj(pairs) => pairs.map((key, one) => (key, mvplain(one))).toMap
257
+
258
+ private def mvtagged(value: Any): Json = value match
259
+ case null => Json.Null
260
+ case one: Boolean => Json.Bool(one)
261
+ case one: Int => Json.Num(one.toDouble)
262
+ case one: Double => Json.Num(one)
263
+ case one: String => Json.Str(one)
264
+ case one: List[?] => Json.Arr(one.map(mvtagged))
265
+ case one: ListMap[?, ?] =>
266
+ Json.Obj(ListMap.from(one.map((key, item) => (key.toString, mvtagged(item)))))
267
+ case one: Map[?, ?] =>
268
+ Json.Obj(ListMap.from(one.map((key, item) => (key.toString, mvtagged(item)))))
269
+ case other => mvfail("cannot encode " + other)
270
+
271
+ private def mvstringify(value: ListMap[String, Any]): String = Json.stringify(mvtagged(value))
272
+
273
+ private def mvb64(bytes: Array[Byte]): String = Base64.getEncoder.encodeToString(bytes)
274
+
275
+ private def mvunb64(text: Any, what: String): Array[Byte] = text match
276
+ case one: String =>
277
+ try Base64.getDecoder.decode(one)
278
+ catch case _: IllegalArgumentException => mvfail("missing " + what)
279
+ case _ => mvfail("missing " + what)
280
+
281
+ // --- the file --------------------------------------------------------
282
+
283
+ private final case class KeyRecord(
284
+ id: String,
285
+ salt: Array[Byte],
286
+ iters: Int,
287
+ ring: Sealed,
288
+ meta: Sealed,
289
+ )
290
+
291
+ private final case class EntryRecord(id: Array[Byte], name: Sealed, value: Sealed)
292
+
293
+ private final case class VaultFile(keys: List[KeyRecord], entries: List[EntryRecord])
294
+
295
+ /** A cursor, so that every length check is in one place: a truncated vault
296
+ * is refused rather than read as a short one.
297
+ */
298
+ private final class MvReader(bytes: Array[Byte]):
299
+ private var at = 0
300
+
301
+ def take(len: Int): Array[Byte] =
302
+ if len < 0 || bytes.length < at + len then mvfail("the vault file is truncated")
303
+ val out = bytes.slice(at, at + len)
304
+ at += len
305
+ out
306
+
307
+ def u8: Int = take(1)(0) & 0xff
308
+
309
+ def u32: Int =
310
+ // A length over Int.MaxValue cannot address an array, and reading it as
311
+ // a negative int is what turned a damaged file into a crash instead of
312
+ // a refusal.
313
+ val value = ByteBuffer.wrap(take(4)).getInt.toLong & 0xffffffffL
314
+ if value > Int.MaxValue then mvfail("the vault file is truncated")
315
+ value.toInt
316
+
317
+ def small: Array[Byte] = take(u8)
318
+ def large: Array[Byte] = take(u32)
319
+ def magic: String = String(take(4), StandardCharsets.ISO_8859_1)
320
+ def sealedvalue: Sealed = Sealed(small, large)
321
+ def done: Boolean = at == bytes.length
322
+
323
+ private def mvreadfile(bytes: Array[Byte]): VaultFile =
324
+ val read = MvReader(bytes)
325
+
326
+ if MAGIC != read.magic then mvfail("not a vault file")
327
+
328
+ val version = read.u8
329
+ if FORMAT != version then mvfail(s"unsupported format version: $version")
330
+
331
+ val kdf = read.u8
332
+ val cipher = read.u8
333
+ if KDF_PBKDF2 != kdf || CIPHER_AESGCM != cipher then
334
+ mvfail(s"unsupported kdf or cipher: $kdf/$cipher")
335
+ read.u8
336
+
337
+ val keys = List.fill(read.u32):
338
+ KeyRecord(
339
+ String(read.small, StandardCharsets.UTF_8),
340
+ read.small,
341
+ read.u32,
342
+ read.sealedvalue,
343
+ read.sealedvalue,
344
+ )
345
+
346
+ val entries = List.fill(read.u32):
347
+ EntryRecord(read.small, read.sealedvalue, read.sealedvalue)
348
+
349
+ if !read.done then mvfail("the vault file has trailing bytes")
350
+
351
+ VaultFile(keys, entries)
352
+
353
+ /** Unsigned, byte by byte, the way every other port sorts. */
354
+ private def mvcompare(left: Array[Byte], right: Array[Byte]): Int =
355
+ var index = 0
356
+ var out = 0
357
+
358
+ while out == 0 && index < math.min(left.length, right.length) do
359
+ val one = left(index) & 0xff
360
+ val two = right(index) & 0xff
361
+ if one != two then out = if one < two then -1 else 1
362
+ index += 1
363
+
364
+ if out != 0 then out else left.length.compare(right.length)
365
+
366
+ private def mvwritefile(vault: VaultFile): Array[Byte] =
367
+ val out = java.io.ByteArrayOutputStream()
368
+
369
+ def raw(bytes: Array[Byte]): Unit = out.write(bytes)
370
+ def u8(value: Int): Unit = out.write(value & 0xff)
371
+ def u32(value: Int): Unit = raw(ByteBuffer.allocate(4).putInt(value).array)
372
+ def small(bytes: Array[Byte]): Unit = { u8(bytes.length); raw(bytes) }
373
+ def large(bytes: Array[Byte]): Unit = { u32(bytes.length); raw(bytes) }
374
+ def sealedvalue(value: Sealed): Unit = { small(value.iv); large(value.blob) }
375
+
376
+ raw(MAGIC.getBytes(StandardCharsets.ISO_8859_1))
377
+ u8(FORMAT)
378
+ u8(KDF_PBKDF2)
379
+ u8(CIPHER_AESGCM)
380
+ u8(0)
381
+
382
+ u32(vault.keys.length)
383
+ for key <- vault.keys do
384
+ small(mvutf8(key.id))
385
+ small(key.salt)
386
+ u32(key.iters)
387
+ sealedvalue(key.ring)
388
+ sealedvalue(key.meta)
389
+
390
+ // SORTED BY ID, which is a blinded value: the file therefore records
391
+ // nothing about the order secrets were written in.
392
+ val entries = vault.entries.sortWith((left, right) => mvcompare(left.id, right.id) < 0)
393
+
394
+ u32(entries.length)
395
+ for entry <- entries do
396
+ small(entry.id)
397
+ sealedvalue(entry.name)
398
+ sealedvalue(entry.value)
399
+
400
+ out.toByteArray
401
+
402
+ // --- what a key is ---------------------------------------------------
403
+
404
+ /** What a key may do. `grants` is empty for a master key.
405
+ *
406
+ * A case class of `val` fields over an immutable list, so what a caller is
407
+ * handed cannot become what the vault believes: `info.write = true` does
408
+ * not compile.
409
+ */
410
+ final case class VaultKeyInfo(
411
+ key: String,
412
+ master: Boolean,
413
+ write: Boolean,
414
+ grants: List[String],
415
+ ):
416
+ def show: String = s"$key/$master/$write/${grants.mkString("[", ", ", "]")}"
417
+
418
+ /** What a caller asks for when minting a restricted key. */
419
+ final case class GrantSpec(
420
+ key: String,
421
+ passphrase: String,
422
+ names: List[String] = Nil,
423
+ write: Boolean = false,
424
+ iterations: Option[Int] = None,
425
+ )
426
+
427
+ /** How a vault handle is configured. */
428
+ final case class VaultOptions(
429
+ file: String,
430
+ passphrase: String,
431
+ key: String = MASTERKEY,
432
+ iterations: Int = MINIVAULT_ITERATIONS,
433
+ create: Boolean = false,
434
+ )
435
+
436
+ private final case class Opened(
437
+ info: VaultKeyInfo,
438
+ root: Option[Array[Byte]],
439
+ grants: Map[String, Array[Byte]],
440
+ ring: Sealed,
441
+ )
442
+
443
+ // --- creating --------------------------------------------------------
444
+
445
+ private def mvnewvault(keyid: String, passphrase: String, iterations: Int): VaultFile =
446
+ val root = mvrandom(KEYLEN)
447
+ val salt = mvrandom(SALTLEN)
448
+
449
+ val ring = ListMap[String, Any]("v" -> FORMAT, "write" -> true, "root" -> mvb64(root))
450
+ val meta =
451
+ ListMap[String, Any]("v" -> FORMAT, "master" -> true, "write" -> true, "grants" -> List())
452
+
453
+ VaultFile(
454
+ List(
455
+ KeyRecord(
456
+ keyid,
457
+ salt,
458
+ iterations,
459
+ mvseal(mvkek(passphrase, salt, iterations), mvutf8(mvstringify(ring)), AAD_RING + keyid),
460
+ mvseal(mvhmac(root, LABEL_META), mvutf8(mvstringify(meta)), AAD_META + keyid),
461
+ ),
462
+ ),
463
+ Nil,
464
+ )
465
+
466
+ private def mvowneronly(path: Path): Unit =
467
+ try Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("rw-------"))
468
+ catch
469
+ // A filesystem with no POSIX permissions is not a reason to refuse a
470
+ // write that otherwise succeeded.
471
+ case _: IOException => ()
472
+ case _: UnsupportedOperationException => ()
473
+
474
+ /** Write a vault file that is not there yet, and REFUSE one that is.
475
+ *
476
+ * Straight to the target with CREATE_NEW rather than through a temporary
477
+ * and a rename. A rename REPLACES its destination, so two processes
478
+ * creating the same vault both succeeded and the second discarded the
479
+ * first one's secrets.
480
+ */
481
+ private def mvputnew(file: String, vault: VaultFile): Unit =
482
+ val path = Path.of(file)
483
+ try
484
+ Files.write(path, mvwritefile(vault), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE)
485
+ mvowneronly(path)
486
+ catch
487
+ case _: FileAlreadyExistsException => mvfail("vault file already exists: " + file)
488
+ case err: IOException => mvfail(s"cannot write $file: ${err.getMessage}")
489
+
490
+ /** A handle on one vault file, opened as ONE key.
491
+ *
492
+ * Every method answers as that key: `list` shows the names it may read,
493
+ * `get` answers for those and misses on the rest, and the master-only
494
+ * methods refuse for any other key. Nothing is read or derived until the
495
+ * first call that needs the file.
496
+ */
497
+ final class MiniVault private[plugins] (options: VaultOptions):
498
+
499
+ if options.file.isEmpty then mvfail("a vault needs a file")
500
+ if options.passphrase.isEmpty then mvfail("a vault needs a passphrase")
501
+
502
+ private val thefile = options.file
503
+ private val thekey = mvcheckid(Some(mvwantkey(options.key)), "a vault needs a key id")
504
+ private val thephrase = options.passphrase
505
+ private val theiters = options.iterations
506
+ private val thecreate = options.create
507
+
508
+ private var opened: Option[Opened] = None
509
+
510
+ /** The file this handle reads. */
511
+ def file: String = thefile
512
+
513
+ /** The key id this handle opens with. */
514
+ def key: String = thekey
515
+
516
+ /** Derive the key and read the file NOW rather than at first use. */
517
+ def open: VaultKeyInfo = load._2.info
518
+
519
+ /** Forget the derived keys. The next call opens again. */
520
+ def close(): Unit = opened = None
521
+
522
+ /** The names this key can read, sorted. */
523
+ def list: List[String] =
524
+ val (vault, state) = load
525
+
526
+ state.root match
527
+ case Some(root) =>
528
+ val namekey = mvhmac(root, LABEL_NAMES)
529
+ vault.entries
530
+ .map(entry =>
531
+ String(
532
+ mvunseal(namekey, entry.name, AAD_NAME, "a secret name is damaged"),
533
+ StandardCharsets.UTF_8,
534
+ ),
535
+ )
536
+ .sorted
537
+
538
+ // A restricted key has no name key, so it reports the grants it can
539
+ // actually find: the vault never tells it what else is in there.
540
+ case None =>
541
+ state.info.grants.filter(name => findentry(vault, state.grants.get(name)).isDefined).sorted
542
+
543
+ def has(name: String): Boolean = get(name).isDefined
544
+
545
+ /** The value, or None when the vault does not hold that name or this key
546
+ * was not granted it.
547
+ */
548
+ def get(name: String): Option[String] =
549
+ checkname(name)
550
+ val (vault, state) = load
551
+
552
+ // OUTSIDE THE GRANT IS A MISS, deliberately. The vault answers as the
553
+ // key that opened it, so a name this key cannot read is a name this
554
+ // store does not hold for this caller.
555
+ keyfor(state, name).flatMap: key =>
556
+ findentry(vault, Some(key)).map: entry =>
557
+ String(
558
+ mvunseal(key, entry.value, AAD_SECRET + name, s"the value of $name is damaged"),
559
+ StandardCharsets.UTF_8,
560
+ )
561
+
562
+ /** Write a value. A master writes any name; a restricted key holding
563
+ * `write` overwrites the names it was granted, and creates none.
564
+ */
565
+ def set(name: String, value: String): Unit =
566
+ // Every write on this file, from any handle in this process,
567
+ // serializes here; see mvlockfor.
568
+ mvlockfor(file).synchronized:
569
+ checkname(name)
570
+ val (vault, state) = load
571
+
572
+ if !state.info.write then mvfail(s"key ${state.info.key} is read-only")
573
+
574
+ val key = keyfor(state, name).getOrElse(
575
+ mvfail(s"key ${state.info.key} was not granted $name"),
576
+ )
577
+
578
+ val sealedvalue = mvseal(key, mvutf8(value), AAD_SECRET + name)
579
+ val id = mventryid(key)
580
+
581
+ val entries =
582
+ if vault.entries.exists(entry => java.util.Arrays.equals(entry.id, id)) then
583
+ vault.entries.map: entry =>
584
+ if java.util.Arrays.equals(entry.id, id) then entry.copy(value = sealedvalue) else entry
585
+ else
586
+ // A NEW NAME NEEDS THE NAME KEY, which only a master holds. So a
587
+ // restricted key with `write` updates what it was granted and cannot
588
+ // grow the vault.
589
+ val root = rootof(state, s"creating the secret $name")
590
+ vault.entries :+ EntryRecord(
591
+ id,
592
+ mvseal(mvhmac(root, LABEL_NAMES), mvutf8(name), AAD_NAME),
593
+ sealedvalue,
594
+ )
595
+
596
+ save(vault.copy(entries = entries))
597
+
598
+ /** Drop a name. Master only. */
599
+ def remove(name: String): Unit =
600
+ // Every write on this file, from any handle in this process,
601
+ // serializes here; see mvlockfor.
602
+ mvlockfor(file).synchronized:
603
+ checkname(name)
604
+ val (vault, state) = load
605
+ val root = rootof(state, "removing a secret")
606
+
607
+ val wanted = mventryid(mvsecretkey(root, name))
608
+ if !vault.entries.exists(entry => java.util.Arrays.equals(entry.id, wanted)) then
609
+ mvfail(s"no such secret: $name")
610
+
611
+ save(
612
+ vault.copy(entries =
613
+ vault.entries.filterNot(entry => java.util.Arrays.equals(entry.id, wanted)),
614
+ ),
615
+ )
616
+
617
+ /** Every key in the file, with what it may do. Master only. */
618
+ def keys: List[VaultKeyInfo] =
619
+ val (vault, state) = load
620
+ rootof(state, "listing the keys")
621
+
622
+ vault.keys.map: record =>
623
+ metaof(state, record) match
624
+ case None => VaultKeyInfo(record.id, false, false, Nil)
625
+ case Some(meta) =>
626
+ val grants = meta.get("grants") match
627
+ case Some(items: List[?]) => items.map(_.toString).sorted
628
+ case _ => Nil
629
+ VaultKeyInfo(
630
+ record.id,
631
+ meta.get("master").contains(true),
632
+ meta.get("write").contains(true),
633
+ grants,
634
+ )
635
+
636
+ /** Mint a restricted key. Master only. */
637
+ def grant(spec: GrantSpec): Unit =
638
+ // Every write on this file, from any handle in this process,
639
+ // serializes here; see mvlockfor.
640
+ mvlockfor(file).synchronized:
641
+ val (vault, state) = load
642
+ val root = rootof(state, "granting a key")
643
+
644
+ val id = mvcheckid(Some(spec.key), "a grant needs a key id")
645
+ if spec.passphrase.isEmpty then mvfail("a grant needs a passphrase")
646
+ if vault.keys.exists(_.id == id) then mvfail(s"key already exists: $id")
647
+
648
+ val names = spec.names.sorted
649
+
650
+ // A ListMap built from the sorted names, for a ring whose JSON is the
651
+ // same text on every run. It is NOT an interop requirement - the ring
652
+ // is sealed under a fresh nonce, so its ciphertext differs per write
653
+ // whatever the key order is.
654
+ val grants = ListMap.from(names.map: name =>
655
+ checkname(name)
656
+ (name, mvb64(mvsecretkey(root, name))))
657
+
658
+ val record = sealkey(
659
+ root,
660
+ id,
661
+ spec.passphrase,
662
+ spec.iterations.getOrElse(theiters),
663
+ ListMap[String, Any]("v" -> FORMAT, "write" -> spec.write, "grants" -> grants),
664
+ ListMap[String, Any](
665
+ "v" -> FORMAT,
666
+ "master" -> false,
667
+ "write" -> spec.write,
668
+ "grants" -> names,
669
+ ),
670
+ )
671
+
672
+ save(vault.copy(keys = vault.keys :+ record))
673
+
674
+ /** Drop a key. Master only.
675
+ *
676
+ * Anyone who already copied the file keeps whatever that key could read,
677
+ * so revoking bars future reads of the LIVE file and `rotate` is what
678
+ * takes a secret back.
679
+ */
680
+ def revoke(key: String): Unit =
681
+ // Every write on this file, from any handle in this process,
682
+ // serializes here; see mvlockfor.
683
+ mvlockfor(file).synchronized:
684
+ val (vault, state) = load
685
+ rootof(state, "revoking a key")
686
+
687
+ if key == state.info.key then mvfail(s"a key cannot revoke itself: $key")
688
+ if !vault.keys.exists(_.id == key) then mvfail(s"no such key: $key")
689
+
690
+ save(vault.copy(keys = vault.keys.filterNot(_.id == key)))
691
+
692
+ /** A new root key, every value re-encrypted under it, and EVERY OTHER KEY
693
+ * DROPPED. Master only.
694
+ *
695
+ * The other keys go because they must: their rings are sealed under
696
+ * passphrases this process does not have. Re-grant afterwards.
697
+ */
698
+ def rotate(): Unit =
699
+ // Every write on this file, from any handle in this process,
700
+ // serializes here; see mvlockfor.
701
+ mvlockfor(file).synchronized:
702
+ val (vault, state) = load
703
+ rootof(state, "rotating the vault")
704
+
705
+ // Read everything out under the old root before anything changes: once
706
+ // the root is replaced the old derived keys are unreachable.
707
+ val plain = list.map(name => (name, get(name).getOrElse("")))
708
+
709
+ val root = mvrandom(KEYLEN)
710
+ val namekey = mvhmac(root, LABEL_NAMES)
711
+
712
+ val entries = plain.map: (name, value) =>
713
+ val key = mvsecretkey(root, name)
714
+ EntryRecord(
715
+ mventryid(key),
716
+ mvseal(namekey, mvutf8(name), AAD_NAME),
717
+ mvseal(key, mvutf8(value), AAD_SECRET + name),
718
+ )
719
+
720
+ val iters = vault.keys.find(_.id == thekey).map(_.iters).getOrElse(theiters)
721
+
722
+ val record = sealkey(
723
+ root,
724
+ thekey,
725
+ thephrase,
726
+ iters,
727
+ ListMap[String, Any]("v" -> FORMAT, "write" -> true, "root" -> mvb64(root)),
728
+ ListMap[String, Any]("v" -> FORMAT, "master" -> true, "write" -> true, "grants" -> List()),
729
+ )
730
+
731
+ // SAVE FIRST, adopt second. A handle holding the new root over a file
732
+ // that still holds the old one reads nothing and says the vault is
733
+ // damaged.
734
+ write(VaultFile(List(record), entries))
735
+
736
+ opened = Some(
737
+ Opened(VaultKeyInfo(thekey, true, true, Nil), Some(root), Map.empty, record.ring),
738
+ )
739
+
740
+ // --- the inside ----------------------------------------------------
741
+
742
+ private def bytes: Array[Byte] =
743
+ try Files.readAllBytes(Path.of(thefile))
744
+ catch
745
+ case _: NoSuchFileException =>
746
+ // A vault is configured deliberately, with a key. Its absence is a
747
+ // broken deployment and never "no secrets here": answering a miss
748
+ // would send the chain on to a weaker store.
749
+ if !thecreate then mvfail(s"no vault file: $thefile")
750
+ mvputnew(thefile, mvnewvault(thekey, thephrase, theiters))
751
+ try Files.readAllBytes(Path.of(thefile))
752
+ catch case err: IOException => mvfail(s"cannot read $thefile: ${err.getMessage}")
753
+ case err: IOException => mvfail(s"cannot read $thefile: ${err.getMessage}")
754
+
755
+ private def load: (VaultFile, Opened) =
756
+ val vault = mvreadfile(bytes)
757
+
758
+ val record = vault.keys.find(_.id == thekey).getOrElse:
759
+ // REVOKED, or never there. Either way this handle is finished, and
760
+ // dropping what it derived is what stops the next call answering from
761
+ // memory.
762
+ opened = None
763
+ mvfail(s"no such key: $thekey")
764
+
765
+ // The file still holds this key, and holds the SAME ring: a key revoked
766
+ // and re-granted under another passphrase is a different key wearing
767
+ // the id, and re-deriving is what refuses it.
768
+ opened match
769
+ case Some(held) if held.ring.same(record.ring) => (vault, held)
770
+ case _ =>
771
+ opened = None
772
+
773
+ val plain = mvunseal(
774
+ mvkek(thephrase, record.salt, record.iters),
775
+ record.ring,
776
+ AAD_RING + thekey,
777
+ s"wrong passphrase for key $thekey, or a damaged vault",
778
+ )
779
+
780
+ val ring = mvjsonof(plain, s"key ring for $thekey")
781
+
782
+ val grants = ring.get("grants") match
783
+ case Some(pairs: Map[?, ?]) =>
784
+ pairs.map((name, one) => (name.toString, mvunb64(one, "a granted key"))).toMap
785
+ case _ => Map.empty[String, Array[Byte]]
786
+
787
+ val root = ring.get("root")
788
+
789
+ val next = Opened(
790
+ VaultKeyInfo(
791
+ thekey,
792
+ root.isDefined,
793
+ root.isDefined || ring.get("write").contains(true),
794
+ grants.keys.toList.sorted,
795
+ ),
796
+ root.map(one => mvunb64(one, "the root key")),
797
+ grants,
798
+ record.ring,
799
+ )
800
+
801
+ opened = Some(next)
802
+ (vault, next)
803
+
804
+ private def rootof(state: Opened, what: String): Array[Byte] =
805
+ state.root.getOrElse(
806
+ mvfail(s"$what needs a master key, and ${state.info.key} is restricted"),
807
+ )
808
+
809
+ /** The key for one name, or None when this key cannot reach it. */
810
+ private def keyfor(state: Opened, name: String): Option[Array[Byte]] =
811
+ state.root match
812
+ case Some(root) => Some(mvsecretkey(root, name))
813
+ case None => state.grants.get(name)
814
+
815
+ private def findentry(vault: VaultFile, key: Option[Array[Byte]]): Option[EntryRecord] =
816
+ key.flatMap: one =>
817
+ val id = mventryid(one)
818
+ vault.entries.find(entry => java.util.Arrays.equals(entry.id, id))
819
+
820
+ private def metaof(state: Opened, record: KeyRecord): Option[Map[String, Any]] =
821
+ val root = rootof(state, "reading key metadata")
822
+ val what = s"metadata for key ${record.id}"
823
+
824
+ try
825
+ Some(
826
+ mvjsonof(
827
+ mvunseal(mvhmac(root, LABEL_META), record.meta, AAD_META + record.id, what),
828
+ what,
829
+ ),
830
+ )
831
+ catch
832
+ // A record written under a root key this one has replaced. The key is
833
+ // still in the file and still opens with its own passphrase, so it is
834
+ // reported rather than hidden - with what it can do unknown.
835
+ case _: SekretoError => None
836
+
837
+ private def sealkey(
838
+ root: Array[Byte],
839
+ id: String,
840
+ phrase: String,
841
+ iters: Int,
842
+ ring: ListMap[String, Any],
843
+ meta: ListMap[String, Any],
844
+ ): KeyRecord =
845
+ val salt = mvrandom(SALTLEN)
846
+ KeyRecord(
847
+ id,
848
+ salt,
849
+ iters,
850
+ mvseal(mvkek(phrase, salt, iters), mvutf8(mvstringify(ring)), AAD_RING + id),
851
+ mvseal(mvhmac(root, LABEL_META), mvutf8(mvstringify(meta)), AAD_META + id),
852
+ )
853
+
854
+ private def save(vault: VaultFile): Unit = write(vault)
855
+
856
+ /** Read, change, and REPLACE - never edit in place.
857
+ *
858
+ * THE TEMPORARY IS RANDOM AND EXCLUSIVE. `<vault>.<pid>.tmp` is a name
859
+ * anyone can predict, so anyone who can write the vault's directory
860
+ * could put a symlink there and have the next save truncate whatever it
861
+ * pointed at.
862
+ */
863
+ private def write(vault: VaultFile): Unit =
864
+ val suffix = mvrandom(8).map(one => f"${one & 0xff}%02x").mkString
865
+ val temp = Path.of(s"$thefile.$suffix.tmp")
866
+
867
+ try
868
+ Files.write(temp, mvwritefile(vault), StandardOpenOption.CREATE_NEW,
869
+ StandardOpenOption.WRITE)
870
+ mvowneronly(temp)
871
+ Files.move(temp, Path.of(thefile), StandardCopyOption.REPLACE_EXISTING)
872
+ catch
873
+ case err: IOException =>
874
+ try Files.deleteIfExists(temp)
875
+ catch
876
+ // The vault is unchanged either way, and the write error is what
877
+ // the caller needs to be told about.
878
+ case _: IOException => ()
879
+ mvfail(s"cannot write $thefile: ${err.getMessage}")
880
+
881
+ /** Open a vault file as one key.
882
+ *
883
+ * The handle is lazy. Nothing is read, and no passphrase is stretched,
884
+ * until a method needs the file.
885
+ */
886
+ def openvault(options: VaultOptions): MiniVault = MiniVault(options)
887
+
888
+ /** Make a vault file and return a handle on its master key.
889
+ *
890
+ * Refuses a file that is already there: a vault is created once, and
891
+ * overwriting one discards every secret in it.
892
+ */
893
+ def createvault(options: VaultOptions): MiniVault =
894
+ if options.file.isEmpty then mvfail("a vault needs a file")
895
+ if options.passphrase.isEmpty then mvfail("a vault needs a passphrase")
896
+ val keyid = mvcheckid(Some(mvwantkey(options.key)), "a vault needs a key id")
897
+
898
+ // No existence check first: the check and the write would be two steps,
899
+ // and `mvputnew` refuses an existing file in ONE.
900
+ mvputnew(options.file, mvnewvault(keyid, options.passphrase, options.iterations))
901
+
902
+ MiniVault(options)
903
+
904
+ // --- the provider ----------------------------------------------------
905
+
906
+ /** Read a vault as one store in a chain.
907
+ *
908
+ * The provider is the READ half and nothing more: a chain resolves
909
+ * secrets, and writing one is a deliberate act with an API of its own.
910
+ */
911
+ private final class MiniVaultProvider(vault: MiniVault) extends Provider:
912
+ def lookup(name: String): Option[String] = vault.get(name)
913
+ def describe(): String = "minivault:" + vault.file
914
+
915
+ def providerof(vault: MiniVault): Provider = MiniVaultProvider(vault)
916
+
917
+ /** A vault provider from options, for a chain built by hand. */
918
+ def minivaultprovider(options: VaultOptions): Provider = providerof(openvault(options))
919
+
920
+ /** The `minivault` provider kind, as a voxgig/plugin definition.
921
+ *
922
+ * Written out rather than built by `providerplugin`, because this
923
+ * definition publishes TWO exports: `provider`, the read half every kind
924
+ * publishes, and `vault`, the programmatic API.
925
+ */
926
+ val minivault: Definition =
927
+ val define: Inst => Unit = inst =>
928
+ val spec = specof(inst.options)
929
+
930
+ val vault =
931
+ try
932
+ // `openvault` refuses bad configuration HERE, so a mistyped chain
933
+ // fails at construction. Reaching the FILE is not configuration:
934
+ // the handle is lazy.
935
+ openvault(
936
+ VaultOptions(
937
+ file = spec.file.getOrElse(""),
938
+ passphrase = spec.passphrase.getOrElse(""),
939
+ key = mvwantkey(spec.vaultkey.getOrElse("")),
940
+ iterations = spec.iterations.getOrElse(MINIVAULT_ITERATIONS),
941
+ create = spec.create.contains(true),
942
+ ),
943
+ )
944
+ catch
945
+ case err: SekretoError =>
946
+ val text = Option(err.getMessage).getOrElse("")
947
+ throw PluginError(ERROR_CODE, text, Map("ref" -> VStr(inst.ref), "cause" -> VStr(text)))
948
+
949
+ inst.`export`(PROVIDER_EXPORT, VOpaque(providerof(vault)))
950
+ inst.`export`(VAULT_EXPORT, VOpaque(vault))
951
+
952
+ voxgig.plugin.Definition(name = "minivault", define = Some(define))
953
+
954
+ /** The vault behind a store in a chain, as its programmatic API.
955
+ *
956
+ * With no store named, the unqualified alias answers: one vault in the
957
+ * chain resolves whatever it is called, and two raise rather than picking
958
+ * one.
959
+ */
960
+ def vaultof(secrets: Sekreto, store: Option[String] = None): MiniVault =
961
+ store match
962
+ case None =>
963
+ secrets.host.exports("minivault/" + VAULT_EXPORT) match
964
+ case VOpaque(vault: MiniVault) => vault
965
+ case _ => mvfail("no minivault store in this chain")
966
+
967
+ case Some(name) =>
968
+ // A NAMED STORE MUST EXIST, and the alias must not stand in for it.
969
+ // `host.exports` falls back to the alias when the exact ref misses,
970
+ // so asking for `minivault` in a chain whose only vault is named
971
+ // `app` used to hand back the `app` vault - and then write to it.
972
+ val eref = if "minivault" == name then "minivault" else "minivault$" + name
973
+
974
+ if secrets.host.instance(VStr(eref)).isEmpty then
975
+ mvfail(s"no minivault store named $name in this chain")
976
+
977
+ secrets.host.exports(eref + "/" + VAULT_EXPORT) match
978
+ case VOpaque(vault: MiniVault) => vault
979
+ case _ => mvfail(s"no minivault store named $name in this chain")