@voxgig/sdkgen 4.10.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/package.json +1 -1
  3. package/project/.sdk/model/feature/secrets.aon +330 -0
  4. package/project/.sdk/model/target/c.aon +15 -2
  5. package/project/.sdk/model/target/cpp.aon +18 -0
  6. package/project/.sdk/model/target/lua.aon +17 -0
  7. package/project/.sdk/model/target/ocaml.aon +48 -5
  8. package/project/.sdk/model/target/zig.aon +30 -4
  9. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  10. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  11. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  12. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  13. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  14. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  15. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  16. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  17. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  18. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  19. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  20. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  21. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  22. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  23. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  24. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  25. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  26. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  27. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  28. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  29. package/project/.sdk/tm/c/Makefile +58 -9
  30. package/project/.sdk/tm/c/core/sdk.h +10 -0
  31. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  32. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  33. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  34. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  35. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  36. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  37. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  38. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  39. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  40. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  41. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  42. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  43. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  44. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  45. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  46. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  47. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  48. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  49. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  50. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  51. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  52. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  53. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  54. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  55. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  56. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  57. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  58. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  59. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  60. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  61. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  62. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  63. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  64. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  65. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  66. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  67. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  68. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  69. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  70. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  71. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  72. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  73. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  74. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  75. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  76. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  77. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  78. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  79. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  80. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  81. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  82. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  83. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  84. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  85. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  86. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  87. package/project/.sdk/tm/c/src/feature/secrets/.gitkeep +0 -0
  88. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  89. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +38 -11
  90. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +40 -6
  91. package/project/.sdk/tm/cpp/Makefile +48 -4
  92. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  93. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  94. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  95. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  96. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  97. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  98. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  99. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  100. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  101. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  102. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  103. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  104. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  105. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  106. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  107. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  108. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  109. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  110. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  111. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  112. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  113. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  114. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  115. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  116. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  117. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  118. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  119. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  120. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  121. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  122. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  123. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  124. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  125. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  126. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  127. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  128. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  129. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  130. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  131. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  132. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  133. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  134. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  135. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  136. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  137. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  138. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  139. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  140. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  141. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  142. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  143. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  144. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  145. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  146. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  147. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  148. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  149. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  150. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  151. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  152. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  153. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  154. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  155. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  156. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  157. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  158. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  159. package/project/.sdk/tm/cpp/src/feature/secrets/.gitkeep +0 -0
  160. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  161. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +34 -8
  162. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +85 -0
  163. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +17 -2
  164. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +41 -0
  165. package/project/.sdk/tm/go/feature/secrets_feature.go +32 -10
  166. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +116 -0
  167. package/project/.sdk/tm/java/feature/SecretsFeature.java +33 -8
  168. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +64 -0
  169. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +34 -11
  170. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +73 -0
  171. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +32 -7
  172. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +69 -0
  173. package/project/.sdk/tm/lua/Makefile +15 -4
  174. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  175. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  176. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  177. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  178. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  179. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  180. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  181. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  182. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  183. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  184. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  185. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  186. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  187. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  188. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  189. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  190. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  191. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  192. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  193. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  194. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  195. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  196. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  197. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  198. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  199. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  200. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  201. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  202. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  203. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  204. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  205. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  206. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  207. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  208. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  209. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  210. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  211. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  212. package/project/.sdk/tm/lua/src/feature/secrets/.gitkeep +0 -0
  213. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  214. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  215. package/project/.sdk/tm/ocaml/Makefile +52 -8
  216. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  217. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  218. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  219. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  220. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  221. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  222. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  223. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  224. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  225. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  226. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  227. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  228. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  229. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  230. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  231. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  232. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  233. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  234. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  235. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  236. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  237. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  238. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  239. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  240. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  241. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  242. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  243. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  244. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  245. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  246. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  247. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  248. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  249. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  250. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  251. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  252. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  253. package/project/.sdk/tm/ocaml/src/feature/secrets/.gitkeep +0 -0
  254. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  255. package/project/.sdk/tm/perl/feature/secrets_feature.pm +33 -12
  256. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +47 -0
  257. package/project/.sdk/tm/php/feature/SecretsFeature.php +30 -6
  258. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +98 -0
  259. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  260. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  261. package/project/.sdk/tm/rb/feature/secrets_feature.rb +28 -6
  262. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +93 -0
  263. package/project/.sdk/tm/rust/feature/secrets.rs +33 -10
  264. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +96 -0
  265. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +29 -7
  266. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +71 -0
  267. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  268. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  269. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  270. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  271. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  272. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  273. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  274. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  275. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  276. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  277. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  278. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  279. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  280. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  281. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  282. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  283. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  284. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  285. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  286. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  287. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  288. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  289. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  290. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  291. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  292. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  293. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  294. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  295. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  296. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  297. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  298. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  299. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  300. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  301. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  302. package/project/.sdk/tm/zig/src/feature/secrets/.gitkeep +0 -0
  303. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  304. package/project/sdkgen-package.json +1 -1
@@ -0,0 +1,117 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Boru.cpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ #include "Boru.hpp"
5
+
6
+ #include "Httpjson.hpp"
7
+ #include "Proc.hpp"
8
+ #include "../sekreto/Providers.hpp"
9
+ #include "../sekreto/Sekreto.hpp"
10
+
11
+ namespace sekreto {
12
+
13
+ namespace {
14
+
15
+ // ------------------------------------------------------------------ boru
16
+
17
+ /// A boru vault.
18
+ ///
19
+ /// Two ways in, both boru's own. With no `addr`, the CLI:
20
+ /// `boru vault get --reveal <alias>` prints the secret on stdout and
21
+ /// nothing else; the passphrase is read by boru itself from
22
+ /// BORU_VAULT_PASSPHRASE, is never accepted as config, and never reaches a
23
+ /// command line where the process table would publish it.
24
+ ///
25
+ /// With an `addr`, boru's wire protocol: a read-only, HashiCorp-shaped
26
+ /// provision API. A boru alias KEEPS its dots, so `api.token` is the
27
+ /// single path segment `api.token` - not the `api`/`token` split a
28
+ /// HashiCorp KV gets - and the value is the `value` field.
29
+ class BoruProvider : public Provider {
30
+ public:
31
+ BoruProvider(const std::string& command, const std::string& namespace_,
32
+ const std::string& home, const std::string& addr, const std::string& token,
33
+ const std::string& mount)
34
+ : command_(first(command, "boru")),
35
+ namespace_(namespace_),
36
+ home_(home),
37
+ addr_(trimslash(addr)),
38
+ token_(token),
39
+ mount_(first(mount, "secret")) {}
40
+
41
+ std::optional<std::string> lookup(const std::string& name) override {
42
+ checkname(name);
43
+
44
+ if (!addr_.empty()) return wirelookup(name);
45
+
46
+ // The CLI alias is namespace-qualified with a COLON; the wire one with
47
+ // a slash. Both are boru's own spellings.
48
+ std::string alias = namespace_.empty() ? name : namespace_ + ":" + name;
49
+
50
+ std::vector<std::string> environment = processenv();
51
+ if (!home_.empty()) setenvvar(environment, "BORU_HOME", home_);
52
+
53
+ Ran ran = runcmd({command_, "vault", "get", "--reveal", alias}, environment, command_);
54
+
55
+ if (0 == ran.status) {
56
+ // boru prints the value and one newline, and nothing else.
57
+ return dropnewline(ran.out);
58
+ }
59
+
60
+ // "no alias named" is boru saying it does not hold this secret, which
61
+ // is a miss: the chain carries on. A locked vault or a wrong passphrase
62
+ // is not a miss - treating it as one would fall through to a weaker
63
+ // store without saying so.
64
+ if (borumiss(ran.why)) return std::nullopt;
65
+
66
+ throw SekretoError("sekreto: boru vault error: " +
67
+ (ran.why.empty() ? "exit " + std::to_string(ran.status) : ran.why));
68
+ }
69
+
70
+ std::string describe() const override {
71
+ if (!addr_.empty()) return "boru:" + addr_;
72
+ return namespace_.empty() ? "boru" : "boru:" + namespace_;
73
+ }
74
+
75
+ private:
76
+ std::optional<std::string> wirelookup(const std::string& name) {
77
+ checkaddr(addr_);
78
+
79
+ std::string alias = namespace_.empty() ? name : namespace_ + "/" + name;
80
+ std::string url = addr_ + "/v1/" + mount_ + "/data/" + alias;
81
+
82
+ Ordered headers;
83
+ headers.set("X-Vault-Token", token_);
84
+
85
+ Answer res = fetchjson("GET", url, headers);
86
+
87
+ if (404 == res.status) return std::nullopt;
88
+
89
+ if (200 != res.status) {
90
+ throw SekretoError("sekreto: boru serve error: " + std::to_string(res.status) + ": " + url);
91
+ }
92
+
93
+ return textof(res.body.get("data").get("data").get("value"));
94
+ }
95
+
96
+ std::string command_;
97
+ std::string namespace_;
98
+ std::string home_;
99
+ std::string addr_;
100
+ std::string token_;
101
+ std::string mount_;
102
+ };
103
+
104
+ } // namespace
105
+
106
+ bool borumiss(const std::string& why) {
107
+ return std::string::npos != why.find("no alias named");
108
+ }
109
+
110
+ Definition boru() {
111
+ return providerplugin("boru", [](const ProviderSpec& spec) -> std::shared_ptr<Provider> {
112
+ return std::make_shared<BoruProvider>(spec.command, spec.namespace_, spec.home, spec.addr,
113
+ spec.token, spec.mount);
114
+ });
115
+ }
116
+
117
+ } // namespace sekreto
@@ -0,0 +1,27 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Boru.hpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // A boru vault, read through its CLI or over its wire protocol.
5
+ //
6
+ // A PLUGIN, not a built-in: this kind opens a socket, signs a request or
7
+ // spawns a process, so a chain that does not name it links none of that.
8
+ // The calling project includes this header and passes what it declares to
9
+ // the Sekreto constructor (docs/design/plugin-providers.md).
10
+
11
+ #ifndef SEKRETO_PLUGINS_BORU_HPP
12
+ #define SEKRETO_PLUGINS_BORU_HPP
13
+
14
+ #include "../sekreto/Provider.hpp"
15
+
16
+ namespace sekreto {
17
+
18
+ /// The `boru` provider kind, as a voxgig/plugin definition.
19
+ Definition boru();
20
+
21
+ /// Does this boru failure mean "no such secret" rather than "I could not
22
+ /// answer"?
23
+ bool borumiss(const std::string& why);
24
+
25
+ } // namespace sekreto
26
+
27
+ #endif
@@ -0,0 +1,180 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Crypto.cpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ #include "Crypto.hpp"
5
+
6
+ namespace sekreto {
7
+
8
+ namespace {
9
+
10
+ // FIPS 180-4 round constants: the first 32 bits of the fractional parts of
11
+ // the cube roots of the first 64 primes.
12
+ const uint32_t K[64] = {
13
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
14
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
15
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
16
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
17
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
18
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
19
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
20
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
21
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
22
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
23
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
24
+ };
25
+
26
+ // The eight initial hash words: the first 32 bits of the fractional parts
27
+ // of the square roots of the first 8 primes.
28
+ const uint32_t H0[8] = {
29
+ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
30
+ 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
31
+ };
32
+
33
+ inline uint32_t ror(uint32_t word, unsigned int bits) {
34
+ return (word >> bits) | (word << (32 - bits));
35
+ }
36
+
37
+ const size_t BLOCK = 64;
38
+
39
+ } // namespace
40
+
41
+ Bytes tobytes(const std::string& text) {
42
+ return Bytes(text.begin(), text.end());
43
+ }
44
+
45
+ std::string frombytes(const Bytes& data) {
46
+ return std::string(data.begin(), data.end());
47
+ }
48
+
49
+ Bytes sha256(const Bytes& data) {
50
+ Bytes message = data;
51
+
52
+ // Padding: one 0x80 byte, zeros up to 56 mod 64, then the message length
53
+ // in BITS as a big-endian 64-bit integer.
54
+ uint64_t bitlen = static_cast<uint64_t>(data.size()) * 8;
55
+
56
+ message.push_back(0x80);
57
+ while (56 != message.size() % BLOCK) {
58
+ message.push_back(0);
59
+ }
60
+ for (int shift = 56; 0 <= shift; shift -= 8) {
61
+ message.push_back(static_cast<uint8_t>((bitlen >> shift) & 0xff));
62
+ }
63
+
64
+ uint32_t hash[8];
65
+ for (int index = 0; index < 8; index++) {
66
+ hash[index] = H0[index];
67
+ }
68
+
69
+ for (size_t block = 0; block < message.size(); block += BLOCK) {
70
+ uint32_t schedule[64];
71
+
72
+ for (int index = 0; index < 16; index++) {
73
+ size_t at = block + static_cast<size_t>(index) * 4;
74
+ schedule[index] = (static_cast<uint32_t>(message[at]) << 24) |
75
+ (static_cast<uint32_t>(message[at + 1]) << 16) |
76
+ (static_cast<uint32_t>(message[at + 2]) << 8) |
77
+ static_cast<uint32_t>(message[at + 3]);
78
+ }
79
+
80
+ for (int index = 16; index < 64; index++) {
81
+ uint32_t prev15 = schedule[index - 15];
82
+ uint32_t prev2 = schedule[index - 2];
83
+ uint32_t sigma0 = ror(prev15, 7) ^ ror(prev15, 18) ^ (prev15 >> 3);
84
+ uint32_t sigma1 = ror(prev2, 17) ^ ror(prev2, 19) ^ (prev2 >> 10);
85
+ schedule[index] = schedule[index - 16] + sigma0 + schedule[index - 7] + sigma1;
86
+ }
87
+
88
+ uint32_t a = hash[0];
89
+ uint32_t b = hash[1];
90
+ uint32_t c = hash[2];
91
+ uint32_t d = hash[3];
92
+ uint32_t e = hash[4];
93
+ uint32_t f = hash[5];
94
+ uint32_t g = hash[6];
95
+ uint32_t h = hash[7];
96
+
97
+ for (int index = 0; index < 64; index++) {
98
+ uint32_t bigsigma1 = ror(e, 6) ^ ror(e, 11) ^ ror(e, 25);
99
+ uint32_t choose = (e & f) ^ (~e & g);
100
+ uint32_t temp1 = h + bigsigma1 + choose + K[index] + schedule[index];
101
+ uint32_t bigsigma0 = ror(a, 2) ^ ror(a, 13) ^ ror(a, 22);
102
+ uint32_t major = (a & b) ^ (a & c) ^ (b & c);
103
+ uint32_t temp2 = bigsigma0 + major;
104
+
105
+ h = g;
106
+ g = f;
107
+ f = e;
108
+ e = d + temp1;
109
+ d = c;
110
+ c = b;
111
+ b = a;
112
+ a = temp1 + temp2;
113
+ }
114
+
115
+ hash[0] += a;
116
+ hash[1] += b;
117
+ hash[2] += c;
118
+ hash[3] += d;
119
+ hash[4] += e;
120
+ hash[5] += f;
121
+ hash[6] += g;
122
+ hash[7] += h;
123
+ }
124
+
125
+ Bytes out;
126
+ out.reserve(32);
127
+
128
+ for (int index = 0; index < 8; index++) {
129
+ out.push_back(static_cast<uint8_t>((hash[index] >> 24) & 0xff));
130
+ out.push_back(static_cast<uint8_t>((hash[index] >> 16) & 0xff));
131
+ out.push_back(static_cast<uint8_t>((hash[index] >> 8) & 0xff));
132
+ out.push_back(static_cast<uint8_t>(hash[index] & 0xff));
133
+ }
134
+
135
+ return out;
136
+ }
137
+
138
+ Bytes hmacsha256(const Bytes& key, const Bytes& data) {
139
+ Bytes block = key;
140
+
141
+ // A key longer than the block is hashed down; a shorter one is padded up
142
+ // with zeros.
143
+ if (BLOCK < block.size()) {
144
+ block = sha256(block);
145
+ }
146
+ block.resize(BLOCK, 0);
147
+
148
+ Bytes inner;
149
+ inner.reserve(BLOCK + data.size());
150
+ Bytes outer;
151
+ outer.reserve(BLOCK + 32);
152
+
153
+ for (size_t index = 0; index < BLOCK; index++) {
154
+ inner.push_back(static_cast<uint8_t>(block[index] ^ 0x36));
155
+ outer.push_back(static_cast<uint8_t>(block[index] ^ 0x5c));
156
+ }
157
+
158
+ inner.insert(inner.end(), data.begin(), data.end());
159
+
160
+ Bytes middle = sha256(inner);
161
+ outer.insert(outer.end(), middle.begin(), middle.end());
162
+
163
+ return sha256(outer);
164
+ }
165
+
166
+ std::string hex(const Bytes& data) {
167
+ static const char DIGITS[] = "0123456789abcdef";
168
+
169
+ std::string out;
170
+ out.reserve(data.size() * 2);
171
+
172
+ for (uint8_t byte : data) {
173
+ out.push_back(DIGITS[(byte >> 4) & 0x0f]);
174
+ out.push_back(DIGITS[byte & 0x0f]);
175
+ }
176
+
177
+ return out;
178
+ }
179
+
180
+ } // namespace sekreto
@@ -0,0 +1,52 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Crypto.hpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // SHA-256 and HMAC-SHA256, hand-rolled, plus hex.
5
+ //
6
+ // This port links OpenSSL, so `EVP_Digest` and `HMAC` are a function call
7
+ // away - and calling them here would break the rule that allows the link
8
+ // at all. That exception covers cryptographic TRANSPORT and nothing else:
9
+ // SigV4 is signing, not transport. Rust is the worked precedent, with
10
+ // `ring` already inside rustls's closure and `rust/src/crypto.rs` still
11
+ // carrying both primitives in-tree.
12
+ //
13
+ // Correctness is not asserted here - it is proved by the SigV4
14
+ // known-answer vectors in the shared spec. A signature is a chain of these
15
+ // two functions, so one wrong bit anywhere fails there.
16
+ //
17
+ // A port of rust/src/crypto.rs.
18
+
19
+ // NOTHING BUT THE SIGNER INCLUDES THIS. Percent-encoding and base64 used
20
+ // to sit here; they moved to Httpjson.hpp, because the plugins that need
21
+ // them - Azure, 1Password, Doppler, Infisical, GCP - sign nothing, and
22
+ // including this file for a query string would put SHA-256 into their link
23
+ // maps.
24
+
25
+ #ifndef SEKRETO_PLUGINS_CRYPTO_HPP
26
+ #define SEKRETO_PLUGINS_CRYPTO_HPP
27
+
28
+ #include <cstdint>
29
+ #include <string>
30
+ #include <vector>
31
+
32
+ namespace sekreto {
33
+
34
+ using Bytes = std::vector<uint8_t>;
35
+
36
+ Bytes tobytes(const std::string& text);
37
+ std::string frombytes(const Bytes& data);
38
+
39
+ /// SHA-256 of some bytes, as 32 bytes.
40
+ Bytes sha256(const Bytes& data);
41
+
42
+ /// HMAC-SHA256, RFC 2104, block size 64. Argument order is (key, data);
43
+ /// PHP's and Perl's stdlib take (data, key), and the wrapper is where that
44
+ /// gets fixed, never at the call sites.
45
+ Bytes hmacsha256(const Bytes& key, const Bytes& data);
46
+
47
+ /// Lowercase, zero-padded, two digits a byte.
48
+ std::string hex(const Bytes& data);
49
+
50
+ } // namespace sekreto
51
+
52
+ #endif
@@ -0,0 +1,87 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Doppler.cpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ #include "Doppler.hpp"
5
+
6
+ #include "Httpjson.hpp"
7
+ #include "../sekreto/Providers.hpp"
8
+ #include "../sekreto/Sekreto.hpp"
9
+
10
+ namespace sekreto {
11
+
12
+ namespace {
13
+
14
+ // ---------------------------------------------------------------- doppler
15
+
16
+ /// Doppler.
17
+ ///
18
+ /// The whole config is downloaded once - Doppler's own bulk endpoint - and
19
+ /// answered from memory, like a remote .env: `api.token` is the
20
+ /// `API_TOKEN` entry. A service token is config-scoped, so project and
21
+ /// config are only needed with broader tokens.
22
+ class DopplerProvider : public Provider {
23
+ public:
24
+ DopplerProvider(const std::string& token, const std::string& project,
25
+ const std::string& config, const std::string& addr)
26
+ : token_(token), project_(project), config_(config), addr_(addr) {}
27
+
28
+ std::optional<std::string> lookup(const std::string& name) override {
29
+ load();
30
+ // The `prefix` option is deliberately not consulted by this kind.
31
+ return values_.get(envkey(name));
32
+ }
33
+
34
+ std::string describe() const override {
35
+ return project_.empty() ? "doppler" : "doppler:" + project_ + "/" + config_;
36
+ }
37
+
38
+ private:
39
+ void load() {
40
+ if (loaded_) return;
41
+
42
+ std::string useaddr = trimslash(first(addr_, "https://api.doppler.com"));
43
+ checkaddr(useaddr);
44
+
45
+ std::string url = useaddr + "/v3/configs/config/secrets/download?format=json";
46
+ if (!project_.empty()) url += "&project=" + uriescape(project_);
47
+ if (!config_.empty()) url += "&config=" + uriescape(config_);
48
+
49
+ Ordered headers;
50
+ headers.set("authorization", "Bearer " + token_);
51
+
52
+ Answer res = fetchjson("GET", url, headers);
53
+
54
+ if (200 != res.status || !res.body.isobj()) {
55
+ throw SekretoError("sekreto: doppler error: " + std::to_string(res.status));
56
+ }
57
+
58
+ Ordered values;
59
+
60
+ for (const auto& entry : res.body.objval) {
61
+ std::optional<std::string> text = textof(entry.second);
62
+ if (text.has_value()) values.set(entry.first, text.value());
63
+ }
64
+
65
+ // Only a successful load is remembered: a failed one retries.
66
+ values_ = values;
67
+ loaded_ = true;
68
+ }
69
+
70
+ std::string token_;
71
+ std::string project_;
72
+ std::string config_;
73
+ std::string addr_;
74
+
75
+ Ordered values_;
76
+ bool loaded_ = false;
77
+ };
78
+
79
+ } // namespace
80
+
81
+ Definition doppler() {
82
+ return providerplugin("doppler", [](const ProviderSpec& spec) -> std::shared_ptr<Provider> {
83
+ return std::make_shared<DopplerProvider>(spec.token, spec.project, spec.config, spec.addr);
84
+ });
85
+ }
86
+
87
+ } // namespace sekreto
@@ -0,0 +1,23 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Doppler.hpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // Doppler.
5
+ //
6
+ // A PLUGIN, not a built-in: this kind opens a socket, signs a request or
7
+ // spawns a process, so a chain that does not name it links none of that.
8
+ // The calling project includes this header and passes what it declares to
9
+ // the Sekreto constructor (docs/design/plugin-providers.md).
10
+
11
+ #ifndef SEKRETO_PLUGINS_DOPPLER_HPP
12
+ #define SEKRETO_PLUGINS_DOPPLER_HPP
13
+
14
+ #include "../sekreto/Provider.hpp"
15
+
16
+ namespace sekreto {
17
+
18
+ /// The `doppler` provider kind, as a voxgig/plugin definition.
19
+ Definition doppler();
20
+
21
+ } // namespace sekreto
22
+
23
+ #endif
@@ -0,0 +1,121 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Gcpsecrets.cpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ #include "Gcpsecrets.hpp"
5
+
6
+ #include "Httpjson.hpp"
7
+ #include "../sekreto/Providers.hpp"
8
+ #include "../sekreto/Sekreto.hpp"
9
+
10
+ namespace sekreto {
11
+
12
+ namespace {
13
+
14
+ // -------------------------------------------------------------------- gcp
15
+
16
+ /// GCP Secret Manager.
17
+ ///
18
+ /// `api.token` reads secret `api_token` (dots flattened to `_`; Secret
19
+ /// Manager ids have no hierarchy and reject dots), latest version. The
20
+ /// token comes from config, then GOOGLE_OAUTH_ACCESS_TOKEN, then the
21
+ /// GCE/GKE metadata server - so on Google's own platform no credential
22
+ /// configuration is needed at all.
23
+ ///
24
+ /// The metadata call is plain http to a link-local host by platform design
25
+ /// and carries no credential, so `checkaddr` guards the Secret Manager
26
+ /// address instead.
27
+ class GcpsecretsProvider : public Provider {
28
+ public:
29
+ GcpsecretsProvider(const std::string& project, const std::string& token,
30
+ const std::string& addr, const std::string& metadataaddr)
31
+ : project_(project), token_(token), addr_(addr), metadataaddr_(metadataaddr) {}
32
+
33
+ std::optional<std::string> lookup(const std::string& name) override {
34
+ if (project_.empty()) throw SekretoError("sekreto: gcp: no project");
35
+
36
+ std::string useaddr = first(addr_, "https://secretmanager.googleapis.com");
37
+ checkaddr(useaddr);
38
+
39
+ if (!livetoken_.has_value() || nowms() >= renewat_) {
40
+ livetoken_ = login();
41
+ }
42
+
43
+ std::string url = trimslash(useaddr) + "/v1/projects/" + project_ + "/secrets/" +
44
+ flatname(name, "_") + "/versions/latest:access";
45
+
46
+ Ordered headers;
47
+ headers.set("authorization", "Bearer " + livetoken_.value_or(""));
48
+
49
+ Answer res = fetchjson("GET", url, headers);
50
+
51
+ if (404 == res.status) return std::nullopt;
52
+
53
+ if (200 != res.status) {
54
+ throw SekretoError("sekreto: gcp error: " + std::to_string(res.status) + ": " + url);
55
+ }
56
+
57
+ std::string data;
58
+ if (!res.body.get("payload").get("data").asstr(data)) return std::nullopt;
59
+
60
+ std::string decoded;
61
+ if (!unbase64(data, decoded)) {
62
+ throw SekretoError("sekreto: gcp: undecodable secret");
63
+ }
64
+
65
+ return decoded;
66
+ }
67
+
68
+ std::string describe() const override { return "gcpsecrets:" + project_; }
69
+
70
+ private:
71
+ std::string usemetadataaddr() const {
72
+ if (!metadataaddr_.empty()) return metadataaddr_;
73
+
74
+ std::string host = envvar("GCE_METADATA_HOST");
75
+ if (!host.empty()) return "http://" + host;
76
+
77
+ return "http://metadata.google.internal";
78
+ }
79
+
80
+ std::string login() {
81
+ std::string configured = first(token_, envvar("GOOGLE_OAUTH_ACCESS_TOKEN"));
82
+ if (!configured.empty()) return configured;
83
+
84
+ std::string url = trimslash(usemetadataaddr()) +
85
+ "/computeMetadata/v1/instance/service-accounts/default/token";
86
+
87
+ Ordered headers;
88
+ headers.set("Metadata-Flavor", "Google");
89
+
90
+ Answer res = fetchjson("GET", url, headers);
91
+
92
+ std::optional<std::string> got = textof(res.body.get("access_token"));
93
+
94
+ if (200 != res.status || !got.has_value() || got.value().empty()) {
95
+ throw SekretoError("sekreto: gcp: no token and metadata server did not answer");
96
+ }
97
+
98
+ renewat_ = renewtime(res.body.get("expires_in"));
99
+
100
+ return got.value();
101
+ }
102
+
103
+ std::string project_;
104
+ std::string token_;
105
+ std::string addr_;
106
+ std::string metadataaddr_;
107
+
108
+ std::optional<std::string> livetoken_;
109
+ double renewat_ = NEVER;
110
+ };
111
+
112
+ } // namespace
113
+
114
+ Definition gcpsecrets() {
115
+ return providerplugin("gcpsecrets", [](const ProviderSpec& spec) -> std::shared_ptr<Provider> {
116
+ return std::make_shared<GcpsecretsProvider>(spec.project, spec.token, spec.addr,
117
+ spec.metadataaddr);
118
+ });
119
+ }
120
+
121
+ } // namespace sekreto
@@ -0,0 +1,23 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (cpp/plugins/Gcpsecrets.hpp)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // GCP Secret Manager.
5
+ //
6
+ // A PLUGIN, not a built-in: this kind opens a socket, signs a request or
7
+ // spawns a process, so a chain that does not name it links none of that.
8
+ // The calling project includes this header and passes what it declares to
9
+ // the Sekreto constructor (docs/design/plugin-providers.md).
10
+
11
+ #ifndef SEKRETO_PLUGINS_GCPSECRETS_HPP
12
+ #define SEKRETO_PLUGINS_GCPSECRETS_HPP
13
+
14
+ #include "../sekreto/Provider.hpp"
15
+
16
+ namespace sekreto {
17
+
18
+ /// The `gcpsecrets` provider kind, as a voxgig/plugin definition.
19
+ Definition gcpsecrets();
20
+
21
+ } // namespace sekreto
22
+
23
+ #endif